403Webshell
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/tanviranik.com/node_modules/vinext/dist/shims/router.js.map
{"version":3,"file":"router.js","names":[],"sources":["../../src/shims/router.ts"],"sourcesContent":["/**\n * next/router shim\n *\n * Provides useRouter() hook and Router singleton for Pages Router.\n * Backed by the browser History API. Supports client-side navigation\n * by fetching new page data and re-rendering the React root.\n */\nimport {\n  useState,\n  useEffect,\n  useCallback,\n  useMemo,\n  createElement,\n  type ReactElement,\n  type ComponentType,\n} from \"react\";\nimport { RouterContext } from \"./internal/router-context.js\";\nimport type { VinextNextData } from \"../client/vinext-next-data.js\";\nimport { isValidModulePath } from \"../client/validate-module-path.js\";\nimport { installWindowNext, type PagesRouterPublicInstance } from \"../client/window-next.js\";\nimport {\n  isHashOnlyBrowserUrlChange,\n  toBrowserNavigationHref,\n  toSameOriginAppPath,\n} from \"./url-utils.js\";\nimport { stripBasePath } from \"../utils/base-path.js\";\nimport { addLocalePrefix, getDomainLocaleUrl, type DomainLocale } from \"../utils/domain-locale.js\";\nimport {\n  addQueryParam,\n  appendSearchParamsToUrl,\n  type UrlQuery,\n  urlQueryToSearchParams,\n} from \"../utils/query.js\";\n\n/** basePath from next.config.js, injected by the plugin at build time */\nconst __basePath: string = process.env.__NEXT_ROUTER_BASEPATH ?? \"\";\n\ntype BeforePopStateCallback = (state: {\n  url: string;\n  as: string;\n  options: { shallow: boolean };\n}) => boolean;\n\nexport type NextRouter = {\n  /** Current pathname */\n  pathname: string;\n  /** Current route pattern (e.g., \"/posts/[id]\") */\n  route: string;\n  /** Query parameters */\n  query: Record<string, string | string[]>;\n  /** Full URL including query string */\n  asPath: string;\n  /** Base path */\n  basePath: string;\n  /** Current locale */\n  locale?: string;\n  /** Available locales */\n  locales?: string[];\n  /** Default locale */\n  defaultLocale?: string;\n  /** Configured domain locales */\n  domainLocales?: VinextNextData[\"domainLocales\"];\n  /** Whether the router is ready */\n  isReady: boolean;\n  /** Whether this is a preview */\n  isPreview: boolean;\n  /** Whether this is a fallback page */\n  isFallback: boolean;\n\n  /** Navigate to a new URL */\n  push(url: string | UrlObject, as?: string, options?: TransitionOptions): Promise<boolean>;\n  /** Replace current URL */\n  replace(url: string | UrlObject, as?: string, options?: TransitionOptions): Promise<boolean>;\n  /** Go back */\n  back(): void;\n  /** Reload the page */\n  reload(): void;\n  /** Prefetch a page (injects <link rel=\"prefetch\">) */\n  prefetch(url: string): Promise<void>;\n  /** Register a callback to run before popstate navigation */\n  beforePopState(cb: BeforePopStateCallback): void;\n  /** Listen for route changes */\n  events: RouterEvents;\n};\n\ntype UrlObject = {\n  pathname?: string;\n  query?: UrlQuery;\n};\n\ntype TransitionOptions = {\n  shallow?: boolean;\n  scroll?: boolean;\n  locale?: string;\n};\n\ntype RouterEvents = {\n  on(event: string, handler: (...args: unknown[]) => void): void;\n  off(event: string, handler: (...args: unknown[]) => void): void;\n  emit(event: string, ...args: unknown[]): void;\n};\n\nfunction createRouterEvents(): RouterEvents {\n  const listeners = new Map<string, Set<(...args: unknown[]) => void>>();\n\n  return {\n    on(event: string, handler: (...args: unknown[]) => void) {\n      if (!listeners.has(event)) listeners.set(event, new Set());\n      (listeners.get(event) as Set<(...args: unknown[]) => void>).add(handler);\n    },\n    off(event: string, handler: (...args: unknown[]) => void) {\n      listeners.get(event)?.delete(handler);\n    },\n    emit(event: string, ...args: unknown[]) {\n      listeners.get(event)?.forEach((handler) => handler(...args));\n    },\n  };\n}\n\n// Singleton events instance\nconst routerEvents = createRouterEvents();\n\nfunction resolveUrl(url: string | UrlObject): string {\n  if (typeof url === \"string\") return url;\n  let result = url.pathname ?? \"/\";\n  if (url.query) {\n    const params = urlQueryToSearchParams(url.query);\n    result = appendSearchParamsToUrl(result, params);\n  }\n  return result;\n}\n\n/**\n * When `as` is provided, use it as the navigation target. This is a\n * simplification: Next.js keeps `url` and `as` as separate values (url for\n * data fetching, as for the browser URL). We collapse them because vinext's\n * navigateClient() fetches HTML from the target URL, so `as` must be a\n * server-resolvable path. Purely decorative `as` values are not supported.\n */\nfunction resolveNavigationTarget(\n  url: string | UrlObject,\n  as: string | undefined,\n  locale: string | undefined,\n): string {\n  return applyNavigationLocale(as ?? resolveUrl(url), locale);\n}\n\nfunction getDomainLocales(): readonly DomainLocale[] | undefined {\n  return (window.__NEXT_DATA__ as VinextNextData | undefined)?.domainLocales;\n}\n\nfunction getCurrentHostname(): string | undefined {\n  return window.location?.hostname;\n}\n\nfunction getDomainLocalePath(url: string, locale: string): string | undefined {\n  return getDomainLocaleUrl(url, locale, {\n    basePath: __basePath,\n    currentHostname: getCurrentHostname(),\n    domainItems: getDomainLocales(),\n  });\n}\n\n/**\n * Apply locale prefix to a URL for client-side navigation.\n * Same logic as Link's applyLocaleToHref but reads from window globals.\n */\nexport function applyNavigationLocale(url: string, locale?: string): string {\n  if (!locale || typeof window === \"undefined\") return url;\n  // Absolute and protocol-relative URLs must not be prefixed — locale\n  // only applies to local paths.\n  if (url.startsWith(\"http://\") || url.startsWith(\"https://\") || url.startsWith(\"//\")) {\n    return url;\n  }\n\n  const domainLocalePath = getDomainLocalePath(url, locale);\n  if (domainLocalePath) return domainLocalePath;\n\n  return addLocalePrefix(url, locale, window.__VINEXT_DEFAULT_LOCALE__ ?? \"\");\n}\n\n/** Check if a URL is external (any URL scheme per RFC 3986, or protocol-relative) */\nexport function isExternalUrl(url: string): boolean {\n  return /^[a-z][a-z0-9+.-]*:/i.test(url) || url.startsWith(\"//\");\n}\n\n/** Resolve a hash URL to a basePath-stripped app URL for event payloads */\nfunction resolveHashUrl(url: string): string {\n  if (typeof window === \"undefined\") return url;\n  if (url.startsWith(\"#\"))\n    return stripBasePath(window.location.pathname, __basePath) + window.location.search + url;\n  // Full-path hash URL — strip basePath for consistency with other events\n  try {\n    const parsed = new URL(url, window.location.href);\n    return stripBasePath(parsed.pathname, __basePath) + parsed.search + parsed.hash;\n  } catch {\n    return url;\n  }\n}\n\n/** Check if a href is only a hash change relative to the current URL */\nexport function isHashOnlyChange(href: string): boolean {\n  if (href.startsWith(\"#\")) return true;\n  if (typeof window === \"undefined\") return false;\n  return isHashOnlyBrowserUrlChange(href, window.location.href, __basePath);\n}\n\n/** Scroll to hash target element, or top if no hash */\nfunction scrollToHash(hash: string): void {\n  if (!hash || hash === \"#\") {\n    window.scrollTo(0, 0);\n    return;\n  }\n  const el = document.getElementById(hash.slice(1));\n  if (el) el.scrollIntoView({ behavior: \"auto\" });\n}\n\n/** Save current scroll position into history state for back/forward restoration */\nfunction saveScrollPosition(): void {\n  const state = window.history.state ?? {};\n  window.history.replaceState(\n    { ...state, __vinext_scrollX: window.scrollX, __vinext_scrollY: window.scrollY },\n    \"\",\n  );\n}\n\n/** Restore scroll position from history state */\nfunction restoreScrollPosition(state: unknown): void {\n  if (state && typeof state === \"object\" && \"__vinext_scrollY\" in state) {\n    const { __vinext_scrollX: x, __vinext_scrollY: y } = state as {\n      __vinext_scrollX: number;\n      __vinext_scrollY: number;\n    };\n    requestAnimationFrame(() => window.scrollTo(x, y));\n  }\n}\n\n/**\n * SSR context - set by the dev server before rendering each page.\n */\ntype SSRContext = {\n  pathname: string;\n  query: Record<string, string | string[]>;\n  asPath: string;\n  locale?: string;\n  locales?: string[];\n  defaultLocale?: string;\n  domainLocales?: VinextNextData[\"domainLocales\"];\n};\n\n// ---------------------------------------------------------------------------\n// Server-side SSR state uses a registration pattern so this module can be\n// bundled for the browser. The ALS-backed implementation lives in\n// router-state.ts (server-only) and registers itself on import.\n// ---------------------------------------------------------------------------\n\nlet _ssrContext: SSRContext | null = null;\n\nlet _getSSRContext = (): SSRContext | null => _ssrContext;\nlet _setSSRContextImpl = (ctx: SSRContext | null): void => {\n  _ssrContext = ctx;\n};\n\n/**\n * Register ALS-backed state accessors. Called by router-state.ts on import.\n * @internal\n */\nexport function _registerRouterStateAccessors(accessors: {\n  getSSRContext: () => SSRContext | null;\n  setSSRContext: (ctx: SSRContext | null) => void;\n}): void {\n  _getSSRContext = accessors.getSSRContext;\n  _setSSRContextImpl = accessors.setSSRContext;\n}\n\nexport function setSSRContext(ctx: SSRContext | null): void {\n  _setSSRContextImpl(ctx);\n}\n\n/**\n * Extract param names from a Next.js route pattern.\n * E.g., \"/posts/[id]\" → [\"id\"], \"/docs/[...slug]\" → [\"slug\"],\n * \"/shop/[[...path]]\" → [\"path\"], \"/blog/[year]/[month]\" → [\"year\", \"month\"]\n * Also handles internal format: \"/posts/:id\" → [\"id\"], \"/docs/:slug+\" → [\"slug\"]\n */\nfunction extractRouteParamNames(pattern: string): string[] {\n  const names: string[] = [];\n  // Match Next.js bracket format: [id], [...slug], [[...slug]]\n  // Accepts any non-] characters inside brackets (Next.js PARAMETER_PATTERN parity).\n  const bracketMatches = pattern.matchAll(/\\[{1,2}(?:\\.\\.\\.)?([^\\]]+)\\]{1,2}/g);\n  for (const m of bracketMatches) {\n    names.push(m[1]);\n  }\n  if (names.length > 0) return names;\n  // Fallback: match internal :param format (any chars except /, +, *)\n  const colonMatches = pattern.matchAll(/:([^/+*]+)[+*]?/g);\n  for (const m of colonMatches) {\n    names.push(m[1]);\n  }\n  return names;\n}\n\nfunction getPathnameAndQuery(): {\n  pathname: string;\n  query: Record<string, string | string[]>;\n  asPath: string;\n} {\n  if (typeof window === \"undefined\") {\n    const _ssrCtx = _getSSRContext();\n    if (_ssrCtx) {\n      const query: Record<string, string | string[]> = {};\n      for (const [key, value] of Object.entries(_ssrCtx.query)) {\n        query[key] = Array.isArray(value) ? [...value] : value;\n      }\n      return { pathname: _ssrCtx.pathname, query, asPath: _ssrCtx.asPath };\n    }\n    return { pathname: \"/\", query: {}, asPath: \"/\" };\n  }\n  const resolvedPath = stripBasePath(window.location.pathname, __basePath);\n  // In Next.js, router.pathname is the route pattern (e.g., \"/posts/[id]\"),\n  // not the resolved path (\"/posts/42\"). __NEXT_DATA__.page holds the route\n  // pattern and is updated by navigateClient() on every client-side navigation.\n  const pathname = window.__NEXT_DATA__?.page ?? resolvedPath;\n  const routeQuery: Record<string, string | string[]> = {};\n  // Include dynamic route params from __NEXT_DATA__ (e.g., { id: \"42\" } from /posts/[id]).\n  // Only include keys that are part of the route pattern (not stale query params).\n  const nextData = window.__NEXT_DATA__;\n  if (nextData && nextData.query && nextData.page) {\n    const routeParamNames = extractRouteParamNames(nextData.page);\n    for (const key of routeParamNames) {\n      const value = nextData.query[key];\n      if (typeof value === \"string\") {\n        routeQuery[key] = value;\n      } else if (Array.isArray(value)) {\n        routeQuery[key] = [...value];\n      }\n    }\n  }\n  // URL search params always reflect the current URL\n  const searchQuery: Record<string, string | string[]> = {};\n  const params = new URLSearchParams(window.location.search);\n  for (const [key, value] of params) {\n    addQueryParam(searchQuery, key, value);\n  }\n  const query = { ...searchQuery, ...routeQuery };\n  // asPath uses the resolved browser path, not the route pattern\n  const asPath = resolvedPath + window.location.search + window.location.hash;\n  return { pathname, query, asPath };\n}\n\n/**\n * Error thrown when a navigation is superseded by a newer one.\n * Matches Next.js's convention of an Error with `.cancelled = true`.\n */\nclass NavigationCancelledError extends Error {\n  cancelled = true;\n  constructor(route: string) {\n    super(`Abort fetching component for route: \"${route}\"`);\n    this.name = \"NavigationCancelledError\";\n  }\n}\n\n/**\n * Error thrown after queueing a hard navigation fallback for a known failure\n * mode. Callers can use this to avoid scheduling the same hard navigation twice.\n */\nclass HardNavigationScheduledError extends Error {\n  hardNavigationScheduled = true;\n  constructor(message: string) {\n    super(message);\n    this.name = \"HardNavigationScheduledError\";\n  }\n}\n\n/**\n * Monotonically increasing ID for tracking the current navigation.\n * Each call to navigateClient() increments this and captures the value.\n * After each async boundary, the navigation checks whether it is still\n * the active one. If a newer navigation has started, the stale one\n * throws NavigationCancelledError so the caller can emit routeChangeError\n * and skip routeChangeComplete.\n *\n * Replaces the old boolean `_navInProgress` guard which silently dropped\n * the second navigation, causing URL/content mismatch.\n */\nlet _navigationId = 0;\n\n/** AbortController for the in-flight fetch, so superseded navigations abort network I/O. */\nlet _activeAbortController: AbortController | null = null;\n\nfunction scheduleHardNavigationAndThrow(url: string, message: string): never {\n  if (typeof window === \"undefined\") {\n    throw new HardNavigationScheduledError(message);\n  }\n  window.location.href = url;\n  throw new HardNavigationScheduledError(message);\n}\n\n/**\n * Perform client-side navigation: fetch the target page's HTML,\n * extract __NEXT_DATA__, and re-render the React root.\n *\n * Throws NavigationCancelledError if a newer navigation supersedes this one.\n * Throws on hard-navigation failures (non-OK response, missing data) so the\n * caller can distinguish success from failure for event emission.\n */\nasync function navigateClient(url: string): Promise<void> {\n  if (typeof window === \"undefined\") return;\n\n  const root = window.__VINEXT_ROOT__;\n  if (!root) {\n    // No React root yet — fall back to hard navigation\n    window.location.href = url;\n    return;\n  }\n\n  // Cancel any in-flight navigation (abort its fetch, mark it stale)\n  _activeAbortController?.abort();\n  const controller = new AbortController();\n  _activeAbortController = controller;\n\n  const navId = ++_navigationId;\n\n  /** Check if this navigation is still the active one. If not, throw. */\n  function assertStillCurrent(): void {\n    if (navId !== _navigationId) {\n      throw new NavigationCancelledError(url);\n    }\n  }\n\n  try {\n    // Fetch the target page's SSR HTML\n    let res: Response;\n    try {\n      res = await fetch(url, {\n        headers: { Accept: \"text/html\" },\n        signal: controller.signal,\n      });\n    } catch (err: unknown) {\n      // AbortError means a newer navigation cancelled this fetch\n      if (err instanceof DOMException && err.name === \"AbortError\") {\n        throw new NavigationCancelledError(url);\n      }\n      throw err;\n    }\n    assertStillCurrent();\n\n    if (!res.ok) {\n      // Set window.location.href first so the browser navigates to the correct\n      // page even if the caller suppresses the error.  The assignment schedules\n      // the navigation asynchronously (as a task), so synchronous routeChangeError\n      // listeners still run — and observe the error — before the page unloads.\n      // Contract: routeChangeError listeners MUST be synchronous; async listeners\n      // will not fire before the navigation completes.  Callers (runNavigateClient)\n      // must NOT schedule a second hard navigation — this assignment already queues\n      // the browser fallback, and the helper-level HardNavigationScheduledError\n      // makes that contract explicit to callers.\n      scheduleHardNavigationAndThrow(url, `Navigation failed: ${res.status} ${res.statusText}`);\n    }\n\n    const html = await res.text();\n    assertStillCurrent();\n\n    // Extract __NEXT_DATA__ from the HTML\n    const match = html.match(/<script>window\\.__NEXT_DATA__\\s*=\\s*(.*?)<\\/script>/);\n    if (!match) {\n      scheduleHardNavigationAndThrow(url, \"Navigation failed: missing __NEXT_DATA__ in response\");\n    }\n\n    const nextData = JSON.parse(match[1]);\n    const { pageProps } = nextData.props;\n    // Defer writing window.__NEXT_DATA__ until just before root.render() —\n    // writing it here would let a stale navigation briefly pollute the global\n    // between this assertStillCurrent() and the next one after await import().\n\n    // Get the page module URL from __NEXT_DATA__.__vinext (preferred),\n    // or fall back to parsing the hydration script\n    let pageModuleUrl: string | undefined = nextData.__vinext?.pageModuleUrl;\n\n    if (!pageModuleUrl) {\n      // Legacy fallback: try to find the module URL in the inline script\n      const moduleMatch = html.match(/import\\(\"([^\"]+)\"\\);\\s*\\n\\s*const PageComponent/);\n      const altMatch = html.match(/await import\\(\"([^\"]+pages\\/[^\"]+)\"\\)/);\n      pageModuleUrl = moduleMatch?.[1] ?? altMatch?.[1] ?? undefined;\n    }\n\n    if (!pageModuleUrl) {\n      scheduleHardNavigationAndThrow(url, \"Navigation failed: no page module URL found\");\n    }\n\n    // Validate the module URL before importing — defense-in-depth against\n    // unexpected __NEXT_DATA__ or malformed HTML responses\n    if (!isValidModulePath(pageModuleUrl)) {\n      console.error(\"[vinext] Blocked import of invalid page module path:\", pageModuleUrl);\n      scheduleHardNavigationAndThrow(url, \"Navigation failed: invalid page module path\");\n    }\n\n    // Dynamically import the new page module\n    const pageModule = await import(/* @vite-ignore */ pageModuleUrl);\n    assertStillCurrent();\n\n    const PageComponent = pageModule.default;\n\n    if (!PageComponent) {\n      scheduleHardNavigationAndThrow(url, \"Navigation failed: page module has no default export\");\n    }\n\n    // Import React for createElement\n    const React = (await import(\"react\")).default;\n    assertStillCurrent();\n\n    // Re-render with the new page, loading _app if needed\n    let AppComponent = window.__VINEXT_APP__;\n    const appModuleUrl: string | undefined = nextData.__vinext?.appModuleUrl;\n\n    if (!AppComponent && appModuleUrl) {\n      if (!isValidModulePath(appModuleUrl)) {\n        console.error(\"[vinext] Blocked import of invalid app module path:\", appModuleUrl);\n      } else {\n        try {\n          const appModule = await import(/* @vite-ignore */ appModuleUrl);\n          AppComponent = appModule.default;\n          window.__VINEXT_APP__ = AppComponent;\n        } catch {\n          // _app not available — continue without it\n        }\n      }\n    }\n    assertStillCurrent();\n\n    let element;\n    if (AppComponent) {\n      element = React.createElement(AppComponent, {\n        Component: PageComponent,\n        pageProps,\n      });\n    } else {\n      element = React.createElement(PageComponent, pageProps);\n    }\n\n    // Wrap with RouterContext.Provider so next/compat/router works\n    element = wrapWithRouterContext(element);\n\n    // Commit __NEXT_DATA__ only after all assertStillCurrent() checks have passed,\n    // so a stale navigation can never pollute the global.\n    // INVARIANT: Everything after the final assertStillCurrent() above (the\n    // checkpoint immediately after the optional _app import) through\n    // root.render() is synchronous. If any step here ever becomes async, add\n    // another assertStillCurrent() before writing __NEXT_DATA__.\n    window.__NEXT_DATA__ = nextData;\n    root.render(element);\n  } finally {\n    // Clean up the abort controller if this navigation is still the active one\n    if (navId === _navigationId) {\n      _activeAbortController = null;\n    }\n  }\n}\n\n/**\n * Run navigateClient and handle errors: emit routeChangeError on failure,\n * and fall back to a hard navigation for non-cancel errors so the browser\n * recovers to a consistent state.\n *\n * Returns:\n * - \"completed\" — navigation finished, caller should emit routeChangeComplete\n * - \"cancelled\" — superseded by a newer navigation, caller should return true\n *   without emitting routeChangeComplete (matches Next.js behaviour)\n * - \"failed\" — genuine error, caller should return false (hard nav is already\n *   scheduled as recovery)\n */\nasync function runNavigateClient(\n  fullUrl: string,\n  resolvedUrl: string,\n): Promise<\"completed\" | \"cancelled\" | \"failed\"> {\n  try {\n    await navigateClient(fullUrl);\n    return \"completed\";\n  } catch (err: unknown) {\n    routerEvents.emit(\"routeChangeError\", err, resolvedUrl, { shallow: false });\n    if (err instanceof NavigationCancelledError) {\n      return \"cancelled\";\n    }\n    // Genuine error (network, parse, import failure): fall back to a hard\n    // navigation so the browser lands on the correct page. Known failure modes\n    // throw HardNavigationScheduledError, and this guard skips those; only\n    // unexpected failures (parse, import, render) need recovery here.\n    if (typeof window !== \"undefined\" && !(err instanceof HardNavigationScheduledError)) {\n      window.location.href = fullUrl;\n    }\n    return \"failed\";\n  }\n}\n\n/**\n * Build the full router value object from the current pathname, query, asPath,\n * and a set of navigation methods.  Shared by useRouter() (which passes\n * hook-derived callbacks) and wrapWithRouterContext() (which passes the Router\n * singleton methods) so the shape stays in sync.\n */\nfunction buildRouterValue(\n  pathname: string,\n  query: Record<string, string | string[]>,\n  asPath: string,\n  methods: {\n    push: NextRouter[\"push\"];\n    replace: NextRouter[\"replace\"];\n    back: NextRouter[\"back\"];\n    reload: NextRouter[\"reload\"];\n    prefetch: NextRouter[\"prefetch\"];\n    beforePopState: NextRouter[\"beforePopState\"];\n  },\n): NextRouter {\n  const _ssrState = _getSSRContext();\n  const nextData =\n    typeof window !== \"undefined\"\n      ? (window.__NEXT_DATA__ as VinextNextData | undefined)\n      : undefined;\n  const locale = typeof window === \"undefined\" ? _ssrState?.locale : window.__VINEXT_LOCALE__;\n  const locales = typeof window === \"undefined\" ? _ssrState?.locales : window.__VINEXT_LOCALES__;\n  const defaultLocale =\n    typeof window === \"undefined\" ? _ssrState?.defaultLocale : window.__VINEXT_DEFAULT_LOCALE__;\n  const domainLocales =\n    typeof window === \"undefined\" ? _ssrState?.domainLocales : nextData?.domainLocales;\n\n  const route = typeof window !== \"undefined\" ? (nextData?.page ?? pathname) : pathname;\n\n  return {\n    pathname,\n    route,\n    query,\n    asPath,\n    basePath: __basePath,\n    locale,\n    locales,\n    defaultLocale,\n    domainLocales,\n    isReady: true,\n    isPreview: false,\n    isFallback: typeof window !== \"undefined\" && nextData?.isFallback === true,\n    ...methods,\n    events: routerEvents,\n  };\n}\n\n/**\n * useRouter hook - Pages Router compatible.\n */\nexport function useRouter(): NextRouter {\n  const [{ pathname, query, asPath }, setState] = useState(getPathnameAndQuery);\n\n  // Popstate is handled by the module-level listener below so beforePopState()\n  // is consistently enforced even when multiple components mount useRouter().\n  useEffect(() => {\n    const onNavigate = ((_e: CustomEvent) => {\n      setState(getPathnameAndQuery());\n    }) as EventListener;\n    window.addEventListener(\"vinext:navigate\", onNavigate);\n    return () => window.removeEventListener(\"vinext:navigate\", onNavigate);\n  }, []);\n\n  const push = useCallback(\n    async (url: string | UrlObject, as?: string, options?: TransitionOptions): Promise<boolean> => {\n      let resolved = resolveNavigationTarget(url, as, options?.locale);\n\n      // External URLs — delegate to browser (unless same-origin)\n      if (isExternalUrl(resolved)) {\n        const localPath = toSameOriginAppPath(resolved, __basePath);\n        if (localPath == null) {\n          window.location.assign(resolved);\n          return true;\n        }\n        resolved = localPath;\n      }\n\n      const full = toBrowserNavigationHref(resolved, window.location.href, __basePath);\n\n      // Hash-only change — no page fetch needed\n      if (isHashOnlyChange(full)) {\n        const eventUrl = resolveHashUrl(full);\n        routerEvents.emit(\"hashChangeStart\", eventUrl, {\n          shallow: options?.shallow ?? false,\n        });\n        const hash = resolved.includes(\"#\") ? resolved.slice(resolved.indexOf(\"#\")) : \"\";\n        window.history.pushState({}, \"\", resolved.startsWith(\"#\") ? resolved : full);\n        _lastPathnameAndSearch = window.location.pathname + window.location.search;\n        scrollToHash(hash);\n        setState(getPathnameAndQuery());\n        routerEvents.emit(\"hashChangeComplete\", eventUrl, {\n          shallow: options?.shallow ?? false,\n        });\n        window.dispatchEvent(new CustomEvent(\"vinext:navigate\"));\n        return true;\n      }\n\n      saveScrollPosition();\n      routerEvents.emit(\"routeChangeStart\", resolved, { shallow: options?.shallow ?? false });\n      routerEvents.emit(\"beforeHistoryChange\", resolved, { shallow: options?.shallow ?? false });\n      window.history.pushState({}, \"\", full);\n      _lastPathnameAndSearch = window.location.pathname + window.location.search;\n      if (!options?.shallow) {\n        const result = await runNavigateClient(full, resolved);\n        if (result === \"cancelled\") return true;\n        if (result === \"failed\") return false;\n      }\n      setState(getPathnameAndQuery());\n      routerEvents.emit(\"routeChangeComplete\", resolved, { shallow: options?.shallow ?? false });\n\n      // Scroll: handle hash target, else scroll to top unless scroll:false\n      const hash = resolved.includes(\"#\") ? resolved.slice(resolved.indexOf(\"#\")) : \"\";\n      if (hash) {\n        scrollToHash(hash);\n      } else if (options?.scroll !== false) {\n        window.scrollTo(0, 0);\n      }\n      window.dispatchEvent(new CustomEvent(\"vinext:navigate\"));\n      return true;\n    },\n    [],\n  );\n\n  const replace = useCallback(\n    async (url: string | UrlObject, as?: string, options?: TransitionOptions): Promise<boolean> => {\n      let resolved = resolveNavigationTarget(url, as, options?.locale);\n\n      // External URLs — delegate to browser (unless same-origin)\n      if (isExternalUrl(resolved)) {\n        const localPath = toSameOriginAppPath(resolved, __basePath);\n        if (localPath == null) {\n          window.location.replace(resolved);\n          return true;\n        }\n        resolved = localPath;\n      }\n\n      const full = toBrowserNavigationHref(resolved, window.location.href, __basePath);\n\n      // Hash-only change — no page fetch needed\n      if (isHashOnlyChange(full)) {\n        const eventUrl = resolveHashUrl(full);\n        routerEvents.emit(\"hashChangeStart\", eventUrl, {\n          shallow: options?.shallow ?? false,\n        });\n        const hash = resolved.includes(\"#\") ? resolved.slice(resolved.indexOf(\"#\")) : \"\";\n        window.history.replaceState({}, \"\", resolved.startsWith(\"#\") ? resolved : full);\n        _lastPathnameAndSearch = window.location.pathname + window.location.search;\n        scrollToHash(hash);\n        setState(getPathnameAndQuery());\n        routerEvents.emit(\"hashChangeComplete\", eventUrl, {\n          shallow: options?.shallow ?? false,\n        });\n        window.dispatchEvent(new CustomEvent(\"vinext:navigate\"));\n        return true;\n      }\n\n      routerEvents.emit(\"routeChangeStart\", resolved, { shallow: options?.shallow ?? false });\n      routerEvents.emit(\"beforeHistoryChange\", resolved, { shallow: options?.shallow ?? false });\n      window.history.replaceState({}, \"\", full);\n      _lastPathnameAndSearch = window.location.pathname + window.location.search;\n      if (!options?.shallow) {\n        const result = await runNavigateClient(full, resolved);\n        if (result === \"cancelled\") return true;\n        if (result === \"failed\") return false;\n      }\n      setState(getPathnameAndQuery());\n      routerEvents.emit(\"routeChangeComplete\", resolved, { shallow: options?.shallow ?? false });\n\n      // Scroll: handle hash target, else scroll to top unless scroll:false\n      const hash = resolved.includes(\"#\") ? resolved.slice(resolved.indexOf(\"#\")) : \"\";\n      if (hash) {\n        scrollToHash(hash);\n      } else if (options?.scroll !== false) {\n        window.scrollTo(0, 0);\n      }\n      window.dispatchEvent(new CustomEvent(\"vinext:navigate\"));\n      return true;\n    },\n    [],\n  );\n\n  const back = useCallback(() => {\n    window.history.back();\n  }, []);\n\n  const reload = useCallback(() => {\n    window.location.reload();\n  }, []);\n\n  const prefetch = useCallback(async (url: string): Promise<void> => {\n    // Inject a <link rel=\"prefetch\"> for the target page\n    if (typeof document !== \"undefined\") {\n      const link = document.createElement(\"link\");\n      link.rel = \"prefetch\";\n      link.href = url;\n      link.as = \"document\";\n      document.head.appendChild(link);\n    }\n  }, []);\n\n  const router = useMemo(\n    (): NextRouter =>\n      buildRouterValue(pathname, query, asPath, {\n        push,\n        replace,\n        back,\n        reload,\n        prefetch,\n        beforePopState: (cb: BeforePopStateCallback) => {\n          _beforePopStateCb = cb;\n        },\n      }),\n    [pathname, query, asPath, push, replace, back, reload, prefetch],\n  );\n\n  return router;\n}\n\n// beforePopState callback: called before handling browser back/forward.\n// If it returns false, the navigation is cancelled.\nlet _beforePopStateCb: BeforePopStateCallback | undefined;\n\n// Track pathname+search for detecting hash-only back/forward in the popstate\n// handler. Updated after every pushState/replaceState so that popstate can\n// compare the previous value with the (already-changed) window.location.\nlet _lastPathnameAndSearch =\n  typeof window !== \"undefined\" ? window.location.pathname + window.location.search : \"\";\n\n// Module-level popstate listener: handles browser back/forward by re-rendering\n// the React root with the page at the new URL. This runs regardless of whether\n// any component calls useRouter().\nif (typeof window !== \"undefined\") {\n  window.addEventListener(\"popstate\", (e: PopStateEvent) => {\n    const browserUrl = window.location.pathname + window.location.search;\n    const appUrl = stripBasePath(window.location.pathname, __basePath) + window.location.search;\n\n    // Detect hash-only back/forward: pathname+search unchanged, only hash differs.\n    const isHashOnly = browserUrl === _lastPathnameAndSearch;\n\n    // Check beforePopState callback\n    if (_beforePopStateCb !== undefined) {\n      const shouldContinue = (_beforePopStateCb as BeforePopStateCallback)({\n        url: appUrl,\n        as: appUrl,\n        options: { shallow: false },\n      });\n      if (!shouldContinue) return;\n    }\n\n    // Update tracker only after beforePopState confirms navigation proceeds.\n    // If beforePopState cancels, the tracker must retain the previous value\n    // so the next popstate compares against the correct baseline.\n    _lastPathnameAndSearch = browserUrl;\n\n    if (isHashOnly) {\n      // Hash-only back/forward — no page fetch needed\n      const hashUrl = appUrl + window.location.hash;\n      routerEvents.emit(\"hashChangeStart\", hashUrl, { shallow: false });\n      scrollToHash(window.location.hash);\n      routerEvents.emit(\"hashChangeComplete\", hashUrl, { shallow: false });\n      window.dispatchEvent(new CustomEvent(\"vinext:navigate\"));\n      return;\n    }\n\n    const fullAppUrl = appUrl + window.location.hash;\n    routerEvents.emit(\"routeChangeStart\", fullAppUrl, { shallow: false });\n    // Note: The browser has already updated window.location by the time popstate\n    // fires, so this is not truly \"before\" the URL change. In Next.js the popstate\n    // handler calls replaceState to store history metadata — beforeHistoryChange\n    // precedes that call, not the URL change itself. We emit it here for API\n    // compatibility.\n    routerEvents.emit(\"beforeHistoryChange\", fullAppUrl, { shallow: false });\n    void (async () => {\n      const result = await runNavigateClient(browserUrl, fullAppUrl);\n      if (result === \"completed\") {\n        routerEvents.emit(\"routeChangeComplete\", fullAppUrl, { shallow: false });\n        restoreScrollPosition(e.state);\n        window.dispatchEvent(new CustomEvent(\"vinext:navigate\"));\n      }\n      // \"cancelled\": superseded by a newer navigation, so this popstate no longer wins.\n      // \"failed\": runNavigateClient already scheduled the hard-navigation fallback.\n    })();\n  });\n}\n\n/**\n * Wrap a React element in a RouterContext.Provider so that\n * next/compat/router's useRouter() returns the real Pages Router value.\n *\n * This is a plain function, NOT a React component — it builds the router\n * value object directly from the current SSR context (server) or\n * window.location + Router singleton (client), avoiding duplicate state\n * that a hook-based component would create.\n */\nexport function wrapWithRouterContext(element: ReactElement): ReactElement {\n  const { pathname, query, asPath } = getPathnameAndQuery();\n\n  const routerValue = buildRouterValue(pathname, query, asPath, {\n    push: Router.push,\n    replace: Router.replace,\n    back: Router.back,\n    reload: Router.reload,\n    prefetch: Router.prefetch,\n    beforePopState: Router.beforePopState,\n  });\n\n  return createElement(RouterContext.Provider, { value: routerValue }, element) as ReactElement;\n}\n\n/**\n * Props injected by `withRouter` into the wrapped component.\n *\n * Ported from Next.js: packages/next/src/client/with-router.tsx\n * https://github.com/vercel/next.js/blob/canary/packages/next/src/client/with-router.tsx\n */\nexport type WithRouterProps = {\n  router: NextRouter;\n};\n\n/**\n * Pick<P, Exclude<keyof P, keyof WithRouterProps>> — the props of the\n * composed component minus the `router` prop that `withRouter` injects.\n *\n * Ported from Next.js: packages/next/src/client/with-router.tsx\n */\nexport type ExcludeRouterProps<P> = Pick<P, Exclude<keyof P, keyof WithRouterProps>>;\n\n/**\n * Higher-order component that injects the Pages Router `router` instance as\n * a `router` prop into a wrapped component. Primarily used by class\n * components (which cannot call hooks) to access the router. The wrapped\n * component receives the same props as the original, minus `router`, which\n * is filled in by the HOC.\n *\n * Ported from Next.js: packages/next/src/client/with-router.tsx\n * https://github.com/vercel/next.js/blob/canary/packages/next/src/client/with-router.tsx\n *\n * Differences from Next.js:\n * - We type the composed component as `ComponentType<P>` instead of\n *   `NextComponentType<C, any, P>` because vinext does not expose\n *   `NextComponentType` from this shim. The runtime shape (and the props\n *   the wrapper forwards) is identical.\n * - We forward `getInitialProps` and `origGetInitialProps` from the\n *   composed component so `_app` parity holds for class components that\n *   define `getInitialProps`.\n */\nexport function withRouter<P extends WithRouterProps>(\n  ComposedComponent: ComponentType<P>,\n): ComponentType<ExcludeRouterProps<P>> {\n  function WithRouterWrapper(props: ExcludeRouterProps<P>): ReactElement {\n    const router = useRouter();\n    // Match Next.js spread order:\n    // `<ComposedComponent router={useRouter()} {...props} />`\n    // The injected `router` is placed first, and `{...props}` is spread\n    // after, so a user-passed `router` prop overrides the HOC-injected\n    // one (last-spread wins). Mirrors\n    // packages/next/src/client/with-router.tsx. At the type level\n    // `props: ExcludeRouterProps<P>` has no `router` key, but TS still\n    // sees `P` as `WithRouterProps`-extending when checking the literal,\n    // so we widen to a `Record` for the final prop bag.\n    const merged: Record<string, unknown> = { router, ...(props as Record<string, unknown>) };\n    return createElement(ComposedComponent, merged as unknown as P);\n  }\n\n  // Forward getInitialProps so class-component pages that define it keep\n  // working when wrapped. Mirrors Next.js's with-router.tsx.\n  const composed = ComposedComponent as ComponentType<P> & {\n    getInitialProps?: unknown;\n    origGetInitialProps?: unknown;\n  };\n  (WithRouterWrapper as unknown as { getInitialProps?: unknown }).getInitialProps =\n    composed.getInitialProps;\n  (WithRouterWrapper as unknown as { origGetInitialProps?: unknown }).origGetInitialProps =\n    composed.origGetInitialProps;\n\n  if (process.env.NODE_ENV !== \"production\") {\n    const name = composed.displayName || composed.name || \"Unknown\";\n    WithRouterWrapper.displayName = `withRouter(${name})`;\n  }\n\n  return WithRouterWrapper;\n}\n\n// Note: `withRouter` is exposed only as a named export from `next/router`.\n// The default export of that module is the Router singleton declared below.\n\n// Also export a default Router singleton for `import Router from 'next/router'`\nconst Router = {\n  push: async (url: string | UrlObject, as?: string, options?: TransitionOptions) => {\n    let resolved = resolveNavigationTarget(url, as, options?.locale);\n\n    // External URLs (unless same-origin)\n    if (isExternalUrl(resolved)) {\n      const localPath = toSameOriginAppPath(resolved, __basePath);\n      if (localPath == null) {\n        window.location.assign(resolved);\n        return true;\n      }\n      resolved = localPath;\n    }\n\n    const full = toBrowserNavigationHref(resolved, window.location.href, __basePath);\n\n    // Hash-only change\n    if (isHashOnlyChange(full)) {\n      const eventUrl = resolveHashUrl(full);\n      routerEvents.emit(\"hashChangeStart\", eventUrl, {\n        shallow: options?.shallow ?? false,\n      });\n      const hash = resolved.includes(\"#\") ? resolved.slice(resolved.indexOf(\"#\")) : \"\";\n      window.history.pushState({}, \"\", resolved.startsWith(\"#\") ? resolved : full);\n      _lastPathnameAndSearch = window.location.pathname + window.location.search;\n      scrollToHash(hash);\n      routerEvents.emit(\"hashChangeComplete\", eventUrl, {\n        shallow: options?.shallow ?? false,\n      });\n      window.dispatchEvent(new CustomEvent(\"vinext:navigate\"));\n      return true;\n    }\n\n    saveScrollPosition();\n    routerEvents.emit(\"routeChangeStart\", resolved, { shallow: options?.shallow ?? false });\n    routerEvents.emit(\"beforeHistoryChange\", resolved, { shallow: options?.shallow ?? false });\n    window.history.pushState({}, \"\", full);\n    _lastPathnameAndSearch = window.location.pathname + window.location.search;\n    if (!options?.shallow) {\n      const result = await runNavigateClient(full, resolved);\n      if (result === \"cancelled\") return true;\n      if (result === \"failed\") return false;\n    }\n    routerEvents.emit(\"routeChangeComplete\", resolved, { shallow: options?.shallow ?? false });\n\n    const hash = resolved.includes(\"#\") ? resolved.slice(resolved.indexOf(\"#\")) : \"\";\n    if (hash) {\n      scrollToHash(hash);\n    } else if (options?.scroll !== false) {\n      window.scrollTo(0, 0);\n    }\n    window.dispatchEvent(new CustomEvent(\"vinext:navigate\"));\n    return true;\n  },\n  replace: async (url: string | UrlObject, as?: string, options?: TransitionOptions) => {\n    let resolved = resolveNavigationTarget(url, as, options?.locale);\n\n    // External URLs (unless same-origin)\n    if (isExternalUrl(resolved)) {\n      const localPath = toSameOriginAppPath(resolved, __basePath);\n      if (localPath == null) {\n        window.location.replace(resolved);\n        return true;\n      }\n      resolved = localPath;\n    }\n\n    const full = toBrowserNavigationHref(resolved, window.location.href, __basePath);\n\n    // Hash-only change\n    if (isHashOnlyChange(full)) {\n      const eventUrl = resolveHashUrl(full);\n      routerEvents.emit(\"hashChangeStart\", eventUrl, {\n        shallow: options?.shallow ?? false,\n      });\n      const hash = resolved.includes(\"#\") ? resolved.slice(resolved.indexOf(\"#\")) : \"\";\n      window.history.replaceState({}, \"\", resolved.startsWith(\"#\") ? resolved : full);\n      _lastPathnameAndSearch = window.location.pathname + window.location.search;\n      scrollToHash(hash);\n      routerEvents.emit(\"hashChangeComplete\", eventUrl, {\n        shallow: options?.shallow ?? false,\n      });\n      window.dispatchEvent(new CustomEvent(\"vinext:navigate\"));\n      return true;\n    }\n\n    routerEvents.emit(\"routeChangeStart\", resolved, { shallow: options?.shallow ?? false });\n    routerEvents.emit(\"beforeHistoryChange\", resolved, { shallow: options?.shallow ?? false });\n    window.history.replaceState({}, \"\", full);\n    _lastPathnameAndSearch = window.location.pathname + window.location.search;\n    if (!options?.shallow) {\n      const result = await runNavigateClient(full, resolved);\n      if (result === \"cancelled\") return true;\n      if (result === \"failed\") return false;\n    }\n    routerEvents.emit(\"routeChangeComplete\", resolved, { shallow: options?.shallow ?? false });\n\n    const hash = resolved.includes(\"#\") ? resolved.slice(resolved.indexOf(\"#\")) : \"\";\n    if (hash) {\n      scrollToHash(hash);\n    } else if (options?.scroll !== false) {\n      window.scrollTo(0, 0);\n    }\n    window.dispatchEvent(new CustomEvent(\"vinext:navigate\"));\n    return true;\n  },\n  back: () => window.history.back(),\n  reload: () => window.location.reload(),\n  prefetch: async (url: string) => {\n    if (typeof document !== \"undefined\") {\n      const link = document.createElement(\"link\");\n      link.rel = \"prefetch\";\n      link.href = url;\n      link.as = \"document\";\n      document.head.appendChild(link);\n    }\n  },\n  beforePopState: (cb: BeforePopStateCallback) => {\n    _beforePopStateCb = cb;\n  },\n  events: routerEvents,\n};\n\n// Expose `window.next.router` for Next.js parity. Pages Router test suites,\n// userland scripts, and third-party libraries reach for this global directly\n// (e.g. `window.next.router.push(...)`, `window.next.router.events.on(...)`).\n// Without this assignment, those callers crash with\n// `TypeError: Cannot read properties of undefined (reading 'router')`.\n//\n// Ported from Next.js: `packages/next/src/client/next.ts` (line 13). We do\n// NOT use a live-binding getter like Next.js does because vinext's Router\n// singleton is constructed synchronously here, so by the time this module\n// finishes loading the value is final.\nif (typeof window !== \"undefined\") {\n  // Cast: `NextRouter.push`/`replace` are typed with narrow parameters\n  // (UrlObject | string) while `PagesRouterPublicInstance` accepts unknown\n  // args. The two are structurally compatible at runtime; TypeScript flags\n  // the narrowing of contravariant function params, which is benign here\n  // because callers reading off `window.next.router` are tests/userland\n  // and treat the surface as opaque.\n  installWindowNext({ router: Router as unknown as PagesRouterPublicInstance });\n}\n\nexport default Router;\n"],"mappings":"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"}

Youez - 2016 - github.com/yon3zu
LinuXploit