File: /home/cafsindia/snap.cafsinfotech.in/node_modules/@sentry/browser/esm/integrations/trycatch.js.map
{"version":3,"file":"trycatch.js","sources":["../../../../src/integrations/trycatch.ts"],"sourcesContent":["import type { Integration, WrappedFunction } from '@sentry/types';\nimport { fill, getFunctionName, getOriginalFunction } from '@sentry/utils';\n\nimport { WINDOW, wrap } from '../helpers';\n\nconst DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'BroadcastChannel',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'SharedWorker',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n\ntype XMLHttpRequestProp = 'onload' | 'onerror' | 'onprogress' | 'onreadystatechange';\n\n/** JSDoc */\ninterface TryCatchOptions {\n setTimeout: boolean;\n setInterval: boolean;\n requestAnimationFrame: boolean;\n XMLHttpRequest: boolean;\n eventTarget: boolean | string[];\n}\n\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nexport class TryCatch implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'TryCatch';\n\n /**\n * @inheritDoc\n */\n public name: string;\n\n /** JSDoc */\n private readonly _options: TryCatchOptions;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: Partial<TryCatchOptions>) {\n this.name = TryCatch.id;\n this._options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n ...options,\n };\n }\n\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n public setupOnce(): void {\n if (this._options.setTimeout) {\n fill(WINDOW, 'setTimeout', _wrapTimeFunction);\n }\n\n if (this._options.setInterval) {\n fill(WINDOW, 'setInterval', _wrapTimeFunction);\n }\n\n if (this._options.requestAnimationFrame) {\n fill(WINDOW, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in WINDOW) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n const eventTargetOption = this._options.eventTarget;\n if (eventTargetOption) {\n const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n }\n}\n\n/** JSDoc */\nfunction _wrapTimeFunction(original: () => void): () => number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, ...args: any[]): number {\n const originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: false,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original: any): (callback: () => void) => any {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, callback: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return original.apply(this, [\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: false,\n type: 'instrument',\n },\n }),\n ]);\n };\n}\n\n/** JSDoc */\nfunction _wrapXHR(originalSend: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: XMLHttpRequest, ...args: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const xmlHttpRequestProps: XMLHttpRequestProp[] = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(xhr, prop, function (original: WrappedFunction): () => any {\n const wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: false,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n const originalFunction = getOriginalFunction(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n}\n\n/** JSDoc */\nfunction _wrapEventTarget(target: string): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const globalObject = WINDOW as { [key: string]: any };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = globalObject[target] && globalObject[target].prototype;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (original: () => void): (\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ) => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): (eventName: string, fn: EventListenerObject, capture?: boolean, secure?: boolean) => void {\n try {\n if (typeof fn.handleEvent === 'function') {\n // ESlint disable explanation:\n // First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n // introduce a bug here, because bind returns a new function that doesn't have our\n // flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n // Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n fn.handleEvent = wrap(fn.handleEvent, {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: false,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.apply(this, [\n eventName,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrap(fn as any as WrappedFunction, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: false,\n type: 'instrument',\n },\n }),\n options,\n ]);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (\n originalRemoveEventListener: () => void,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): (this: any, eventName: string, fn: EventListenerObject, options?: boolean | EventListenerOptions) => () => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n const wrappedEventHandler = fn as unknown as WrappedFunction;\n try {\n const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n };\n },\n );\n}\n"],"names":[],"mappings":"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"}