@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
JavaScript
"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