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.7.1 to 2.8.0

src/server/sourceMap/stackTrace.js

2

dist/rollbar.snippet.js

@@ -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){var n=o(1),t=o(4);_rollbarConfig=_rollbarConfig||{},_rollbarConfig.rollbarJsUrl=_rollbarConfig.rollbarJsUrl||"https://cdnjs.cloudflare.com/ajax/libs/rollbar.js/2.7.1/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){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),d=function(r,e){return new l(r,e)},c=function(r){return new i(d,r)};function s(r){return t(function(){var e=Array.prototype.slice.call(arguments,0),o={shim:this,method:r,args:e,ts:new Date};window._rollbarShims[this.shimId()].messages.push(o)})}l.prototype.loadFull=function(r,e,o,n,a){var l=!1,i=e.createElement("script"),d=e.getElementsByTagName("script")[0],c=d.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{c.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)}()}}),c.insertBefore(i,d)},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 p="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleUnhandledRejection,captureEvent,captureDomContentLoaded,captureLoad".split(","),u=0;u<p.length;++u)l.prototype[p[u]]=s(p[u]);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 c(e);return t(function(){e.captureUncaught&&(a._rollbarOldOnError=r.onerror,n.captureUncaughtExceptions(r,a,!0),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:c}},function(r,e){function o(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 n;if("function"==typeof e._rollbarOldOnError)n=e._rollbarOldOnError;else if(r.onerror){for(n=r.onerror;n._rollbarOldOnError;)n=n._rollbarOldOnError;e._rollbarOldOnError=n}var t=function(){var o=Array.prototype.slice.call(arguments,0);!function(r,e,o,n){r._rollbarWrappedError&&(n[4]||(n[4]=r._rollbarWrappedError),n[5]||(n[5]=r._rollbarWrappedError._rollbarContext),r._rollbarWrappedError=null),e.handleUncaughtException.apply(e,n),o&&o.apply(r,n)}(r,e,n,o)};o&&(t._rollbarOldOnError=n),r.onerror=t}},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,n){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&&o(e,r[a].prototype,n)}}}},function(r,e){function o(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,handleUnhandledRejection,_createItem,wrap,loadFull,shimId,captureEvent,captureDomContentLoaded,captureLoad".split(","),n=0;n<o.length;n++)r[o[n]]=e(o[n])}(o.prototype)}o.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=o},function(r,e){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){var n=o(1),t=o(4);_rollbarConfig=_rollbarConfig||{},_rollbarConfig.rollbarJsUrl=_rollbarConfig.rollbarJsUrl||"https://cdnjs.cloudflare.com/ajax/libs/rollbar.js/2.8.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){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),d=function(r,e){return new l(r,e)},s=function(r){return new i(d,r)};function c(r){return t(function(){var e=Array.prototype.slice.call(arguments,0),o={shim:this,method:r,args:e,ts:new Date};window._rollbarShims[this.shimId()].messages.push(o)})}l.prototype.loadFull=function(r,e,o,n,a){var l=!1,i=e.createElement("script"),d=e.getElementsByTagName("script")[0],s=d.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{s.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)}()}}),s.insertBefore(i,d)},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 p="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleUnhandledRejection,captureEvent,captureDomContentLoaded,captureLoad".split(","),u=0;u<p.length;++u)l.prototype[p[u]]=c(p[u]);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 s(e);return t(function(){e.captureUncaught&&(a._rollbarOldOnError=r.onerror,n.captureUncaughtExceptions(r,a,!0),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:s}},function(r,e){function o(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 n;if("function"==typeof e._rollbarOldOnError)n=e._rollbarOldOnError;else if(r.onerror){for(n=r.onerror;n._rollbarOldOnError;)n=n._rollbarOldOnError;e._rollbarOldOnError=n}e.handleAnonymousErrors();var t=function(){var o=Array.prototype.slice.call(arguments,0);!function(r,e,o,n){r._rollbarWrappedError&&(n[4]||(n[4]=r._rollbarWrappedError),n[5]||(n[5]=r._rollbarWrappedError._rollbarContext),r._rollbarWrappedError=null),e.handleUncaughtException.apply(e,n),o&&o.apply(r,n)}(r,e,n,o)};o&&(t._rollbarOldOnError=n),r.onerror=t}},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,n){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&&o(e,r[a].prototype,n)}}}},function(r,e){function o(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,handleUnhandledRejection,_createItem,wrap,loadFull,shimId,captureEvent,captureDomContentLoaded,captureLoad".split(","),n=0;n<o.length;n++)r[o[n]]=e(o[n])}(o.prototype)}o.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=o},function(r,e){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}}}}]);
{
"name": "rollbar",
"version": "2.7.1",
"version": "2.8.0",
"repository": {

@@ -78,2 +78,3 @@ "type": "git",

"mootools": "^1.5.1",
"natives": "^1.1.6",
"nock": "^9.0.7",

@@ -80,0 +81,0 @@ "node-libs-browser": "^0.5.2",

# Rollbar.js
[![Build Status](https://api.travis-ci.org/rollbar/rollbar.js.png?branch=v2.7.1)](https://travis-ci.org/rollbar/rollbar.js)
[![Build Status](https://api.travis-ci.org/rollbar/rollbar.js.png?branch=v2.8.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)

@@ -5,0 +5,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)

@@ -15,2 +15,4 @@ function captureUncaughtExceptions(window, handler, shim) {

handler.handleAnonymousErrors();
var fn = function() {

@@ -17,0 +19,0 @@ var args = Array.prototype.slice.call(arguments, 0);

@@ -24,2 +24,4 @@ var Client = require('../rollbar');

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);

@@ -241,2 +243,6 @@ addPredicatesToQueue(this.client.queue);

}
if (this.options.inspectAnonymousErrors && this.isChrome && !error) {
this.anonymousErrorsPending += 1; // See Rollbar.prototype.handleAnonymousErrors()
return;
}

@@ -269,2 +275,56 @@ var 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;
}
// 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);
}
}
return error.toString();
}
// 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) {

@@ -464,7 +524,9 @@ if (!this.options.captureUnhandledRejections && !this.options.handleUnhandledRejections) {

enabled: true,
transmit: true,
sendConfig: false,
includeItemsInTelemetry: true,
captureIp: true
captureIp: true,
inspectAnonymousErrors: true
};
module.exports = Rollbar;

@@ -91,2 +91,6 @@ var _ = require('./utility');

this.removePendingItem(originalItem);
if (!this.options.transmit) {
callback(new Error('Transmit disabled'));
return;
}
this.pendingRequests.push(item);

@@ -93,0 +97,0 @@ try {

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

enabled: true,
transmit: true,
sendConfig: false,

@@ -319,0 +320,0 @@ includeItemsInTelemetry: true

@@ -8,2 +8,3 @@ 'use strict';

var util = require('util');
var stackTrace = require('./sourceMap/stackTrace');

@@ -119,2 +120,9 @@ var linesOfContext = 3;

function mapPosition(position) {
return stackTrace.mapSourcePosition({
source: position.source,
line: position.line,
column: position.column
});
}

@@ -129,2 +137,3 @@ function parseFrameLine(line, callback) {

}
matched = curLine.match(tracePattern);

@@ -136,7 +145,16 @@ if (!matched) {

data = matched.slice(1);
var position = {
source: data[1],
line: Math.floor(data[2]),
column: Math.floor(data[3]) - 1
};
if (this.useSourceMaps) {
position = mapPosition(position);
}
frame = {
method: data[0] || '<unknown>',
filename: data[1],
lineno: Math.floor(data[2]),
colno: Math.floor(data[3])
filename: position.source,
lineno: position.line,
colno: position.column
};

@@ -259,6 +277,6 @@

exports.parseException = function (exc, callback) {
exports.parseException = function (exc, options, callback) {
var multipleErrs = getMultipleErrors(exc.errors);
return exports.parseStack(exc.stack, function (err, stack) {
return exports.parseStack(exc.stack, options, function (err, stack) {
var message, clss, ret, firstErr, jadeMatch, jadeData;

@@ -299,3 +317,3 @@

exports.parseStack = function (stack, callback) {
exports.parseStack = function (stack, options, callback) {
var lines, _stack = stack;

@@ -312,3 +330,3 @@

// Parse out all of the frame and filename info
async.map(lines, parseFrameLine, function (err, frames) {
async.map(lines, parseFrameLine.bind({ useSourceMaps: options.nodeSourceMaps }), function (err, frames) {
if (err) {

@@ -315,0 +333,0 @@ return callback(err);

@@ -618,2 +618,3 @@ var util = require('util');

enabled: true,
transmit: true,
sendConfig: false,

@@ -620,0 +621,0 @@ includeItemsInTelemetry: false,

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

};
async.eachSeries(errors, _buildTraceData(chain), cb);
async.eachSeries(errors, _buildTraceData(chain, options), cb);
}

@@ -194,5 +194,5 @@

function _buildTraceData(chain) {
function _buildTraceData(chain, options) {
return function(ex, cb) {
parser.parseException(ex, function (err, errData) {
parser.parseException(ex, options, function (err, errData) {
if (err) {

@@ -273,2 +273,1 @@ return cb(err);

};

@@ -301,2 +301,46 @@ /* globals expect */

});
// Test case expects Chrome, which is the currently configured karma js/browser
// engine at the time of this comment. However, karma's Chrome and ChromeHeadless
// don't actually behave like real Chrome so we settle for stubbing some things.
it('should capture external error data when inspectAnonymousErrors is true', function(done) {
var server = window.server;
stubResponse(server);
server.requests.length = 0;
// We're supposedly running on ChromeHeadless, but still need to spoof Chrome. :\
window.chrome = { runtime: true};
var options = {
accessToken: 'POST_CLIENT_ITEM_TOKEN',
captureUncaught: true,
inspectAnonymousErrors: true
};
var rollbar = new Rollbar(options);
// Simulate receiving onerror without an error object.
rollbar.anonymousErrorsPending += 1;
try {
throw new Error('anon error')
} catch(e) {
Error.prepareStackTrace(e);
}
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('anon error');
// 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
});
done();
});
});

@@ -303,0 +347,0 @@

@@ -109,3 +109,3 @@ /* globals expect */

var logger = new (TestLoggerGenerator())();
var options = {};
var options = {transmit: true};
var queue = new Queue(rateLimiter, api, logger, options);

@@ -131,3 +131,3 @@

var logger = new (TestLoggerGenerator())();
var options = {};
var options = {transmit: true};
var queue = new Queue(rateLimiter, api, logger, options);

@@ -153,3 +153,3 @@

var logger = new (TestLoggerGenerator())();
var options = {};
var options = {transmit: true};
var queue = new Queue(rateLimiter, api, logger, options);

@@ -177,3 +177,3 @@

var logger = new (TestLoggerGenerator())();
var options = {verbose: true};
var options = {verbose: true, transmit: true};
var queue = new Queue(rateLimiter, api, logger, options);

@@ -202,3 +202,3 @@

var logger = new (TestLoggerGenerator())();
var options = {verbose: true};
var options = {verbose: true, transmit: true};
var queue = new Queue(rateLimiter, api, logger, options);

@@ -227,3 +227,3 @@

var logger = new (TestLoggerGenerator())();
var options = {verbose: false};
var options = {verbose: false, transmit: true};
var queue = new Queue(rateLimiter, api, logger, options);

@@ -252,3 +252,3 @@

var logger = new (TestLoggerGenerator())();
var options = {};
var options = {transmit: true};
var queue = new Queue(rateLimiter, api, logger, options);

@@ -279,3 +279,3 @@

var logger = new (TestLoggerGenerator())();
var options = {};
var options = {transmit: true};
var queue = new Queue(rateLimiter, api, logger, options);

@@ -308,3 +308,3 @@

var logger = new (TestLoggerGenerator())();
var options = {};
var options = {transmit: true};
var queue = new Queue(rateLimiter, api, logger, options);

@@ -341,3 +341,3 @@

var logger = new (TestLoggerGenerator())();
var options = {};
var options = {transmit: true};
var queue = new Queue(rateLimiter, api, logger, options);

@@ -367,3 +367,3 @@

var logger = new (TestLoggerGenerator())();
var options = {};
var options = {transmit: true};
var queue = new Queue(rateLimiter, api, logger, options);

@@ -390,3 +390,3 @@

var logger = new (TestLoggerGenerator())();
var options = {};
var options = {transmit: true};
var queue = new Queue(rateLimiter, api, logger, options);

@@ -421,3 +421,3 @@

var logger = new (TestLoggerGenerator())();
var options = {};
var options = {transmit: true};
var queue = new Queue(rateLimiter, api, logger, options);

@@ -450,3 +450,3 @@

var logger = new (TestLoggerGenerator())();
var options = {retryInterval: 1};
var options = {retryInterval: 1, transmit: true};
var queue = new Queue(rateLimiter, api, logger, options);

@@ -473,3 +473,3 @@

var logger = new (TestLoggerGenerator())();
var options = {};
var options = {transmit: true};
var queue = new Queue(rateLimiter, api, logger, options);

@@ -496,3 +496,3 @@

var logger = new (TestLoggerGenerator())();
var options = {retryInterval: 1};
var options = {retryInterval: 1, transmit: true};
var queue = new Queue(rateLimiter, api, logger, options);

@@ -524,2 +524,21 @@

});
describe('transmit disabled', function() {
it('should not attempt to send', function(done) {
var rateLimiter = new (TestRateLimiterGenerator())();
var api = new (TestApiGenerator())();
var logger = new (TestLoggerGenerator())();
var options = {transmit: false};
var queue = new Queue(rateLimiter, api, logger, options);
var makeApiRequestStub = sinon.stub(queue, '_makeApiRequest');
queue.addItem({mykey: 'myvalue'}, function(err) {
expect(err.message).to.eql('Transmit disabled');
});
expect(makeApiRequestStub.called).to.eql(0);
queue._makeApiRequest.restore();
done();
});
});
});

@@ -531,3 +550,3 @@ describe('rate limited', function() {

var logger = new (TestLoggerGenerator())();
var options = {};
var options = {transmit: true};
var queue = new Queue(rateLimiter, api, logger, options);

@@ -560,3 +579,3 @@

var logger = new (TestLoggerGenerator())();
var options = {};
var options = {transmit: true};
var queue = new Queue(rateLimiter, api, logger, options);

@@ -589,2 +608,1 @@

});

@@ -6,2 +6,3 @@ "use strict";

var vows = require('vows');
var sinon = require('sinon');
var t = require('../src/server/transforms');

@@ -18,2 +19,17 @@

async function wait(ms) {
return new Promise(resolve => {
setTimeout(resolve, ms);
});
}
async function throwInTypescriptFile(rollbar, callback) {
setTimeout(function () {
var error = require('../examples/node-typescript/dist/index');
error();
}, 10);
await wait(500);
callback(rollbar);
}
vows.describe('transforms')

@@ -246,2 +262,29 @@ .addBatch({

'handleItemWithError': {
'nodeSourceMaps': {
topic: function() {
var Rollbar = new rollbar({
accessToken: 'abc123',
captureUncaught: true,
nodeSourceMaps: true
});
var queue = Rollbar.client.notifier.queue;
Rollbar.addItemStub = sinon.stub(queue, 'addItem');
throwInTypescriptFile(Rollbar, this.callback);
},
'should map the stack': function(r) {
var addItem = r.addItemStub;
assert.isTrue(addItem.called);
if (addItem.called) {
var frame = addItem.getCall(0).args[0].body.trace_chain[0].frames.pop();
console.log(frame);
assert.ok(frame.filename.includes('src/index.ts'));
assert.equal(frame.lineno, 10);
assert.equal(frame.colno, 22);
assert.equal(frame.code, " var error = <Error> new CustomError('foo');");
}
addItem.reset();
},
},
'options': {

@@ -248,0 +291,0 @@ 'anything': {

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