react-error-boundary 3.0.0 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -9
- package/dist/index.d.ts +54 -0
- package/dist/react-error-boundary.cjs.d.ts +1 -0
- package/dist/react-error-boundary.cjs.js +25 -12
- package/dist/react-error-boundary.esm.d.ts +1 -0
- package/dist/react-error-boundary.esm.js +26 -12
- package/dist/react-error-boundary.umd.d.ts +1 -0
- package/dist/react-error-boundary.umd.js +33 -14
- package/dist/react-error-boundary.umd.js.map +1 -1
- package/dist/react-error-boundary.umd.min.d.ts +1 -0
- package/dist/react-error-boundary.umd.min.js +1 -1
- package/dist/react-error-boundary.umd.min.js.map +1 -1
- package/package.json +14 -12
- package/index.d.ts +0 -47
package/README.md
CHANGED
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
[![version][version-badge]][package]
|
|
13
13
|
[![downloads][downloads-badge]][npmtrends]
|
|
14
14
|
[![MIT License][license-badge]][license]
|
|
15
|
-
|
|
16
15
|
[![PRs Welcome][prs-badge]][prs]
|
|
17
16
|
[![Code of Conduct][coc-badge]][coc]
|
|
18
17
|
<!-- prettier-ignore-end -->
|
|
@@ -336,9 +335,7 @@ function Greeting() {
|
|
|
336
335
|
<form onSubmit={handleSubmit}>
|
|
337
336
|
<label>Name</label>
|
|
338
337
|
<input id="name" />
|
|
339
|
-
<button type="submit"
|
|
340
|
-
get a greeting
|
|
341
|
-
</button>
|
|
338
|
+
<button type="submit">get a greeting</button>
|
|
342
339
|
</form>
|
|
343
340
|
)
|
|
344
341
|
}
|
|
@@ -425,20 +422,20 @@ MIT
|
|
|
425
422
|
<!-- prettier-ignore-start -->
|
|
426
423
|
[npm]: https://www.npmjs.com
|
|
427
424
|
[node]: https://nodejs.org
|
|
428
|
-
[build-badge]: https://img.shields.io/
|
|
429
|
-
[build]: https://
|
|
425
|
+
[build-badge]: https://img.shields.io/github/workflow/status/bvaughn/react-error-boundary/validate?logo=github&style=flat-square
|
|
426
|
+
[build]: https://github.com/bvaughn/react-error-boundary/actions?query=workflow%3Avalidate
|
|
430
427
|
[coverage-badge]: https://img.shields.io/codecov/c/github/bvaughn/react-error-boundary.svg?style=flat-square
|
|
431
428
|
[coverage]: https://codecov.io/github/bvaughn/react-error-boundary
|
|
432
429
|
[version-badge]: https://img.shields.io/npm/v/react-error-boundary.svg?style=flat-square
|
|
433
430
|
[package]: https://www.npmjs.com/package/react-error-boundary
|
|
434
431
|
[downloads-badge]: https://img.shields.io/npm/dm/react-error-boundary.svg?style=flat-square
|
|
435
|
-
[npmtrends]:
|
|
432
|
+
[npmtrends]: https://www.npmtrends.com/react-error-boundary
|
|
436
433
|
[license-badge]: https://img.shields.io/npm/l/react-error-boundary.svg?style=flat-square
|
|
437
434
|
[license]: https://github.com/bvaughn/react-error-boundary/blob/master/LICENSE
|
|
438
435
|
[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square
|
|
439
|
-
[prs]:
|
|
436
|
+
[prs]: https://makeapullrequest.com
|
|
440
437
|
[coc-badge]: https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square
|
|
441
|
-
[coc]: https://github.com/bvaughn/react-error-boundary/blob/master/
|
|
438
|
+
[coc]: https://github.com/bvaughn/react-error-boundary/blob/master/CODE_OF_CONDUCT.md
|
|
442
439
|
[bugs]: https://github.com/bvaughn/react-error-boundary/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+sort%3Acreated-desc+label%3Abug
|
|
443
440
|
[requests]: https://github.com/bvaughn/react-error-boundary/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc+label%3Aenhancement
|
|
444
441
|
[good-first-issue]: https://github.com/bvaughn/react-error-boundary/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc+label%3Aenhancement+label%3A%22good+first+issue%22
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
interface FallbackProps {
|
|
3
|
+
error: Error;
|
|
4
|
+
resetErrorBoundary: (...args: Array<unknown>) => void;
|
|
5
|
+
}
|
|
6
|
+
interface ErrorBoundaryPropsWithComponent {
|
|
7
|
+
onResetKeysChange?: (prevResetKeys: Array<unknown> | undefined, resetKeys: Array<unknown> | undefined) => void;
|
|
8
|
+
onReset?: (...args: Array<unknown>) => void;
|
|
9
|
+
onError?: (error: Error, info: {
|
|
10
|
+
componentStack: string;
|
|
11
|
+
}) => void;
|
|
12
|
+
resetKeys?: Array<unknown>;
|
|
13
|
+
FallbackComponent: React.ComponentType<FallbackProps>;
|
|
14
|
+
}
|
|
15
|
+
declare function FallbackRender(props: FallbackProps): React.ReactElement<unknown, string | React.FunctionComponent | typeof React.Component> | null;
|
|
16
|
+
interface ErrorBoundaryPropsWithRender {
|
|
17
|
+
onResetKeysChange?: (prevResetKeys: Array<unknown> | undefined, resetKeys: Array<unknown> | undefined) => void;
|
|
18
|
+
onReset?: (...args: Array<unknown>) => void;
|
|
19
|
+
onError?: (error: Error, info: {
|
|
20
|
+
componentStack: string;
|
|
21
|
+
}) => void;
|
|
22
|
+
resetKeys?: Array<unknown>;
|
|
23
|
+
fallbackRender: typeof FallbackRender;
|
|
24
|
+
}
|
|
25
|
+
interface ErrorBoundaryPropsWithFallback {
|
|
26
|
+
onResetKeysChange?: (prevResetKeys: Array<unknown> | undefined, resetKeys: Array<unknown> | undefined) => void;
|
|
27
|
+
onReset?: (...args: Array<unknown>) => void;
|
|
28
|
+
onError?: (error: Error, info: {
|
|
29
|
+
componentStack: string;
|
|
30
|
+
}) => void;
|
|
31
|
+
resetKeys?: Array<unknown>;
|
|
32
|
+
fallback: React.ReactElement<unknown, string | React.FunctionComponent | typeof React.Component> | null;
|
|
33
|
+
}
|
|
34
|
+
declare type ErrorBoundaryProps = ErrorBoundaryPropsWithFallback | ErrorBoundaryPropsWithComponent | ErrorBoundaryPropsWithRender;
|
|
35
|
+
declare type ErrorBoundaryState = {
|
|
36
|
+
error: Error | null;
|
|
37
|
+
};
|
|
38
|
+
declare class ErrorBoundary extends React.Component<React.PropsWithRef<React.PropsWithChildren<ErrorBoundaryProps>>, ErrorBoundaryState> {
|
|
39
|
+
static getDerivedStateFromError(error: Error): {
|
|
40
|
+
error: Error;
|
|
41
|
+
};
|
|
42
|
+
state: ErrorBoundaryState;
|
|
43
|
+
updatedWithError: boolean;
|
|
44
|
+
resetErrorBoundary: (...args: Array<unknown>) => void;
|
|
45
|
+
reset(): void;
|
|
46
|
+
componentDidCatch(error: Error, info: React.ErrorInfo): void;
|
|
47
|
+
componentDidMount(): void;
|
|
48
|
+
componentDidUpdate(prevProps: ErrorBoundaryProps): void;
|
|
49
|
+
render(): {} | null | undefined;
|
|
50
|
+
}
|
|
51
|
+
declare function withErrorBoundary<P>(Component: React.ComponentType<P>, errorBoundaryProps: ErrorBoundaryProps): React.ComponentType<P>;
|
|
52
|
+
declare function useErrorHandler<P = Error>(givenError?: P | null | undefined): React.Dispatch<React.SetStateAction<P | null>>;
|
|
53
|
+
export { ErrorBoundary, withErrorBoundary, useErrorHandler };
|
|
54
|
+
export type { FallbackProps, ErrorBoundaryPropsWithComponent, ErrorBoundaryPropsWithRender, ErrorBoundaryPropsWithFallback, ErrorBoundaryProps, };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../dist/index";
|
|
@@ -8,9 +8,8 @@ var React = require('react');
|
|
|
8
8
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
9
|
|
|
10
10
|
var _inheritsLoose__default = /*#__PURE__*/_interopDefaultLegacy(_inheritsLoose);
|
|
11
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
12
11
|
|
|
13
|
-
var changedArray = function (a, b) {
|
|
12
|
+
var changedArray = function changedArray(a, b) {
|
|
14
13
|
if (a === void 0) {
|
|
15
14
|
a = [];
|
|
16
15
|
}
|
|
@@ -76,6 +75,14 @@ var ErrorBoundary = /*#__PURE__*/function (_React$Component) {
|
|
|
76
75
|
(_this$props$onError = (_this$props2 = this.props).onError) == null ? void 0 : _this$props$onError.call(_this$props2, error, info);
|
|
77
76
|
};
|
|
78
77
|
|
|
78
|
+
_proto.componentDidMount = function componentDidMount() {
|
|
79
|
+
var error = this.state.error;
|
|
80
|
+
|
|
81
|
+
if (error !== null) {
|
|
82
|
+
this.updatedWithError = true;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
|
|
79
86
|
_proto.componentDidUpdate = function componentDidUpdate(prevProps) {
|
|
80
87
|
var error = this.state.error;
|
|
81
88
|
var resetKeys = this.props.resetKeys; // There's an edge case where if the thing that triggered the error
|
|
@@ -99,24 +106,25 @@ var ErrorBoundary = /*#__PURE__*/function (_React$Component) {
|
|
|
99
106
|
};
|
|
100
107
|
|
|
101
108
|
_proto.render = function render() {
|
|
102
|
-
var error = this.state.error;
|
|
109
|
+
var error = this.state.error; // @ts-expect-error ts(2339) (at least one of these will be defined though, and we check for their existence)
|
|
110
|
+
|
|
103
111
|
var _this$props4 = this.props,
|
|
104
112
|
fallbackRender = _this$props4.fallbackRender,
|
|
105
113
|
FallbackComponent = _this$props4.FallbackComponent,
|
|
106
114
|
fallback = _this$props4.fallback;
|
|
107
115
|
|
|
108
116
|
if (error !== null) {
|
|
109
|
-
var
|
|
117
|
+
var _props = {
|
|
110
118
|
error: error,
|
|
111
119
|
resetErrorBoundary: this.resetErrorBoundary
|
|
112
120
|
};
|
|
113
121
|
|
|
114
|
-
if ( /*#__PURE__*/
|
|
122
|
+
if ( /*#__PURE__*/React.isValidElement(fallback)) {
|
|
115
123
|
return fallback;
|
|
116
124
|
} else if (typeof fallbackRender === 'function') {
|
|
117
|
-
return fallbackRender(
|
|
125
|
+
return fallbackRender(_props);
|
|
118
126
|
} else if (FallbackComponent) {
|
|
119
|
-
return /*#__PURE__*/
|
|
127
|
+
return /*#__PURE__*/React.createElement(FallbackComponent, _props);
|
|
120
128
|
} else {
|
|
121
129
|
throw new Error('react-error-boundary requires either a fallback, fallbackRender, or FallbackComponent prop');
|
|
122
130
|
}
|
|
@@ -126,12 +134,12 @@ var ErrorBoundary = /*#__PURE__*/function (_React$Component) {
|
|
|
126
134
|
};
|
|
127
135
|
|
|
128
136
|
return ErrorBoundary;
|
|
129
|
-
}(
|
|
137
|
+
}(React.Component);
|
|
130
138
|
|
|
131
139
|
function withErrorBoundary(Component, errorBoundaryProps) {
|
|
132
|
-
function Wrapped(props) {
|
|
133
|
-
return /*#__PURE__*/
|
|
134
|
-
} // Format for display in DevTools
|
|
140
|
+
var Wrapped = function Wrapped(props) {
|
|
141
|
+
return /*#__PURE__*/React.createElement(ErrorBoundary, errorBoundaryProps, /*#__PURE__*/React.createElement(Component, props));
|
|
142
|
+
}; // Format for display in DevTools
|
|
135
143
|
|
|
136
144
|
|
|
137
145
|
var name = Component.displayName || Component.name || 'Unknown';
|
|
@@ -140,7 +148,7 @@ function withErrorBoundary(Component, errorBoundaryProps) {
|
|
|
140
148
|
}
|
|
141
149
|
|
|
142
150
|
function useErrorHandler(givenError) {
|
|
143
|
-
var _React$useState =
|
|
151
|
+
var _React$useState = React.useState(null),
|
|
144
152
|
error = _React$useState[0],
|
|
145
153
|
setError = _React$useState[1];
|
|
146
154
|
|
|
@@ -148,6 +156,11 @@ function useErrorHandler(givenError) {
|
|
|
148
156
|
if (error) throw error;
|
|
149
157
|
return setError;
|
|
150
158
|
}
|
|
159
|
+
/*
|
|
160
|
+
eslint
|
|
161
|
+
@typescript-eslint/no-throw-literal: "off",
|
|
162
|
+
@typescript-eslint/prefer-nullish-coalescing: "off"
|
|
163
|
+
*/
|
|
151
164
|
|
|
152
165
|
exports.ErrorBoundary = ErrorBoundary;
|
|
153
166
|
exports.useErrorHandler = useErrorHandler;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../dist/index";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';
|
|
2
|
-
import
|
|
2
|
+
import { isValidElement, createElement, Component, useState } from 'react';
|
|
3
3
|
|
|
4
|
-
var changedArray = function (a, b) {
|
|
4
|
+
var changedArray = function changedArray(a, b) {
|
|
5
5
|
if (a === void 0) {
|
|
6
6
|
a = [];
|
|
7
7
|
}
|
|
@@ -67,6 +67,14 @@ var ErrorBoundary = /*#__PURE__*/function (_React$Component) {
|
|
|
67
67
|
(_this$props$onError = (_this$props2 = this.props).onError) == null ? void 0 : _this$props$onError.call(_this$props2, error, info);
|
|
68
68
|
};
|
|
69
69
|
|
|
70
|
+
_proto.componentDidMount = function componentDidMount() {
|
|
71
|
+
var error = this.state.error;
|
|
72
|
+
|
|
73
|
+
if (error !== null) {
|
|
74
|
+
this.updatedWithError = true;
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
|
|
70
78
|
_proto.componentDidUpdate = function componentDidUpdate(prevProps) {
|
|
71
79
|
var error = this.state.error;
|
|
72
80
|
var resetKeys = this.props.resetKeys; // There's an edge case where if the thing that triggered the error
|
|
@@ -90,24 +98,25 @@ var ErrorBoundary = /*#__PURE__*/function (_React$Component) {
|
|
|
90
98
|
};
|
|
91
99
|
|
|
92
100
|
_proto.render = function render() {
|
|
93
|
-
var error = this.state.error;
|
|
101
|
+
var error = this.state.error; // @ts-expect-error ts(2339) (at least one of these will be defined though, and we check for their existence)
|
|
102
|
+
|
|
94
103
|
var _this$props4 = this.props,
|
|
95
104
|
fallbackRender = _this$props4.fallbackRender,
|
|
96
105
|
FallbackComponent = _this$props4.FallbackComponent,
|
|
97
106
|
fallback = _this$props4.fallback;
|
|
98
107
|
|
|
99
108
|
if (error !== null) {
|
|
100
|
-
var
|
|
109
|
+
var _props = {
|
|
101
110
|
error: error,
|
|
102
111
|
resetErrorBoundary: this.resetErrorBoundary
|
|
103
112
|
};
|
|
104
113
|
|
|
105
|
-
if ( /*#__PURE__*/
|
|
114
|
+
if ( /*#__PURE__*/isValidElement(fallback)) {
|
|
106
115
|
return fallback;
|
|
107
116
|
} else if (typeof fallbackRender === 'function') {
|
|
108
|
-
return fallbackRender(
|
|
117
|
+
return fallbackRender(_props);
|
|
109
118
|
} else if (FallbackComponent) {
|
|
110
|
-
return /*#__PURE__*/
|
|
119
|
+
return /*#__PURE__*/createElement(FallbackComponent, _props);
|
|
111
120
|
} else {
|
|
112
121
|
throw new Error('react-error-boundary requires either a fallback, fallbackRender, or FallbackComponent prop');
|
|
113
122
|
}
|
|
@@ -117,12 +126,12 @@ var ErrorBoundary = /*#__PURE__*/function (_React$Component) {
|
|
|
117
126
|
};
|
|
118
127
|
|
|
119
128
|
return ErrorBoundary;
|
|
120
|
-
}(
|
|
129
|
+
}(Component);
|
|
121
130
|
|
|
122
131
|
function withErrorBoundary(Component, errorBoundaryProps) {
|
|
123
|
-
function Wrapped(props) {
|
|
124
|
-
return /*#__PURE__*/
|
|
125
|
-
} // Format for display in DevTools
|
|
132
|
+
var Wrapped = function Wrapped(props) {
|
|
133
|
+
return /*#__PURE__*/createElement(ErrorBoundary, errorBoundaryProps, /*#__PURE__*/createElement(Component, props));
|
|
134
|
+
}; // Format for display in DevTools
|
|
126
135
|
|
|
127
136
|
|
|
128
137
|
var name = Component.displayName || Component.name || 'Unknown';
|
|
@@ -131,7 +140,7 @@ function withErrorBoundary(Component, errorBoundaryProps) {
|
|
|
131
140
|
}
|
|
132
141
|
|
|
133
142
|
function useErrorHandler(givenError) {
|
|
134
|
-
var _React$useState =
|
|
143
|
+
var _React$useState = useState(null),
|
|
135
144
|
error = _React$useState[0],
|
|
136
145
|
setError = _React$useState[1];
|
|
137
146
|
|
|
@@ -139,5 +148,10 @@ function useErrorHandler(givenError) {
|
|
|
139
148
|
if (error) throw error;
|
|
140
149
|
return setError;
|
|
141
150
|
}
|
|
151
|
+
/*
|
|
152
|
+
eslint
|
|
153
|
+
@typescript-eslint/no-throw-literal: "off",
|
|
154
|
+
@typescript-eslint/prefer-nullish-coalescing: "off"
|
|
155
|
+
*/
|
|
142
156
|
|
|
143
157
|
export { ErrorBoundary, useErrorHandler, withErrorBoundary };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../dist/index";
|
|
@@ -4,17 +4,22 @@
|
|
|
4
4
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ReactErrorBoundary = {}, global.React));
|
|
5
5
|
}(this, (function (exports, React) { 'use strict';
|
|
6
6
|
|
|
7
|
-
function
|
|
7
|
+
function _setPrototypeOf(o, p) {
|
|
8
|
+
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
|
|
9
|
+
o.__proto__ = p;
|
|
10
|
+
return o;
|
|
11
|
+
};
|
|
8
12
|
|
|
9
|
-
|
|
13
|
+
return _setPrototypeOf(o, p);
|
|
14
|
+
}
|
|
10
15
|
|
|
11
16
|
function _inheritsLoose(subClass, superClass) {
|
|
12
17
|
subClass.prototype = Object.create(superClass.prototype);
|
|
13
18
|
subClass.prototype.constructor = subClass;
|
|
14
|
-
subClass
|
|
19
|
+
_setPrototypeOf(subClass, superClass);
|
|
15
20
|
}
|
|
16
21
|
|
|
17
|
-
var changedArray = function (a, b) {
|
|
22
|
+
var changedArray = function changedArray(a, b) {
|
|
18
23
|
if (a === void 0) {
|
|
19
24
|
a = [];
|
|
20
25
|
}
|
|
@@ -80,6 +85,14 @@
|
|
|
80
85
|
(_this$props$onError = (_this$props2 = this.props).onError) == null ? void 0 : _this$props$onError.call(_this$props2, error, info);
|
|
81
86
|
};
|
|
82
87
|
|
|
88
|
+
_proto.componentDidMount = function componentDidMount() {
|
|
89
|
+
var error = this.state.error;
|
|
90
|
+
|
|
91
|
+
if (error !== null) {
|
|
92
|
+
this.updatedWithError = true;
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
|
|
83
96
|
_proto.componentDidUpdate = function componentDidUpdate(prevProps) {
|
|
84
97
|
var error = this.state.error;
|
|
85
98
|
var resetKeys = this.props.resetKeys; // There's an edge case where if the thing that triggered the error
|
|
@@ -103,24 +116,25 @@
|
|
|
103
116
|
};
|
|
104
117
|
|
|
105
118
|
_proto.render = function render() {
|
|
106
|
-
var error = this.state.error;
|
|
119
|
+
var error = this.state.error; // @ts-expect-error ts(2339) (at least one of these will be defined though, and we check for their existence)
|
|
120
|
+
|
|
107
121
|
var _this$props4 = this.props,
|
|
108
122
|
fallbackRender = _this$props4.fallbackRender,
|
|
109
123
|
FallbackComponent = _this$props4.FallbackComponent,
|
|
110
124
|
fallback = _this$props4.fallback;
|
|
111
125
|
|
|
112
126
|
if (error !== null) {
|
|
113
|
-
var
|
|
127
|
+
var _props = {
|
|
114
128
|
error: error,
|
|
115
129
|
resetErrorBoundary: this.resetErrorBoundary
|
|
116
130
|
};
|
|
117
131
|
|
|
118
|
-
if ( /*#__PURE__*/
|
|
132
|
+
if ( /*#__PURE__*/React.isValidElement(fallback)) {
|
|
119
133
|
return fallback;
|
|
120
134
|
} else if (typeof fallbackRender === 'function') {
|
|
121
|
-
return fallbackRender(
|
|
135
|
+
return fallbackRender(_props);
|
|
122
136
|
} else if (FallbackComponent) {
|
|
123
|
-
return /*#__PURE__*/
|
|
137
|
+
return /*#__PURE__*/React.createElement(FallbackComponent, _props);
|
|
124
138
|
} else {
|
|
125
139
|
throw new Error('react-error-boundary requires either a fallback, fallbackRender, or FallbackComponent prop');
|
|
126
140
|
}
|
|
@@ -130,12 +144,12 @@
|
|
|
130
144
|
};
|
|
131
145
|
|
|
132
146
|
return ErrorBoundary;
|
|
133
|
-
}(
|
|
147
|
+
}(React.Component);
|
|
134
148
|
|
|
135
149
|
function withErrorBoundary(Component, errorBoundaryProps) {
|
|
136
|
-
function Wrapped(props) {
|
|
137
|
-
return /*#__PURE__*/
|
|
138
|
-
} // Format for display in DevTools
|
|
150
|
+
var Wrapped = function Wrapped(props) {
|
|
151
|
+
return /*#__PURE__*/React.createElement(ErrorBoundary, errorBoundaryProps, /*#__PURE__*/React.createElement(Component, props));
|
|
152
|
+
}; // Format for display in DevTools
|
|
139
153
|
|
|
140
154
|
|
|
141
155
|
var name = Component.displayName || Component.name || 'Unknown';
|
|
@@ -144,7 +158,7 @@
|
|
|
144
158
|
}
|
|
145
159
|
|
|
146
160
|
function useErrorHandler(givenError) {
|
|
147
|
-
var _React$useState =
|
|
161
|
+
var _React$useState = React.useState(null),
|
|
148
162
|
error = _React$useState[0],
|
|
149
163
|
setError = _React$useState[1];
|
|
150
164
|
|
|
@@ -152,6 +166,11 @@
|
|
|
152
166
|
if (error) throw error;
|
|
153
167
|
return setError;
|
|
154
168
|
}
|
|
169
|
+
/*
|
|
170
|
+
eslint
|
|
171
|
+
@typescript-eslint/no-throw-literal: "off",
|
|
172
|
+
@typescript-eslint/prefer-nullish-coalescing: "off"
|
|
173
|
+
*/
|
|
155
174
|
|
|
156
175
|
exports.ErrorBoundary = ErrorBoundary;
|
|
157
176
|
exports.useErrorHandler = useErrorHandler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-error-boundary.umd.js","sources":["../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../src/index.js"],"sourcesContent":["export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import React from 'react'\n\nconst changedArray = (a = [], b = []) =>\n a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]))\n\nconst initialState = {error: null}\nclass ErrorBoundary extends React.Component {\n static getDerivedStateFromError(error) {\n return {error}\n }\n\n state = initialState\n updatedWithError = false\n resetErrorBoundary = (...args) => {\n this.props.onReset?.(...args)\n this.reset()\n }\n\n reset() {\n this.updatedWithError = false\n this.setState(initialState)\n }\n\n componentDidCatch(error, info) {\n this.props.onError?.(error, info)\n }\n\n componentDidUpdate(prevProps) {\n const {error} = this.state\n const {resetKeys} = this.props\n\n // There's an edge case where if the thing that triggered the error\n // happens to *also* be in the resetKeys array, we'd end up resetting\n // the error boundary immediately. This would likely trigger a second\n // error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call\n // of cDU after the error is set\n if (error !== null && !this.updatedWithError) {\n this.updatedWithError = true\n return\n }\n\n if (error !== null && changedArray(prevProps.resetKeys, resetKeys)) {\n this.props.onResetKeysChange?.(prevProps.resetKeys, resetKeys)\n this.reset()\n }\n }\n\n render() {\n const {error} = this.state\n const {fallbackRender, FallbackComponent, fallback} = this.props\n\n if (error !== null) {\n const props = {\n error,\n resetErrorBoundary: this.resetErrorBoundary,\n }\n if (React.isValidElement(fallback)) {\n return fallback\n } else if (typeof fallbackRender === 'function') {\n return fallbackRender(props)\n } else if (FallbackComponent) {\n return <FallbackComponent {...props} />\n } else {\n throw new Error(\n 'react-error-boundary requires either a fallback, fallbackRender, or FallbackComponent prop',\n )\n }\n }\n\n return this.props.children\n }\n}\n\nfunction withErrorBoundary(Component, errorBoundaryProps) {\n function Wrapped(props) {\n return (\n <ErrorBoundary {...errorBoundaryProps}>\n <Component {...props} />\n </ErrorBoundary>\n )\n }\n\n // Format for display in DevTools\n const name = Component.displayName || Component.name || 'Unknown'\n Wrapped.displayName = `withErrorBoundary(${name})`\n\n return Wrapped\n}\n\nfunction useErrorHandler(givenError) {\n const [error, setError] = React.useState(null)\n if (givenError) throw givenError\n if (error) throw error\n return setError\n}\n\nexport {ErrorBoundary, withErrorBoundary, useErrorHandler}\n"],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","__proto__","changedArray","a","b","length","some","item","index","is","initialState","error","ErrorBoundary","state","updatedWithError","resetErrorBoundary","args","props","onReset","reset","getDerivedStateFromError","setState","componentDidCatch","info","onError","componentDidUpdate","prevProps","resetKeys","onResetKeysChange","render","fallbackRender","FallbackComponent","fallback","React","isValidElement","Error","children","Component","withErrorBoundary","errorBoundaryProps","Wrapped","name","displayName","useErrorHandler","givenError","useState","setError"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react-error-boundary.umd.js","sources":["../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../src/index.tsx"],"sourcesContent":["export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import * as React from 'react'\n\nconst changedArray = (a: Array<unknown> = [], b: Array<unknown> = []) =>\n a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]))\n\ninterface FallbackProps {\n error: Error\n resetErrorBoundary: (...args: Array<unknown>) => void\n}\n\ninterface ErrorBoundaryPropsWithComponent {\n onResetKeysChange?: (\n prevResetKeys: Array<unknown> | undefined,\n resetKeys: Array<unknown> | undefined,\n ) => void\n onReset?: (...args: Array<unknown>) => void\n onError?: (error: Error, info: {componentStack: string}) => void\n resetKeys?: Array<unknown>\n FallbackComponent: React.ComponentType<FallbackProps>\n}\n\ndeclare function FallbackRender(\n props: FallbackProps,\n): React.ReactElement<\n unknown,\n string | React.FunctionComponent | typeof React.Component\n> | null\n\ninterface ErrorBoundaryPropsWithRender {\n onResetKeysChange?: (\n prevResetKeys: Array<unknown> | undefined,\n resetKeys: Array<unknown> | undefined,\n ) => void\n onReset?: (...args: Array<unknown>) => void\n onError?: (error: Error, info: {componentStack: string}) => void\n resetKeys?: Array<unknown>\n fallbackRender: typeof FallbackRender\n}\n\ninterface ErrorBoundaryPropsWithFallback {\n onResetKeysChange?: (\n prevResetKeys: Array<unknown> | undefined,\n resetKeys: Array<unknown> | undefined,\n ) => void\n onReset?: (...args: Array<unknown>) => void\n onError?: (error: Error, info: {componentStack: string}) => void\n resetKeys?: Array<unknown>\n fallback: React.ReactElement<\n unknown,\n string | React.FunctionComponent | typeof React.Component\n > | null\n}\n\ntype ErrorBoundaryProps =\n | ErrorBoundaryPropsWithFallback\n | ErrorBoundaryPropsWithComponent\n | ErrorBoundaryPropsWithRender\n\ntype ErrorBoundaryState = {error: Error | null}\n\nconst initialState: ErrorBoundaryState = {error: null}\n\nclass ErrorBoundary extends React.Component<\n React.PropsWithRef<React.PropsWithChildren<ErrorBoundaryProps>>,\n ErrorBoundaryState\n> {\n static getDerivedStateFromError(error: Error) {\n return {error}\n }\n\n state = initialState\n updatedWithError = false\n resetErrorBoundary = (...args: Array<unknown>) => {\n this.props.onReset?.(...args)\n this.reset()\n }\n\n reset() {\n this.updatedWithError = false\n this.setState(initialState)\n }\n\n componentDidCatch(error: Error, info: React.ErrorInfo) {\n this.props.onError?.(error, info)\n }\n\n componentDidMount() {\n const {error} = this.state\n\n if (error !== null) {\n this.updatedWithError = true\n }\n }\n\n componentDidUpdate(prevProps: ErrorBoundaryProps) {\n const {error} = this.state\n const {resetKeys} = this.props\n\n // There's an edge case where if the thing that triggered the error\n // happens to *also* be in the resetKeys array, we'd end up resetting\n // the error boundary immediately. This would likely trigger a second\n // error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call\n // of cDU after the error is set\n if (error !== null && !this.updatedWithError) {\n this.updatedWithError = true\n return\n }\n\n if (error !== null && changedArray(prevProps.resetKeys, resetKeys)) {\n this.props.onResetKeysChange?.(prevProps.resetKeys, resetKeys)\n this.reset()\n }\n }\n\n render() {\n const {error} = this.state\n // @ts-expect-error ts(2339) (at least one of these will be defined though, and we check for their existence)\n const {fallbackRender, FallbackComponent, fallback} = this.props\n\n if (error !== null) {\n const props = {\n error,\n resetErrorBoundary: this.resetErrorBoundary,\n }\n if (React.isValidElement(fallback)) {\n return fallback\n } else if (typeof fallbackRender === 'function') {\n return (fallbackRender as typeof FallbackRender)(props)\n } else if (FallbackComponent) {\n return <FallbackComponent {...props} />\n } else {\n throw new Error(\n 'react-error-boundary requires either a fallback, fallbackRender, or FallbackComponent prop',\n )\n }\n }\n\n return this.props.children\n }\n}\n\nfunction withErrorBoundary<P>(\n Component: React.ComponentType<P>,\n errorBoundaryProps: ErrorBoundaryProps,\n): React.ComponentType<P> {\n const Wrapped: React.ComponentType<P> = props => {\n return (\n <ErrorBoundary {...errorBoundaryProps}>\n <Component {...props} />\n </ErrorBoundary>\n )\n }\n\n // Format for display in DevTools\n const name = Component.displayName || Component.name || 'Unknown'\n Wrapped.displayName = `withErrorBoundary(${name})`\n\n return Wrapped\n}\n\nfunction useErrorHandler<P = Error>(\n givenError?: P | null | undefined,\n): React.Dispatch<React.SetStateAction<P | null>> {\n const [error, setError] = React.useState<P | null>(null)\n if (givenError) throw givenError\n if (error) throw error\n return setError\n}\n\nexport {ErrorBoundary, withErrorBoundary, useErrorHandler}\nexport type {\n FallbackProps,\n ErrorBoundaryPropsWithComponent,\n ErrorBoundaryPropsWithRender,\n ErrorBoundaryPropsWithFallback,\n ErrorBoundaryProps,\n}\n\n/*\neslint\n @typescript-eslint/no-throw-literal: \"off\",\n @typescript-eslint/prefer-nullish-coalescing: \"off\"\n*/\n"],"names":["_setPrototypeOf","o","p","Object","setPrototypeOf","__proto__","_inheritsLoose","subClass","superClass","prototype","create","constructor","changedArray","a","b","length","some","item","index","is","initialState","error","ErrorBoundary","state","updatedWithError","resetErrorBoundary","args","props","onReset","reset","getDerivedStateFromError","setState","componentDidCatch","info","onError","componentDidMount","componentDidUpdate","prevProps","resetKeys","onResetKeysChange","render","fallbackRender","FallbackComponent","fallback","React","React.createElement","Error","children","withErrorBoundary","Component","errorBoundaryProps","Wrapped","name","displayName","useErrorHandler","givenError","setError"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../dist/index";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],e):e((r="undefined"!=typeof globalThis?globalThis:r||self).ReactErrorBoundary={},r.React)}(this,(function(r,e){"use strict";function t(r){return
|
|
1
|
+
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],e):e((r="undefined"!=typeof globalThis?globalThis:r||self).ReactErrorBoundary={},r.React)}(this,(function(r,e){"use strict";function t(r,e){return(t=Object.setPrototypeOf||function(r,e){return r.__proto__=e,r})(r,e)}var n={error:null},o=function(r){var o,a;function i(){for(var e,t=arguments.length,o=new Array(t),a=0;a<t;a++)o[a]=arguments[a];return(e=r.call.apply(r,[this].concat(o))||this).state=n,e.updatedWithError=!1,e.resetErrorBoundary=function(){for(var r,t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];null==e.props.onReset||(r=e.props).onReset.apply(r,n),e.reset()},e}a=r,(o=i).prototype=Object.create(a.prototype),o.prototype.constructor=o,t(o,a),i.getDerivedStateFromError=function(r){return{error:r}};var u=i.prototype;return u.reset=function(){this.updatedWithError=!1,this.setState(n)},u.componentDidCatch=function(r,e){var t,n;null==(t=(n=this.props).onError)||t.call(n,r,e)},u.componentDidMount=function(){null!==this.state.error&&(this.updatedWithError=!0)},u.componentDidUpdate=function(r){var e,t,n,o,a=this.state.error,i=this.props.resetKeys;null===a||this.updatedWithError?null!==a&&(void 0===(n=r.resetKeys)&&(n=[]),void 0===(o=i)&&(o=[]),n.length!==o.length||n.some((function(r,e){return!Object.is(r,o[e])})))&&(null==(e=(t=this.props).onResetKeysChange)||e.call(t,r.resetKeys,i),this.reset()):this.updatedWithError=!0},u.render=function(){var r=this.state.error,t=this.props,n=t.fallbackRender,o=t.FallbackComponent,a=t.fallback;if(null!==r){var i={error:r,resetErrorBoundary:this.resetErrorBoundary};if(e.isValidElement(a))return a;if("function"==typeof n)return n(i);if(o)return e.createElement(o,i);throw new Error("react-error-boundary requires either a fallback, fallbackRender, or FallbackComponent prop")}return this.props.children},i}(e.Component);r.ErrorBoundary=o,r.useErrorHandler=function(r){var t=e.useState(null),n=t[0],o=t[1];if(r)throw r;if(n)throw n;return o},r.withErrorBoundary=function(r,t){var n=function(n){return e.createElement(o,t,e.createElement(r,n))},a=r.displayName||r.name||"Unknown";return n.displayName="withErrorBoundary("+a+")",n},Object.defineProperty(r,"__esModule",{value:!0})}));
|
|
2
2
|
//# sourceMappingURL=react-error-boundary.umd.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-error-boundary.umd.min.js","sources":["../src/index.
|
|
1
|
+
{"version":3,"file":"react-error-boundary.umd.min.js","sources":["../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../src/index.tsx","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"],"sourcesContent":["export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import * as React from 'react'\n\nconst changedArray = (a: Array<unknown> = [], b: Array<unknown> = []) =>\n a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]))\n\ninterface FallbackProps {\n error: Error\n resetErrorBoundary: (...args: Array<unknown>) => void\n}\n\ninterface ErrorBoundaryPropsWithComponent {\n onResetKeysChange?: (\n prevResetKeys: Array<unknown> | undefined,\n resetKeys: Array<unknown> | undefined,\n ) => void\n onReset?: (...args: Array<unknown>) => void\n onError?: (error: Error, info: {componentStack: string}) => void\n resetKeys?: Array<unknown>\n FallbackComponent: React.ComponentType<FallbackProps>\n}\n\ndeclare function FallbackRender(\n props: FallbackProps,\n): React.ReactElement<\n unknown,\n string | React.FunctionComponent | typeof React.Component\n> | null\n\ninterface ErrorBoundaryPropsWithRender {\n onResetKeysChange?: (\n prevResetKeys: Array<unknown> | undefined,\n resetKeys: Array<unknown> | undefined,\n ) => void\n onReset?: (...args: Array<unknown>) => void\n onError?: (error: Error, info: {componentStack: string}) => void\n resetKeys?: Array<unknown>\n fallbackRender: typeof FallbackRender\n}\n\ninterface ErrorBoundaryPropsWithFallback {\n onResetKeysChange?: (\n prevResetKeys: Array<unknown> | undefined,\n resetKeys: Array<unknown> | undefined,\n ) => void\n onReset?: (...args: Array<unknown>) => void\n onError?: (error: Error, info: {componentStack: string}) => void\n resetKeys?: Array<unknown>\n fallback: React.ReactElement<\n unknown,\n string | React.FunctionComponent | typeof React.Component\n > | null\n}\n\ntype ErrorBoundaryProps =\n | ErrorBoundaryPropsWithFallback\n | ErrorBoundaryPropsWithComponent\n | ErrorBoundaryPropsWithRender\n\ntype ErrorBoundaryState = {error: Error | null}\n\nconst initialState: ErrorBoundaryState = {error: null}\n\nclass ErrorBoundary extends React.Component<\n React.PropsWithRef<React.PropsWithChildren<ErrorBoundaryProps>>,\n ErrorBoundaryState\n> {\n static getDerivedStateFromError(error: Error) {\n return {error}\n }\n\n state = initialState\n updatedWithError = false\n resetErrorBoundary = (...args: Array<unknown>) => {\n this.props.onReset?.(...args)\n this.reset()\n }\n\n reset() {\n this.updatedWithError = false\n this.setState(initialState)\n }\n\n componentDidCatch(error: Error, info: React.ErrorInfo) {\n this.props.onError?.(error, info)\n }\n\n componentDidMount() {\n const {error} = this.state\n\n if (error !== null) {\n this.updatedWithError = true\n }\n }\n\n componentDidUpdate(prevProps: ErrorBoundaryProps) {\n const {error} = this.state\n const {resetKeys} = this.props\n\n // There's an edge case where if the thing that triggered the error\n // happens to *also* be in the resetKeys array, we'd end up resetting\n // the error boundary immediately. This would likely trigger a second\n // error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call\n // of cDU after the error is set\n if (error !== null && !this.updatedWithError) {\n this.updatedWithError = true\n return\n }\n\n if (error !== null && changedArray(prevProps.resetKeys, resetKeys)) {\n this.props.onResetKeysChange?.(prevProps.resetKeys, resetKeys)\n this.reset()\n }\n }\n\n render() {\n const {error} = this.state\n // @ts-expect-error ts(2339) (at least one of these will be defined though, and we check for their existence)\n const {fallbackRender, FallbackComponent, fallback} = this.props\n\n if (error !== null) {\n const props = {\n error,\n resetErrorBoundary: this.resetErrorBoundary,\n }\n if (React.isValidElement(fallback)) {\n return fallback\n } else if (typeof fallbackRender === 'function') {\n return (fallbackRender as typeof FallbackRender)(props)\n } else if (FallbackComponent) {\n return <FallbackComponent {...props} />\n } else {\n throw new Error(\n 'react-error-boundary requires either a fallback, fallbackRender, or FallbackComponent prop',\n )\n }\n }\n\n return this.props.children\n }\n}\n\nfunction withErrorBoundary<P>(\n Component: React.ComponentType<P>,\n errorBoundaryProps: ErrorBoundaryProps,\n): React.ComponentType<P> {\n const Wrapped: React.ComponentType<P> = props => {\n return (\n <ErrorBoundary {...errorBoundaryProps}>\n <Component {...props} />\n </ErrorBoundary>\n )\n }\n\n // Format for display in DevTools\n const name = Component.displayName || Component.name || 'Unknown'\n Wrapped.displayName = `withErrorBoundary(${name})`\n\n return Wrapped\n}\n\nfunction useErrorHandler<P = Error>(\n givenError?: P | null | undefined,\n): React.Dispatch<React.SetStateAction<P | null>> {\n const [error, setError] = React.useState<P | null>(null)\n if (givenError) throw givenError\n if (error) throw error\n return setError\n}\n\nexport {ErrorBoundary, withErrorBoundary, useErrorHandler}\nexport type {\n FallbackProps,\n ErrorBoundaryPropsWithComponent,\n ErrorBoundaryPropsWithRender,\n ErrorBoundaryPropsWithFallback,\n ErrorBoundaryProps,\n}\n\n/*\neslint\n @typescript-eslint/no-throw-literal: \"off\",\n @typescript-eslint/prefer-nullish-coalescing: \"off\"\n*/\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}"],"names":["_setPrototypeOf","o","p","Object","setPrototypeOf","__proto__","initialState","error","ErrorBoundary","subClass","superClass","state","updatedWithError","resetErrorBoundary","args","props","onReset","reset","prototype","create","constructor","getDerivedStateFromError","setState","componentDidCatch","info","onError","componentDidMount","this","componentDidUpdate","prevProps","a","b","resetKeys","length","some","item","index","is","onResetKeysChange","render","fallbackRender","FallbackComponent","fallback","React","React.createElement","Error","children","givenError","setError","Component","errorBoundaryProps","Wrapped","name","displayName"],"mappings":"6RAAe,SAASA,EAAgBC,EAAGC,UACzCF,EAAkBG,OAAOC,gBAAkB,SAAyBH,EAAGC,UACrED,EAAEI,UAAYH,EACPD,IAGcA,EAAGC,GCJ5B,IA0DMI,EAAmC,CAACC,MAAO,MAE3CC,cC7DS,IAAwBC,EAAUC,0IDqE/CC,MAAQL,IACRM,kBAAmB,IACnBC,mBAAqB,wCAAIC,2BAAAA,0BAClBC,MAAMC,cAAND,OAAMC,gBAAaF,KACnBG,WCzEwCP,KAAVD,KAC5BS,UAAYf,OAAOgB,OAAOT,EAAWQ,WAC9CT,EAASS,UAAUE,YAAcX,EACjCL,EAAeK,EAAUC,KD8DlBW,yBAAP,SAAgCd,SACvB,CAACA,MAAAA,+BAUVU,MAAA,gBACOL,kBAAmB,OACnBU,SAAShB,MAGhBiB,kBAAA,SAAkBhB,EAAciB,4BACzBT,OAAMU,mBAAUlB,EAAOiB,MAG9BE,kBAAA,WAGgB,OAFEC,KAAKhB,MAAdJ,aAGAK,kBAAmB,MAI5BgB,mBAAA,SAAmBC,WA5FCC,EAAwBC,EA6FnCxB,EAASoB,KAAKhB,MAAdJ,MACAyB,EAAaL,KAAKZ,MAAlBiB,UAQO,OAAVzB,GAAmBoB,KAAKf,iBAKd,OAAVL,cA3GcuB,EA2GiBD,EAAUG,aA3G3BF,EAAoB,cAAIC,EA2GcC,KA3GdD,EAAoB,IAChED,EAAEG,SAAWF,EAAEE,QAAUH,EAAEI,MAAK,SAACC,EAAMC,UAAWjC,OAAOkC,GAAGF,EAAMJ,EAAEK,2BA2G3DrB,OAAMuB,6BAAoBT,EAAUG,UAAWA,QAC/Cf,cANAL,kBAAmB,KAU5B2B,OAAA,eACShC,EAASoB,KAAKhB,MAAdJ,QAE+CoB,KAAKZ,MAApDyB,IAAAA,eAAgBC,IAAAA,kBAAmBC,IAAAA,YAE5B,OAAVnC,EAAgB,KACZQ,EAAQ,CACZR,MAAAA,EACAM,mBAAoBc,KAAKd,uBAEvB8B,iBAAqBD,UAChBA,EACF,GAA8B,mBAAnBF,SACRA,EAAyCzB,GAC5C,GAAI0B,SACFG,gBAACH,EAAsB1B,SAExB,IAAI8B,MACR,qGAKClB,KAAKZ,MAAM+B,aA5EMH,iDAmG5B,SACEI,SAE0BJ,WAAyB,MAA5CpC,OAAOyC,UACVD,EAAY,MAAMA,KAClBxC,EAAO,MAAMA,SACVyC,uBAzBT,SACEC,EACAC,OAEMC,EAAkC,SAAApC,UAEpC6B,gBAACpC,EAAkB0C,EACjBN,gBAACK,EAAclC,KAMfqC,EAAOH,EAAUI,aAAeJ,EAAUG,MAAQ,iBACxDD,EAAQE,iCAAmCD,MAEpCD"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-error-boundary",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.1.1",
|
|
4
4
|
"description": "Simple reusable React error boundary component",
|
|
5
5
|
"main": "dist/react-error-boundary.cjs.js",
|
|
6
6
|
"module": "dist/react-error-boundary.esm.js",
|
|
7
7
|
"browser": "dist/react-error-boundary.umd.js",
|
|
8
|
-
"types": "index.d.ts",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
9
|
"sideEffects": false,
|
|
10
10
|
"keywords": [
|
|
11
11
|
"react",
|
|
@@ -27,8 +27,7 @@
|
|
|
27
27
|
},
|
|
28
28
|
"homepage": "https://github.com/bvaughn/react-error-boundary#readme",
|
|
29
29
|
"files": [
|
|
30
|
-
"dist"
|
|
31
|
-
"index.d.ts"
|
|
30
|
+
"dist"
|
|
32
31
|
],
|
|
33
32
|
"scripts": {
|
|
34
33
|
"build": "kcd-scripts build --bundle",
|
|
@@ -36,19 +35,22 @@
|
|
|
36
35
|
"setup": "npm install && npm run validate -s",
|
|
37
36
|
"test": "kcd-scripts test",
|
|
38
37
|
"test:update": "npm test -- --updateSnapshot --coverage",
|
|
38
|
+
"typecheck": "kcd-scripts typecheck",
|
|
39
39
|
"validate": "kcd-scripts validate"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@babel/runtime": "^7.
|
|
42
|
+
"@babel/runtime": "^7.12.5"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"@testing-library/jest-dom": "^5.11.
|
|
46
|
-
"@testing-library/react": "^11.
|
|
47
|
-
"@testing-library/user-event": "^12.
|
|
48
|
-
"
|
|
49
|
-
"react": "^
|
|
50
|
-
"
|
|
51
|
-
"
|
|
45
|
+
"@testing-library/jest-dom": "^5.11.6",
|
|
46
|
+
"@testing-library/react": "^11.2.2",
|
|
47
|
+
"@testing-library/user-event": "^12.2.2",
|
|
48
|
+
"@types/jest": "^26.0.15",
|
|
49
|
+
"@types/react": "^17.0.0",
|
|
50
|
+
"kcd-scripts": "^7.3.0",
|
|
51
|
+
"react": "^17.0.1",
|
|
52
|
+
"react-dom": "^17.0.1",
|
|
53
|
+
"typescript": "^4.1.2"
|
|
52
54
|
},
|
|
53
55
|
"peerDependencies": {
|
|
54
56
|
"react": ">=16.13.1"
|
package/index.d.ts
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import * as React from 'react'
|
|
2
|
-
|
|
3
|
-
export interface FallbackProps {
|
|
4
|
-
error?: Error
|
|
5
|
-
componentStack?: string
|
|
6
|
-
resetErrorBoundary: () => void
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export interface ErrorBoundaryPropsWithComponent {
|
|
10
|
-
onResetKeysChange?: (prevResetKeys: Array<any>, resetKeys: Array<any>) => void
|
|
11
|
-
onReset?: () => void
|
|
12
|
-
onError?: (error: Error, componentStack: string) => void
|
|
13
|
-
resetKeys?: Array<any>
|
|
14
|
-
FallbackComponent: React.ComponentType<FallbackProps>
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export interface ErrorBoundaryPropsWithRender {
|
|
18
|
-
onResetKeysChange?: (prevResetKeys: Array<any>, resetKeys: Array<any>) => void
|
|
19
|
-
onReset?: () => void
|
|
20
|
-
onError?: (error: Error, componentStack: string) => void
|
|
21
|
-
resetKeys?: Array<any>
|
|
22
|
-
fallbackRender: (props: FallbackProps) => React.ReactElement<any, any> | null
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export interface ErrorBoundaryPropsWithFallback {
|
|
26
|
-
onResetKeysChange?: (prevResetKeys: Array<any>, resetKeys: Array<any>) => void
|
|
27
|
-
onReset?: () => void
|
|
28
|
-
onError?: (error: Error, componentStack: string) => void
|
|
29
|
-
resetKeys?: Array<any>
|
|
30
|
-
fallback: React.ReactElement<any, any> | null
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export type ErrorBoundaryProps =
|
|
34
|
-
| ErrorBoundaryPropsWithFallback
|
|
35
|
-
| ErrorBoundaryPropsWithComponent
|
|
36
|
-
| ErrorBoundaryPropsWithRender
|
|
37
|
-
|
|
38
|
-
export class ErrorBoundary extends React.Component<ErrorBoundaryProps> {}
|
|
39
|
-
|
|
40
|
-
export function withErrorBoundary<P>(
|
|
41
|
-
ComponentToDecorate: React.ComponentType<P>,
|
|
42
|
-
errorBoundaryProps: ErrorBoundaryProps,
|
|
43
|
-
): React.ComponentType<P>
|
|
44
|
-
|
|
45
|
-
export function useErrorHandler<P = Error>(
|
|
46
|
-
error?: P,
|
|
47
|
-
): React.Dispatch<React.SetStateAction<P>>
|