{"version":3,"file":"handlingStack.mjs","names":[],"sources":["../../../src/tools/stackTrace/handlingStack.ts"],"sourcesContent":["import { callMonitored } from '../monitor'\nimport type { StackTrace } from './computeStackTrace'\nimport { computeStackTrace } from './computeStackTrace'\n\n/**\n * Creates a stacktrace without SDK internal frames.\n * Constraints:\n * - Has to be called at the utmost position of the call stack.\n * - No monitored function should encapsulate it, that is why we need to use callMonitored inside it.\n */\nexport function createHandlingStack(\n  type:\n    | 'console error'\n    | 'action'\n    | 'error'\n    | 'instrumented method'\n    | 'instrumented constructor'\n    | 'log'\n    | 'nuxt error'\n    | 'react error'\n    | 'nextjs error'\n    | 'vue error'\n    | 'angular error'\n    | 'view'\n    | 'vital'\n): string {\n  /**\n   * Skip the two internal frames:\n   * - SDK API (console.error, ...)\n   * - this function\n   * in order to keep only the user calls\n   */\n  const internalFramesToSkip = 2\n  const error = new Error(type)\n  error.name = 'HandlingStack'\n  let formattedStack: string\n\n  callMonitored(() => {\n    const stackTrace = computeStackTrace(error)\n    stackTrace.stack = stackTrace.stack.slice(internalFramesToSkip)\n    formattedStack = toStackTraceString(stackTrace)\n  })\n\n  return formattedStack!\n}\n\nexport function toStackTraceString(stack: StackTrace) {\n  let result = formatErrorMessage(stack)\n  stack.stack.forEach((frame) => {\n    const func = frame.func === '?' ? '<anonymous>' : frame.func\n    const args = frame.args && frame.args.length > 0 ? `(${frame.args.join(', ')})` : ''\n    const line = frame.line ? `:${frame.line}` : ''\n    const column = frame.line && frame.column ? `:${frame.column}` : ''\n    result += `\\n  at ${func!}${args} @ ${frame.url!}${line}${column}`\n  })\n  return result\n}\n\nexport function formatErrorMessage(stack: StackTrace) {\n  return `${stack.name || 'Error'}: ${stack.message!}`\n}\n"],"mappings":";;;;;;;;;AAUA,SAAgB,oBACd,MAcQ;;;;;;;CAOR,MAAM,uBAAuB;CAC7B,MAAM,QAAQ,IAAI,MAAM,IAAI;CAC5B,MAAM,OAAO;CACb,IAAI;CAEJ,oBAAoB;EAClB,MAAM,aAAa,kBAAkB,KAAK;EAC1C,WAAW,QAAQ,WAAW,MAAM,MAAM,oBAAoB;EAC9D,iBAAiB,mBAAmB,UAAU;CAChD,CAAC;CAED,OAAO;AACT;AAEA,SAAgB,mBAAmB,OAAmB;CACpD,IAAI,SAAS,mBAAmB,KAAK;CACrC,MAAM,MAAM,SAAS,UAAU;EAC7B,MAAM,OAAO,MAAM,SAAS,MAAM,gBAAgB,MAAM;EACxD,MAAM,OAAO,MAAM,QAAQ,MAAM,KAAK,SAAS,IAAI,IAAI,MAAM,KAAK,KAAK,IAAI,EAAE,KAAK;EAClF,MAAM,OAAO,MAAM,OAAO,IAAI,MAAM,SAAS;EAC7C,MAAM,SAAS,MAAM,QAAQ,MAAM,SAAS,IAAI,MAAM,WAAW;EACjE,UAAU,UAAU,OAAQ,KAAK,KAAK,MAAM,MAAO,OAAO;CAC5D,CAAC;CACD,OAAO;AACT;AAEA,SAAgB,mBAAmB,OAAmB;CACpD,OAAO,GAAG,MAAM,QAAQ,QAAQ,IAAI,MAAM;AAC5C"}