| Server IP : 159.203.156.69 / Your IP : 216.73.217.172 Web Server : nginx/1.24.0 System : Linux main-ubuntu 6.8.0-71-generic #71-Ubuntu SMP PREEMPT_DYNAMIC Tue Jul 22 16:52:38 UTC 2025 x86_64 User : root ( 0) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/tanviranik.com/node_modules/vinext/dist/shims/ |
Upload File : |
"use client";
import { usePathname, useRouter } from "./navigation.js";
import { getErrorDigest, isNavigationSignalError } from "../utils/navigation-signal.js";
import React from "react";
import { jsx } from "react/jsx-runtime";
//#region src/shims/error-boundary.tsx
function normalizeBoundaryResetKey(resetKey) {
return resetKey === void 0 || resetKey === null || resetKey === "" ? null : resetKey;
}
function readBoundaryResetState(props) {
return {
previousPathname: props.pathname,
previousResetKey: normalizeBoundaryResetKey(props.resetKey)
};
}
function shouldResetBoundary(nextResetState, previousResetState) {
const nextResetKey = normalizeBoundaryResetKey(nextResetState.previousResetKey);
const previousResetKey = normalizeBoundaryResetKey(previousResetState.previousResetKey);
if (nextResetKey !== null || previousResetKey !== null) return nextResetKey !== previousResetKey;
return nextResetState.previousPathname !== previousResetState.previousPathname;
}
function isRedirectError(error) {
return getErrorDigest(error)?.startsWith("NEXT_REDIRECT;") ?? false;
}
function decodeRedirectTarget(target) {
try {
return decodeURIComponent(target);
} catch {
return target;
}
}
function getURLFromRedirectError(error) {
const parts = error.digest.split(";");
const encodedTarget = parts.length >= 5 ? parts.slice(2, -2).join(";") : parts[2];
return encodedTarget ? decodeRedirectTarget(encodedTarget) : null;
}
function getRedirectTypeFromError(error) {
return error.digest.split(";", 2)[1] === "push" ? "push" : "replace";
}
function HandleRedirect({ redirect, redirectType }) {
const router = useRouter();
React.useEffect(() => {
React.startTransition(() => {
if (redirectType === "push") router.push(redirect);
else router.replace(redirect);
});
}, [
redirect,
redirectType,
router
]);
return null;
}
var RedirectErrorBoundary = class extends React.Component {
constructor(props) {
super(props);
this.state = {
redirect: null,
redirectType: null
};
}
static getDerivedStateFromError(error) {
if (isRedirectError(error)) {
if (error.handled) return {
redirect: null,
redirectType: null
};
const url = getURLFromRedirectError(error);
if (url === null) throw error;
return {
redirect: url,
redirectType: getRedirectTypeFromError(error)
};
}
throw error;
}
render() {
const { redirect, redirectType } = this.state;
if (redirect !== null && redirectType !== null) return /* @__PURE__ */ jsx(HandleRedirect, {
redirect,
redirectType
});
return this.props.children;
}
};
function RedirectBoundary({ children }) {
return /* @__PURE__ */ jsx(RedirectErrorBoundary, { children });
}
/**
* Generic ErrorBoundary used to wrap route segments with error.tsx.
* This must be a client component since error boundaries use
* componentDidCatch / getDerivedStateFromError.
*/
var ErrorBoundaryInner = class extends React.Component {
constructor(props) {
super(props);
this.state = {
error: null,
...readBoundaryResetState(props)
};
}
static getDerivedStateFromProps(props, state) {
const nextResetState = readBoundaryResetState(props);
if (state.error && shouldResetBoundary(nextResetState, state)) return {
error: null,
...nextResetState
};
return {
error: state.error,
...nextResetState
};
}
static getDerivedStateFromError(error) {
if (isNavigationSignalError(error)) throw error;
return { error: { thrownValue: error } };
}
reset = () => {
this.setState({ error: null });
};
render() {
if (this.state.error) {
const FallbackComponent = this.props.fallback;
return /* @__PURE__ */ jsx(FallbackComponent, {
error: this.state.error.thrownValue,
reset: this.reset
});
}
return this.props.children;
}
};
function ErrorBoundary({ fallback, children, resetKey }) {
return /* @__PURE__ */ jsx(ErrorBoundaryInner, {
pathname: usePathname(),
resetKey,
fallback,
children
});
}
/**
* Inner class component that catches notFound() errors and renders the
* not-found.tsx fallback. Resets on the caller's segment reset key when one is
* provided, otherwise falls back to pathname changes for legacy callers.
*
* The ErrorBoundary above re-throws notFound errors so they propagate up to this
* boundary. This must be placed above the ErrorBoundary in the component tree.
*/
var NotFoundBoundaryInner = class extends React.Component {
constructor(props) {
super(props);
this.state = {
notFound: false,
...readBoundaryResetState(props)
};
}
static getDerivedStateFromProps(props, state) {
const nextResetState = readBoundaryResetState(props);
if (state.notFound && shouldResetBoundary(nextResetState, state)) return {
notFound: false,
...nextResetState
};
return {
notFound: state.notFound,
...nextResetState
};
}
static getDerivedStateFromError(error) {
if (error && typeof error === "object" && "digest" in error) {
const digest = String(error.digest);
if (digest === "NEXT_NOT_FOUND" || digest === "NEXT_HTTP_ERROR_FALLBACK;404") return { notFound: true };
}
throw error;
}
render() {
if (this.state.notFound) return this.props.fallback;
return this.props.children;
}
};
/**
* Wrapper that reads the current pathname and passes it to the inner class
* component. Segment reset keys own App Router remount semantics when present.
*/
function NotFoundBoundary({ fallback, children, resetKey }) {
return /* @__PURE__ */ jsx(NotFoundBoundaryInner, {
pathname: usePathname(),
resetKey,
fallback,
children
});
}
var ForbiddenBoundaryInner = class extends React.Component {
constructor(props) {
super(props);
this.state = {
forbidden: false,
...readBoundaryResetState(props)
};
}
static getDerivedStateFromProps(props, state) {
const nextResetState = readBoundaryResetState(props);
if (state.forbidden && shouldResetBoundary(nextResetState, state)) return {
forbidden: false,
...nextResetState
};
return {
forbidden: state.forbidden,
...nextResetState
};
}
static getDerivedStateFromError(error) {
if (error && typeof error === "object" && "digest" in error) {
if (String(error.digest) === "NEXT_HTTP_ERROR_FALLBACK;403") return { forbidden: true };
}
throw error;
}
render() {
if (this.state.forbidden) return this.props.fallback;
return this.props.children;
}
};
function ForbiddenBoundary({ fallback, children, resetKey }) {
return /* @__PURE__ */ jsx(ForbiddenBoundaryInner, {
pathname: usePathname(),
resetKey,
fallback,
children
});
}
var UnauthorizedBoundaryInner = class extends React.Component {
constructor(props) {
super(props);
this.state = {
unauthorized: false,
...readBoundaryResetState(props)
};
}
static getDerivedStateFromProps(props, state) {
const nextResetState = readBoundaryResetState(props);
if (state.unauthorized && shouldResetBoundary(nextResetState, state)) return {
unauthorized: false,
...nextResetState
};
return {
unauthorized: state.unauthorized,
...nextResetState
};
}
static getDerivedStateFromError(error) {
if (error && typeof error === "object" && "digest" in error) {
if (String(error.digest) === "NEXT_HTTP_ERROR_FALLBACK;401") return { unauthorized: true };
}
throw error;
}
render() {
if (this.state.unauthorized) return this.props.fallback;
return this.props.children;
}
};
function UnauthorizedBoundary({ fallback, children, resetKey }) {
return /* @__PURE__ */ jsx(UnauthorizedBoundaryInner, {
pathname: usePathname(),
resetKey,
fallback,
children
});
}
var DevRecoveryBoundary = class extends React.Component {
constructor(props) {
super(props);
this.state = {
error: null,
previousResetKey: props.resetKey
};
}
static getDerivedStateFromProps(props, state) {
if (props.resetKey === state.previousResetKey) return null;
return {
error: null,
previousResetKey: props.resetKey
};
}
static getDerivedStateFromError(error) {
if (isNavigationSignalError(error)) throw error;
return { error: { thrownValue: error } };
}
componentDidCatch() {
this.props.onCatch?.(this.props.resetKey);
}
render() {
if (this.state.error) return null;
return this.props.children;
}
};
//#endregion
export { DevRecoveryBoundary, ErrorBoundary, ErrorBoundaryInner, ForbiddenBoundary, ForbiddenBoundaryInner, NotFoundBoundary, RedirectBoundary, RedirectErrorBoundary, UnauthorizedBoundary, UnauthorizedBoundaryInner };
//# sourceMappingURL=error-boundary.js.map