File: /home/cafsindia/snap.cafsinfotech.in/node_modules/@sentry/utils/cjs/anr.js.map
{"version":3,"file":"anr.js","sources":["../../src/anr.ts"],"sourcesContent":["import type { StackFrame } from '@sentry/types';\n\nimport { dropUndefinedKeys } from './object';\nimport { filenameIsInApp, stripSentryFramesAndReverse } from './stacktrace';\n\ntype WatchdogReturn = {\n /** Resets the watchdog timer */\n poll: () => void;\n /** Enables or disables the watchdog timer */\n enabled: (state: boolean) => void;\n};\n\ntype CreateTimerImpl = () => { getTimeMs: () => number; reset: () => void };\n\n/**\n * A node.js watchdog timer\n * @param pollInterval The interval that we expect to get polled at\n * @param anrThreshold The threshold for when we consider ANR\n * @param callback The callback to call for ANR\n * @returns An object with `poll` and `enabled` functions {@link WatchdogReturn}\n */\nexport function watchdogTimer(\n createTimer: CreateTimerImpl,\n pollInterval: number,\n anrThreshold: number,\n callback: () => void,\n): WatchdogReturn {\n const timer = createTimer();\n let triggered = false;\n let enabled = true;\n\n setInterval(() => {\n const diffMs = timer.getTimeMs();\n\n if (triggered === false && diffMs > pollInterval + anrThreshold) {\n triggered = true;\n if (enabled) {\n callback();\n }\n }\n\n if (diffMs < pollInterval + anrThreshold) {\n triggered = false;\n }\n }, 20);\n\n return {\n poll: () => {\n timer.reset();\n },\n enabled: (state: boolean) => {\n enabled = state;\n },\n };\n}\n\n// types copied from inspector.d.ts\ninterface Location {\n scriptId: string;\n lineNumber: number;\n columnNumber?: number;\n}\n\ninterface CallFrame {\n functionName: string;\n location: Location;\n url: string;\n}\n\ninterface ScriptParsedEventDataType {\n scriptId: string;\n url: string;\n}\n\ninterface PausedEventDataType {\n callFrames: CallFrame[];\n reason: string;\n}\n\n/**\n * Converts Debugger.CallFrame to Sentry StackFrame\n */\nfunction callFrameToStackFrame(\n frame: CallFrame,\n url: string | undefined,\n getModuleFromFilename: (filename: string | undefined) => string | undefined,\n): StackFrame {\n const filename = url ? url.replace(/^file:\\/\\//, '') : undefined;\n\n // CallFrame row/col are 0 based, whereas StackFrame are 1 based\n const colno = frame.location.columnNumber ? frame.location.columnNumber + 1 : undefined;\n const lineno = frame.location.lineNumber ? frame.location.lineNumber + 1 : undefined;\n\n return dropUndefinedKeys({\n filename,\n module: getModuleFromFilename(filename),\n function: frame.functionName || '?',\n colno,\n lineno,\n in_app: filename ? filenameIsInApp(filename) : undefined,\n });\n}\n\n// The only messages we care about\ntype DebugMessage =\n | { method: 'Debugger.scriptParsed'; params: ScriptParsedEventDataType }\n | { method: 'Debugger.paused'; params: PausedEventDataType };\n\n/**\n * Creates a message handler from the v8 debugger protocol and passed stack frames to the callback when paused.\n */\nexport function createDebugPauseMessageHandler(\n sendCommand: (message: string) => void,\n getModuleFromFilename: (filename?: string) => string | undefined,\n pausedStackFrames: (frames: StackFrame[]) => void,\n): (message: DebugMessage) => void {\n // Collect scriptId -> url map so we can look up the filenames later\n const scripts = new Map<string, string>();\n\n return message => {\n if (message.method === 'Debugger.scriptParsed') {\n scripts.set(message.params.scriptId, message.params.url);\n } else if (message.method === 'Debugger.paused') {\n // copy the frames\n const callFrames = [...message.params.callFrames];\n // and resume immediately\n sendCommand('Debugger.resume');\n sendCommand('Debugger.disable');\n\n const stackFrames = stripSentryFramesAndReverse(\n callFrames.map(frame =>\n callFrameToStackFrame(frame, scripts.get(frame.location.scriptId), getModuleFromFilename),\n ),\n );\n\n pausedStackFrames(stackFrames);\n }\n };\n}\n"],"names":["dropUndefinedKeys","filenameIsInApp","stripSentryFramesAndReverse"],"mappings":"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"}