@sentry/core
Version:
Base implementation for all Sentry JavaScript SDKs
43 lines (35 loc) • 1.18 kB
JavaScript
import { getOriginalFunction } from '@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 = getOriginalFunction(this) || this;
return originalFunctionToString.apply(context, args);
};
} catch (e) {
// ignore errors here, just don't patch this
}
}
} FunctionToString.__initStatic();
export { FunctionToString };
//# sourceMappingURL=functiontostring.js.map