Page MenuHomeSoftware Heritage

inboundfilters.js
No OneTemporary

inboundfilters.js

import { __read, __spread } from "tslib";
import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';
import { getEventDescription, isMatchingPattern, logger } from '@sentry/utils';
// "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.
var DEFAULT_IGNORE_ERRORS = [/^Script error\.?$/, /^Javascript error: Script error\.? on line 0$/];
/** Inbound filters configurable by the user */
var InboundFilters = /** @class */ (function () {
function InboundFilters(_options) {
if (_options === void 0) { _options = {}; }
this._options = _options;
/**
* @inheritDoc
*/
this.name = InboundFilters.id;
}
/**
* @inheritDoc
*/
InboundFilters.prototype.setupOnce = function () {
addGlobalEventProcessor(function (event) {
var hub = getCurrentHub();
if (!hub) {
return event;
}
var self = hub.getIntegration(InboundFilters);
if (self) {
var client = hub.getClient();
var clientOptions = client ? client.getOptions() : {};
// This checks prevents most of the occurrences of the bug linked below:
// https://github.com/getsentry/sentry-javascript/issues/2622
// The bug is caused by multiple SDK instances, where one is minified and one is using non-mangled code.
// Unfortunatelly we cannot fix it reliably (thus reserved property in rollup's terser config),
// as we cannot force people using multiple instances in their apps to sync SDK versions.
var options = typeof self._mergeOptions === 'function' ? self._mergeOptions(clientOptions) : {};
if (typeof self._shouldDropEvent !== 'function') {
return event;
}
return self._shouldDropEvent(event, options) ? null : event;
}
return event;
});
};
/** JSDoc */
InboundFilters.prototype._shouldDropEvent = function (event, options) {
if (this._isSentryError(event, options)) {
logger.warn("Event dropped due to being internal Sentry Error.\nEvent: " + getEventDescription(event));
return true;
}
if (this._isIgnoredError(event, options)) {
logger.warn("Event dropped due to being matched by `ignoreErrors` option.\nEvent: " + getEventDescription(event));
return true;
}
if (this._isDeniedUrl(event, options)) {
logger.warn("Event dropped due to being matched by `denyUrls` option.\nEvent: " + getEventDescription(event) + ".\nUrl: " + this._getEventFilterUrl(event));
return true;
}
if (!this._isAllowedUrl(event, options)) {
logger.warn("Event dropped due to not being matched by `allowUrls` option.\nEvent: " + getEventDescription(event) + ".\nUrl: " + this._getEventFilterUrl(event));
return true;
}
return false;
};
/** JSDoc */
InboundFilters.prototype._isSentryError = function (event, options) {
if (!options.ignoreInternal) {
return false;
}
try {
return ((event &&
event.exception &&
event.exception.values &&
event.exception.values[0] &&
event.exception.values[0].type === 'SentryError') ||
false);
}
catch (_oO) {
return false;
}
};
/** JSDoc */
InboundFilters.prototype._isIgnoredError = function (event, options) {
if (!options.ignoreErrors || !options.ignoreErrors.length) {
return false;
}
return this._getPossibleEventMessages(event).some(function (message) {
// Not sure why TypeScript complains here...
return options.ignoreErrors.some(function (pattern) { return isMatchingPattern(message, pattern); });
});
};
/** JSDoc */
InboundFilters.prototype._isDeniedUrl = function (event, options) {
// TODO: Use Glob instead?
if (!options.denyUrls || !options.denyUrls.length) {
return false;
}
var url = this._getEventFilterUrl(event);
return !url ? false : options.denyUrls.some(function (pattern) { return isMatchingPattern(url, pattern); });
};
/** JSDoc */
InboundFilters.prototype._isAllowedUrl = function (event, options) {
// TODO: Use Glob instead?
if (!options.allowUrls || !options.allowUrls.length) {
return true;
}
var url = this._getEventFilterUrl(event);
return !url ? true : options.allowUrls.some(function (pattern) { return isMatchingPattern(url, pattern); });
};
/** JSDoc */
InboundFilters.prototype._mergeOptions = function (clientOptions) {
if (clientOptions === void 0) { clientOptions = {}; }
return {
allowUrls: __spread((this._options.whitelistUrls || []), (this._options.allowUrls || []), (clientOptions.whitelistUrls || []), (clientOptions.allowUrls || [])),
denyUrls: __spread((this._options.blacklistUrls || []), (this._options.denyUrls || []), (clientOptions.blacklistUrls || []), (clientOptions.denyUrls || [])),
ignoreErrors: __spread((this._options.ignoreErrors || []), (clientOptions.ignoreErrors || []), DEFAULT_IGNORE_ERRORS),
ignoreInternal: typeof this._options.ignoreInternal !== 'undefined' ? this._options.ignoreInternal : true,
};
};
/** JSDoc */
InboundFilters.prototype._getPossibleEventMessages = function (event) {
if (event.message) {
return [event.message];
}
if (event.exception) {
try {
var _a = (event.exception.values && event.exception.values[0]) || {}, _b = _a.type, type = _b === void 0 ? '' : _b, _c = _a.value, value = _c === void 0 ? '' : _c;
return ["" + value, type + ": " + value];
}
catch (oO) {
logger.error("Cannot extract message for event " + getEventDescription(event));
return [];
}
}
return [];
};
/** JSDoc */
InboundFilters.prototype._getLastValidUrl = function (frames) {
if (frames === void 0) { frames = []; }
var _a, _b;
for (var i = frames.length - 1; i >= 0; i--) {
var frame = frames[i];
if (((_a = frame) === null || _a === void 0 ? void 0 : _a.filename) !== '<anonymous>' && ((_b = frame) === null || _b === void 0 ? void 0 : _b.filename) !== '[native code]') {
return frame.filename || null;
}
}
return null;
};
/** JSDoc */
InboundFilters.prototype._getEventFilterUrl = function (event) {
try {
if (event.stacktrace) {
var frames_1 = event.stacktrace.frames;
return this._getLastValidUrl(frames_1);
}
if (event.exception) {
var frames_2 = event.exception.values && event.exception.values[0].stacktrace && event.exception.values[0].stacktrace.frames;
return this._getLastValidUrl(frames_2);
}
return null;
}
catch (oO) {
logger.error("Cannot extract url for event " + getEventDescription(event));
return null;
}
};
/**
* @inheritDoc
*/
InboundFilters.id = 'InboundFilters';
return InboundFilters;
}());
export { InboundFilters };
//# sourceMappingURL=inboundfilters.js.map

File Metadata

Mime Type
text/x-java
Expires
Thu, Jul 3, 11:13 AM (1 w, 1 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3360884

Event Timeline