one
Version:
One is a React framework for web, iOS, and Android apps.
63 lines (60 loc) • 1.86 kB
JavaScript
import React from "react";
import { checkSkewAndReload } from "../skewProtection.mjs";
import { handleSkewError, isChunkLoadError } from "../utils/dynamicImport.mjs";
import { jsx } from "react/jsx-runtime";
var Try = class extends React.Component {
state = {
error: void 0,
componentStack: void 0
};
static getDerivedStateFromError(error) {
return { error };
}
componentDidCatch(error, errorInfo) {
this.setState({ componentStack: errorInfo.componentStack || void 0 });
if (process.env.NODE_ENV === "development") {
const routeInfo = this.props.routeInfo;
console.error(`[One] Error in route${routeInfo?.routeName ? ` "${routeInfo.routeName}"` : ""}:`, error, "\nComponent Stack:", errorInfo.componentStack);
}
if (process.env.NODE_ENV === "production" && process.env.ONE_SKEW_PROTECTION !== "false") if (isChunkLoadError(error)) handleSkewError();
else checkSkewAndReload();
if (typeof window !== "undefined" && typeof CustomEvent !== "undefined") window.dispatchEvent(new CustomEvent("one-error", { detail: {
error: {
message: error.message,
stack: error.stack,
name: error.name
},
route: this.props.routeInfo || {},
componentStack: errorInfo.componentStack,
timestamp: Date.now(),
type: "render"
} }));
}
retry = () => {
return new Promise((resolve) => {
this.setState({
error: void 0,
componentStack: void 0
}, () => {
resolve();
});
});
};
render() {
const { error, componentStack } = this.state;
const { catch: ErrorBoundary, children, routeInfo } = this.props;
if (!error) return children;
const enhancedRouteInfo = {
...routeInfo,
errorType: "render",
componentStack
};
return /* @__PURE__ */ jsx(ErrorBoundary, {
error,
retry: this.retry,
route: enhancedRouteInfo
});
}
};
export { Try };
//# sourceMappingURL=Try.mjs.map