captureconsole.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. Object.defineProperty(exports, '__esModule', { value: true });
  2. const core = require('@sentry/core');
  3. const utils = require('@sentry/utils');
  4. const INTEGRATION_NAME = 'CaptureConsole';
  5. const _captureConsoleIntegration = ((options = {}) => {
  6. const levels = options.levels || utils.CONSOLE_LEVELS;
  7. return {
  8. name: INTEGRATION_NAME,
  9. // TODO v8: Remove this
  10. setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function
  11. setup(client) {
  12. if (!('console' in utils.GLOBAL_OBJ)) {
  13. return;
  14. }
  15. utils.addConsoleInstrumentationHandler(({ args, level }) => {
  16. if (core.getClient() !== client || !levels.includes(level)) {
  17. return;
  18. }
  19. consoleHandler(args, level);
  20. });
  21. },
  22. };
  23. }) ;
  24. const captureConsoleIntegration = core.defineIntegration(_captureConsoleIntegration);
  25. /**
  26. * Send Console API calls as Sentry Events.
  27. * @deprecated Use `captureConsoleIntegration()` instead.
  28. */
  29. // eslint-disable-next-line deprecation/deprecation
  30. const CaptureConsole = core.convertIntegrationFnToClass(
  31. INTEGRATION_NAME,
  32. captureConsoleIntegration,
  33. )
  34. ;
  35. function consoleHandler(args, level) {
  36. const captureContext = {
  37. level: utils.severityLevelFromString(level),
  38. extra: {
  39. arguments: args,
  40. },
  41. };
  42. core.withScope(scope => {
  43. scope.addEventProcessor(event => {
  44. event.logger = 'console';
  45. utils.addExceptionMechanism(event, {
  46. handled: false,
  47. type: 'console',
  48. });
  49. return event;
  50. });
  51. if (level === 'assert' && args[0] === false) {
  52. const message = `Assertion failed: ${utils.safeJoin(args.slice(1), ' ') || 'console.assert'}`;
  53. scope.setExtra('arguments', args.slice(1));
  54. core.captureMessage(message, captureContext);
  55. return;
  56. }
  57. const error = args.find(arg => arg instanceof Error);
  58. if (level === 'error' && error) {
  59. core.captureException(error, captureContext);
  60. return;
  61. }
  62. const message = utils.safeJoin(args, ' ');
  63. core.captureMessage(message, captureContext);
  64. });
  65. }
  66. exports.CaptureConsole = CaptureConsole;
  67. exports.captureConsoleIntegration = captureConsoleIntegration;
  68. //# sourceMappingURL=captureconsole.js.map