@xyo-network/react-error 2.38.14 → 2.39.0-rc.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/dist/cjs/components/XyoErrorBoundary/ThrownErrorBoundary.d.ts +21 -0
- package/dist/cjs/components/XyoErrorBoundary/ThrownErrorBoundary.d.ts.map +1 -0
- package/dist/cjs/components/XyoErrorBoundary/ThrownErrorBoundary.js +37 -0
- package/dist/cjs/components/XyoErrorBoundary/ThrownErrorBoundary.js.map +1 -0
- package/dist/cjs/components/XyoErrorBoundary/index.d.ts +2 -0
- package/dist/cjs/components/XyoErrorBoundary/index.d.ts.map +1 -0
- package/dist/cjs/components/XyoErrorBoundary/index.js +5 -0
- package/dist/cjs/components/XyoErrorBoundary/index.js.map +1 -0
- package/dist/cjs/components/index.d.ts +1 -0
- package/dist/cjs/components/index.d.ts.map +1 -1
- package/dist/cjs/components/index.js +1 -0
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/contexts/ErrorReporter/Context.d.ts +4 -0
- package/dist/cjs/contexts/ErrorReporter/Context.d.ts.map +1 -0
- package/dist/cjs/contexts/ErrorReporter/Context.js +6 -0
- package/dist/cjs/contexts/ErrorReporter/Context.js.map +1 -0
- package/dist/cjs/contexts/ErrorReporter/Provider.d.ts +9 -0
- package/dist/cjs/contexts/ErrorReporter/Provider.d.ts.map +1 -0
- package/dist/cjs/contexts/ErrorReporter/Provider.js +17 -0
- package/dist/cjs/contexts/ErrorReporter/Provider.js.map +1 -0
- package/dist/cjs/contexts/ErrorReporter/State.d.ts +5 -0
- package/dist/cjs/contexts/ErrorReporter/State.d.ts.map +1 -0
- package/dist/cjs/contexts/ErrorReporter/State.js +3 -0
- package/dist/cjs/contexts/ErrorReporter/State.js.map +1 -0
- package/dist/cjs/contexts/ErrorReporter/index.d.ts +4 -0
- package/dist/cjs/contexts/ErrorReporter/index.d.ts.map +1 -0
- package/dist/cjs/contexts/ErrorReporter/index.js +7 -0
- package/dist/cjs/contexts/ErrorReporter/index.js.map +1 -0
- package/dist/cjs/contexts/ErrorReporter/useRollbar.d.ts +3 -0
- package/dist/cjs/contexts/ErrorReporter/useRollbar.d.ts.map +1 -0
- package/dist/cjs/contexts/ErrorReporter/useRollbar.js +14 -0
- package/dist/cjs/contexts/ErrorReporter/useRollbar.js.map +1 -0
- package/dist/cjs/contexts/index.d.ts +2 -0
- package/dist/cjs/contexts/index.d.ts.map +1 -0
- package/dist/cjs/contexts/index.js +5 -0
- package/dist/cjs/contexts/index.js.map +1 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/docs.json +1471 -512
- package/dist/esm/components/XyoErrorBoundary/ThrownErrorBoundary.d.ts +21 -0
- package/dist/esm/components/XyoErrorBoundary/ThrownErrorBoundary.d.ts.map +1 -0
- package/dist/esm/components/XyoErrorBoundary/ThrownErrorBoundary.js +30 -0
- package/dist/esm/components/XyoErrorBoundary/ThrownErrorBoundary.js.map +1 -0
- package/dist/esm/components/XyoErrorBoundary/index.d.ts +2 -0
- package/dist/esm/components/XyoErrorBoundary/index.d.ts.map +1 -0
- package/dist/esm/components/XyoErrorBoundary/index.js +2 -0
- package/dist/esm/components/XyoErrorBoundary/index.js.map +1 -0
- package/dist/esm/components/index.d.ts +1 -0
- package/dist/esm/components/index.d.ts.map +1 -1
- package/dist/esm/components/index.js +1 -0
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/contexts/ErrorReporter/Context.d.ts +4 -0
- package/dist/esm/contexts/ErrorReporter/Context.d.ts.map +1 -0
- package/dist/esm/contexts/ErrorReporter/Context.js +3 -0
- package/dist/esm/contexts/ErrorReporter/Context.js.map +1 -0
- package/dist/esm/contexts/ErrorReporter/Provider.d.ts +9 -0
- package/dist/esm/contexts/ErrorReporter/Provider.d.ts.map +1 -0
- package/dist/esm/contexts/ErrorReporter/Provider.js +14 -0
- package/dist/esm/contexts/ErrorReporter/Provider.js.map +1 -0
- package/dist/esm/contexts/ErrorReporter/State.d.ts +5 -0
- package/dist/esm/contexts/ErrorReporter/State.d.ts.map +1 -0
- package/dist/esm/contexts/ErrorReporter/State.js +2 -0
- package/dist/esm/contexts/ErrorReporter/State.js.map +1 -0
- package/dist/esm/contexts/ErrorReporter/index.d.ts +4 -0
- package/dist/esm/contexts/ErrorReporter/index.d.ts.map +1 -0
- package/dist/esm/contexts/ErrorReporter/index.js +4 -0
- package/dist/esm/contexts/ErrorReporter/index.js.map +1 -0
- package/dist/esm/contexts/ErrorReporter/useRollbar.d.ts +3 -0
- package/dist/esm/contexts/ErrorReporter/useRollbar.d.ts.map +1 -0
- package/dist/esm/contexts/ErrorReporter/useRollbar.js +11 -0
- package/dist/esm/contexts/ErrorReporter/useRollbar.js.map +1 -0
- package/dist/esm/contexts/index.d.ts +2 -0
- package/dist/esm/contexts/index.d.ts.map +1 -0
- package/dist/esm/contexts/index.js +2 -0
- package/dist/esm/contexts/index.js.map +1 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/package.json +13 -7
- package/src/components/XyoErrorBoundary/ThrownErrorBoundary.stories.tsx +83 -0
- package/src/components/XyoErrorBoundary/ThrownErrorBoundary.tsx +50 -0
- package/src/components/XyoErrorBoundary/index.ts +1 -0
- package/src/components/index.ts +1 -0
- package/src/contexts/ErrorReporter/Context.ts +5 -0
- package/src/contexts/ErrorReporter/Provider.stories.tsx +40 -0
- package/src/contexts/ErrorReporter/Provider.tsx +23 -0
- package/src/contexts/ErrorReporter/State.ts +5 -0
- package/src/contexts/ErrorReporter/index.ts +3 -0
- package/src/contexts/ErrorReporter/useRollbar.tsx +14 -0
- package/src/contexts/index.ts +1 -0
- package/src/index.ts +1 -0
- package/src/components/XyoErrorRender/Render.stories.tsx +0 -152
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { BasePageProps } from '@xylabs/react-common';
|
|
2
|
+
import { XyoError } from '@xyo-network/module';
|
|
3
|
+
import { Component, ErrorInfo, ReactNode } from 'react';
|
|
4
|
+
import Rollbar from 'rollbar';
|
|
5
|
+
export interface XyoErrorBoundaryProps {
|
|
6
|
+
rethrow?: boolean;
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
rollbar?: Rollbar;
|
|
9
|
+
basePageProps?: BasePageProps;
|
|
10
|
+
errorComponent?: (e: Error) => ReactNode;
|
|
11
|
+
}
|
|
12
|
+
export interface XyoErrorBoundaryState {
|
|
13
|
+
xyoError?: XyoError;
|
|
14
|
+
}
|
|
15
|
+
export declare class XyoThrownErrorBoundary extends Component<XyoErrorBoundaryProps, XyoErrorBoundaryState> {
|
|
16
|
+
state: XyoErrorBoundaryState;
|
|
17
|
+
static normalizeError(error: Error | XyoError): XyoError;
|
|
18
|
+
componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
|
|
19
|
+
render(): string | number | boolean | import("react").ReactFragment | JSX.Element | null | undefined;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=ThrownErrorBoundary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThrownErrorBoundary.d.ts","sourceRoot":"","sources":["../../../../src/components/XyoErrorBoundary/ThrownErrorBoundary.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAkB,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACvD,OAAO,OAAO,MAAM,SAAS,CAAA;AAI7B,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,SAAS,CAAA;IACnB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,SAAS,CAAA;CACzC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACpB;AAED,qBAAa,sBAAuB,SAAQ,SAAS,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAC1F,KAAK,EAAE,qBAAqB,CAElC;WAEa,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ;IAIxD,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;IAYpD,MAAM;CASd"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { XyoErrorSchema } from '@xyo-network/module';
|
|
3
|
+
import { Component } from 'react';
|
|
4
|
+
import { XyoErrorRender } from '../XyoErrorRender';
|
|
5
|
+
export class XyoThrownErrorBoundary extends Component {
|
|
6
|
+
state = {
|
|
7
|
+
xyoError: undefined,
|
|
8
|
+
};
|
|
9
|
+
static normalizeError(error) {
|
|
10
|
+
return (error.schema === XyoErrorSchema ? error : { message: error.message, schema: XyoErrorSchema, sources: [] });
|
|
11
|
+
}
|
|
12
|
+
componentDidCatch(error, errorInfo) {
|
|
13
|
+
const { rethrow, rollbar } = this.props;
|
|
14
|
+
const xyoError = XyoThrownErrorBoundary.normalizeError(error);
|
|
15
|
+
rollbar?.error(error);
|
|
16
|
+
console.error('XyoError:', xyoError, errorInfo);
|
|
17
|
+
if (rethrow) {
|
|
18
|
+
throw error;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
render() {
|
|
22
|
+
const { xyoError } = this.state;
|
|
23
|
+
const { children } = this.props;
|
|
24
|
+
if (xyoError) {
|
|
25
|
+
return _jsx(XyoErrorRender, { xyoError: xyoError });
|
|
26
|
+
}
|
|
27
|
+
return children;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=ThrownErrorBoundary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThrownErrorBoundary.js","sourceRoot":"","sources":["../../../../src/components/XyoErrorBoundary/ThrownErrorBoundary.tsx"],"names":[],"mappings":";AACA,OAAO,EAAY,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAwB,MAAM,OAAO,CAAA;AAGvD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAclD,MAAM,OAAO,sBAAuB,SAAQ,SAAuD;IAC1F,KAAK,GAA0B;QACpC,QAAQ,EAAE,SAAS;KACpB,CAAA;IAEM,MAAM,CAAC,cAAc,CAAC,KAAuB;QAClD,OAAO,CAAE,KAAkB,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE,EAAE,CAAa,CAAA;IAC9I,CAAC;IAEM,iBAAiB,CAAC,KAAY,EAAE,SAAoB;QACzD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QACvC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;QAE7D,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;QAErB,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;QAC/C,IAAI,OAAO,EAAE;YACX,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;IAEM,MAAM;QACX,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAC/B,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAC/B,IAAI,QAAQ,EAAE;YACZ,OAAO,KAAC,cAAc,IAAC,QAAQ,EAAE,QAAQ,GAAI,CAAA;SAC9C;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/XyoErrorBoundary/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/XyoErrorBoundary/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Context.d.ts","sourceRoot":"","sources":["../../../../src/contexts/ErrorReporter/Context.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAEnD,eAAO,MAAM,oBAAoB,oDAA+C,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Context.js","sourceRoot":"","sources":["../../../../src/contexts/ErrorReporter/Context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAIrC,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAA4B,EAAE,CAAC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { WithChildren } from '@xylabs/react-shared';
|
|
3
|
+
import Rollbar from 'rollbar';
|
|
4
|
+
export interface ErrorReporterProviderProps {
|
|
5
|
+
rollbar: Rollbar;
|
|
6
|
+
}
|
|
7
|
+
declare const ErrorReporterProvider: React.FC<WithChildren<ErrorReporterProviderProps>>;
|
|
8
|
+
export { ErrorReporterProvider };
|
|
9
|
+
//# sourceMappingURL=Provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/contexts/ErrorReporter/Provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,OAAO,OAAO,MAAM,SAAS,CAAA;AAI7B,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,QAAA,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAU7E,CAAA;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { ErrorReporterContext } from './Context';
|
|
4
|
+
const ErrorReporterProvider = ({ children, rollbar }) => {
|
|
5
|
+
const [rollbarInstance, setRollBarInstance] = useState();
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
if (rollbarInstance) {
|
|
8
|
+
setRollBarInstance(rollbarInstance);
|
|
9
|
+
}
|
|
10
|
+
}, [rollbar, rollbarInstance]);
|
|
11
|
+
return _jsx(ErrorReporterContext.Provider, { value: { rollbar }, children: children });
|
|
12
|
+
};
|
|
13
|
+
export { ErrorReporterProvider };
|
|
14
|
+
//# sourceMappingURL=Provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../../src/contexts/ErrorReporter/Provider.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAG3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAMhD,MAAM,qBAAqB,GAAuD,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;IAC1G,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,EAAW,CAAA;IAEjE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,eAAe,EAAE;YACnB,kBAAkB,CAAC,eAAe,CAAC,CAAA;SACpC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAA;IAE9B,OAAO,KAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,OAAO,EAAE,YAAG,QAAQ,GAAiC,CAAA;AACtG,CAAC,CAAA;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"State.d.ts","sourceRoot":"","sources":["../../../../src/contexts/ErrorReporter/State.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAE7B,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"State.js","sourceRoot":"","sources":["../../../../src/contexts/ErrorReporter/State.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/contexts/ErrorReporter/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/contexts/ErrorReporter/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRollbar.d.ts","sourceRoot":"","sources":["../../../../src/contexts/ErrorReporter/useRollbar.tsx"],"names":[],"mappings":"AAIA,QAAA,MAAM,UAAU,mDAOf,CAAA;AAED,OAAO,EAAE,UAAU,EAAE,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { useContext } from 'react';
|
|
2
|
+
import { ErrorReporterContext } from './Context';
|
|
3
|
+
const useRollbar = () => {
|
|
4
|
+
const context = useContext(ErrorReporterContext);
|
|
5
|
+
if (context === undefined) {
|
|
6
|
+
console.warn('useRollbar must be used within a ErrorReporterContext');
|
|
7
|
+
}
|
|
8
|
+
return context ?? {};
|
|
9
|
+
};
|
|
10
|
+
export { useRollbar };
|
|
11
|
+
//# sourceMappingURL=useRollbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRollbar.js","sourceRoot":"","sources":["../../../../src/contexts/ErrorReporter/useRollbar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAElC,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAEhD,MAAM,UAAU,GAAG,GAAG,EAAE;IACtB,MAAM,OAAO,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAA;IAChD,IAAI,OAAO,KAAK,SAAS,EAAE;QACzB,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAA;KACtE;IAED,OAAO,OAAO,IAAI,EAAE,CAAA;AACtB,CAAC,CAAA;AAED,OAAO,EAAE,UAAU,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/contexts/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contexts/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA"}
|
package/dist/esm/index.d.ts
CHANGED
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA"}
|
package/dist/esm/index.js
CHANGED
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA"}
|
package/package.json
CHANGED
|
@@ -10,21 +10,26 @@
|
|
|
10
10
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-react-js/issues"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@xylabs/react-flexbox": "^2.15.1",
|
|
14
13
|
"tslib": "^2.4.0"
|
|
15
14
|
},
|
|
16
15
|
"peerDependencies": {
|
|
17
16
|
"@mui/material": "^5.10.3",
|
|
18
|
-
"
|
|
17
|
+
"@xylabs/react-common": "^2.15.1",
|
|
18
|
+
"@xylabs/react-flexbox": "^2.15.1",
|
|
19
|
+
"@xylabs/react-shared": "^2.15.1",
|
|
20
|
+
"@xyo-network/module": "*",
|
|
19
21
|
"pako": "^2.0.4",
|
|
20
22
|
"react": "^18.2.0",
|
|
21
23
|
"react-dom": "^18.2.0",
|
|
22
|
-
"react-router-dom": "^6.3.0"
|
|
24
|
+
"react-router-dom": "^6.3.0",
|
|
25
|
+
"rollbar": "^2.25.2"
|
|
23
26
|
},
|
|
24
|
-
"
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
"peerDependenciesMeta": {
|
|
28
|
+
"rollbar": {
|
|
29
|
+
"optional": true
|
|
30
|
+
}
|
|
27
31
|
},
|
|
32
|
+
"description": "Common React library for all XYO projects that use React",
|
|
28
33
|
"browser": "dist/esm/index.js",
|
|
29
34
|
"docs": "dist/docs.json",
|
|
30
35
|
"exports": {
|
|
@@ -67,5 +72,6 @@
|
|
|
67
72
|
},
|
|
68
73
|
"sideEffects": false,
|
|
69
74
|
"types": "dist/esm/index.d.ts",
|
|
70
|
-
"version": "2.
|
|
75
|
+
"version": "2.39.0-rc.1",
|
|
76
|
+
"stableVersion": "2.38.15"
|
|
71
77
|
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/* eslint-disable import/no-internal-modules */
|
|
2
|
+
import { Alert, Paper, TextField } from '@mui/material'
|
|
3
|
+
import { ComponentStory, Meta } from '@storybook/react'
|
|
4
|
+
import { BasePageProps } from '@xylabs/react-common'
|
|
5
|
+
import { FlexCol } from '@xylabs/react-flexbox'
|
|
6
|
+
import { ApiProvider, ArchivesProvider } from '@xyo-network/react-api'
|
|
7
|
+
import { ApplicationAppBar, SystemToolbar } from '@xyo-network/react-appbar'
|
|
8
|
+
import { Footer } from '@xyo-network/react-footer'
|
|
9
|
+
import { NetworkMemoryProvider } from '@xyo-network/react-network'
|
|
10
|
+
import { BrowserRouter } from 'react-router-dom'
|
|
11
|
+
|
|
12
|
+
import { XyoThrownErrorBoundary } from './ThrownErrorBoundary'
|
|
13
|
+
|
|
14
|
+
const basePageProps: BasePageProps = {
|
|
15
|
+
appBar: (
|
|
16
|
+
<ApplicationAppBar
|
|
17
|
+
systemToolbar={
|
|
18
|
+
<SystemToolbar
|
|
19
|
+
style={{ paddingLeft: 8, paddingRight: 8 }}
|
|
20
|
+
disableGutters
|
|
21
|
+
archiveSelectProps={{
|
|
22
|
+
sx: { display: 'none' },
|
|
23
|
+
}}
|
|
24
|
+
sx={{ flexWrap: 'wrap-reverse', justifyContent: 'end' }}
|
|
25
|
+
darkModeButton
|
|
26
|
+
authButton
|
|
27
|
+
/>
|
|
28
|
+
}
|
|
29
|
+
>
|
|
30
|
+
<TextField fullWidth size="small" />
|
|
31
|
+
</ApplicationAppBar>
|
|
32
|
+
),
|
|
33
|
+
appFooter: (
|
|
34
|
+
<FlexCol alignItems="stretch">
|
|
35
|
+
<Paper elevation={8}>
|
|
36
|
+
<Footer width="100%" />
|
|
37
|
+
</Paper>
|
|
38
|
+
</FlexCol>
|
|
39
|
+
),
|
|
40
|
+
title: 'Page Title',
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const StorybookEntry: Meta = {
|
|
44
|
+
args: {
|
|
45
|
+
basePageProps,
|
|
46
|
+
},
|
|
47
|
+
component: XyoThrownErrorBoundary,
|
|
48
|
+
parameters: {
|
|
49
|
+
docs: {
|
|
50
|
+
page: null,
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
title: 'auth-service/XyoApiBoundary/ThrownErrorBoundary',
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const Template: ComponentStory<typeof XyoThrownErrorBoundary> = ({ basePageProps, errorComponent }) => {
|
|
57
|
+
return (
|
|
58
|
+
<BrowserRouter>
|
|
59
|
+
<NetworkMemoryProvider>
|
|
60
|
+
<ApiProvider apiDomain="http://localhost:8080">
|
|
61
|
+
<ArchivesProvider>
|
|
62
|
+
<XyoThrownErrorBoundary basePageProps={basePageProps} errorComponent={errorComponent}>
|
|
63
|
+
<Alert severity="info">Use React Dev Tools to trigger and error within the boundary</Alert>
|
|
64
|
+
</XyoThrownErrorBoundary>
|
|
65
|
+
</ArchivesProvider>
|
|
66
|
+
</ApiProvider>
|
|
67
|
+
</NetworkMemoryProvider>
|
|
68
|
+
</BrowserRouter>
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const Default = Template.bind({})
|
|
73
|
+
Default.args = {}
|
|
74
|
+
|
|
75
|
+
const CustomErrorComponent = Template.bind({})
|
|
76
|
+
CustomErrorComponent.args = {
|
|
77
|
+
errorComponent: (e) => <Alert severity="error">Using Custom Error Component with error: {e.message}</Alert>,
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export { CustomErrorComponent, Default }
|
|
81
|
+
|
|
82
|
+
// eslint-disable-next-line import/no-default-export
|
|
83
|
+
export default StorybookEntry
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { BasePageProps } from '@xylabs/react-common'
|
|
2
|
+
import { XyoError, XyoErrorSchema } from '@xyo-network/module'
|
|
3
|
+
import { Component, ErrorInfo, ReactNode } from 'react'
|
|
4
|
+
import Rollbar from 'rollbar'
|
|
5
|
+
|
|
6
|
+
import { XyoErrorRender } from '../XyoErrorRender'
|
|
7
|
+
|
|
8
|
+
export interface XyoErrorBoundaryProps {
|
|
9
|
+
rethrow?: boolean
|
|
10
|
+
children: ReactNode
|
|
11
|
+
rollbar?: Rollbar
|
|
12
|
+
basePageProps?: BasePageProps
|
|
13
|
+
errorComponent?: (e: Error) => ReactNode
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface XyoErrorBoundaryState {
|
|
17
|
+
xyoError?: XyoError
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export class XyoThrownErrorBoundary extends Component<XyoErrorBoundaryProps, XyoErrorBoundaryState> {
|
|
21
|
+
public state: XyoErrorBoundaryState = {
|
|
22
|
+
xyoError: undefined,
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
public static normalizeError(error: Error | XyoError): XyoError {
|
|
26
|
+
return ((error as XyoError).schema === XyoErrorSchema ? error : { message: error.message, schema: XyoErrorSchema, sources: [] }) as XyoError
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
public componentDidCatch(error: Error, errorInfo: ErrorInfo) {
|
|
30
|
+
const { rethrow, rollbar } = this.props
|
|
31
|
+
const xyoError = XyoThrownErrorBoundary.normalizeError(error)
|
|
32
|
+
|
|
33
|
+
rollbar?.error(error)
|
|
34
|
+
|
|
35
|
+
console.error('XyoError:', xyoError, errorInfo)
|
|
36
|
+
if (rethrow) {
|
|
37
|
+
throw error
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
public render() {
|
|
42
|
+
const { xyoError } = this.state
|
|
43
|
+
const { children } = this.props
|
|
44
|
+
if (xyoError) {
|
|
45
|
+
return <XyoErrorRender xyoError={xyoError} />
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return children
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ThrownErrorBoundary'
|
package/src/components/index.ts
CHANGED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Typography } from '@mui/material'
|
|
2
|
+
import { ComponentMeta, ComponentStory } from '@storybook/react'
|
|
3
|
+
import Rollbar from 'rollbar'
|
|
4
|
+
|
|
5
|
+
import { ErrorReporterProvider } from './Provider'
|
|
6
|
+
import { useRollbar } from './useRollbar'
|
|
7
|
+
|
|
8
|
+
const StorybookEntry = {
|
|
9
|
+
argTypes: {},
|
|
10
|
+
component: ErrorReporterProvider,
|
|
11
|
+
parameters: {
|
|
12
|
+
docs: {
|
|
13
|
+
page: null,
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
title: 'auth-service/ErrorReporterProvider',
|
|
17
|
+
} as ComponentMeta<typeof ErrorReporterProvider>
|
|
18
|
+
|
|
19
|
+
const RollbarComponent = () => {
|
|
20
|
+
const { rollbar } = useRollbar()
|
|
21
|
+
const rollbarFound = typeof rollbar?.error === 'function'
|
|
22
|
+
|
|
23
|
+
return <Typography color={rollbarFound ? 'green' : 'red'}>Rollbar instance {rollbarFound ? '' : 'NOT'} found from context!</Typography>
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const Template: ComponentStory<typeof ErrorReporterProvider> = () => {
|
|
27
|
+
const rollbar = new Rollbar()
|
|
28
|
+
return (
|
|
29
|
+
<ErrorReporterProvider rollbar={rollbar}>
|
|
30
|
+
<RollbarComponent />
|
|
31
|
+
</ErrorReporterProvider>
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const Default = Template.bind({})
|
|
36
|
+
|
|
37
|
+
export { Default }
|
|
38
|
+
|
|
39
|
+
// eslint-disable-next-line import/no-default-export
|
|
40
|
+
export default StorybookEntry
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { WithChildren } from '@xylabs/react-shared'
|
|
2
|
+
import { useEffect, useState } from 'react'
|
|
3
|
+
import Rollbar from 'rollbar'
|
|
4
|
+
|
|
5
|
+
import { ErrorReporterContext } from './Context'
|
|
6
|
+
|
|
7
|
+
export interface ErrorReporterProviderProps {
|
|
8
|
+
rollbar: Rollbar
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const ErrorReporterProvider: React.FC<WithChildren<ErrorReporterProviderProps>> = ({ children, rollbar }) => {
|
|
12
|
+
const [rollbarInstance, setRollBarInstance] = useState<Rollbar>()
|
|
13
|
+
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
if (rollbarInstance) {
|
|
16
|
+
setRollBarInstance(rollbarInstance)
|
|
17
|
+
}
|
|
18
|
+
}, [rollbar, rollbarInstance])
|
|
19
|
+
|
|
20
|
+
return <ErrorReporterContext.Provider value={{ rollbar }}>{children}</ErrorReporterContext.Provider>
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export { ErrorReporterProvider }
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useContext } from 'react'
|
|
2
|
+
|
|
3
|
+
import { ErrorReporterContext } from './Context'
|
|
4
|
+
|
|
5
|
+
const useRollbar = () => {
|
|
6
|
+
const context = useContext(ErrorReporterContext)
|
|
7
|
+
if (context === undefined) {
|
|
8
|
+
console.warn('useRollbar must be used within a ErrorReporterContext')
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
return context ?? {}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { useRollbar }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ErrorReporter'
|
package/src/index.ts
CHANGED