| 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 : |
{"version":3,"file":"error-boundary.js","names":[],"sources":["../../src/shims/error-boundary.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\n// Import the local shim, not the public next/navigation alias. The built\n// package may execute this file before the plugin's resolveId hook is active.\nimport { usePathname, useRouter } from \"./navigation.js\";\nimport { getErrorDigest, isNavigationSignalError } from \"../utils/navigation-signal.js\";\n\nexport type ErrorBoundaryProps = {\n fallback: React.ComponentType<{ error: unknown; reset: () => void }>;\n children: React.ReactNode;\n resetKey?: string | null;\n};\n\ntype CapturedError = {\n thrownValue: unknown;\n};\n\ntype RedirectBoundaryState = {\n redirect: string | null;\n redirectType: \"push\" | \"replace\" | null;\n};\n\ntype RedirectError = Error & {\n digest: string;\n handled?: boolean;\n};\n\ntype ErrorBoundaryInnerProps = {\n pathname: string;\n} & ErrorBoundaryProps;\n\nexport type ErrorBoundaryState = {\n error: CapturedError | null;\n previousPathname: string;\n previousResetKey: string | null;\n};\n\ntype BoundaryResetProps = {\n pathname: string;\n resetKey?: string | null;\n};\n\ntype BoundaryResetState = {\n previousPathname: string;\n previousResetKey: string | null;\n};\n\nfunction normalizeBoundaryResetKey(resetKey: string | null | undefined): string | null {\n return resetKey === undefined || resetKey === null || resetKey === \"\" ? null : resetKey;\n}\n\nfunction readBoundaryResetState(props: BoundaryResetProps): BoundaryResetState {\n return {\n previousPathname: props.pathname,\n previousResetKey: normalizeBoundaryResetKey(props.resetKey),\n };\n}\n\nfunction shouldResetBoundary(\n nextResetState: BoundaryResetState,\n previousResetState: BoundaryResetState,\n): boolean {\n const nextResetKey = normalizeBoundaryResetKey(nextResetState.previousResetKey);\n const previousResetKey = normalizeBoundaryResetKey(previousResetState.previousResetKey);\n\n if (nextResetKey !== null || previousResetKey !== null) {\n return nextResetKey !== previousResetKey;\n }\n\n return nextResetState.previousPathname !== previousResetState.previousPathname;\n}\n\nfunction isRedirectError(error: unknown): error is RedirectError {\n return getErrorDigest(error)?.startsWith(\"NEXT_REDIRECT;\") ?? false;\n}\n\nfunction decodeRedirectTarget(target: string): string {\n try {\n return decodeURIComponent(target);\n } catch {\n return target;\n }\n}\n\nfunction getURLFromRedirectError(error: RedirectError): string | null {\n const parts = error.digest.split(\";\");\n // vinext emits 3-part (redirect: `NEXT_REDIRECT;;<encoded>`) or 4-part\n // (permanentRedirect: `NEXT_REDIRECT;<type>;<encoded>;308`) digests;\n // Next.js emits 5-part digests (`NEXT_REDIRECT;<type>;<url>;<status>;<isClient>`).\n // vinext's `isRedirectError` is more permissive (just `startsWith(\"NEXT_REDIRECT;\")`)\n // so we branch on length rather than always using `slice(2, -2)`.\n const encodedTarget = parts.length >= 5 ? parts.slice(2, -2).join(\";\") : parts[2];\n return encodedTarget ? decodeRedirectTarget(encodedTarget) : null;\n}\n\nfunction getRedirectTypeFromError(error: RedirectError): \"push\" | \"replace\" {\n const type = error.digest.split(\";\", 2)[1];\n return type === \"push\" ? \"push\" : \"replace\";\n}\n\nfunction HandleRedirect({\n redirect,\n redirectType,\n}: {\n redirect: string;\n redirectType: \"push\" | \"replace\";\n}) {\n const router = useRouter();\n\n React.useEffect(() => {\n React.startTransition(() => {\n if (redirectType === \"push\") {\n router.push(redirect);\n } else {\n router.replace(redirect);\n }\n // Intentionally no reset() here. The boundary stays in its \"redirect\n // caught\" state (rendering this component, which returns null) until\n // router.push()/replace() triggers a new render at the destination\n // route. That naturally unmounts this boundary and mounts a fresh one.\n // Calling reset() would clear the boundary state, causing React to\n // re-render children — which re-mounts the page component that threw\n // redirect() in the first place. For deterministic redirects (e.g.\n // auth guards), that creates an infinite redirect loop.\n // Matches Next.js's HandleRedirect in redirect-boundary.tsx.\n });\n }, [redirect, redirectType, router]);\n\n return null;\n}\n\nexport class RedirectErrorBoundary extends React.Component<\n { children?: React.ReactNode },\n RedirectBoundaryState\n> {\n constructor(props: { children?: React.ReactNode }) {\n super(props);\n this.state = {\n redirect: null,\n redirectType: null,\n };\n }\n\n static getDerivedStateFromError(error: unknown): RedirectBoundaryState {\n if (isRedirectError(error)) {\n // Next.js parity: an outer RedirectBoundary that has already started\n // handling a redirect marks the error as `handled` so that, if React\n // re-throws the same error during a retry render, an inner boundary\n // doesn't re-dispatch the same `router.replace()`. Vinext doesn't\n // currently emit `handled` itself (we never assign it on the error\n // object), but we keep the branch so behavior matches Next.js if a\n // host or future change ever does.\n if (error.handled) {\n return {\n redirect: null,\n redirectType: null,\n };\n }\n\n const url = getURLFromRedirectError(error);\n if (url === null) {\n // Malformed digest (e.g. `NEXT_REDIRECT;push;` with an empty URL\n // segment). The server-side parser at next-error-digest.ts:51 also\n // rejects this. Re-throw so the error reaches a regular error\n // boundary instead of being silently swallowed.\n throw error;\n }\n\n return {\n redirect: url,\n redirectType: getRedirectTypeFromError(error),\n };\n }\n\n throw error;\n }\n\n render() {\n const { redirect, redirectType } = this.state;\n if (redirect !== null && redirectType !== null) {\n return <HandleRedirect redirect={redirect} redirectType={redirectType} />;\n }\n\n return this.props.children;\n }\n}\n\nexport function RedirectBoundary({ children }: { children?: React.ReactNode }) {\n return <RedirectErrorBoundary>{children}</RedirectErrorBoundary>;\n}\n\n/**\n * Generic ErrorBoundary used to wrap route segments with error.tsx.\n * This must be a client component since error boundaries use\n * componentDidCatch / getDerivedStateFromError.\n */\nexport class ErrorBoundaryInner extends React.Component<\n ErrorBoundaryInnerProps,\n ErrorBoundaryState\n> {\n constructor(props: ErrorBoundaryInnerProps) {\n super(props);\n this.state = { error: null, ...readBoundaryResetState(props) };\n }\n\n static getDerivedStateFromProps(\n props: ErrorBoundaryInnerProps,\n state: ErrorBoundaryState,\n ): ErrorBoundaryState | null {\n const nextResetState = readBoundaryResetState(props);\n if (state.error && shouldResetBoundary(nextResetState, state)) {\n return { error: null, ...nextResetState };\n }\n return { error: state.error, ...nextResetState };\n }\n\n static getDerivedStateFromError(error: unknown): Partial<ErrorBoundaryState> {\n // notFound(), forbidden(), unauthorized(), and redirect() must propagate\n // past error boundaries. Re-throw them so they bubble up to the\n // framework's HTTP access fallback / redirect handler.\n if (isNavigationSignalError(error)) {\n throw error;\n }\n return { error: { thrownValue: error } };\n }\n\n reset = () => {\n this.setState({ error: null });\n };\n\n render() {\n if (this.state.error) {\n const FallbackComponent = this.props.fallback;\n return <FallbackComponent error={this.state.error.thrownValue} reset={this.reset} />;\n }\n return this.props.children;\n }\n}\n\nexport function ErrorBoundary({ fallback, children, resetKey }: ErrorBoundaryProps) {\n const pathname = usePathname();\n return (\n <ErrorBoundaryInner pathname={pathname} resetKey={resetKey} fallback={fallback}>\n {children}\n </ErrorBoundaryInner>\n );\n}\n\n// ---------------------------------------------------------------------------\n// NotFoundBoundary — catches notFound() on the client and renders not-found.tsx\n// ---------------------------------------------------------------------------\n\ntype NotFoundBoundaryProps = {\n fallback: React.ReactNode;\n children: React.ReactNode;\n resetKey?: string | null;\n};\n\ntype NotFoundBoundaryInnerProps = {\n pathname: string;\n} & NotFoundBoundaryProps;\n\ntype NotFoundBoundaryState = {\n notFound: boolean;\n previousPathname: string;\n previousResetKey: string | null;\n};\n\n/**\n * Inner class component that catches notFound() errors and renders the\n * not-found.tsx fallback. Resets on the caller's segment reset key when one is\n * provided, otherwise falls back to pathname changes for legacy callers.\n *\n * The ErrorBoundary above re-throws notFound errors so they propagate up to this\n * boundary. This must be placed above the ErrorBoundary in the component tree.\n */\nclass NotFoundBoundaryInner extends React.Component<\n NotFoundBoundaryInnerProps,\n NotFoundBoundaryState\n> {\n constructor(props: NotFoundBoundaryInnerProps) {\n super(props);\n this.state = { notFound: false, ...readBoundaryResetState(props) };\n }\n\n static getDerivedStateFromProps(\n props: NotFoundBoundaryInnerProps,\n state: NotFoundBoundaryState,\n ): NotFoundBoundaryState | null {\n const nextResetState = readBoundaryResetState(props);\n if (state.notFound && shouldResetBoundary(nextResetState, state)) {\n return { notFound: false, ...nextResetState };\n }\n return { notFound: state.notFound, ...nextResetState };\n }\n\n static getDerivedStateFromError(error: unknown): Partial<NotFoundBoundaryState> {\n if (error && typeof error === \"object\" && \"digest\" in error) {\n const digest = String(error.digest);\n if (digest === \"NEXT_NOT_FOUND\" || digest === \"NEXT_HTTP_ERROR_FALLBACK;404\") {\n return { notFound: true };\n }\n }\n // Not a notFound error — re-throw so it reaches an ErrorBoundary or propagates\n throw error;\n }\n\n render() {\n if (this.state.notFound) {\n return this.props.fallback;\n }\n return this.props.children;\n }\n}\n\n/**\n * Wrapper that reads the current pathname and passes it to the inner class\n * component. Segment reset keys own App Router remount semantics when present.\n */\nexport function NotFoundBoundary({ fallback, children, resetKey }: NotFoundBoundaryProps) {\n const pathname = usePathname();\n return (\n <NotFoundBoundaryInner pathname={pathname} resetKey={resetKey} fallback={fallback}>\n {children}\n </NotFoundBoundaryInner>\n );\n}\n\n// ---------------------------------------------------------------------------\n// ForbiddenBoundary — catches forbidden() on the client and renders forbidden.tsx\n// ---------------------------------------------------------------------------\n\ntype ForbiddenBoundaryProps = {\n fallback: React.ReactNode;\n children: React.ReactNode;\n resetKey?: string | null;\n};\n\ntype ForbiddenBoundaryInnerProps = {\n pathname: string;\n} & ForbiddenBoundaryProps;\n\ntype ForbiddenBoundaryState = {\n forbidden: boolean;\n previousPathname: string;\n previousResetKey: string | null;\n};\n\nexport class ForbiddenBoundaryInner extends React.Component<\n ForbiddenBoundaryInnerProps,\n ForbiddenBoundaryState\n> {\n constructor(props: ForbiddenBoundaryInnerProps) {\n super(props);\n this.state = { forbidden: false, ...readBoundaryResetState(props) };\n }\n\n static getDerivedStateFromProps(\n props: ForbiddenBoundaryInnerProps,\n state: ForbiddenBoundaryState,\n ): ForbiddenBoundaryState | null {\n const nextResetState = readBoundaryResetState(props);\n if (state.forbidden && shouldResetBoundary(nextResetState, state)) {\n return { forbidden: false, ...nextResetState };\n }\n return { forbidden: state.forbidden, ...nextResetState };\n }\n\n static getDerivedStateFromError(error: unknown): Partial<ForbiddenBoundaryState> {\n if (error && typeof error === \"object\" && \"digest\" in error) {\n const digest = String(error.digest);\n if (digest === \"NEXT_HTTP_ERROR_FALLBACK;403\") {\n return { forbidden: true };\n }\n }\n throw error;\n }\n\n render() {\n if (this.state.forbidden) {\n return this.props.fallback;\n }\n return this.props.children;\n }\n}\n\nexport function ForbiddenBoundary({ fallback, children, resetKey }: ForbiddenBoundaryProps) {\n const pathname = usePathname();\n return (\n <ForbiddenBoundaryInner pathname={pathname} resetKey={resetKey} fallback={fallback}>\n {children}\n </ForbiddenBoundaryInner>\n );\n}\n\n// ---------------------------------------------------------------------------\n// UnauthorizedBoundary — catches unauthorized() on the client and renders unauthorized.tsx\n// ---------------------------------------------------------------------------\n\ntype UnauthorizedBoundaryProps = {\n fallback: React.ReactNode;\n children: React.ReactNode;\n resetKey?: string | null;\n};\n\ntype UnauthorizedBoundaryInnerProps = {\n pathname: string;\n} & UnauthorizedBoundaryProps;\n\ntype UnauthorizedBoundaryState = {\n unauthorized: boolean;\n previousPathname: string;\n previousResetKey: string | null;\n};\n\nexport class UnauthorizedBoundaryInner extends React.Component<\n UnauthorizedBoundaryInnerProps,\n UnauthorizedBoundaryState\n> {\n constructor(props: UnauthorizedBoundaryInnerProps) {\n super(props);\n this.state = { unauthorized: false, ...readBoundaryResetState(props) };\n }\n\n static getDerivedStateFromProps(\n props: UnauthorizedBoundaryInnerProps,\n state: UnauthorizedBoundaryState,\n ): UnauthorizedBoundaryState | null {\n const nextResetState = readBoundaryResetState(props);\n if (state.unauthorized && shouldResetBoundary(nextResetState, state)) {\n return { unauthorized: false, ...nextResetState };\n }\n return { unauthorized: state.unauthorized, ...nextResetState };\n }\n\n static getDerivedStateFromError(error: unknown): Partial<UnauthorizedBoundaryState> {\n if (error && typeof error === \"object\" && \"digest\" in error) {\n const digest = String(error.digest);\n if (digest === \"NEXT_HTTP_ERROR_FALLBACK;401\") {\n return { unauthorized: true };\n }\n }\n throw error;\n }\n\n render() {\n if (this.state.unauthorized) {\n return this.props.fallback;\n }\n return this.props.children;\n }\n}\n\nexport function UnauthorizedBoundary({ fallback, children, resetKey }: UnauthorizedBoundaryProps) {\n const pathname = usePathname();\n return (\n <UnauthorizedBoundaryInner pathname={pathname} resetKey={resetKey} fallback={fallback}>\n {children}\n </UnauthorizedBoundaryInner>\n );\n}\n\n// ---------------------------------------------------------------------------\n// DevRecoveryBoundary — dev-only top-level boundary inside BrowserRoot.\n// Catches any render error that isn't already handled by a user-defined\n// error.tsx (or the access-fallback boundaries above), renders nothing, and\n// keeps BrowserRoot mounted so HMR can dispatch a new RSC payload without a\n// full page reload. Resets on resetKey change — the caller bumps that key\n// (e.g. via treeState.renderId) when a fresh tree is dispatched.\n//\n// Routing sentinels are re-thrown so notFound()/redirect()/forbidden()/\n// unauthorized() still reach their dedicated boundaries above.\n// ---------------------------------------------------------------------------\n\nexport type DevRecoveryBoundaryProps = {\n resetKey: number;\n // Called from componentDidCatch with the current resetKey so the host can\n // run any pending side effects that NavigationCommitSignal would normally\n // drive on commit — most importantly the URL update for the in-flight\n // soft-nav. Without this, a navigation that fails mid-render leaves the\n // browser on the previous URL even though the boundary recovered.\n //\n // The error itself is intentionally not passed: React's onCaughtError option\n // already routes the error to the dev overlay, so this callback is only for\n // commit-side effects keyed by resetKey.\n onCatch?: (resetKey: number) => void;\n // Children come through React.Component's PropsWithChildren default; declared\n // optional so callers can pass them positionally to createElement without\n // tripping the eslint no-children-prop rule.\n children?: React.ReactNode;\n};\n\ntype DevRecoveryBoundaryState = {\n error: CapturedError | null;\n previousResetKey: number;\n};\n\nexport class DevRecoveryBoundary extends React.Component<\n DevRecoveryBoundaryProps,\n DevRecoveryBoundaryState\n> {\n constructor(props: DevRecoveryBoundaryProps) {\n super(props);\n this.state = { error: null, previousResetKey: props.resetKey };\n }\n\n static getDerivedStateFromProps(\n props: DevRecoveryBoundaryProps,\n state: DevRecoveryBoundaryState,\n ): DevRecoveryBoundaryState | null {\n if (props.resetKey === state.previousResetKey) {\n return null;\n }\n return { error: null, previousResetKey: props.resetKey };\n }\n\n static getDerivedStateFromError(error: unknown): Partial<DevRecoveryBoundaryState> {\n // Re-throw routing sentinels so they still reach NotFoundBoundary /\n // RedirectBoundary / Forbidden / Unauthorized above.\n if (isNavigationSignalError(error)) {\n throw error;\n }\n return { error: { thrownValue: error } };\n }\n\n componentDidCatch(): void {\n this.props.onCatch?.(this.props.resetKey);\n }\n\n render() {\n if (this.state.error) {\n // Render nothing — the dev overlay (mounted in a separate React root)\n // shows the actual error to the developer. HMR pushing a new payload\n // bumps resetKey above, clearing this state and letting the children\n // re-render with the fixed code.\n return null;\n }\n return this.props.children;\n }\n}\n"],"mappings":"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"}