package.build.esm.anr.js.map Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of utils Show documentation
Show all versions of utils Show documentation
Utilities for all Sentry JavaScript SDKs
{"version":3,"file":"anr.js","sources":["../../src/anr.ts"],"sourcesContent":["import type { StackFrame } from '@sentry/types';\nimport { filenameIsInApp } from './node-stack-trace';\nimport { dropUndefinedKeys } from './object';\nimport { UNKNOWN_FUNCTION } 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\n/**\n * Converts Debugger.CallFrame to Sentry StackFrame\n */\nexport function 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 || UNKNOWN_FUNCTION,\n colno,\n lineno,\n in_app: filename ? filenameIsInApp(filename) : undefined,\n });\n}\n"],"names":[],"mappings":";;;;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,aAAa;AAC7B,EAAE,WAAW;AACb,EAAE,YAAY;AACd,EAAE,YAAY;AACd,EAAE,QAAQ;AACV,EAAkB;AAClB,EAAE,MAAM,KAAA,GAAQ,WAAW,EAAE,CAAA;AAC7B,EAAE,IAAI,SAAU,GAAE,KAAK,CAAA;AACvB,EAAE,IAAI,OAAQ,GAAE,IAAI,CAAA;AACpB;AACA,EAAE,WAAW,CAAC,MAAM;AACpB,IAAI,MAAM,MAAO,GAAE,KAAK,CAAC,SAAS,EAAE,CAAA;AACpC;AACA,IAAI,IAAI,SAAA,KAAc,KAAA,IAAS,MAAA,GAAS,YAAA,GAAe,YAAY,EAAE;AACrE,MAAM,SAAA,GAAY,IAAI,CAAA;AACtB,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,QAAQ,EAAE,CAAA;AAClB,OAAM;AACN,KAAI;AACJ;AACA,IAAI,IAAI,MAAA,GAAS,YAAa,GAAE,YAAY,EAAE;AAC9C,MAAM,SAAA,GAAY,KAAK,CAAA;AACvB,KAAI;AACJ,GAAG,EAAE,EAAE,CAAC,CAAA;AACR;AACA,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,MAAM;AAChB,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;AACnB,KAAK;AACL,IAAI,OAAO,EAAE,CAAC,KAAK,KAAc;AACjC,MAAM,OAAA,GAAU,KAAK,CAAA;AACrB,KAAK;AACL,GAAG,CAAA;AACH,CAAA;AACA;AACA;;AAaA;AACA;AACA;AACO,SAAS,qBAAqB;AACrC,EAAE,KAAK;AACP,EAAE,GAAG;AACL,EAAE,qBAAqB;AACvB,EAAc;AACd,EAAE,MAAM,QAAA,GAAW,GAAA,GAAM,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAA,GAAI,SAAS,CAAA;AAClE;AACA;AACA,EAAE,MAAM,KAAM,GAAE,KAAK,CAAC,QAAQ,CAAC,YAAA,GAAe,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAA,GAAI,SAAS,CAAA;AACzF,EAAE,MAAM,MAAO,GAAE,KAAK,CAAC,QAAQ,CAAC,UAAA,GAAa,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAA,GAAI,SAAS,CAAA;AACtF;AACA,EAAE,OAAO,iBAAiB,CAAC;AAC3B,IAAI,QAAQ;AACZ,IAAI,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC;AAC3C,IAAI,QAAQ,EAAE,KAAK,CAAC,YAAA,IAAgB,gBAAgB;AACpD,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,MAAM,EAAE,QAAS,GAAE,eAAe,CAAC,QAAQ,CAAE,GAAE,SAAS;AAC5D,GAAG,CAAC,CAAA;AACJ;;;;"}