{"version":3,"file":"errorhandler-B959pcww.js","sources":["../../../node_modules/@sentry/vue/esm/vendor/components.js","../../../node_modules/@sentry/vue/esm/errorhandler.js"],"sourcesContent":["// Vendored from https://github.com/vuejs/vue/blob/612fb89547711cacb030a3893a0065b785802860/src/core/util/debug.js\n// with types only changes.\n\n// The MIT License (MIT)\n\n// Copyright (c) 2013-present, Yuxi (Evan) You\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nconst classifyRE = /(?:^|[-_])(\\w)/g;\nconst classify = (str) => str.replace(classifyRE, c => c.toUpperCase()).replace(/[-_]/g, '');\n\nconst ROOT_COMPONENT_NAME = '<Root>';\nconst ANONYMOUS_COMPONENT_NAME = '<Anonymous>';\n\nconst repeat = (str, n) => {\n  // string.repeat() is not supported by IE11, we fall back to just using the string in that case\n  // eslint-disable-next-line @sentry-internal/sdk/no-unsupported-es6-methods\n  return str.repeat ? str.repeat(n) : str;\n};\n\nconst formatComponentName = (vm, includeFile) => {\n  if (!vm) {\n    return ANONYMOUS_COMPONENT_NAME;\n  }\n\n  if (vm.$root === vm) {\n    return ROOT_COMPONENT_NAME;\n  }\n\n  // https://github.com/getsentry/sentry-javascript/issues/5204 $options can be undefined\n  if (!vm.$options) {\n    return ANONYMOUS_COMPONENT_NAME;\n  }\n\n  const options = vm.$options;\n\n  let name = options.name || options._componentTag;\n  const file = options.__file;\n  if (!name && file) {\n    const match = file.match(/([^/\\\\]+)\\.vue$/);\n    if (match) {\n      name = match[1];\n    }\n  }\n\n  return (\n    (name ? `<${classify(name)}>` : ANONYMOUS_COMPONENT_NAME) + (file && includeFile !== false ? ` at ${file}` : '')\n  );\n};\n\nconst generateComponentTrace = (vm) => {\n  if (vm && (vm._isVue || vm.__isVue) && vm.$parent) {\n    const tree = [];\n    let currentRecursiveSequence = 0;\n    while (vm) {\n      if (tree.length > 0) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const last = tree[tree.length - 1] ;\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n        if (last.constructor === vm.constructor) {\n          currentRecursiveSequence++;\n          vm = vm.$parent; // eslint-disable-line no-param-reassign\n          continue;\n        } else if (currentRecursiveSequence > 0) {\n          tree[tree.length - 1] = [last, currentRecursiveSequence];\n          currentRecursiveSequence = 0;\n        }\n      }\n      tree.push(vm);\n      vm = vm.$parent; // eslint-disable-line no-param-reassign\n    }\n\n    const formattedTree = tree\n      .map(\n        (vm, i) =>\n          `${\n            (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) +\n            (Array.isArray(vm)\n              ? `${formatComponentName(vm[0])}... (${vm[1]} recursive calls)`\n              : formatComponentName(vm))\n          }`,\n      )\n      .join('\\n');\n\n    return `\\n\\nfound in\\n\\n${formattedTree}`;\n  }\n\n  return `\\n\\n(found in ${formatComponentName(vm)})`;\n};\n\nexport { formatComponentName, generateComponentTrace };\n//# sourceMappingURL=components.js.map\n","import { captureException } from '@sentry/core';\nimport { consoleSandbox } from '@sentry/utils';\nimport { formatComponentName, generateComponentTrace } from './vendor/components.js';\n\nconst attachErrorHandler = (app, options) => {\n  const { errorHandler, warnHandler, silent } = app.config;\n\n  app.config.errorHandler = (error, vm, lifecycleHook) => {\n    const componentName = formatComponentName(vm, false);\n    const trace = vm ? generateComponentTrace(vm) : '';\n    const metadata = {\n      componentName,\n      lifecycleHook,\n      trace,\n    };\n\n    if (options.attachProps && vm) {\n      // Vue2 - $options.propsData\n      // Vue3 - $props\n      if (vm.$options && vm.$options.propsData) {\n        metadata.propsData = vm.$options.propsData;\n      } else if (vm.$props) {\n        metadata.propsData = vm.$props;\n      }\n    }\n\n    // Capture exception in the next event loop, to make sure that all breadcrumbs are recorded in time.\n    setTimeout(() => {\n      captureException(error, {\n        captureContext: { contexts: { vue: metadata } },\n        mechanism: { handled: false },\n      });\n    });\n\n    if (typeof errorHandler === 'function') {\n      (errorHandler ).call(app, error, vm, lifecycleHook);\n    }\n\n    if (options.logErrors) {\n      const hasConsole = typeof console !== 'undefined';\n      const message = `Error in ${lifecycleHook}: \"${error && error.toString()}\"`;\n\n      if (warnHandler) {\n        (warnHandler ).call(null, message, vm, trace);\n      } else if (hasConsole && !silent) {\n        consoleSandbox(() => {\n          // eslint-disable-next-line no-console\n          console.error(`[Vue warn]: ${message}${trace}`);\n        });\n      }\n    }\n  };\n};\n\nexport { attachErrorHandler };\n//# sourceMappingURL=errorhandler.js.map\n"],"names":["classifyRE","classify","str","c","ROOT_COMPONENT_NAME","ANONYMOUS_COMPONENT_NAME","repeat","formatComponentName","vm","includeFile","options","name","file","match","generateComponentTrace","tree","currentRecursiveSequence","last","i","attachErrorHandler","app","errorHandler","warnHandler","silent","error","lifecycleHook","componentName","trace","metadata","captureException","hasConsole","message","consoleSandbox"],"mappings":"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","x_google_ignoreList":[0,1]}