Socket
Socket
Sign inDemoInstall

rollbar

Package Overview
Dependencies
Maintainers
7
Versions
151
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rollbar - npm Package Compare versions

Comparing version 2.18.0 to 2.19.0

src/browser/core.js

1

defaults.js

@@ -8,3 +8,2 @@ var pkg = require('./package.json');

__JQUERY_PLUGIN_VERSION__: JSON.stringify(pkg.plugins.jquery.version),
__DEFAULT_BROWSER_SCRUB_FIELDS__: JSON.stringify(pkg.defaults.browser.scrubFields),
__DEFAULT_SERVER_SCRUB_FIELDS__: JSON.stringify(pkg.defaults.server.scrubFields),

@@ -11,0 +10,0 @@ __DEFAULT_SERVER_SCRUB_HEADERS__: JSON.stringify(pkg.defaults.server.scrubHeaders),

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

!function(r){var e={};function o(n){if(e[n])return e[n].exports;var t=e[n]={i:n,l:!1,exports:{}};return r[n].call(t.exports,t,t.exports,o),t.l=!0,t.exports}o.m=r,o.c=e,o.d=function(r,e,n){o.o(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:n})},o.r=function(r){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(r,"__esModule",{value:!0})},o.t=function(r,e){if(1&e&&(r=o(r)),8&e)return r;if(4&e&&"object"==typeof r&&r&&r.__esModule)return r;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:r}),2&e&&"string"!=typeof r)for(var t in r)o.d(n,t,function(e){return r[e]}.bind(null,t));return n},o.n=function(r){var e=r&&r.__esModule?function(){return r.default}:function(){return r};return o.d(e,"a",e),e},o.o=function(r,e){return Object.prototype.hasOwnProperty.call(r,e)},o.p="",o(o.s=0)}([function(r,e,o){"use strict";var n=o(1),t=o(4);_rollbarConfig=_rollbarConfig||{},_rollbarConfig.rollbarJsUrl=_rollbarConfig.rollbarJsUrl||"https://cdn.rollbar.com/rollbarjs/refs/tags/v2.18.0/rollbar.min.js",_rollbarConfig.async=void 0===_rollbarConfig.async||_rollbarConfig.async;var a=n.setupShim(window,_rollbarConfig),l=t(_rollbarConfig);window.rollbar=n.Rollbar,a.loadFull(window,document,!_rollbarConfig.async,_rollbarConfig,l)},function(r,e,o){"use strict";var n=o(2);function t(r){return function(){try{return r.apply(this,arguments)}catch(r){try{console.error("[Rollbar]: Internal error",r)}catch(r){}}}}var a=0;function l(r,e){this.options=r,this._rollbarOldOnError=null;var o=a++;this.shimId=function(){return o},"undefined"!=typeof window&&window._rollbarShims&&(window._rollbarShims[o]={handler:e,messages:[]})}var i=o(3),s=function(r,e){return new l(r,e)},d=function(r){return new i(s,r)};function c(r){return t((function(){var e=this,o=Array.prototype.slice.call(arguments,0),n={shim:e,method:r,args:o,ts:new Date};window._rollbarShims[this.shimId()].messages.push(n)}))}l.prototype.loadFull=function(r,e,o,n,a){var l=!1,i=e.createElement("script"),s=e.getElementsByTagName("script")[0],d=s.parentNode;i.crossOrigin="",i.src=n.rollbarJsUrl,o||(i.async=!0),i.onload=i.onreadystatechange=t((function(){if(!(l||this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState)){i.onload=i.onreadystatechange=null;try{d.removeChild(i)}catch(r){}l=!0,function(){var e;if(void 0===r._rollbarDidLoad){e=new Error("rollbar.js did not load");for(var o,n,t,l,i=0;o=r._rollbarShims[i++];)for(o=o.messages||[];n=o.shift();)for(t=n.args||[],i=0;i<t.length;++i)if("function"==typeof(l=t[i])){l(e);break}}"function"==typeof a&&a(e)}()}})),d.insertBefore(i,s)},l.prototype.wrap=function(r,e,o){try{var n;if(n="function"==typeof e?e:function(){return e||{}},"function"!=typeof r)return r;if(r._isWrap)return r;if(!r._rollbar_wrapped&&(r._rollbar_wrapped=function(){o&&"function"==typeof o&&o.apply(this,arguments);try{return r.apply(this,arguments)}catch(o){var e=o;throw e&&("string"==typeof e&&(e=new String(e)),e._rollbarContext=n()||{},e._rollbarContext._wrappedSource=r.toString(),window._rollbarWrappedError=e),e}},r._rollbar_wrapped._isWrap=!0,r.hasOwnProperty))for(var t in r)r.hasOwnProperty(t)&&(r._rollbar_wrapped[t]=r[t]);return r._rollbar_wrapped}catch(e){return r}};for(var u="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleAnonymousErrors,handleUnhandledRejection,captureEvent,captureDomContentLoaded,captureLoad".split(","),p=0;p<u.length;++p)l.prototype[u[p]]=c(u[p]);r.exports={setupShim:function(r,e){if(r){var o=e.globalAlias||"Rollbar";if("object"==typeof r[o])return r[o];r._rollbarShims={},r._rollbarWrappedError=null;var a=new d(e);return t((function(){e.captureUncaught&&(a._rollbarOldOnError=r.onerror,n.captureUncaughtExceptions(r,a,!0),e.wrapGlobalEventHandlers&&n.wrapGlobals(r,a,!0)),e.captureUnhandledRejections&&n.captureUnhandledRejections(r,a,!0);var t=e.autoInstrument;return!1!==e.enabled&&(void 0===t||!0===t||"object"==typeof t&&t.network)&&r.addEventListener&&(r.addEventListener("load",a.captureLoad.bind(a)),r.addEventListener("DOMContentLoaded",a.captureDomContentLoaded.bind(a))),r[o]=a,a}))()}},Rollbar:d}},function(r,e,o){"use strict";function n(r,e,o,n){r._rollbarWrappedError&&(n[4]||(n[4]=r._rollbarWrappedError),n[5]||(n[5]=r._rollbarWrappedError._rollbarContext),r._rollbarWrappedError=null);var t=e.handleUncaughtException.apply(e,n);o&&o.apply(r,n),"anonymous"===t&&(e.anonymousErrorsPending+=1)}function t(r,e,o){if(e.hasOwnProperty&&e.hasOwnProperty("addEventListener")){for(var n=e.addEventListener;n._rollbarOldAdd&&n.belongsToShim;)n=n._rollbarOldAdd;var t=function(e,o,t){n.call(this,e,r.wrap(o),t)};t._rollbarOldAdd=n,t.belongsToShim=o,e.addEventListener=t;for(var a=e.removeEventListener;a._rollbarOldRemove&&a.belongsToShim;)a=a._rollbarOldRemove;var l=function(r,e,o){a.call(this,r,e&&e._rollbar_wrapped||e,o)};l._rollbarOldRemove=a,l.belongsToShim=o,e.removeEventListener=l}}r.exports={captureUncaughtExceptions:function(r,e,o){if(r){var t;if("function"==typeof e._rollbarOldOnError)t=e._rollbarOldOnError;else if(r.onerror){for(t=r.onerror;t._rollbarOldOnError;)t=t._rollbarOldOnError;e._rollbarOldOnError=t}e.handleAnonymousErrors();var a=function(){var o=Array.prototype.slice.call(arguments,0);n(r,e,t,o)};o&&(a._rollbarOldOnError=t),r.onerror=a}},captureUnhandledRejections:function(r,e,o){if(r){"function"==typeof r._rollbarURH&&r._rollbarURH.belongsToShim&&r.removeEventListener("unhandledrejection",r._rollbarURH);var n=function(r){var o,n,t;try{o=r.reason}catch(r){o=void 0}try{n=r.promise}catch(r){n="[unhandledrejection] error getting `promise` from event"}try{t=r.detail,!o&&t&&(o=t.reason,n=t.promise)}catch(r){}o||(o="[unhandledrejection] error getting `reason` from event"),e&&e.handleUnhandledRejection&&e.handleUnhandledRejection(o,n)};n.belongsToShim=o,r._rollbarURH=n,r.addEventListener("unhandledrejection",n)}},wrapGlobals:function(r,e,o){if(r){var n,a,l="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".split(",");for(n=0;n<l.length;++n)r[a=l[n]]&&r[a].prototype&&t(e,r[a].prototype,o)}}}},function(r,e,o){"use strict";function n(r,e){this.impl=r(e,this),this.options=e,function(r){for(var e=function(r){return function(){var e=Array.prototype.slice.call(arguments,0);if(this.impl[r])return this.impl[r].apply(this.impl,e)}},o="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleAnonymousErrors,handleUnhandledRejection,_createItem,wrap,loadFull,shimId,captureEvent,captureDomContentLoaded,captureLoad".split(","),n=0;n<o.length;n++)r[o[n]]=e(o[n])}(n.prototype)}n.prototype._swapAndProcessMessages=function(r,e){var o,n,t;for(this.impl=r(this.options);o=e.shift();)n=o.method,t=o.args,this[n]&&"function"==typeof this[n]&&("captureDomContentLoaded"===n||"captureLoad"===n?this[n].apply(this,[t[0],o.ts]):this[n].apply(this,t));return this},r.exports=n},function(r,e,o){"use strict";r.exports=function(r){return function(e){if(!e&&!window._rollbarInitialized){for(var o,n,t=(r=r||{}).globalAlias||"Rollbar",a=window.rollbar,l=function(r){return new a(r)},i=0;o=window._rollbarShims[i++];)n||(n=o.handler),o.handler._swapAndProcessMessages(l,o.messages);window[t]=n,window._rollbarInitialized=!0}}}}]);
!function(r){var e={};function o(n){if(e[n])return e[n].exports;var t=e[n]={i:n,l:!1,exports:{}};return r[n].call(t.exports,t,t.exports,o),t.l=!0,t.exports}o.m=r,o.c=e,o.d=function(r,e,n){o.o(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:n})},o.r=function(r){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(r,"__esModule",{value:!0})},o.t=function(r,e){if(1&e&&(r=o(r)),8&e)return r;if(4&e&&"object"==typeof r&&r&&r.__esModule)return r;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:r}),2&e&&"string"!=typeof r)for(var t in r)o.d(n,t,function(e){return r[e]}.bind(null,t));return n},o.n=function(r){var e=r&&r.__esModule?function(){return r.default}:function(){return r};return o.d(e,"a",e),e},o.o=function(r,e){return Object.prototype.hasOwnProperty.call(r,e)},o.p="",o(o.s=0)}([function(r,e,o){"use strict";var n=o(1),t=o(5);_rollbarConfig=_rollbarConfig||{},_rollbarConfig.rollbarJsUrl=_rollbarConfig.rollbarJsUrl||"https://cdn.rollbar.com/rollbarjs/refs/tags/v2.19.0/rollbar.min.js",_rollbarConfig.async=void 0===_rollbarConfig.async||_rollbarConfig.async;var a=n.setupShim(window,_rollbarConfig),l=t(_rollbarConfig);window.rollbar=n.Rollbar,a.loadFull(window,document,!_rollbarConfig.async,_rollbarConfig,l)},function(r,e,o){"use strict";var n=o(2),t=o(3);function a(r){return function(){try{return r.apply(this,arguments)}catch(r){try{console.error("[Rollbar]: Internal error",r)}catch(r){}}}}var l=0;function i(r,e){this.options=r,this._rollbarOldOnError=null;var o=l++;this.shimId=function(){return o},"undefined"!=typeof window&&window._rollbarShims&&(window._rollbarShims[o]={handler:e,messages:[]})}var s=o(4),d=function(r,e){return new i(r,e)},c=function(r){return new s(d,r)};function u(r){return a((function(){var e=this,o=Array.prototype.slice.call(arguments,0),n={shim:e,method:r,args:o,ts:new Date};window._rollbarShims[this.shimId()].messages.push(n)}))}i.prototype.loadFull=function(r,e,o,n,t){var l=!1,i=e.createElement("script"),s=e.getElementsByTagName("script")[0],d=s.parentNode;i.crossOrigin="",i.src=n.rollbarJsUrl,o||(i.async=!0),i.onload=i.onreadystatechange=a((function(){if(!(l||this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState)){i.onload=i.onreadystatechange=null;try{d.removeChild(i)}catch(r){}l=!0,function(){var e;if(void 0===r._rollbarDidLoad){e=new Error("rollbar.js did not load");for(var o,n,a,l,i=0;o=r._rollbarShims[i++];)for(o=o.messages||[];n=o.shift();)for(a=n.args||[],i=0;i<a.length;++i)if("function"==typeof(l=a[i])){l(e);break}}"function"==typeof t&&t(e)}()}})),d.insertBefore(i,s)},i.prototype.wrap=function(r,e,o){try{var n;if(n="function"==typeof e?e:function(){return e||{}},"function"!=typeof r)return r;if(r._isWrap)return r;if(!r._rollbar_wrapped&&(r._rollbar_wrapped=function(){o&&"function"==typeof o&&o.apply(this,arguments);try{return r.apply(this,arguments)}catch(o){var e=o;throw e&&("string"==typeof e&&(e=new String(e)),e._rollbarContext=n()||{},e._rollbarContext._wrappedSource=r.toString(),window._rollbarWrappedError=e),e}},r._rollbar_wrapped._isWrap=!0,r.hasOwnProperty))for(var t in r)r.hasOwnProperty(t)&&(r._rollbar_wrapped[t]=r[t]);return r._rollbar_wrapped}catch(e){return r}};for(var p="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleAnonymousErrors,handleUnhandledRejection,captureEvent,captureDomContentLoaded,captureLoad".split(","),f=0;f<p.length;++f)i.prototype[p[f]]=u(p[f]);r.exports={setupShim:function(r,e){if(r){var o=e.globalAlias||"Rollbar";if("object"==typeof r[o])return r[o];r._rollbarShims={},r._rollbarWrappedError=null;var l=new c(e);return a((function(){e.captureUncaught&&(l._rollbarOldOnError=r.onerror,n.captureUncaughtExceptions(r,l,!0),e.wrapGlobalEventHandlers&&t(r,l,!0)),e.captureUnhandledRejections&&n.captureUnhandledRejections(r,l,!0);var a=e.autoInstrument;return!1!==e.enabled&&(void 0===a||!0===a||"object"==typeof a&&a.network)&&r.addEventListener&&(r.addEventListener("load",l.captureLoad.bind(l)),r.addEventListener("DOMContentLoaded",l.captureDomContentLoaded.bind(l))),r[o]=l,l}))()}},Rollbar:c}},function(r,e,o){"use strict";function n(r,e,o,n){r._rollbarWrappedError&&(n[4]||(n[4]=r._rollbarWrappedError),n[5]||(n[5]=r._rollbarWrappedError._rollbarContext),r._rollbarWrappedError=null);var t=e.handleUncaughtException.apply(e,n);o&&o.apply(r,n),"anonymous"===t&&(e.anonymousErrorsPending+=1)}r.exports={captureUncaughtExceptions:function(r,e,o){if(r){var t;if("function"==typeof e._rollbarOldOnError)t=e._rollbarOldOnError;else if(r.onerror){for(t=r.onerror;t._rollbarOldOnError;)t=t._rollbarOldOnError;e._rollbarOldOnError=t}e.handleAnonymousErrors();var a=function(){var o=Array.prototype.slice.call(arguments,0);n(r,e,t,o)};o&&(a._rollbarOldOnError=t),r.onerror=a}},captureUnhandledRejections:function(r,e,o){if(r){"function"==typeof r._rollbarURH&&r._rollbarURH.belongsToShim&&r.removeEventListener("unhandledrejection",r._rollbarURH);var n=function(r){var o,n,t;try{o=r.reason}catch(r){o=void 0}try{n=r.promise}catch(r){n="[unhandledrejection] error getting `promise` from event"}try{t=r.detail,!o&&t&&(o=t.reason,n=t.promise)}catch(r){}o||(o="[unhandledrejection] error getting `reason` from event"),e&&e.handleUnhandledRejection&&e.handleUnhandledRejection(o,n)};n.belongsToShim=o,r._rollbarURH=n,r.addEventListener("unhandledrejection",n)}}}},function(r,e,o){"use strict";function n(r,e,o){if(e.hasOwnProperty&&e.hasOwnProperty("addEventListener")){for(var n=e.addEventListener;n._rollbarOldAdd&&n.belongsToShim;)n=n._rollbarOldAdd;var t=function(e,o,t){n.call(this,e,r.wrap(o),t)};t._rollbarOldAdd=n,t.belongsToShim=o,e.addEventListener=t;for(var a=e.removeEventListener;a._rollbarOldRemove&&a.belongsToShim;)a=a._rollbarOldRemove;var l=function(r,e,o){a.call(this,r,e&&e._rollbar_wrapped||e,o)};l._rollbarOldRemove=a,l.belongsToShim=o,e.removeEventListener=l}}r.exports=function(r,e,o){if(r){var t,a,l="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".split(",");for(t=0;t<l.length;++t)r[a=l[t]]&&r[a].prototype&&n(e,r[a].prototype,o)}}},function(r,e,o){"use strict";function n(r,e){this.impl=r(e,this),this.options=e,function(r){for(var e=function(r){return function(){var e=Array.prototype.slice.call(arguments,0);if(this.impl[r])return this.impl[r].apply(this.impl,e)}},o="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleAnonymousErrors,handleUnhandledRejection,_createItem,wrap,loadFull,shimId,captureEvent,captureDomContentLoaded,captureLoad".split(","),n=0;n<o.length;n++)r[o[n]]=e(o[n])}(n.prototype)}n.prototype._swapAndProcessMessages=function(r,e){var o,n,t;for(this.impl=r(this.options);o=e.shift();)n=o.method,t=o.args,this[n]&&"function"==typeof this[n]&&("captureDomContentLoaded"===n||"captureLoad"===n?this[n].apply(this,[t[0],o.ts]):this[n].apply(this,t));return this},r.exports=n},function(r,e,o){"use strict";r.exports=function(r){return function(e){if(!e&&!window._rollbarInitialized){for(var o,n,t=(r=r||{}).globalAlias||"Rollbar",a=window.rollbar,l=function(r){return new a(r)},i=0;o=window._rollbarShims[i++];)n||(n=o.handler),o.handler._swapAndProcessMessages(l,o.messages);window[t]=n,window._rollbarInitialized=!0}}}}]);

@@ -44,2 +44,3 @@ // Type definitions for rollbar

accessToken?: string;
addErrorContext?: boolean;
addRequestData?: (data: object, req: object) => void;

@@ -61,2 +62,3 @@ autoInstrument?: AutoInstrumentOptions;

filterTelemetry?: (e: TelemetryEvent) => boolean;
host?: string; // used in node only
hostBlackList?: string[];

@@ -63,0 +65,0 @@ hostWhiteList?: string[];

{
"name": "rollbar",
"version": "2.18.0",
"version": "2.19.0",
"repository": {

@@ -15,5 +15,3 @@ "type": "git",

"async": "~1.2.1",
"buffer-from": "~1.1.1",
"console-polyfill": "0.3.0",
"debug": "2.6.9",
"error-stack-parser": "^2.0.4",

@@ -101,61 +99,2 @@ "json-stringify-safe": "~5.0.0",

"endpoint": "api.rollbar.com/api/1/item/",
"browser": {
"scrubFields": [
"pw",
"pass",
"passwd",
"password",
"secret",
"confirm_password",
"confirmPassword",
"password_confirmation",
"passwordConfirmation",
"access_token",
"accessToken",
"X-Rollbar-Access-Token",
"secret_key",
"secretKey",
"secretToken",
"cc-number",
"card number",
"cardnumber",
"cardnum",
"ccnum",
"ccnumber",
"cc num",
"creditcardnumber",
"credit card number",
"newcreditcardnumber",
"new credit card",
"creditcardno",
"credit card no",
"card#",
"card #",
"cc-csc",
"cvc",
"cvc2",
"cvv2",
"ccv2",
"security code",
"card verification",
"name on credit card",
"name on card",
"nameoncard",
"cardholder",
"card holder",
"name des karteninhabers",
"ccname",
"card type",
"cardtype",
"cc type",
"cctype",
"payment type",
"expiration date",
"expirationdate",
"expdate",
"cc-exp",
"ccmonth",
"ccyear"
]
},
"server": {

@@ -162,0 +101,0 @@ "scrubHeaders": [

# Rollbar.js
[![Build Status](https://travis-ci.org/rollbar/rollbar.js.svg?branch=v2.18.0)](https://travis-ci.org/rollbar/rollbar.js)
[![Build Status](https://travis-ci.org/rollbar/rollbar.js.svg?branch=v2.19.0)](https://travis-ci.org/rollbar/rollbar.js)
[![Code Quality: Javascript](https://img.shields.io/lgtm/grade/javascript/g/rollbar/rollbar.js.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/rollbar/rollbar.js/context:javascript)

@@ -6,0 +6,0 @@ [![Total Alerts](https://img.shields.io/lgtm/alerts/g/rollbar/rollbar.js.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/rollbar/rollbar.js/alerts)

var _ = require('./utility');
var helpers = require('./apiUtility');
var truncation = require('./truncation');

@@ -33,9 +32,10 @@ var defaultOptions = {

*/
function Api(options, t, u, j) {
function Api(options, transport, urllib, truncation, jsonBackup) {
this.options = options;
this.transport = t;
this.url = u;
this.jsonBackup = j;
this.transport = transport;
this.url = urllib;
this.truncation = truncation;
this.jsonBackup = jsonBackup;
this.accessToken = options.accessToken;
this.transportOptions = _getTransport(options, u);
this.transportOptions = _getTransport(options, urllib);
}

@@ -62,3 +62,9 @@

var stringifyResult = truncation.truncate(payload);
var stringifyResult;
if (this.truncation) {
stringifyResult = this.truncation.truncate(payload);
} else {
stringifyResult = _.stringify(payload)
}
if (stringifyResult.error) {

@@ -65,0 +71,0 @@ if (callback) {

@@ -93,46 +93,6 @@ function captureUncaughtExceptions(window, handler, shim) {

function wrapGlobals(window, handler, shim) {
if (!window) { return; }
// Adapted from https://github.com/bugsnag/bugsnag-js
var globals = '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'.split(',');
var i, global;
for (i = 0; i < globals.length; ++i) {
global = globals[i];
if (window[global] && window[global].prototype) {
_extendListenerPrototype(handler, window[global].prototype, shim);
}
}
}
function _extendListenerPrototype(handler, prototype, shim) {
if (prototype.hasOwnProperty && prototype.hasOwnProperty('addEventListener')) {
var oldAddEventListener = prototype.addEventListener;
while (oldAddEventListener._rollbarOldAdd && oldAddEventListener.belongsToShim) {
oldAddEventListener = oldAddEventListener._rollbarOldAdd;
}
var addFn = function(event, callback, bubble) {
oldAddEventListener.call(this, event, handler.wrap(callback), bubble);
};
addFn._rollbarOldAdd = oldAddEventListener;
addFn.belongsToShim = shim;
prototype.addEventListener = addFn;
var oldRemoveEventListener = prototype.removeEventListener;
while (oldRemoveEventListener._rollbarOldRemove && oldRemoveEventListener.belongsToShim) {
oldRemoveEventListener = oldRemoveEventListener._rollbarOldRemove;
}
var removeFn = function(event, callback, bubble) {
oldRemoveEventListener.call(this, event, callback && callback._rollbar_wrapped || callback, bubble);
};
removeFn._rollbarOldRemove = oldRemoveEventListener;
removeFn.belongsToShim = shim;
prototype.removeEventListener = removeFn;
}
}
module.exports = {
captureUncaughtExceptions: captureUncaughtExceptions,
captureUnhandledRejections: captureUnhandledRejections,
wrapGlobals: wrapGlobals
captureUnhandledRejections: captureUnhandledRejections
};

@@ -1,546 +0,18 @@

var Client = require('../rollbar');
var _ = require('../utility');
var API = require('../api');
var logger = require('./logger');
var globals = require('./globalSetup');
var Rollbar = require('./core');
var telemeter = require('../telemetry');
var instrumenter = require('./telemetry');
var polyfillJSON = require('../../vendor/JSON-js/json3');
var wrapGlobals = require('./wrapGlobals');
var scrub = require('../scrub');
var truncation = require('../truncation');
var transport = require('./transport');
var urllib = require('./url');
Rollbar.setComponents({
telemeter: telemeter,
instrumenter: instrumenter,
polyfillJSON: polyfillJSON,
wrapGlobals: wrapGlobals,
scrub: scrub,
truncation: truncation
});
var transforms = require('./transforms');
var sharedTransforms = require('../transforms');
var predicates = require('./predicates');
var sharedPredicates = require('../predicates');
var errorParser = require('../errorParser');
var Instrumenter = require('./telemetry');
function Rollbar(options, client) {
this.options = _.handleOptions(defaultOptions, options);
this.options._configuredOptions = options;
var api = new API(this.options, transport, urllib);
this.client = client || new Client(this.options, api, logger, 'browser');
var gWindow = _gWindow();
var gDocument = (typeof document != 'undefined') && document;
this.isChrome = gWindow.chrome && gWindow.chrome.runtime; // check .runtime to avoid Edge browsers
this.anonymousErrorsPending = 0;
addTransformsToNotifier(this.client.notifier, gWindow);
addPredicatesToQueue(this.client.queue);
this.setupUnhandledCapture();
this.instrumenter = new Instrumenter(this.options, this.client.telemeter, this, gWindow, gDocument);
this.instrumenter.instrument();
}
var _instance = null;
Rollbar.init = function(options, client) {
if (_instance) {
return _instance.global(options).configure(options);
}
_instance = new Rollbar(options, client);
return _instance;
};
function handleUninitialized(maybeCallback) {
var message = 'Rollbar is not initialized';
logger.error(message);
if (maybeCallback) {
maybeCallback(new Error(message));
}
}
Rollbar.prototype.global = function(options) {
this.client.global(options);
return this;
};
Rollbar.global = function(options) {
if (_instance) {
return _instance.global(options);
} else {
handleUninitialized();
}
};
Rollbar.prototype.configure = function(options, payloadData) {
var oldOptions = this.options;
var payload = {};
if (payloadData) {
payload = {payload: payloadData};
}
this.options = _.handleOptions(oldOptions, options, payload);
this.options._configuredOptions = _.handleOptions(oldOptions._configuredOptions, options, payload);
this.client.configure(this.options, payloadData);
this.instrumenter.configure(this.options);
this.setupUnhandledCapture();
return this;
};
Rollbar.configure = function(options, payloadData) {
if (_instance) {
return _instance.configure(options, payloadData);
} else {
handleUninitialized();
}
};
Rollbar.prototype.lastError = function() {
return this.client.lastError;
};
Rollbar.lastError = function() {
if (_instance) {
return _instance.lastError();
} else {
handleUninitialized();
}
};
Rollbar.prototype.log = function() {
var item = this._createItem(arguments);
var uuid = item.uuid;
this.client.log(item);
return {uuid: uuid};
};
Rollbar.log = function() {
if (_instance) {
return _instance.log.apply(_instance, arguments);
} else {
var maybeCallback = _getFirstFunction(arguments);
handleUninitialized(maybeCallback);
}
};
Rollbar.prototype.debug = function() {
var item = this._createItem(arguments);
var uuid = item.uuid;
this.client.debug(item);
return {uuid: uuid};
};
Rollbar.debug = function() {
if (_instance) {
return _instance.debug.apply(_instance, arguments);
} else {
var maybeCallback = _getFirstFunction(arguments);
handleUninitialized(maybeCallback);
}
};
Rollbar.prototype.info = function() {
var item = this._createItem(arguments);
var uuid = item.uuid;
this.client.info(item);
return {uuid: uuid};
};
Rollbar.info = function() {
if (_instance) {
return _instance.info.apply(_instance, arguments);
} else {
var maybeCallback = _getFirstFunction(arguments);
handleUninitialized(maybeCallback);
}
};
Rollbar.prototype.warn = function() {
var item = this._createItem(arguments);
var uuid = item.uuid;
this.client.warn(item);
return {uuid: uuid};
};
Rollbar.warn = function() {
if (_instance) {
return _instance.warn.apply(_instance, arguments);
} else {
var maybeCallback = _getFirstFunction(arguments);
handleUninitialized(maybeCallback);
}
};
Rollbar.prototype.warning = function() {
var item = this._createItem(arguments);
var uuid = item.uuid;
this.client.warning(item);
return {uuid: uuid};
};
Rollbar.warning = function() {
if (_instance) {
return _instance.warning.apply(_instance, arguments);
} else {
var maybeCallback = _getFirstFunction(arguments);
handleUninitialized(maybeCallback);
}
};
Rollbar.prototype.error = function() {
var item = this._createItem(arguments);
var uuid = item.uuid;
this.client.error(item);
return {uuid: uuid};
};
Rollbar.error = function() {
if (_instance) {
return _instance.error.apply(_instance, arguments);
} else {
var maybeCallback = _getFirstFunction(arguments);
handleUninitialized(maybeCallback);
}
};
Rollbar.prototype.critical = function() {
var item = this._createItem(arguments);
var uuid = item.uuid;
this.client.critical(item);
return {uuid: uuid};
};
Rollbar.critical = function() {
if (_instance) {
return _instance.critical.apply(_instance, arguments);
} else {
var maybeCallback = _getFirstFunction(arguments);
handleUninitialized(maybeCallback);
}
};
Rollbar.prototype.buildJsonPayload = function(item) {
return this.client.buildJsonPayload(item);
};
Rollbar.buildJsonPayload = function() {
if (_instance) {
return _instance.buildJsonPayload.apply(_instance, arguments);
} else {
handleUninitialized();
}
};
Rollbar.prototype.sendJsonPayload = function(jsonPayload) {
return this.client.sendJsonPayload(jsonPayload);
};
Rollbar.sendJsonPayload = function() {
if (_instance) {
return _instance.sendJsonPayload.apply(_instance, arguments);
} else {
handleUninitialized();
}
};
Rollbar.prototype.setupUnhandledCapture = function() {
var gWindow = _gWindow();
if (!this.unhandledExceptionsInitialized) {
if (this.options.captureUncaught || this.options.handleUncaughtExceptions) {
globals.captureUncaughtExceptions(gWindow, this);
if (this.options.wrapGlobalEventHandlers) {
globals.wrapGlobals(gWindow, this);
}
this.unhandledExceptionsInitialized = true;
}
}
if (!this.unhandledRejectionsInitialized) {
if (this.options.captureUnhandledRejections || this.options.handleUnhandledRejections) {
globals.captureUnhandledRejections(gWindow, this);
this.unhandledRejectionsInitialized = true;
}
}
};
Rollbar.prototype.handleUncaughtException = function(message, url, lineno, colno, error, context) {
if (!this.options.captureUncaught && !this.options.handleUncaughtExceptions) {
return;
}
// Chrome will always send 5+ arguments and error will be valid or null, not undefined.
// If error is undefined, we have a different caller.
if (this.options.inspectAnonymousErrors && this.isChrome && (error === null)) {
return 'anonymous';
}
var item;
var stackInfo = _.makeUnhandledStackInfo(
message,
url,
lineno,
colno,
error,
'onerror',
'uncaught exception',
errorParser
);
if (_.isError(error)) {
item = this._createItem([message, error, context]);
item._unhandledStackInfo = stackInfo;
} else if (_.isError(url)) {
item = this._createItem([message, url, context]);
item._unhandledStackInfo = stackInfo;
} else {
item = this._createItem([message, context]);
item.stackInfo = stackInfo;
}
item.level = this.options.uncaughtErrorLevel;
item._isUncaught = true;
this.client.log(item);
};
/**
* Chrome only. Other browsers will ignore.
*
* Use Error.prepareStackTrace to extract information about errors that
* do not have a valid error object in onerror().
*
* In tested version of Chrome, onerror is called first but has no way
* to communicate with prepareStackTrace. Use a counter to let this
* handler know which errors to send to Rollbar.
*
* In config options, set inspectAnonymousErrors to enable.
*/
Rollbar.prototype.handleAnonymousErrors = function() {
if (!this.options.inspectAnonymousErrors || !this.isChrome) {
return;
}
var r = this;
function prepareStackTrace(error, _stack) { // eslint-disable-line no-unused-vars
if (r.options.inspectAnonymousErrors) {
if (r.anonymousErrorsPending) {
// This is the only known way to detect that onerror saw an anonymous error.
// It depends on onerror reliably being called before Error.prepareStackTrace,
// which so far holds true on tested versions of Chrome. If versions of Chrome
// are tested that behave differently, this logic will need to be updated
// accordingly.
r.anonymousErrorsPending -= 1;
if (!error) {
// Not likely to get here, but calling handleUncaughtException from here
// without an error object would throw off the anonymousErrorsPending counter,
// so return now.
return;
}
// Allow this to be tracked later.
error._isAnonymous = true;
// url, lineno, colno shouldn't be needed for these errors.
// If that changes, update this accordingly, using the unused
// _stack param as needed (rather than parse error.toString()).
r.handleUncaughtException(error.message, null, null, null, error);
}
}
// Workaround to ensure stack is preserved for normal errors.
return error.stack;
}
// https://v8.dev/docs/stack-trace-api
try {
Error.prepareStackTrace = prepareStackTrace;
} catch (e) {
this.options.inspectAnonymousErrors = false;
this.error('anonymous error handler failed', e);
}
}
Rollbar.prototype.handleUnhandledRejection = function(reason, promise) {
if (!this.options.captureUnhandledRejections && !this.options.handleUnhandledRejections) {
return;
}
var message = 'unhandled rejection was null or undefined!';
if (reason) {
if (reason.message) {
message = reason.message;
} else {
var reasonResult = _.stringify(reason);
if (reasonResult.value) {
message = reasonResult.value;
}
}
}
var context = (reason && reason._rollbarContext) || (promise && promise._rollbarContext);
var item;
if (_.isError(reason)) {
item = this._createItem([message, reason, context]);
} else {
item = this._createItem([message, reason, context]);
item.stackInfo = _.makeUnhandledStackInfo(
message,
'',
0,
0,
null,
'unhandledrejection',
'',
errorParser
);
}
item.level = this.options.uncaughtErrorLevel;
item._isUncaught = true;
item._originalArgs = item._originalArgs || [];
item._originalArgs.push(promise);
this.client.log(item);
};
Rollbar.prototype.wrap = function(f, context, _before) {
try {
var ctxFn;
if(_.isFunction(context)) {
ctxFn = context;
} else {
ctxFn = function() { return context || {}; };
}
if (!_.isFunction(f)) {
return f;
}
if (f._isWrap) {
return f;
}
if (!f._rollbar_wrapped) {
f._rollbar_wrapped = function () {
if (_before && _.isFunction(_before)) {
_before.apply(this, arguments);
}
try {
return f.apply(this, arguments);
} catch(exc) {
var e = exc;
if (e && window._rollbarWrappedError !== e) {
if (_.isType(e, 'string')) {
e = new String(e);
}
e._rollbarContext = ctxFn() || {};
e._rollbarContext._wrappedSource = f.toString();
window._rollbarWrappedError = e;
}
throw e;
}
};
f._rollbar_wrapped._isWrap = true;
if (f.hasOwnProperty) {
for (var prop in f) {
if (f.hasOwnProperty(prop) && prop !== '_rollbar_wrapped') {
f._rollbar_wrapped[prop] = f[prop];
}
}
}
}
return f._rollbar_wrapped;
} catch (e) {
// Return the original function if the wrap fails.
return f;
}
};
Rollbar.wrap = function(f, context) {
if (_instance) {
return _instance.wrap(f, context);
} else {
handleUninitialized();
}
};
Rollbar.prototype.captureEvent = function() {
var event = _.createTelemetryEvent(arguments);
return this.client.captureEvent(event.type, event.metadata, event.level);
};
Rollbar.captureEvent = function() {
if (_instance) {
return _instance.captureEvent.apply(_instance, arguments);
} else {
handleUninitialized();
}
};
// The following two methods are used internally and are not meant for public use
Rollbar.prototype.captureDomContentLoaded = function(e, ts) {
if (!ts) {
ts = new Date();
}
return this.client.captureDomContentLoaded(ts);
};
Rollbar.prototype.captureLoad = function(e, ts) {
if (!ts) {
ts = new Date();
}
return this.client.captureLoad(ts);
};
/* Internal */
function addTransformsToNotifier(notifier, gWindow) {
notifier
.addTransform(transforms.handleDomException)
.addTransform(transforms.handleItemWithError)
.addTransform(transforms.ensureItemHasSomethingToSay)
.addTransform(transforms.addBaseInfo)
.addTransform(transforms.addRequestInfo(gWindow))
.addTransform(transforms.addClientInfo(gWindow))
.addTransform(transforms.addPluginInfo(gWindow))
.addTransform(transforms.addBody)
.addTransform(sharedTransforms.addMessageWithError)
.addTransform(sharedTransforms.addTelemetryData)
.addTransform(sharedTransforms.addConfigToPayload)
.addTransform(transforms.scrubPayload)
.addTransform(sharedTransforms.userTransform(logger))
.addTransform(sharedTransforms.addConfiguredOptions)
.addTransform(sharedTransforms.addDiagnosticKeys)
.addTransform(sharedTransforms.itemToPayload);
}
function addPredicatesToQueue(queue) {
queue
.addPredicate(sharedPredicates.checkLevel)
.addPredicate(predicates.checkIgnore)
.addPredicate(sharedPredicates.userCheckIgnore(logger))
.addPredicate(sharedPredicates.urlIsNotBlacklisted(logger))
.addPredicate(sharedPredicates.urlIsWhitelisted(logger))
.addPredicate(sharedPredicates.messageIsIgnored(logger));
}
Rollbar.prototype._createItem = function(args) {
return _.createItem(args, logger, this);
};
Rollbar.prototype.loadFull = function() {
logger.info('Unexpected Rollbar.loadFull() called on a Notifier instance. This can happen when Rollbar is loaded multiple times.');
};
function _getFirstFunction(args) {
for (var i = 0, len = args.length; i < len; ++i) {
if (_.isFunction(args[i])) {
return args[i];
}
}
return undefined;
}
function _gWindow() {
return ((typeof window != 'undefined') && window) || ((typeof self != 'undefined') && self);
}
/* global __NOTIFIER_VERSION__:false */
/* global __DEFAULT_BROWSER_SCRUB_FIELDS__:false */
/* global __DEFAULT_LOG_LEVEL__:false */
/* global __DEFAULT_REPORT_LEVEL__:false */
/* global __DEFAULT_UNCAUGHT_ERROR_LEVEL:false */
/* global __DEFAULT_ENDPOINT__:false */
var defaultOptions = {
version: __NOTIFIER_VERSION__,
scrubFields: __DEFAULT_BROWSER_SCRUB_FIELDS__,
logLevel: __DEFAULT_LOG_LEVEL__,
reportLevel: __DEFAULT_REPORT_LEVEL__,
uncaughtErrorLevel: __DEFAULT_UNCAUGHT_ERROR_LEVEL,
endpoint: __DEFAULT_ENDPOINT__,
verbose: false,
enabled: true,
transmit: true,
sendConfig: false,
includeItemsInTelemetry: true,
captureIp: true,
inspectAnonymousErrors: true,
ignoreDuplicateErrors: true,
wrapGlobalEventHandlers: false
};
module.exports = Rollbar;
var globals = require('./globalSetup');
var wrapGlobals = require('./wrapGlobals');

@@ -56,3 +57,3 @@ function _wrapInternalErr(f) {

if (options.wrapGlobalEventHandlers) {
globals.wrapGlobals(window, handler, true);
wrapGlobals(window, handler, true);
}

@@ -59,0 +60,0 @@ }

var _ = require('../utility');
var scrub = require('../scrub');
var urlparser = require('./url');

@@ -413,3 +414,3 @@ var domUtil = require('./domUtility');

Instrumenter.prototype.scrubJson = function(json) {
return JSON.stringify(_.scrub(JSON.parse(json), this.options.scrubFields));
return JSON.stringify(scrub(JSON.parse(json), this.options.scrubFields));
}

@@ -416,0 +417,0 @@

@@ -312,7 +312,11 @@ var _ = require('../utility');

function scrubPayload(item, options, callback) {
var scrubFields = options.scrubFields || [];
var scrubPaths = options.scrubPaths || [];
item.data = _.scrub(item.data, scrubFields, scrubPaths);
callback(null, item);
function addScrubber(scrubFn) {
return function (item, options, callback) {
if (scrubFn) {
var scrubFields = options.scrubFields || [];
var scrubPaths = options.scrubPaths || [];
item.data = scrubFn(item.data, scrubFields, scrubPaths);
}
callback(null, item);
}
}

@@ -329,3 +333,3 @@

addBody: addBody,
scrubPayload: scrubPayload
addScrubber: addScrubber
};
/*global XDomainRequest*/
var _ = require('../utility');
var truncation = require('../truncation');
var logger = require('./logger');

@@ -24,4 +23,7 @@

*/
function Transport(truncation) {
this.truncation = truncation;
}
function get(accessToken, options, params, callback, requestFactory) {
Transport.prototype.get = function(accessToken, options, params, callback, requestFactory) {
if (!callback || !_.isFunction(callback)) {

@@ -37,3 +39,3 @@ callback = function() {};

function post(accessToken, options, payload, callback, requestFactory) {
Transport.prototype.post = function(accessToken, options, payload, callback, requestFactory) {
if (!callback || !_.isFunction(callback)) {

@@ -47,3 +49,8 @@ callback = function() {};

var stringifyResult = truncation.truncate(payload);
var stringifyResult;
if (this.truncation) {
stringifyResult = this.truncation.truncate(payload);
} else {
stringifyResult = _.stringify(payload)
}
if (stringifyResult.error) {

@@ -59,3 +66,3 @@ return callback(stringifyResult.error);

function postJsonPayload(accessToken, options, jsonPayload, callback, requestFactory) {
Transport.prototype.postJsonPayload = function (accessToken, options, jsonPayload, callback, requestFactory) {
if (!callback || !_.isFunction(callback)) {

@@ -252,6 +259,2 @@ callback = function() {};

module.exports = {
get: get,
post: post,
postJsonPayload: postJsonPayload
};
module.exports = Transport;

@@ -7,8 +7,10 @@ var packageJson = require('../../package.json');

var transport = require('./transport');
var Transport = require('./transport');
var urllib = require('../browser/url');
var Telemeter = require('../telemetry');
var transforms = require('./transforms');
var sharedTransforms = require('../transforms');
var sharedPredicates = require('../predicates');
var truncation = require('../truncation');

@@ -26,6 +28,10 @@ function Rollbar(options, client) {

this.options.environment = this.options.environment || 'unspecified';
var api = new API(this.options, transport, urllib);
this.client = client || new Client(this.options, api, logger, 'react-native');
var transport = new Transport(truncation);
var api = new API(this.options, transport, urllib, truncation);
var telemeter = new Telemeter(this.options)
this.client = client || new Client(this.options, api, logger, telemeter, 'react-native');
addTransformsToNotifier(this.client.notifier);
addPredicatesToQueue(this.client.queue);
_.setupJSON();
}

@@ -32,0 +38,0 @@

var _ = require('../utility');
var scrub = require('../scrub');
var errorParser = require('../errorParser');

@@ -94,3 +95,3 @@

scrubFields = scrubHeaders.concat(scrubFields);
item.data = _.scrub(item.data, scrubFields, scrubPaths);
item.data = scrub(item.data, scrubFields, scrubPaths);
callback(null, item);

@@ -97,0 +98,0 @@ }

var _ = require('../utility');
var truncation = require('../truncation');
var logger = require('./logger');

@@ -7,3 +6,8 @@

function get(accessToken, options, params, callback) {
function Transport(truncation) {
this.rateLimitExpires = 0;
this.truncation = truncation;
}
Transport.prototype.get = function(accessToken, options, params, callback) {
if (!callback || !_.isFunction(callback)) {

@@ -27,3 +31,3 @@ callback = function() {};

function post(accessToken, options, payload, callback) {
Transport.prototype.post = function(accessToken, options, payload, callback) {
if (!callback || !_.isFunction(callback)) {

@@ -36,3 +40,9 @@ callback = function() {};

}
var stringifyResult = truncation.truncate(payload);
var stringifyResult;
if (this.truncation) {
stringifyResult = this.truncation.truncate(payload);
} else {
stringifyResult = _.stringify(payload)
}
if (stringifyResult.error) {

@@ -48,3 +58,3 @@ logger.error('Problem stringifying payload. Giving up');

function postJsonPayload(accessToken, options, jsonPayload, callback) {
Transport.prototype.postJsonPayload = function(accessToken, options, jsonPayload, callback) {
if (!callback || !_.isFunction(callback)) {

@@ -121,6 +131,2 @@ callback = function() {};

module.exports = {
get: get,
post: post,
postJsonPayload: postJsonPayload
};
module.exports = Transport;
var RateLimiter = require('./rateLimiter');
var Queue = require('./queue');
var Notifier = require('./notifier');
var Telemeter = require('./telemetry');
var _ = require('./utility');

@@ -14,3 +13,3 @@

*/
function Rollbar(options, api, logger, platform) {
function Rollbar(options, api, logger, telemeter, platform) {
this.options = _.merge(options);

@@ -35,3 +34,3 @@ this.logger = logger;

this.notifier = new Notifier(this.queue, this.options);
this.telemeter = new Telemeter(this.options);
this.telemeter = telemeter;
setStackTraceLimit(options);

@@ -120,11 +119,11 @@ this.lastError = null;

Rollbar.prototype.captureEvent = function (type, metadata, level) {
return this.telemeter.captureEvent(type, metadata, level);
return this.telemeter && this.telemeter.captureEvent(type, metadata, level);
};
Rollbar.prototype.captureDomContentLoaded = function (ts) {
return this.telemeter.captureDomContentLoaded(ts);
return this.telemeter && this.telemeter.captureDomContentLoaded(ts);
};
Rollbar.prototype.captureLoad = function (ts) {
return this.telemeter.captureLoad(ts);
return this.telemeter && this.telemeter.captureLoad(ts);
};

@@ -159,4 +158,4 @@

item.level = item.level || defaultLevel;
this.telemeter._captureRollbarItem(item);
item.telemetryEvents = this.telemeter.copyEvents();
this.telemeter && this.telemeter._captureRollbarItem(item);
item.telemetryEvents = (this.telemeter && this.telemeter.copyEvents()) || [];
this.notifier.log(item, callback);

@@ -242,3 +241,3 @@ } catch (e) {

const scope = tracer.scope();
var scope = tracer.scope();

@@ -261,3 +260,3 @@ if (!scope || !scope.active || typeof scope.active !== 'function') {

const spanContext = span.context();
var spanContext = span.context();

@@ -264,0 +263,0 @@ if (!spanContext

@@ -14,5 +14,7 @@ var util = require('util');

var Telemeter = require('../telemetry');
var transforms = require('./transforms');
var sharedTransforms = require('../transforms');
var sharedPredicates = require('../predicates');
var truncation = require('../truncation');

@@ -38,7 +40,9 @@ function Rollbar(options, client) {

var transport = new Transport();
var api = new API(this.options, transport, urllib, jsonBackup);
this.client = client || new Client(this.options, api, logger, 'server');
var api = new API(this.options, transport, urllib, truncation, jsonBackup);
var telemeter = new Telemeter(this.options)
this.client = client || new Client(this.options, api, logger, telemeter, 'server');
addTransformsToNotifier(this.client.notifier);
addPredicatesToQueue(this.client.queue);
this.setupUnhandledCapture();
_.setupJSON();
}

@@ -45,0 +49,0 @@

var SourceMapConsumer = require('source-map').SourceMapConsumer;
var path = require('path');
var fs = require('fs');
var bufferFrom = require('buffer-from');

@@ -97,3 +96,3 @@ /**

var rawData = sourceMappingURL.slice(sourceMappingURL.indexOf(',') + 1);
sourceMapData = bufferFrom(rawData, 'base64').toString();
sourceMapData = Buffer.from(rawData, 'base64').toString();
sourceMappingURL = source;

@@ -100,0 +99,0 @@ } else {

@@ -6,2 +6,3 @@ var async = require('async');

var _ = require('../utility');
var scrub = require('../scrub');

@@ -116,2 +117,4 @@ function baseData(item, options, callback) {

var baseUrl = req.baseUrl || '';
if (options.addRequestData && _.isFunction(options.addRequestData)) {

@@ -127,7 +130,11 @@ options.addRequestData(item.data, req);

var routePath;
if (req.route) {
item.data.context = req.route.path;
routePath = req.route.path;
item.data.context = baseUrl && baseUrl.length ? baseUrl + routePath : routePath;
} else {
try {
item.data.context = req.app._router.matchRequest(req).path;
routePath = req.app._router.matchRequest(req).path;
item.data.context = baseUrl && baseUrl.length ? baseUrl + routePath : routePath;
} catch (ignore) {

@@ -198,3 +205,3 @@ // Ignored

parseRequestBody(item.data.request, options);
item.data = _.scrub(item.data, scrubFields, scrubPaths);
item.data = scrub(item.data, scrubFields, scrubPaths);
serializeRequestBody(item.data.request, options);

@@ -270,4 +277,6 @@

var parsedUrl;
var baseUrl = req.baseUrl || '';
if (_.isType(req.url, 'string')) {
parsedUrl = url.parse(req.url, true);
var fullUrl = baseUrl && baseUrl.length ? baseUrl + req.url : req.url
parsedUrl = url.parse(fullUrl, true);
} else {

@@ -274,0 +283,0 @@ parsedUrl = req.url || {};

var _ = require('./utility');
var traverse = require('./utility/traverse');

@@ -51,3 +52,3 @@ function raw(payload, jsonBackup) {

case 'array':
return _.traverse(v, truncator, seen);
return traverse(v, truncator, seen);
default:

@@ -57,3 +58,3 @@ return v;

}
payload = _.traverse(payload, truncator, []);
payload = traverse(payload, truncator, []);
return [payload, _.stringify(payload, jsonBackup)];

@@ -60,0 +61,0 @@ }

@@ -5,3 +5,3 @@ var merge = require('./merge');

var __initRollbarJSON = false;
function setupJSON() {
function setupJSON(polyfillJSON) {
if (__initRollbarJSON) {

@@ -21,7 +21,5 @@ return;

if (!isFunction(RollbarJSON.stringify) || !isFunction(RollbarJSON.parse)) {
var setupCustomJSON = require('../vendor/JSON-js/json3.js');
setupCustomJSON(RollbarJSON);
polyfillJSON(RollbarJSON);
}
}
setupJSON();

@@ -142,37 +140,2 @@ /*

function traverse(obj, func, seen) {
var k, v, i;
var isObj = isType(obj, 'object');
var isArray = isType(obj, 'array');
var keys = [];
if (isObj && seen.indexOf(obj) !== -1) {
return obj;
}
seen.push(obj);
if (isObj) {
for (k in obj) {
if (Object.prototype.hasOwnProperty.call(obj, k)) {
keys.push(k);
}
}
} else if (isArray) {
for (i = 0; i < obj.length; ++i) {
keys.push(i);
}
}
var result = isObj ? {} : [];
var same = true;
for (i = 0; i < keys.length; ++i) {
k = keys[i];
v = obj[k];
result[k] = func(k, v, seen);
same = same && result[k] === obj[k];
}
return (keys.length != 0 && !same) ? result : obj;
}
function redact() {

@@ -629,91 +592,2 @@ return '********';

function scrub(data, scrubFields, scrubPaths) {
scrubFields = scrubFields || [];
if (scrubPaths) {
for (var i = 0; i < scrubPaths.length; ++i) {
scrubPath(data, scrubPaths[i]);
}
}
var paramRes = _getScrubFieldRegexs(scrubFields);
var queryRes = _getScrubQueryParamRegexs(scrubFields);
function redactQueryParam(dummy0, paramPart) {
return paramPart + redact();
}
function paramScrubber(v) {
var i;
if (isType(v, 'string')) {
for (i = 0; i < queryRes.length; ++i) {
v = v.replace(queryRes[i], redactQueryParam);
}
}
return v;
}
function valScrubber(k, v) {
var i;
for (i = 0; i < paramRes.length; ++i) {
if (paramRes[i].test(k)) {
v = redact();
break;
}
}
return v;
}
function scrubber(k, v, seen) {
var tmpV = valScrubber(k, v);
if (tmpV === v) {
if (isType(v, 'object') || isType(v, 'array')) {
return traverse(v, scrubber, seen);
}
return paramScrubber(tmpV);
} else {
return tmpV;
}
}
return traverse(data, scrubber, []);
}
function scrubPath(obj, path) {
var keys = path.split('.');
var last = keys.length - 1;
try {
for (var i = 0; i <= last; ++i) {
if (i < last) {
obj = obj[keys[i]];
} else {
obj[keys[i]] = redact();
}
}
} catch (e) {
// Missing key is OK;
}
}
function _getScrubFieldRegexs(scrubFields) {
var ret = [];
var pat;
for (var i = 0; i < scrubFields.length; ++i) {
pat = '^\\[?(%5[bB])?' + scrubFields[i] + '\\[?(%5[bB])?\\]?(%5[dD])?$';
ret.push(new RegExp(pat, 'i'));
}
return ret;
}
function _getScrubQueryParamRegexs(scrubFields) {
var ret = [];
var pat;
for (var i = 0; i < scrubFields.length; ++i) {
pat = '\\[?(%5[bB])?' + scrubFields[i] + '\\[?(%5[bB])?\\]?(%5[dD])?';
ret.push(new RegExp('(' + pat + '=)([^&\\n]+)', 'igm'));
}
return ret;
}
function formatArgsAsString(args) {

@@ -825,9 +699,8 @@ var i, len, arg;

sanitizeUrl: sanitizeUrl,
scrub: scrub,
set: set,
setupJSON: setupJSON,
stringify: stringify,
maxByteSize: maxByteSize,
traverse: traverse,
typeName: typeName,
uuid4: uuid4
};

@@ -7,2 +7,4 @@ /* globals expect */

var API = require('../src/api');
var utility = require('../src/utility');
utility.setupJSON();

@@ -9,0 +11,0 @@ function TestTransportGenerator() {

@@ -7,2 +7,4 @@ /* globals expect */

var u = require('../src/apiUtility');
var utility = require('../src/utility');
utility.setupJSON();

@@ -161,2 +163,1 @@ describe('buildPayload', function() {

});

@@ -558,2 +558,39 @@ /* globals expect */

});
it('should add _wrappedSource when wrapGlobalEventHandlers is set', function(done) {
var server = window.server;
stubResponse(server);
server.requests.length = 0;
var options = {
accessToken: 'POST_CLIENT_ITEM_TOKEN',
captureUncaught: true,
wrapGlobalEventHandlers: true
};
var rollbar = window.rollbar = new Rollbar(options);
var element = document.getElementById('throw-event-handler-error');
element.click();
setTimeout(function() {
server.respond();
var body = JSON.parse(server.requests[0].requestBody);
expect(body.access_token).to.eql('POST_CLIENT_ITEM_TOKEN');
expect(body.data.body.trace.exception.message).to.eql('event handler error');
expect(body.data.body.trace.extra).to.have.property('_wrappedSource');
// karma doesn't unload the browser between tests, so the onerror handler
// will remain installed. Unset captureUncaught so the onerror handler
// won't affect other tests.
rollbar.configure({
captureUncaught: false,
wrapGlobalEventHandlers: false
});
done();
}, 100);
});
});

@@ -560,0 +597,0 @@

@@ -474,3 +474,5 @@ /* globals expect */

expect(payload.data.custom.user.id).to.eql(42);
t.scrubPayload(payload, options, function(e, i) {
var scrub = require('../src/scrub');
(t.addScrubber(scrub))(payload, options, function(e, i) {
expect(i.access_token).to.eql(accessToken);

@@ -477,0 +479,0 @@ expect(i.data.custom.scooby).to.not.eql('doo');

@@ -6,3 +6,7 @@ /* globals expect */

var t = require('../src/browser/transport');
var truncation = require('../src/truncation');
var Transport = require('../src/browser/transport');
var t = new Transport(truncation);
var utility = require('../src/utility');
utility.setupJSON();

@@ -117,2 +121,1 @@ describe('post', function() {

};

@@ -6,3 +6,7 @@ /* globals expect */

var t = require('../src/react-native/transport');
var truncation = require('../src/truncation');
var Transport = require('../src/react-native/transport');
var t = new Transport(truncation);
var utility = require('../src/utility');
utility.setupJSON();

@@ -9,0 +13,0 @@ describe('post', function() {

@@ -511,2 +511,42 @@ "use strict";

},
'with a request for a nested router with a baseURL': {
topic: function(options) {
var item = {
request: {
headers: {
host: 'example.com',
'x-auth-token': '12345'
},
protocol: 'https',
url: '/some/endpoint',
baseUrl: '/nested',
ip: '192.192.192.1',
method: 'GET',
body: {
token: 'abc123',
something: 'else'
},
route: { path: '/api/:bork' },
user: {
id: 42,
email: 'fake@example.com'
}
},
stuff: 'hey',
data: {other: 'thing'}
};
t.addRequestData(item, options, this.callback);
},
'should not error': function(err, item) {
assert.ifError(err);
},
'should have a request object inside data': function(err, item) {
assert.ok(item.data.request);
},
'should set some fields based on request data': function(err, item) {
var r = item.data.request;
assert.equal(r.url, 'https://example.com/nested/some/endpoint');
assert.equal(item.data.context, '/nested/api/:bork');
},
},
'with a request like from hapi': {

@@ -513,0 +553,0 @@ topic: function(options) {

@@ -6,2 +6,4 @@ /* globals expect */

var t = require('../src/truncation');
var utility = require('../src/utility');
utility.setupJSON();

@@ -8,0 +10,0 @@ describe('truncate', function() {

@@ -7,2 +7,4 @@ /* globals expect */

var _ = require('../src/utility');
var utility = require('../src/utility');
utility.setupJSON();

@@ -331,2 +333,3 @@ describe('typeName', function() {

var traverse = require('../src/utility/traverse');
describe('traverse', function() {

@@ -338,3 +341,3 @@ describe('should call the func for every key,value', function() {

var callCount = 0;
var result = _.traverse(obj, function(k, v) {
var result = traverse(obj, function(k, v) {
callCount++;

@@ -352,3 +355,3 @@ return v + 1;

var callCount = 0;
var result = _.traverse(obj, function(k, v) {
var result = traverse(obj, function(k, v) {
callCount++;

@@ -369,3 +372,3 @@ if (k === 'c') {

var callCount = 0;
var result = _.traverse(obj, function(k, v) {
var result = traverse(obj, function(k, v) {
callCount++;

@@ -641,2 +644,3 @@ return v - 1;

var scrub = require('../src/scrub');
describe('scrub', function() {

@@ -651,3 +655,3 @@ it('should not redact fields that are okay', function() {

var result = _.scrub(data, scrubFields);
var result = scrub(data, scrubFields);

@@ -664,3 +668,3 @@ expect(result.a).to.eql('somestring');

var result = _.scrub(data, scrubFields);
var result = scrub(data, scrubFields);

@@ -683,3 +687,3 @@ expect(result.password).to.eql(_.redact());

var result = _.scrub(data, scrubFields);
var result = scrub(data, scrubFields);

@@ -706,3 +710,3 @@ expect(result.a.b.other).to.eql('stuff');

var result = _.scrub(data, scrubFields);
var result = scrub(data, scrubFields);

@@ -734,3 +738,3 @@ expect(result.thing).to.eql('stuff');

var result = _.scrub(data, [], scrubPaths);
var result = scrub(data, [], scrubPaths);

@@ -737,0 +741,0 @@ expect(result.a.b.bar).to.eql('stuff');

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc