@xyo-network/react-error 2.64.0-rc.7 → 2.64.0
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/browser/components/ErrorBoundary/ThrownErrorBoundary.cjs +106 -0
- package/dist/browser/components/ErrorBoundary/ThrownErrorBoundary.cjs.map +1 -0
- package/dist/browser/components/ErrorBoundary/ThrownErrorBoundary.d.cts +21 -0
- package/dist/browser/components/ErrorBoundary/ThrownErrorBoundary.d.cts.map +1 -0
- package/dist/browser/components/ErrorBoundary/index.cjs +108 -0
- package/dist/browser/components/ErrorBoundary/index.cjs.map +1 -0
- package/dist/browser/components/ErrorBoundary/index.d.cts +2 -0
- package/dist/browser/components/ErrorBoundary/index.d.cts.map +1 -0
- package/dist/browser/components/ErrorRender/ErrorAlert.cjs +39 -0
- package/dist/{node/components/ErrorRender/ErrorAlert.mjs.map → browser/components/ErrorRender/ErrorAlert.cjs.map} +1 -1
- package/dist/browser/components/ErrorRender/ErrorAlert.d.cts +10 -0
- package/dist/browser/components/ErrorRender/ErrorAlert.d.cts.map +1 -0
- package/dist/browser/components/ErrorRender/Props.cjs +19 -0
- package/dist/browser/components/ErrorRender/Props.cjs.map +1 -0
- package/dist/browser/components/ErrorRender/Props.d.cts +12 -0
- package/dist/browser/components/ErrorRender/Props.d.cts.map +1 -0
- package/dist/browser/components/ErrorRender/Render.cjs +70 -0
- package/dist/browser/components/ErrorRender/Render.cjs.map +1 -0
- package/dist/browser/components/ErrorRender/Render.d.cts +4 -0
- package/dist/browser/components/ErrorRender/Render.d.cts.map +1 -0
- package/dist/browser/components/ErrorRender/index.cjs +71 -0
- package/dist/browser/components/ErrorRender/index.cjs.map +1 -0
- package/dist/browser/components/ErrorRender/index.d.cts +4 -0
- package/dist/browser/components/ErrorRender/index.d.cts.map +1 -0
- package/dist/browser/components/index.cjs +110 -0
- package/dist/browser/components/index.cjs.map +1 -0
- package/dist/browser/components/index.d.cts +3 -0
- package/dist/browser/components/index.d.cts.map +1 -0
- package/dist/browser/contexts/ErrorReporter/Context.cjs +28 -0
- package/dist/{node/contexts/ErrorReporter/Context.mjs.map → browser/contexts/ErrorReporter/Context.cjs.map} +1 -1
- package/dist/browser/contexts/ErrorReporter/Context.d.cts +4 -0
- package/dist/browser/contexts/ErrorReporter/Context.d.cts.map +1 -0
- package/dist/browser/contexts/ErrorReporter/Provider.cjs +43 -0
- package/dist/browser/contexts/ErrorReporter/Provider.cjs.map +1 -0
- package/dist/browser/contexts/ErrorReporter/Provider.d.cts +9 -0
- package/dist/browser/contexts/ErrorReporter/Provider.d.cts.map +1 -0
- package/dist/browser/contexts/ErrorReporter/State.cjs +19 -0
- package/dist/browser/contexts/ErrorReporter/State.cjs.map +1 -0
- package/dist/browser/contexts/ErrorReporter/State.d.cts +5 -0
- package/dist/browser/contexts/ErrorReporter/State.d.cts.map +1 -0
- package/dist/browser/contexts/ErrorReporter/index.cjs +56 -0
- package/dist/browser/contexts/ErrorReporter/index.cjs.map +1 -0
- package/dist/browser/contexts/ErrorReporter/index.d.cts +4 -0
- package/dist/browser/contexts/ErrorReporter/index.d.cts.map +1 -0
- package/dist/browser/contexts/ErrorReporter/useRollbar.cjs +40 -0
- package/dist/browser/contexts/ErrorReporter/useRollbar.cjs.map +1 -0
- package/dist/browser/contexts/ErrorReporter/useRollbar.d.cts +3 -0
- package/dist/browser/contexts/ErrorReporter/useRollbar.d.cts.map +1 -0
- package/dist/browser/contexts/index.cjs +56 -0
- package/dist/browser/contexts/index.cjs.map +1 -0
- package/dist/browser/contexts/index.d.cts +2 -0
- package/dist/browser/contexts/index.d.cts.map +1 -0
- package/dist/browser/index.cjs +141 -0
- package/dist/browser/index.cjs.map +1 -0
- package/dist/browser/index.d.cts +3 -0
- package/dist/browser/index.d.cts.map +1 -0
- package/dist/docs.json +25215 -0
- package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.cjs +110 -0
- package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.cjs.map +1 -0
- package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.d.cts +21 -0
- package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.d.cts.map +1 -0
- package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.js +55 -33
- package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.js.map +1 -1
- package/dist/node/components/ErrorBoundary/index.cjs +112 -0
- package/dist/node/components/ErrorBoundary/index.cjs.map +1 -0
- package/dist/node/components/ErrorBoundary/index.d.cts +2 -0
- package/dist/node/components/ErrorBoundary/index.d.cts.map +1 -0
- package/dist/node/components/ErrorBoundary/index.js +82 -20
- package/dist/node/components/ErrorBoundary/index.js.map +1 -1
- package/dist/node/components/ErrorRender/ErrorAlert.cjs +43 -0
- package/dist/node/components/ErrorRender/ErrorAlert.cjs.map +1 -0
- package/dist/node/components/ErrorRender/ErrorAlert.d.cts +10 -0
- package/dist/node/components/ErrorRender/ErrorAlert.d.cts.map +1 -0
- package/dist/node/components/ErrorRender/ErrorAlert.js +14 -37
- package/dist/node/components/ErrorRender/ErrorAlert.js.map +1 -1
- package/dist/node/components/ErrorRender/Props.cjs +19 -0
- package/dist/node/components/ErrorRender/Props.cjs.map +1 -0
- package/dist/node/components/ErrorRender/Props.d.cts +12 -0
- package/dist/node/components/ErrorRender/Props.d.cts.map +1 -0
- package/dist/node/components/ErrorRender/Props.js +0 -16
- package/dist/node/components/ErrorRender/Props.js.map +1 -1
- package/dist/node/components/ErrorRender/Render.cjs +74 -0
- package/dist/node/components/ErrorRender/Render.cjs.map +1 -0
- package/dist/node/components/ErrorRender/Render.d.cts +4 -0
- package/dist/node/components/ErrorRender/Render.d.cts.map +1 -0
- package/dist/node/components/ErrorRender/Render.js +28 -35
- package/dist/node/components/ErrorRender/Render.js.map +1 -1
- package/dist/node/components/ErrorRender/index.cjs +76 -0
- package/dist/node/components/ErrorRender/index.cjs.map +1 -0
- package/dist/node/components/ErrorRender/index.d.cts +4 -0
- package/dist/node/components/ErrorRender/index.d.cts.map +1 -0
- package/dist/node/components/ErrorRender/index.js +45 -24
- package/dist/node/components/ErrorRender/index.js.map +1 -1
- package/dist/node/components/index.cjs +116 -0
- package/dist/node/components/index.cjs.map +1 -0
- package/dist/node/components/index.d.cts +3 -0
- package/dist/node/components/index.d.cts.map +1 -0
- package/dist/node/components/index.js +84 -22
- package/dist/node/components/index.js.map +1 -1
- package/dist/node/contexts/ErrorReporter/Context.cjs +32 -0
- package/dist/node/contexts/ErrorReporter/Context.cjs.map +1 -0
- package/dist/node/contexts/ErrorReporter/Context.d.cts +4 -0
- package/dist/node/contexts/ErrorReporter/Context.d.cts.map +1 -0
- package/dist/node/contexts/ErrorReporter/Context.js +5 -28
- package/dist/node/contexts/ErrorReporter/Context.js.map +1 -1
- package/dist/node/contexts/ErrorReporter/Provider.cjs +47 -0
- package/dist/node/contexts/ErrorReporter/Provider.cjs.map +1 -0
- package/dist/node/contexts/ErrorReporter/Provider.d.cts +9 -0
- package/dist/node/contexts/ErrorReporter/Provider.d.cts.map +1 -0
- package/dist/node/contexts/ErrorReporter/Provider.js +15 -33
- package/dist/node/contexts/ErrorReporter/Provider.js.map +1 -1
- package/dist/node/contexts/ErrorReporter/State.cjs +19 -0
- package/dist/node/contexts/ErrorReporter/State.cjs.map +1 -0
- package/dist/node/contexts/ErrorReporter/State.d.cts +5 -0
- package/dist/node/contexts/ErrorReporter/State.d.cts.map +1 -0
- package/dist/node/contexts/ErrorReporter/State.js +0 -16
- package/dist/node/contexts/ErrorReporter/State.js.map +1 -1
- package/dist/node/contexts/ErrorReporter/index.cjs +61 -0
- package/dist/node/contexts/ErrorReporter/index.cjs.map +1 -0
- package/dist/node/contexts/ErrorReporter/index.d.cts +4 -0
- package/dist/node/contexts/ErrorReporter/index.d.cts.map +1 -0
- package/dist/node/contexts/ErrorReporter/index.js +30 -24
- package/dist/node/contexts/ErrorReporter/index.js.map +1 -1
- package/dist/node/contexts/ErrorReporter/useRollbar.cjs +44 -0
- package/dist/node/contexts/ErrorReporter/useRollbar.cjs.map +1 -0
- package/dist/node/contexts/ErrorReporter/useRollbar.d.cts +3 -0
- package/dist/node/contexts/ErrorReporter/useRollbar.d.cts.map +1 -0
- package/dist/node/contexts/ErrorReporter/useRollbar.js +12 -30
- package/dist/node/contexts/ErrorReporter/useRollbar.js.map +1 -1
- package/dist/node/contexts/index.cjs +61 -0
- package/dist/node/contexts/index.cjs.map +1 -0
- package/dist/node/contexts/index.d.cts +2 -0
- package/dist/node/contexts/index.d.cts.map +1 -0
- package/dist/node/contexts/index.js +30 -20
- package/dist/node/contexts/index.js.map +1 -1
- package/dist/node/index.cjs +149 -0
- package/dist/node/index.cjs.map +1 -0
- package/dist/node/index.d.cts +3 -0
- package/dist/node/index.d.cts.map +1 -0
- package/dist/node/index.js +115 -22
- package/dist/node/index.js.map +1 -1
- package/package.json +17 -17
- package/dist/browser/components/ErrorBoundary/ThrownErrorBoundary.stories.js +0 -26
- package/dist/browser/components/ErrorBoundary/ThrownErrorBoundary.stories.js.map +0 -1
- package/dist/browser/contexts/ErrorReporter/Provider.stories.js +0 -35
- package/dist/browser/contexts/ErrorReporter/Provider.stories.js.map +0 -1
- package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.mjs +0 -39
- package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.mjs.map +0 -1
- package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.stories.js +0 -51
- package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.stories.js.map +0 -1
- package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.stories.mjs +0 -26
- package/dist/node/components/ErrorBoundary/ThrownErrorBoundary.stories.mjs.map +0 -1
- package/dist/node/components/ErrorBoundary/index.mjs +0 -2
- package/dist/node/components/ErrorBoundary/index.mjs.map +0 -1
- package/dist/node/components/ErrorRender/ErrorAlert.mjs +0 -17
- package/dist/node/components/ErrorRender/Props.mjs +0 -1
- package/dist/node/components/ErrorRender/Props.mjs.map +0 -1
- package/dist/node/components/ErrorRender/Render.mjs +0 -32
- package/dist/node/components/ErrorRender/Render.mjs.map +0 -1
- package/dist/node/components/ErrorRender/index.mjs +0 -4
- package/dist/node/components/ErrorRender/index.mjs.map +0 -1
- package/dist/node/components/index.mjs +0 -3
- package/dist/node/components/index.mjs.map +0 -1
- package/dist/node/contexts/ErrorReporter/Context.mjs +0 -6
- package/dist/node/contexts/ErrorReporter/Provider.mjs +0 -16
- package/dist/node/contexts/ErrorReporter/Provider.mjs.map +0 -1
- package/dist/node/contexts/ErrorReporter/Provider.stories.js +0 -69
- package/dist/node/contexts/ErrorReporter/Provider.stories.js.map +0 -1
- package/dist/node/contexts/ErrorReporter/Provider.stories.mjs +0 -35
- package/dist/node/contexts/ErrorReporter/Provider.stories.mjs.map +0 -1
- package/dist/node/contexts/ErrorReporter/State.mjs +0 -1
- package/dist/node/contexts/ErrorReporter/State.mjs.map +0 -1
- package/dist/node/contexts/ErrorReporter/index.mjs +0 -4
- package/dist/node/contexts/ErrorReporter/index.mjs.map +0 -1
- package/dist/node/contexts/ErrorReporter/useRollbar.mjs +0 -13
- package/dist/node/contexts/ErrorReporter/useRollbar.mjs.map +0 -1
- package/dist/node/contexts/index.mjs +0 -2
- package/dist/node/contexts/index.mjs.map +0 -1
- package/dist/node/index.mjs +0 -3
- package/dist/node/index.mjs.map +0 -1
package/dist/node/index.js
CHANGED
|
@@ -1,25 +1,118 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
// src/components/ErrorBoundary/ThrownErrorBoundary.tsx
|
|
2
|
+
import { ModuleErrorSchema } from "@xyo-network/payload-model";
|
|
3
|
+
import { Component } from "react";
|
|
4
|
+
|
|
5
|
+
// src/components/ErrorRender/ErrorAlert.tsx
|
|
6
|
+
import { ExitToApp as ExitIcon } from "@mui/icons-material";
|
|
7
|
+
import { Alert, AlertTitle, Typography } from "@mui/material";
|
|
8
|
+
import { ButtonEx } from "@xylabs/react-button";
|
|
9
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
+
var ErrorAlert = ({ onCancel, error, errorContext, ...props }) => {
|
|
11
|
+
return /* @__PURE__ */ jsxs(Alert, { severity: "error", ...props, children: [
|
|
12
|
+
/* @__PURE__ */ jsx(AlertTitle, { children: "Whoops! Something went wrong" }),
|
|
13
|
+
errorContext ? /* @__PURE__ */ jsx(Typography, { variant: "caption", my: 0.5, lineHeight: "1", display: "block", children: errorContext }) : null,
|
|
14
|
+
/* @__PURE__ */ jsx(Typography, { variant: "caption", mr: 0.5, fontWeight: "bold", children: "Error:" }),
|
|
15
|
+
/* @__PURE__ */ jsx(Typography, { variant: "caption", children: error == null ? void 0 : error.message }),
|
|
16
|
+
onCancel ? /* @__PURE__ */ jsx(ButtonEx, { variant: "outlined", size: "small", onClick: onCancel, position: "absolute", style: { right: 8, top: 8 }, children: /* @__PURE__ */ jsx(ExitIcon, { fontSize: "small" }) }) : null
|
|
17
|
+
] });
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
// src/components/ErrorRender/Render.tsx
|
|
21
|
+
import { FlexCol } from "@xylabs/react-flexbox";
|
|
22
|
+
import { useEffect } from "react";
|
|
23
|
+
import { useLocation } from "react-router-dom";
|
|
24
|
+
import { Fragment, jsx as jsx2 } from "react/jsx-runtime";
|
|
25
|
+
var ErrorRender = ({
|
|
26
|
+
onCancel,
|
|
27
|
+
error,
|
|
28
|
+
noErrorDisplay = false,
|
|
29
|
+
customError = null,
|
|
30
|
+
children,
|
|
31
|
+
errorContext,
|
|
32
|
+
...props
|
|
33
|
+
}) => {
|
|
34
|
+
const location = useLocation();
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
location.state = {
|
|
37
|
+
from: {
|
|
38
|
+
pathname: window.location.pathname
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}, [location]);
|
|
42
|
+
if (error) {
|
|
43
|
+
return /* @__PURE__ */ jsx2(FlexCol, { alignItems: "stretch", ...props, children: noErrorDisplay ? customError : /* @__PURE__ */ jsx2(FlexCol, { alignItems: "center", ...props, children: /* @__PURE__ */ jsx2(ErrorAlert, { error, errorContext, onCancel }) }) });
|
|
44
|
+
} else {
|
|
45
|
+
return /* @__PURE__ */ jsx2(Fragment, { children }) ?? null;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
// src/components/ErrorBoundary/ThrownErrorBoundary.tsx
|
|
50
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
51
|
+
var ThrownErrorBoundary = class _ThrownErrorBoundary extends Component {
|
|
52
|
+
state = {
|
|
53
|
+
xyoError: void 0
|
|
54
|
+
};
|
|
55
|
+
static getDerivedStateFromError(error) {
|
|
56
|
+
return { hasError: true, xyoError: _ThrownErrorBoundary.normalizeError(error) };
|
|
57
|
+
}
|
|
58
|
+
static normalizeError(error) {
|
|
59
|
+
return error.schema === ModuleErrorSchema ? error : { message: error.message, schema: ModuleErrorSchema, sources: [] };
|
|
60
|
+
}
|
|
61
|
+
componentDidCatch(error, errorInfo) {
|
|
62
|
+
const { rethrow, rollbar } = this.props;
|
|
63
|
+
const { xyoError } = this.state;
|
|
64
|
+
rollbar == null ? void 0 : rollbar.error(error);
|
|
65
|
+
console.error("Error:", xyoError, errorInfo);
|
|
66
|
+
if (rethrow) {
|
|
67
|
+
throw error;
|
|
68
|
+
}
|
|
11
69
|
}
|
|
12
|
-
|
|
70
|
+
render() {
|
|
71
|
+
const { xyoError } = this.state;
|
|
72
|
+
const { children, boundaryName, errorComponent } = this.props;
|
|
73
|
+
if (xyoError) {
|
|
74
|
+
if (errorComponent) {
|
|
75
|
+
return errorComponent(xyoError);
|
|
76
|
+
}
|
|
77
|
+
return /* @__PURE__ */ jsx3(ErrorRender, { error: xyoError, errorContext: `${boundaryName} Boundary` });
|
|
78
|
+
}
|
|
79
|
+
return children;
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
// src/contexts/ErrorReporter/Provider.tsx
|
|
84
|
+
import { useEffect as useEffect2, useState } from "react";
|
|
85
|
+
|
|
86
|
+
// src/contexts/ErrorReporter/Context.ts
|
|
87
|
+
import { createContext } from "react";
|
|
88
|
+
var ErrorReporterContext = createContext({});
|
|
89
|
+
|
|
90
|
+
// src/contexts/ErrorReporter/Provider.tsx
|
|
91
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
92
|
+
var ErrorReporterProvider = ({ children, rollbar }) => {
|
|
93
|
+
const [rollbarInstance, setRollBarInstance] = useState();
|
|
94
|
+
useEffect2(() => {
|
|
95
|
+
if (rollbarInstance) {
|
|
96
|
+
setRollBarInstance(rollbarInstance);
|
|
97
|
+
}
|
|
98
|
+
}, [rollbar, rollbarInstance]);
|
|
99
|
+
return /* @__PURE__ */ jsx4(ErrorReporterContext.Provider, { value: { rollbar }, children });
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
// src/contexts/ErrorReporter/useRollbar.tsx
|
|
103
|
+
import { useContext } from "react";
|
|
104
|
+
var useRollbar = () => {
|
|
105
|
+
const context = useContext(ErrorReporterContext);
|
|
106
|
+
if (context === void 0) {
|
|
107
|
+
console.warn("useRollbar must be used within a ErrorReporterContext");
|
|
108
|
+
}
|
|
109
|
+
return context ?? {};
|
|
110
|
+
};
|
|
111
|
+
export {
|
|
112
|
+
ErrorAlert,
|
|
113
|
+
ErrorRender,
|
|
114
|
+
ErrorReporterProvider,
|
|
115
|
+
ThrownErrorBoundary,
|
|
116
|
+
useRollbar
|
|
13
117
|
};
|
|
14
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
15
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
|
-
var src_exports = {};
|
|
17
|
-
module.exports = __toCommonJS(src_exports);
|
|
18
|
-
__reExport(src_exports, require("./components"), module.exports);
|
|
19
|
-
__reExport(src_exports, require("./contexts"), module.exports);
|
|
20
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
21
|
-
0 && (module.exports = {
|
|
22
|
-
...require("./components"),
|
|
23
|
-
...require("./contexts")
|
|
24
|
-
});
|
|
25
118
|
//# sourceMappingURL=index.js.map
|
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/
|
|
1
|
+
{"version":3,"sources":["../../src/components/ErrorBoundary/ThrownErrorBoundary.tsx","../../src/components/ErrorRender/ErrorAlert.tsx","../../src/components/ErrorRender/Render.tsx","../../src/contexts/ErrorReporter/Provider.tsx","../../src/contexts/ErrorReporter/Context.ts","../../src/contexts/ErrorReporter/useRollbar.tsx"],"sourcesContent":["import { ModuleError, ModuleErrorSchema } from '@xyo-network/payload-model'\nimport { Component, ErrorInfo, ReactNode } from 'react'\nimport Rollbar from 'rollbar'\n\nimport { ErrorRender } from '../ErrorRender'\n\nexport interface ThrownErrorBoundaryProps {\n boundaryName?: string\n children: ReactNode\n errorComponent?: (e: ModuleError, boundaryName?: string) => ReactNode\n rethrow?: boolean\n rollbar?: Rollbar\n}\n\nexport interface ThrownErrorBoundaryState {\n xyoError?: ModuleError\n}\n\nexport class ThrownErrorBoundary extends Component<ThrownErrorBoundaryProps, ThrownErrorBoundaryState> {\n public override state: ThrownErrorBoundaryState = {\n xyoError: undefined,\n }\n\n static getDerivedStateFromError(error: Error) {\n return { hasError: true, xyoError: ThrownErrorBoundary.normalizeError(error) } as ThrownErrorBoundaryState\n }\n\n public static normalizeError(error: Error | ModuleError): ModuleError {\n return (\n (error as ModuleError).schema === ModuleErrorSchema ? error : { message: error.message, schema: ModuleErrorSchema, sources: [] }\n ) as ModuleError\n }\n\n public override componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n const { rethrow, rollbar } = this.props\n const { xyoError } = this.state\n\n rollbar?.error(error)\n\n console.error('Error:', xyoError, errorInfo)\n if (rethrow) {\n throw error\n }\n }\n\n public override render() {\n const { xyoError } = this.state\n const { children, boundaryName, errorComponent } = this.props\n if (xyoError) {\n if (errorComponent) {\n return errorComponent(xyoError)\n }\n return <ErrorRender error={xyoError} errorContext={`${boundaryName} Boundary`} />\n }\n\n return children\n }\n}\n","import { ExitToApp as ExitIcon } from '@mui/icons-material'\nimport { Alert, AlertProps, AlertTitle, Typography } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { ModuleError } from '@xyo-network/payload-model'\n\nexport interface ErrorAlertProps extends AlertProps {\n error?: ModuleError | Error\n errorContext?: string\n onCancel?: () => void\n}\n\nexport const ErrorAlert: React.FC<ErrorAlertProps> = ({ onCancel, error, errorContext, ...props }) => {\n return (\n <Alert severity=\"error\" {...props}>\n <AlertTitle>Whoops! Something went wrong</AlertTitle>\n {errorContext ? (\n <Typography variant=\"caption\" my={0.5} lineHeight=\"1\" display=\"block\">\n {errorContext}\n </Typography>\n ) : null}\n <Typography variant=\"caption\" mr={0.5} fontWeight=\"bold\">\n Error:\n </Typography>\n <Typography variant=\"caption\">{error?.message}</Typography>\n {onCancel ? (\n <ButtonEx variant=\"outlined\" size=\"small\" onClick={onCancel} position=\"absolute\" style={{ right: 8, top: 8 }}>\n <ExitIcon fontSize=\"small\" />\n </ButtonEx>\n ) : null}\n </Alert>\n )\n}\n","import { FlexCol } from '@xylabs/react-flexbox'\nimport { useEffect } from 'react'\nimport { useLocation } from 'react-router-dom'\n\nimport { ErrorAlert } from './ErrorAlert'\nimport { ErrorRenderProps } from './Props'\n\nexport const ErrorRender: React.FC<ErrorRenderProps> = ({\n onCancel,\n error,\n noErrorDisplay = false,\n customError = null,\n children,\n errorContext,\n ...props\n}) => {\n const location = useLocation()\n useEffect(() => {\n // ensure we end up at the same place we are now after logging in\n location.state = {\n from: {\n pathname: window.location.pathname,\n },\n }\n }, [location])\n\n if (error) {\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n {noErrorDisplay ? (\n customError\n ) : (\n <FlexCol alignItems=\"center\" {...props}>\n <ErrorAlert error={error} errorContext={errorContext} onCancel={onCancel} />\n </FlexCol>\n )}\n </FlexCol>\n )\n } else {\n return <>{children}</> ?? null\n }\n}\n","import { WithChildren } from '@xylabs/react-shared'\nimport { useEffect, useState } from 'react'\nimport Rollbar from 'rollbar'\n\nimport { ErrorReporterContext } from './Context'\n\nexport interface ErrorReporterProviderProps {\n rollbar: Rollbar\n}\n\nconst ErrorReporterProvider: React.FC<WithChildren<ErrorReporterProviderProps>> = ({ children, rollbar }) => {\n const [rollbarInstance, setRollBarInstance] = useState<Rollbar>()\n\n useEffect(() => {\n if (rollbarInstance) {\n setRollBarInstance(rollbarInstance)\n }\n }, [rollbar, rollbarInstance])\n\n return <ErrorReporterContext.Provider value={{ rollbar }}>{children}</ErrorReporterContext.Provider>\n}\n\nexport { ErrorReporterProvider }\n","import { createContext } from 'react'\n\nimport { ErrorReporterContextState } from './State'\n\nexport const ErrorReporterContext = createContext<ErrorReporterContextState>({})\n","import { useContext } from 'react'\n\nimport { ErrorReporterContext } from './Context'\n\nconst useRollbar = () => {\n const context = useContext(ErrorReporterContext)\n if (context === undefined) {\n console.warn('useRollbar must be used within a ErrorReporterContext')\n }\n\n return context ?? {}\n}\n\nexport { useRollbar }\n"],"mappings":"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","names":["jsx","jsx","useEffect","jsx","useEffect"]}
|
package/package.json
CHANGED
|
@@ -10,10 +10,10 @@
|
|
|
10
10
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-react-js/issues"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@xylabs/react-button": "^3.
|
|
14
|
-
"@xylabs/react-flexbox": "^3.
|
|
15
|
-
"@xylabs/react-shared": "^3.
|
|
16
|
-
"@xyo-network/payload-model": "^2.
|
|
13
|
+
"@xylabs/react-button": "^3.0.5",
|
|
14
|
+
"@xylabs/react-flexbox": "^3.0.5",
|
|
15
|
+
"@xylabs/react-shared": "^3.0.5",
|
|
16
|
+
"@xyo-network/payload-model": "^2.75.3"
|
|
17
17
|
},
|
|
18
18
|
"peerDependencies": {
|
|
19
19
|
"@mui/icons-material": "^5",
|
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
"rollbar": "^2"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@storybook/react": "^7.4.
|
|
29
|
-
"@xylabs/ts-scripts-yarn3": "^3.0.
|
|
30
|
-
"@xylabs/tsconfig-react": "^3.0.
|
|
28
|
+
"@storybook/react": "^7.4.5",
|
|
29
|
+
"@xylabs/ts-scripts-yarn3": "^3.0.78",
|
|
30
|
+
"@xylabs/tsconfig-react": "^3.0.78",
|
|
31
31
|
"typescript": "^5.2.2"
|
|
32
32
|
},
|
|
33
33
|
"peerDependenciesMeta": {
|
|
@@ -42,28 +42,28 @@
|
|
|
42
42
|
"node": {
|
|
43
43
|
"import": {
|
|
44
44
|
"types": "./dist/node/index.d.mts",
|
|
45
|
-
"default": "./dist/node/index.
|
|
45
|
+
"default": "./dist/node/index.js"
|
|
46
46
|
},
|
|
47
47
|
"require": {
|
|
48
|
-
"types": "./dist/node/index.d.
|
|
49
|
-
"default": "./dist/node/index.
|
|
48
|
+
"types": "./dist/node/index.d.cts",
|
|
49
|
+
"default": "./dist/node/index.cjs"
|
|
50
50
|
}
|
|
51
51
|
},
|
|
52
52
|
"browser": {
|
|
53
53
|
"import": {
|
|
54
|
-
"types": "./dist/browser/index.d.
|
|
54
|
+
"types": "./dist/browser/index.d.mts",
|
|
55
55
|
"default": "./dist/browser/index.js"
|
|
56
56
|
},
|
|
57
57
|
"require": {
|
|
58
|
-
"types": "./dist/browser/index.d.
|
|
59
|
-
"default": "./dist/browser/index.
|
|
58
|
+
"types": "./dist/browser/index.d.cts",
|
|
59
|
+
"default": "./dist/browser/index.cjs"
|
|
60
60
|
}
|
|
61
61
|
},
|
|
62
|
-
"default": "./dist/browser/index.
|
|
62
|
+
"default": "./dist/browser/index.js"
|
|
63
63
|
},
|
|
64
64
|
"./package.json": "./package.json"
|
|
65
65
|
},
|
|
66
|
-
"main": "dist/browser/index.
|
|
66
|
+
"main": "dist/browser/index.cjs",
|
|
67
67
|
"module": "dist/browser/index.js",
|
|
68
68
|
"homepage": "https://xyo.network",
|
|
69
69
|
"keywords": [
|
|
@@ -86,6 +86,6 @@
|
|
|
86
86
|
},
|
|
87
87
|
"sideEffects": false,
|
|
88
88
|
"types": "dist/browser/index.d.ts",
|
|
89
|
-
"version": "2.64.0
|
|
90
|
-
"
|
|
89
|
+
"version": "2.64.0",
|
|
90
|
+
"type": "module"
|
|
91
91
|
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Alert } from "@mui/material";
|
|
3
|
-
import { ThrownErrorBoundary } from "./ThrownErrorBoundary";
|
|
4
|
-
const StorybookEntry = {
|
|
5
|
-
component: ThrownErrorBoundary,
|
|
6
|
-
title: "auth-service/ApiBoundary/ThrownErrorBoundary"
|
|
7
|
-
};
|
|
8
|
-
const Template = ({ errorComponent }) => {
|
|
9
|
-
return /* @__PURE__ */ jsx(ThrownErrorBoundary, { errorComponent, boundaryName: "StoryBook", children: /* @__PURE__ */ jsx(Alert, { severity: "info", children: "Use React Dev Tools to trigger and error within the boundary" }) });
|
|
10
|
-
};
|
|
11
|
-
const Default = Template.bind({});
|
|
12
|
-
Default.args = {};
|
|
13
|
-
const CustomErrorComponent = Template.bind({});
|
|
14
|
-
CustomErrorComponent.args = {
|
|
15
|
-
errorComponent: (e) => /* @__PURE__ */ jsxs(Alert, { severity: "error", children: [
|
|
16
|
-
"Using Custom Error Component with error: ",
|
|
17
|
-
e.message
|
|
18
|
-
] })
|
|
19
|
-
};
|
|
20
|
-
var ThrownErrorBoundary_stories_default = StorybookEntry;
|
|
21
|
-
export {
|
|
22
|
-
CustomErrorComponent,
|
|
23
|
-
Default,
|
|
24
|
-
ThrownErrorBoundary_stories_default as default
|
|
25
|
-
};
|
|
26
|
-
//# sourceMappingURL=ThrownErrorBoundary.stories.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ErrorBoundary/ThrownErrorBoundary.stories.tsx"],"sourcesContent":["/* eslint-disable import/no-internal-modules */\nimport { Alert } from '@mui/material'\nimport { Meta, StoryFn } from '@storybook/react'\n\nimport { ThrownErrorBoundary } from './ThrownErrorBoundary'\n\nconst StorybookEntry: Meta = {\n component: ThrownErrorBoundary,\n title: 'auth-service/ApiBoundary/ThrownErrorBoundary',\n}\n\nconst Template: StoryFn<typeof ThrownErrorBoundary> = ({ errorComponent }) => {\n return (\n <ThrownErrorBoundary errorComponent={errorComponent} boundaryName=\"StoryBook\">\n <Alert severity=\"info\">Use React Dev Tools to trigger and error within the boundary</Alert>\n </ThrownErrorBoundary>\n )\n}\n\nconst Default = Template.bind({})\nDefault.args = {}\n\nconst CustomErrorComponent = Template.bind({})\nCustomErrorComponent.args = {\n errorComponent: (e) => <Alert severity=\"error\">Using Custom Error Component with error: {e.message}</Alert>,\n}\n\nexport { CustomErrorComponent, Default }\n\n// eslint-disable-next-line import/no-default-export\nexport default StorybookEntry\n"],"mappings":"AAcM,cAUmB,YAVnB;AAbN,SAAS,aAAa;AAGtB,SAAS,2BAA2B;AAEpC,MAAM,iBAAuB;AAAA,EAC3B,WAAW;AAAA,EACX,OAAO;AACT;AAEA,MAAM,WAAgD,CAAC,EAAE,eAAe,MAAM;AAC5E,SACE,oBAAC,uBAAoB,gBAAgC,cAAa,aAChE,8BAAC,SAAM,UAAS,QAAO,0EAA4D,GACrF;AAEJ;AAEA,MAAM,UAAU,SAAS,KAAK,CAAC,CAAC;AAChC,QAAQ,OAAO,CAAC;AAEhB,MAAM,uBAAuB,SAAS,KAAK,CAAC,CAAC;AAC7C,qBAAqB,OAAO;AAAA,EAC1B,gBAAgB,CAAC,MAAM,qBAAC,SAAM,UAAS,SAAQ;AAAA;AAAA,IAA0C,EAAE;AAAA,KAAQ;AACrG;AAKA,IAAO,sCAAQ;","names":[]}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Typography } from "@mui/material";
|
|
3
|
-
import Rollbar from "rollbar";
|
|
4
|
-
import { ErrorReporterProvider } from "./Provider";
|
|
5
|
-
import { useRollbar } from "./useRollbar";
|
|
6
|
-
const StorybookEntry = {
|
|
7
|
-
argTypes: {},
|
|
8
|
-
component: ErrorReporterProvider,
|
|
9
|
-
parameters: {
|
|
10
|
-
docs: {
|
|
11
|
-
page: null
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
title: "auth-service/ErrorReporterProvider"
|
|
15
|
-
};
|
|
16
|
-
const RollbarComponent = () => {
|
|
17
|
-
const { rollbar } = useRollbar();
|
|
18
|
-
const rollbarFound = typeof rollbar?.error === "function";
|
|
19
|
-
return /* @__PURE__ */ jsxs(Typography, { color: rollbarFound ? "green" : "red", children: [
|
|
20
|
-
"Rollbar instance ",
|
|
21
|
-
rollbarFound ? "" : "NOT",
|
|
22
|
-
" found from context!"
|
|
23
|
-
] });
|
|
24
|
-
};
|
|
25
|
-
const Template = () => {
|
|
26
|
-
const rollbar = new Rollbar();
|
|
27
|
-
return /* @__PURE__ */ jsx(ErrorReporterProvider, { rollbar, children: /* @__PURE__ */ jsx(RollbarComponent, {}) });
|
|
28
|
-
};
|
|
29
|
-
const Default = Template.bind({});
|
|
30
|
-
var Provider_stories_default = StorybookEntry;
|
|
31
|
-
export {
|
|
32
|
-
Default,
|
|
33
|
-
Provider_stories_default as default
|
|
34
|
-
};
|
|
35
|
-
//# sourceMappingURL=Provider.stories.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/contexts/ErrorReporter/Provider.stories.tsx"],"sourcesContent":["import { Typography } from '@mui/material'\nimport { Meta, StoryFn } from '@storybook/react'\nimport Rollbar from 'rollbar'\n\nimport { ErrorReporterProvider } from './Provider'\nimport { useRollbar } from './useRollbar'\n\nconst StorybookEntry = {\n argTypes: {},\n component: ErrorReporterProvider,\n parameters: {\n docs: {\n page: null,\n },\n },\n title: 'auth-service/ErrorReporterProvider',\n} as Meta<typeof ErrorReporterProvider>\n\nconst RollbarComponent = () => {\n const { rollbar } = useRollbar()\n const rollbarFound = typeof rollbar?.error === 'function'\n\n return <Typography color={rollbarFound ? 'green' : 'red'}>Rollbar instance {rollbarFound ? '' : 'NOT'} found from context!</Typography>\n}\n\nconst Template: StoryFn<typeof ErrorReporterProvider> = () => {\n const rollbar = new Rollbar()\n return (\n <ErrorReporterProvider rollbar={rollbar}>\n <RollbarComponent />\n </ErrorReporterProvider>\n )\n}\n\nconst Default = Template.bind({})\n\nexport { Default }\n\n// eslint-disable-next-line import/no-default-export\nexport default StorybookEntry\n"],"mappings":"AAsBS,SAOH,KAPG;AAtBT,SAAS,kBAAkB;AAE3B,OAAO,aAAa;AAEpB,SAAS,6BAA6B;AACtC,SAAS,kBAAkB;AAE3B,MAAM,iBAAiB;AAAA,EACrB,UAAU,CAAC;AAAA,EACX,WAAW;AAAA,EACX,YAAY;AAAA,IACV,MAAM;AAAA,MACJ,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,OAAO;AACT;AAEA,MAAM,mBAAmB,MAAM;AAC7B,QAAM,EAAE,QAAQ,IAAI,WAAW;AAC/B,QAAM,eAAe,OAAO,SAAS,UAAU;AAE/C,SAAO,qBAAC,cAAW,OAAO,eAAe,UAAU,OAAO;AAAA;AAAA,IAAkB,eAAe,KAAK;AAAA,IAAM;AAAA,KAAoB;AAC5H;AAEA,MAAM,WAAkD,MAAM;AAC5D,QAAM,UAAU,IAAI,QAAQ;AAC5B,SACE,oBAAC,yBAAsB,SACrB,8BAAC,oBAAiB,GACpB;AAEJ;AAEA,MAAM,UAAU,SAAS,KAAK,CAAC,CAAC;AAKhC,IAAO,2BAAQ;","names":[]}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import { ModuleErrorSchema } from "@xyo-network/payload-model";
|
|
3
|
-
import { Component } from "react";
|
|
4
|
-
import { ErrorRender } from "../ErrorRender";
|
|
5
|
-
class ThrownErrorBoundary extends Component {
|
|
6
|
-
state = {
|
|
7
|
-
xyoError: void 0
|
|
8
|
-
};
|
|
9
|
-
static getDerivedStateFromError(error) {
|
|
10
|
-
return { hasError: true, xyoError: ThrownErrorBoundary.normalizeError(error) };
|
|
11
|
-
}
|
|
12
|
-
static normalizeError(error) {
|
|
13
|
-
return error.schema === ModuleErrorSchema ? error : { message: error.message, schema: ModuleErrorSchema, sources: [] };
|
|
14
|
-
}
|
|
15
|
-
componentDidCatch(error, errorInfo) {
|
|
16
|
-
const { rethrow, rollbar } = this.props;
|
|
17
|
-
const { xyoError } = this.state;
|
|
18
|
-
rollbar?.error(error);
|
|
19
|
-
console.error("Error:", xyoError, errorInfo);
|
|
20
|
-
if (rethrow) {
|
|
21
|
-
throw error;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
render() {
|
|
25
|
-
const { xyoError } = this.state;
|
|
26
|
-
const { children, boundaryName, errorComponent } = this.props;
|
|
27
|
-
if (xyoError) {
|
|
28
|
-
if (errorComponent) {
|
|
29
|
-
return errorComponent(xyoError);
|
|
30
|
-
}
|
|
31
|
-
return /* @__PURE__ */ jsx(ErrorRender, { error: xyoError, errorContext: `${boundaryName} Boundary` });
|
|
32
|
-
}
|
|
33
|
-
return children;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
export {
|
|
37
|
-
ThrownErrorBoundary
|
|
38
|
-
};
|
|
39
|
-
//# sourceMappingURL=ThrownErrorBoundary.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ErrorBoundary/ThrownErrorBoundary.tsx"],"sourcesContent":["import { ModuleError, ModuleErrorSchema } from '@xyo-network/payload-model'\nimport { Component, ErrorInfo, ReactNode } from 'react'\nimport Rollbar from 'rollbar'\n\nimport { ErrorRender } from '../ErrorRender'\n\nexport interface ThrownErrorBoundaryProps {\n boundaryName?: string\n children: ReactNode\n errorComponent?: (e: ModuleError, boundaryName?: string) => ReactNode\n rethrow?: boolean\n rollbar?: Rollbar\n}\n\nexport interface ThrownErrorBoundaryState {\n xyoError?: ModuleError\n}\n\nexport class ThrownErrorBoundary extends Component<ThrownErrorBoundaryProps, ThrownErrorBoundaryState> {\n public override state: ThrownErrorBoundaryState = {\n xyoError: undefined,\n }\n\n static getDerivedStateFromError(error: Error) {\n return { hasError: true, xyoError: ThrownErrorBoundary.normalizeError(error) } as ThrownErrorBoundaryState\n }\n\n public static normalizeError(error: Error | ModuleError): ModuleError {\n return (\n (error as ModuleError).schema === ModuleErrorSchema ? error : { message: error.message, schema: ModuleErrorSchema, sources: [] }\n ) as ModuleError\n }\n\n public override componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n const { rethrow, rollbar } = this.props\n const { xyoError } = this.state\n\n rollbar?.error(error)\n\n console.error('Error:', xyoError, errorInfo)\n if (rethrow) {\n throw error\n }\n }\n\n public override render() {\n const { xyoError } = this.state\n const { children, boundaryName, errorComponent } = this.props\n if (xyoError) {\n if (errorComponent) {\n return errorComponent(xyoError)\n }\n return <ErrorRender error={xyoError} errorContext={`${boundaryName} Boundary`} />\n }\n\n return children\n }\n}\n"],"mappings":"AAoDa;AApDb,SAAsB,yBAAyB;AAC/C,SAAS,iBAAuC;AAGhD,SAAS,mBAAmB;AAcrB,MAAM,4BAA4B,UAA8D;AAAA,EACrF,QAAkC;AAAA,IAChD,UAAU;AAAA,EACZ;AAAA,EAEA,OAAO,yBAAyB,OAAc;AAC5C,WAAO,EAAE,UAAU,MAAM,UAAU,oBAAoB,eAAe,KAAK,EAAE;AAAA,EAC/E;AAAA,EAEA,OAAc,eAAe,OAAyC;AACpE,WACG,MAAsB,WAAW,oBAAoB,QAAQ,EAAE,SAAS,MAAM,SAAS,QAAQ,mBAAmB,SAAS,CAAC,EAAE;AAAA,EAEnI;AAAA,EAEgB,kBAAkB,OAAc,WAAsB;AACpE,UAAM,EAAE,SAAS,QAAQ,IAAI,KAAK;AAClC,UAAM,EAAE,SAAS,IAAI,KAAK;AAE1B,aAAS,MAAM,KAAK;AAEpB,YAAQ,MAAM,UAAU,UAAU,SAAS;AAC3C,QAAI,SAAS;AACX,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEgB,SAAS;AACvB,UAAM,EAAE,SAAS,IAAI,KAAK;AAC1B,UAAM,EAAE,UAAU,cAAc,eAAe,IAAI,KAAK;AACxD,QAAI,UAAU;AACZ,UAAI,gBAAgB;AAClB,eAAO,eAAe,QAAQ;AAAA,MAChC;AACA,aAAO,oBAAC,eAAY,OAAO,UAAU,cAAc,GAAG,YAAY,aAAa;AAAA,IACjF;AAEA,WAAO;AAAA,EACT;AACF;","names":[]}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var ThrownErrorBoundary_stories_exports = {};
|
|
20
|
-
__export(ThrownErrorBoundary_stories_exports, {
|
|
21
|
-
CustomErrorComponent: () => CustomErrorComponent,
|
|
22
|
-
Default: () => Default,
|
|
23
|
-
default: () => ThrownErrorBoundary_stories_default
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(ThrownErrorBoundary_stories_exports);
|
|
26
|
-
var import_jsx_runtime = require("react/jsx-runtime");
|
|
27
|
-
var import_material = require("@mui/material");
|
|
28
|
-
var import_ThrownErrorBoundary = require("./ThrownErrorBoundary");
|
|
29
|
-
const StorybookEntry = {
|
|
30
|
-
component: import_ThrownErrorBoundary.ThrownErrorBoundary,
|
|
31
|
-
title: "auth-service/ApiBoundary/ThrownErrorBoundary"
|
|
32
|
-
};
|
|
33
|
-
const Template = ({ errorComponent }) => {
|
|
34
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ThrownErrorBoundary.ThrownErrorBoundary, { errorComponent, boundaryName: "StoryBook", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_material.Alert, { severity: "info", children: "Use React Dev Tools to trigger and error within the boundary" }) });
|
|
35
|
-
};
|
|
36
|
-
const Default = Template.bind({});
|
|
37
|
-
Default.args = {};
|
|
38
|
-
const CustomErrorComponent = Template.bind({});
|
|
39
|
-
CustomErrorComponent.args = {
|
|
40
|
-
errorComponent: (e) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_material.Alert, { severity: "error", children: [
|
|
41
|
-
"Using Custom Error Component with error: ",
|
|
42
|
-
e.message
|
|
43
|
-
] })
|
|
44
|
-
};
|
|
45
|
-
var ThrownErrorBoundary_stories_default = StorybookEntry;
|
|
46
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
47
|
-
0 && (module.exports = {
|
|
48
|
-
CustomErrorComponent,
|
|
49
|
-
Default
|
|
50
|
-
});
|
|
51
|
-
//# sourceMappingURL=ThrownErrorBoundary.stories.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ErrorBoundary/ThrownErrorBoundary.stories.tsx"],"sourcesContent":["/* eslint-disable import/no-internal-modules */\nimport { Alert } from '@mui/material'\nimport { Meta, StoryFn } from '@storybook/react'\n\nimport { ThrownErrorBoundary } from './ThrownErrorBoundary'\n\nconst StorybookEntry: Meta = {\n component: ThrownErrorBoundary,\n title: 'auth-service/ApiBoundary/ThrownErrorBoundary',\n}\n\nconst Template: StoryFn<typeof ThrownErrorBoundary> = ({ errorComponent }) => {\n return (\n <ThrownErrorBoundary errorComponent={errorComponent} boundaryName=\"StoryBook\">\n <Alert severity=\"info\">Use React Dev Tools to trigger and error within the boundary</Alert>\n </ThrownErrorBoundary>\n )\n}\n\nconst Default = Template.bind({})\nDefault.args = {}\n\nconst CustomErrorComponent = Template.bind({})\nCustomErrorComponent.args = {\n errorComponent: (e) => <Alert severity=\"error\">Using Custom Error Component with error: {e.message}</Alert>,\n}\n\nexport { CustomErrorComponent, Default }\n\n// eslint-disable-next-line import/no-default-export\nexport default StorybookEntry\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcM;AAbN,sBAAsB;AAGtB,iCAAoC;AAEpC,MAAM,iBAAuB;AAAA,EAC3B,WAAW;AAAA,EACX,OAAO;AACT;AAEA,MAAM,WAAgD,CAAC,EAAE,eAAe,MAAM;AAC5E,SACE,4CAAC,kDAAoB,gBAAgC,cAAa,aAChE,sDAAC,yBAAM,UAAS,QAAO,0EAA4D,GACrF;AAEJ;AAEA,MAAM,UAAU,SAAS,KAAK,CAAC,CAAC;AAChC,QAAQ,OAAO,CAAC;AAEhB,MAAM,uBAAuB,SAAS,KAAK,CAAC,CAAC;AAC7C,qBAAqB,OAAO;AAAA,EAC1B,gBAAgB,CAAC,MAAM,6CAAC,yBAAM,UAAS,SAAQ;AAAA;AAAA,IAA0C,EAAE;AAAA,KAAQ;AACrG;AAKA,IAAO,sCAAQ;","names":[]}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Alert } from "@mui/material";
|
|
3
|
-
import { ThrownErrorBoundary } from "./ThrownErrorBoundary";
|
|
4
|
-
const StorybookEntry = {
|
|
5
|
-
component: ThrownErrorBoundary,
|
|
6
|
-
title: "auth-service/ApiBoundary/ThrownErrorBoundary"
|
|
7
|
-
};
|
|
8
|
-
const Template = ({ errorComponent }) => {
|
|
9
|
-
return /* @__PURE__ */ jsx(ThrownErrorBoundary, { errorComponent, boundaryName: "StoryBook", children: /* @__PURE__ */ jsx(Alert, { severity: "info", children: "Use React Dev Tools to trigger and error within the boundary" }) });
|
|
10
|
-
};
|
|
11
|
-
const Default = Template.bind({});
|
|
12
|
-
Default.args = {};
|
|
13
|
-
const CustomErrorComponent = Template.bind({});
|
|
14
|
-
CustomErrorComponent.args = {
|
|
15
|
-
errorComponent: (e) => /* @__PURE__ */ jsxs(Alert, { severity: "error", children: [
|
|
16
|
-
"Using Custom Error Component with error: ",
|
|
17
|
-
e.message
|
|
18
|
-
] })
|
|
19
|
-
};
|
|
20
|
-
var ThrownErrorBoundary_stories_default = StorybookEntry;
|
|
21
|
-
export {
|
|
22
|
-
CustomErrorComponent,
|
|
23
|
-
Default,
|
|
24
|
-
ThrownErrorBoundary_stories_default as default
|
|
25
|
-
};
|
|
26
|
-
//# sourceMappingURL=ThrownErrorBoundary.stories.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ErrorBoundary/ThrownErrorBoundary.stories.tsx"],"sourcesContent":["/* eslint-disable import/no-internal-modules */\nimport { Alert } from '@mui/material'\nimport { Meta, StoryFn } from '@storybook/react'\n\nimport { ThrownErrorBoundary } from './ThrownErrorBoundary'\n\nconst StorybookEntry: Meta = {\n component: ThrownErrorBoundary,\n title: 'auth-service/ApiBoundary/ThrownErrorBoundary',\n}\n\nconst Template: StoryFn<typeof ThrownErrorBoundary> = ({ errorComponent }) => {\n return (\n <ThrownErrorBoundary errorComponent={errorComponent} boundaryName=\"StoryBook\">\n <Alert severity=\"info\">Use React Dev Tools to trigger and error within the boundary</Alert>\n </ThrownErrorBoundary>\n )\n}\n\nconst Default = Template.bind({})\nDefault.args = {}\n\nconst CustomErrorComponent = Template.bind({})\nCustomErrorComponent.args = {\n errorComponent: (e) => <Alert severity=\"error\">Using Custom Error Component with error: {e.message}</Alert>,\n}\n\nexport { CustomErrorComponent, Default }\n\n// eslint-disable-next-line import/no-default-export\nexport default StorybookEntry\n"],"mappings":"AAcM,cAUmB,YAVnB;AAbN,SAAS,aAAa;AAGtB,SAAS,2BAA2B;AAEpC,MAAM,iBAAuB;AAAA,EAC3B,WAAW;AAAA,EACX,OAAO;AACT;AAEA,MAAM,WAAgD,CAAC,EAAE,eAAe,MAAM;AAC5E,SACE,oBAAC,uBAAoB,gBAAgC,cAAa,aAChE,8BAAC,SAAM,UAAS,QAAO,0EAA4D,GACrF;AAEJ;AAEA,MAAM,UAAU,SAAS,KAAK,CAAC,CAAC;AAChC,QAAQ,OAAO,CAAC;AAEhB,MAAM,uBAAuB,SAAS,KAAK,CAAC,CAAC;AAC7C,qBAAqB,OAAO;AAAA,EAC1B,gBAAgB,CAAC,MAAM,qBAAC,SAAM,UAAS,SAAQ;AAAA;AAAA,IAA0C,EAAE;AAAA,KAAQ;AACrG;AAKA,IAAO,sCAAQ;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ErrorBoundary/index.ts"],"sourcesContent":["export * from './ThrownErrorBoundary'\n"],"mappings":"AAAA,cAAc;","names":[]}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { ExitToApp as ExitIcon } from "@mui/icons-material";
|
|
3
|
-
import { Alert, AlertTitle, Typography } from "@mui/material";
|
|
4
|
-
import { ButtonEx } from "@xylabs/react-button";
|
|
5
|
-
const ErrorAlert = ({ onCancel, error, errorContext, ...props }) => {
|
|
6
|
-
return /* @__PURE__ */ jsxs(Alert, { severity: "error", ...props, children: [
|
|
7
|
-
/* @__PURE__ */ jsx(AlertTitle, { children: "Whoops! Something went wrong" }),
|
|
8
|
-
errorContext ? /* @__PURE__ */ jsx(Typography, { variant: "caption", my: 0.5, lineHeight: "1", display: "block", children: errorContext }) : null,
|
|
9
|
-
/* @__PURE__ */ jsx(Typography, { variant: "caption", mr: 0.5, fontWeight: "bold", children: "Error:" }),
|
|
10
|
-
/* @__PURE__ */ jsx(Typography, { variant: "caption", children: error?.message }),
|
|
11
|
-
onCancel ? /* @__PURE__ */ jsx(ButtonEx, { variant: "outlined", size: "small", onClick: onCancel, position: "absolute", style: { right: 8, top: 8 }, children: /* @__PURE__ */ jsx(ExitIcon, { fontSize: "small" }) }) : null
|
|
12
|
-
] });
|
|
13
|
-
};
|
|
14
|
-
export {
|
|
15
|
-
ErrorAlert
|
|
16
|
-
};
|
|
17
|
-
//# sourceMappingURL=ErrorAlert.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=Props.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { Fragment, jsx } from "react/jsx-runtime";
|
|
2
|
-
import { FlexCol } from "@xylabs/react-flexbox";
|
|
3
|
-
import { useEffect } from "react";
|
|
4
|
-
import { useLocation } from "react-router-dom";
|
|
5
|
-
import { ErrorAlert } from "./ErrorAlert";
|
|
6
|
-
const ErrorRender = ({
|
|
7
|
-
onCancel,
|
|
8
|
-
error,
|
|
9
|
-
noErrorDisplay = false,
|
|
10
|
-
customError = null,
|
|
11
|
-
children,
|
|
12
|
-
errorContext,
|
|
13
|
-
...props
|
|
14
|
-
}) => {
|
|
15
|
-
const location = useLocation();
|
|
16
|
-
useEffect(() => {
|
|
17
|
-
location.state = {
|
|
18
|
-
from: {
|
|
19
|
-
pathname: window.location.pathname
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
}, [location]);
|
|
23
|
-
if (error) {
|
|
24
|
-
return /* @__PURE__ */ jsx(FlexCol, { alignItems: "stretch", ...props, children: noErrorDisplay ? customError : /* @__PURE__ */ jsx(FlexCol, { alignItems: "center", ...props, children: /* @__PURE__ */ jsx(ErrorAlert, { error, errorContext, onCancel }) }) });
|
|
25
|
-
} else {
|
|
26
|
-
return /* @__PURE__ */ jsx(Fragment, { children }) ?? null;
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
export {
|
|
30
|
-
ErrorRender
|
|
31
|
-
};
|
|
32
|
-
//# sourceMappingURL=Render.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ErrorRender/Render.tsx"],"sourcesContent":["import { FlexCol } from '@xylabs/react-flexbox'\nimport { useEffect } from 'react'\nimport { useLocation } from 'react-router-dom'\n\nimport { ErrorAlert } from './ErrorAlert'\nimport { ErrorRenderProps } from './Props'\n\nexport const ErrorRender: React.FC<ErrorRenderProps> = ({\n onCancel,\n error,\n noErrorDisplay = false,\n customError = null,\n children,\n errorContext,\n ...props\n}) => {\n const location = useLocation()\n useEffect(() => {\n // ensure we end up at the same place we are now after logging in\n location.state = {\n from: {\n pathname: window.location.pathname,\n },\n }\n }, [location])\n\n if (error) {\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n {noErrorDisplay ? (\n customError\n ) : (\n <FlexCol alignItems=\"center\" {...props}>\n <ErrorAlert error={error} errorContext={errorContext} onCancel={onCancel} />\n </FlexCol>\n )}\n </FlexCol>\n )\n } else {\n return <>{children}</> ?? null\n }\n}\n"],"mappings":"AAiCY,SAMD,UANC;AAjCZ,SAAS,eAAe;AACxB,SAAS,iBAAiB;AAC1B,SAAS,mBAAmB;AAE5B,SAAS,kBAAkB;AAGpB,MAAM,cAA0C,CAAC;AAAA,EACtD;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,WAAW,YAAY;AAC7B,YAAU,MAAM;AAEd,aAAS,QAAQ;AAAA,MACf,MAAM;AAAA,QACJ,UAAU,OAAO,SAAS;AAAA,MAC5B;AAAA,IACF;AAAA,EACF,GAAG,CAAC,QAAQ,CAAC;AAEb,MAAI,OAAO;AACT,WACE,oBAAC,WAAQ,YAAW,WAAW,GAAG,OAC/B,2BACC,cAEA,oBAAC,WAAQ,YAAW,UAAU,GAAG,OAC/B,8BAAC,cAAW,OAAc,cAA4B,UAAoB,GAC5E,GAEJ;AAAA,EAEJ,OAAO;AACL,WAAO,gCAAG,UAAS,KAAO;AAAA,EAC5B;AACF;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ErrorRender/index.ts"],"sourcesContent":["export * from './ErrorAlert'\nexport * from './Props'\nexport * from './Render'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/index.ts"],"sourcesContent":["export * from './ErrorBoundary'\nexport * from './ErrorRender'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;","names":[]}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { 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 /* @__PURE__ */ jsx(ErrorReporterContext.Provider, { value: { rollbar }, children });
|
|
12
|
-
};
|
|
13
|
-
export {
|
|
14
|
-
ErrorReporterProvider
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=Provider.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/contexts/ErrorReporter/Provider.tsx"],"sourcesContent":["import { WithChildren } from '@xylabs/react-shared'\nimport { useEffect, useState } from 'react'\nimport Rollbar from 'rollbar'\n\nimport { ErrorReporterContext } from './Context'\n\nexport interface ErrorReporterProviderProps {\n rollbar: Rollbar\n}\n\nconst ErrorReporterProvider: React.FC<WithChildren<ErrorReporterProviderProps>> = ({ children, rollbar }) => {\n const [rollbarInstance, setRollBarInstance] = useState<Rollbar>()\n\n useEffect(() => {\n if (rollbarInstance) {\n setRollBarInstance(rollbarInstance)\n }\n }, [rollbar, rollbarInstance])\n\n return <ErrorReporterContext.Provider value={{ rollbar }}>{children}</ErrorReporterContext.Provider>\n}\n\nexport { ErrorReporterProvider }\n"],"mappings":"AAmBS;AAlBT,SAAS,WAAW,gBAAgB;AAGpC,SAAS,4BAA4B;AAMrC,MAAM,wBAA4E,CAAC,EAAE,UAAU,QAAQ,MAAM;AAC3G,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAkB;AAEhE,YAAU,MAAM;AACd,QAAI,iBAAiB;AACnB,yBAAmB,eAAe;AAAA,IACpC;AAAA,EACF,GAAG,CAAC,SAAS,eAAe,CAAC;AAE7B,SAAO,oBAAC,qBAAqB,UAArB,EAA8B,OAAO,EAAE,QAAQ,GAAI,UAAS;AACtE;","names":[]}
|