1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import { getOriginalFunction } from '@sentry/utils';
- import { getClient } from '../exports.js';
- import { convertIntegrationFnToClass, defineIntegration } from '../integration.js';
- let originalFunctionToString;
- const INTEGRATION_NAME = 'FunctionToString';
- const SETUP_CLIENTS = new WeakMap();
- const _functionToStringIntegration = (() => {
- return {
- name: INTEGRATION_NAME,
- 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 originalFunction = getOriginalFunction(this);
- const context =
- SETUP_CLIENTS.has(getClient() ) && originalFunction !== undefined ? originalFunction : this;
- return originalFunctionToString.apply(context, args);
- };
- } catch (e) {
- // ignore errors here, just don't patch this
- }
- },
- setup(client) {
- SETUP_CLIENTS.set(client, true);
- },
- };
- }) ;
- /**
- * Patch toString calls to return proper name for wrapped functions.
- *
- * ```js
- * Sentry.init({
- * integrations: [
- * functionToStringIntegration(),
- * ],
- * });
- * ```
- */
- const functionToStringIntegration = defineIntegration(_functionToStringIntegration);
- /**
- * Patch toString calls to return proper name for wrapped functions.
- *
- * @deprecated Use `functionToStringIntegration()` instead.
- */
- // eslint-disable-next-line deprecation/deprecation
- const FunctionToString = convertIntegrationFnToClass(
- INTEGRATION_NAME,
- functionToStringIntegration,
- ) ;
- // eslint-disable-next-line deprecation/deprecation
- export { FunctionToString, functionToStringIntegration };
- //# sourceMappingURL=functiontostring.js.map
|