@sentry/core
Version:
Base implementation for all Sentry JavaScript SDKs
45 lines (36 loc) • 1.26 kB
JavaScript
Object.defineProperty(exports, '__esModule', { value: true });
const utils = require('@sentry/utils');
let originalFunctionToString;
/** Patch toString calls to return proper name for wrapped functions */
class FunctionToString {
/**
* @inheritDoc
*/
static __initStatic() {this.id = 'FunctionToString';}
/**
* @inheritDoc
*/
constructor() {
this.name = FunctionToString.id;
}
/**
* @inheritDoc
*/
setupOnce() {
// eslint-disable-next-line @typescript-eslint/unbound-method
originalFunctionToString = Function.prototype.toString;
// intrinsics (like Function.prototype) might be immutable in some environments
// e.g. Node with --frozen-intrinsics, XS (an embedded JavaScript engine) or SES (a JavaScript proposal)
try {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
Function.prototype.toString = function ( ...args) {
const context = utils.getOriginalFunction(this) || this;
return originalFunctionToString.apply(context, args);
};
} catch (e) {
// ignore errors here, just don't patch this
}
}
} FunctionToString.__initStatic();
exports.FunctionToString = FunctionToString;
//# sourceMappingURL=functiontostring.js.map