UNPKG

@rollbar/react

Version:

Effortlessly track and debug errors in your React applications with Rollbar. This package includes advanced error tracking features and a set of React-specific enhancements to help you identify and fix issues more quickly.

94 lines (90 loc) 3.49 kB
"use client"; 'use strict'; var _rollupPluginBabelHelpers = require('./_virtual/_rollupPluginBabelHelpers.js'); var React = require('react'); var PropTypes = require('prop-types'); var tinyInvariant = require('./external/tiny-invariant/dist/esm/tiny-invariant.js'); var constant = require('./constant.js'); var Provider = require('./Provider.js'); var utils = require('./utils.js'); var INITIAL_ERROR_STATE = { hasError: false, error: null }; var ErrorBoundary = /*#__PURE__*/function (_Component) { _rollupPluginBabelHelpers.inherits(ErrorBoundary, _Component); function ErrorBoundary(props) { var _this; _rollupPluginBabelHelpers.classCallCheck(this, ErrorBoundary); _this = _rollupPluginBabelHelpers.callSuper(this, ErrorBoundary, [props]); _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.assertThisInitialized(_this), "resetError", function () { _this.setState(INITIAL_ERROR_STATE); }); tinyInvariant.default(utils.isValidLevel(props.level), "".concat(props.level, " is not a valid level setting for Rollbar")); _this.state = _rollupPluginBabelHelpers.objectSpread2({}, INITIAL_ERROR_STATE); return _this; } _rollupPluginBabelHelpers.createClass(ErrorBoundary, [{ key: "componentDidCatch", value: function componentDidCatch(error, info) { var _this$props = this.props, errorMessage = _this$props.errorMessage, extra = _this$props.extra, targetLevel = _this$props.level, callback = _this$props.callback; var custom = utils.value(extra, {}, error, info); var data = _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, info), custom); var level = utils.value(targetLevel, constant.LEVEL_ERROR, error, info); var rollbar = Provider.getRollbarFromContext(this.context); if (!errorMessage) { rollbar[level](error, data, callback); } else { var logMessage = utils.value(errorMessage, '', error, info); rollbar[level](logMessage, error, data, callback); } } }, { key: "render", value: function render() { var _this$state = this.state, hasError = _this$state.hasError, error = _this$state.error; var _this$props2 = this.props, FallbackUI = _this$props2.fallbackUI, children = _this$props2.children; if (!hasError) { return children; } if (!FallbackUI) { return null; } return /*#__PURE__*/React.createElement(FallbackUI, { error: error, resetError: this.resetError }); } }], [{ key: "getDerivedStateFromError", value: function getDerivedStateFromError(error) { return { hasError: true, error: error }; } }]); return ErrorBoundary; }(React.Component); _rollupPluginBabelHelpers.defineProperty(ErrorBoundary, "contextType", Provider.Context); _rollupPluginBabelHelpers.defineProperty(ErrorBoundary, "propTypes", { fallbackUI: PropTypes.elementType, errorMessage: PropTypes.oneOfType([PropTypes.string, PropTypes.func]), extra: PropTypes.oneOfType([PropTypes.object, PropTypes.func]), level: PropTypes.oneOfType([PropTypes.string, PropTypes.func]), callback: PropTypes.func, children: PropTypes.node }); _rollupPluginBabelHelpers.defineProperty(ErrorBoundary, "defaultProps", { level: constant.LEVEL_ERROR }); exports.ErrorBoundary = ErrorBoundary; //# sourceMappingURL=ErrorBoundary.js.map