{"version":3,"sources":["../../src/client/route-loader.ts"],"sourcesContent":["import type { ComponentType } from 'react'\nimport type { ProxyMatcher } from '../build/analysis/get-page-static-info'\nimport type { RequiredServerFilesManifest } from '../build'\nimport getAssetPathFromRoute from '../shared/lib/router/utils/get-asset-path-from-route'\nimport { __unsafeCreateTrustedScriptURL } from './trusted-types'\nimport { requestIdleCallback } from './request-idle-callback'\nimport { getAssetTokenQuery } from '../shared/lib/deployment-id'\nimport { encodeURIPath } from '../shared/lib/encode-uri-path'\nimport { resolvePromiseWithTimeout } from './lib/promise'\n\ndeclare global {\n  interface Window {\n    __BUILD_MANIFEST?: Record<string, string[]>\n    __BUILD_MANIFEST_CB?: Function\n    __SERVER_FILES_MANIFEST?: RequiredServerFilesManifest\n    __MIDDLEWARE_MATCHERS?: ProxyMatcher[]\n    __MIDDLEWARE_MATCHERS_CB?: Function\n    __REACT_LOADABLE_MANIFEST?: any\n    __DYNAMIC_CSS_MANIFEST?: any\n    __RSC_MANIFEST?: any\n    __RSC_SERVER_MANIFEST?: any\n    __NEXT_FONT_MANIFEST?: any\n    __SUBRESOURCE_INTEGRITY_MANIFEST?: string\n    __INTERCEPTION_ROUTE_REWRITE_MANIFEST?: string\n  }\n}\n\ninterface LoadedEntrypointSuccess {\n  component: ComponentType\n  exports: any\n}\ninterface LoadedEntrypointFailure {\n  error: unknown\n}\ntype RouteEntrypoint = LoadedEntrypointSuccess | LoadedEntrypointFailure\n\ninterface RouteStyleSheet {\n  href: string\n  content: string\n}\n\ninterface LoadedRouteSuccess extends LoadedEntrypointSuccess {\n  styles: RouteStyleSheet[]\n}\ninterface LoadedRouteFailure {\n  error: unknown\n}\ntype RouteLoaderEntry = LoadedRouteSuccess | LoadedRouteFailure\n\ninterface Future<V> {\n  resolve: (entrypoint: V) => void\n  future: Promise<V>\n}\nfunction withFuture<T extends object>(\n  key: string,\n  map: Map<string, Future<T> | T>,\n  generator?: () => Promise<T>\n): Promise<T> {\n  let entry = map.get(key)\n  if (entry) {\n    if ('future' in entry) {\n      return entry.future\n    }\n    return Promise.resolve(entry)\n  }\n  let resolver: (entrypoint: T) => void\n  const prom: Promise<T> = new Promise<T>((resolve) => {\n    resolver = resolve\n  })\n  map.set(key, { resolve: resolver!, future: prom })\n  return generator\n    ? generator()\n        .then((value) => {\n          resolver(value)\n          return value\n        })\n        .catch((err) => {\n          map.delete(key)\n          throw err\n        })\n    : prom\n}\n\nexport interface RouteLoader {\n  whenEntrypoint(route: string): Promise<RouteEntrypoint>\n  onEntrypoint(route: string, execute: () => unknown): void\n  loadRoute(route: string, prefetch?: boolean): Promise<RouteLoaderEntry>\n  prefetch(route: string): Promise<void>\n}\n\nconst ASSET_LOAD_ERROR = Symbol('ASSET_LOAD_ERROR')\n// TODO: unexport\nexport function markAssetError(err: Error): Error {\n  return Object.defineProperty(err, ASSET_LOAD_ERROR, {})\n}\n\nexport function isAssetError(err?: Error): boolean | undefined {\n  return err && ASSET_LOAD_ERROR in err\n}\n\nfunction hasPrefetch(link?: HTMLLinkElement): boolean {\n  try {\n    link = document.createElement('link')\n    return (\n      // detect IE11 since it supports prefetch but isn't detected\n      // with relList.support\n      (!!window.MSInputMethodContext && !!(document as any).documentMode) ||\n      link.relList.supports('prefetch')\n    )\n  } catch {\n    return false\n  }\n}\n\nconst canPrefetch: boolean = hasPrefetch()\n\nfunction prefetchViaDom(\n  href: string,\n  as: string,\n  link?: HTMLLinkElement\n): Promise<any> {\n  return new Promise<void>((resolve, reject) => {\n    const selector = `\n      link[rel=\"prefetch\"][href^=\"${href}\"],\n      link[rel=\"preload\"][href^=\"${href}\"],\n      script[src^=\"${href}\"]`\n    if (document.querySelector(selector)) {\n      return resolve()\n    }\n\n    link = document.createElement('link')\n\n    // The order of property assignment here is intentional:\n    if (as) link!.as = as\n    link!.rel = `prefetch`\n    link!.crossOrigin = process.env.__NEXT_CROSS_ORIGIN!\n    link!.onload = resolve as any\n    link!.onerror = () =>\n      reject(markAssetError(new Error(`Failed to prefetch: ${href}`)))\n\n    // `href` should always be last:\n    link!.href = href\n\n    document.head.appendChild(link)\n  })\n}\n\nfunction appendScript(\n  src: TrustedScriptURL | string,\n  script?: HTMLScriptElement\n): Promise<unknown> {\n  return new Promise((resolve, reject) => {\n    script = document.createElement('script')\n\n    // The order of property assignment here is intentional.\n    // 1. Setup success/failure hooks in case the browser synchronously\n    //    executes when `src` is set.\n    script.onload = resolve\n    script.onerror = () =>\n      reject(markAssetError(new Error(`Failed to load script: ${src}`)))\n\n    // 2. Configure the cross-origin attribute before setting `src` in case the\n    //    browser begins to fetch.\n    script.crossOrigin = process.env.__NEXT_CROSS_ORIGIN!\n\n    // 3. Finally, set the source and inject into the DOM in case the child\n    //    must be appended for fetching to start.\n    script.src = src as string\n    document.body.appendChild(script)\n  })\n}\n\n// We wait for pages to be built in dev before we start the route transition\n// timeout to prevent an un-necessary hard navigation in development.\nlet devBuildPromise: Promise<void> | undefined\n\n// TODO: stop exporting or cache the failure\n// It'd be best to stop exporting this. It's an implementation detail. We're\n// only exporting it for backwards compatibility with the `page-loader`.\n// Only cache this response as a last resort if we cannot eliminate all other\n// code branches that use the Build Manifest Callback and push them through\n// the Route Loader interface.\nexport function getClientBuildManifest() {\n  if (self.__BUILD_MANIFEST) {\n    return Promise.resolve(self.__BUILD_MANIFEST)\n  }\n\n  const onBuildManifest = new Promise<Record<string, string[]>>((resolve) => {\n    // Mandatory because this is not concurrent safe:\n    const cb = self.__BUILD_MANIFEST_CB\n    self.__BUILD_MANIFEST_CB = () => {\n      resolve(self.__BUILD_MANIFEST!)\n      cb && cb()\n    }\n  })\n\n  return resolvePromiseWithTimeout(\n    onBuildManifest,\n    markAssetError(new Error('Failed to load client build manifest')),\n    devBuildPromise\n  )\n}\n\ninterface RouteFiles {\n  scripts: (TrustedScriptURL | string)[]\n  css: string[]\n}\nfunction getFilesForRoute(\n  assetPrefix: string,\n  route: string\n): Promise<RouteFiles> {\n  if (process.env.NODE_ENV === 'development') {\n    const scriptUrl =\n      assetPrefix +\n      '/_next/static/chunks/pages' +\n      encodeURIPath(getAssetPathFromRoute(route, '.js')) +\n      getAssetTokenQuery()\n    return Promise.resolve({\n      scripts: [__unsafeCreateTrustedScriptURL(scriptUrl)],\n      // Styles are handled by `style-loader` in development:\n      css: [],\n    })\n  }\n  return getClientBuildManifest().then((manifest) => {\n    if (!(route in manifest)) {\n      throw markAssetError(new Error(`Failed to lookup route: ${route}`))\n    }\n    const allFiles = manifest[route].map(\n      (entry) => assetPrefix + '/_next/' + encodeURIPath(entry)\n    )\n    return {\n      scripts: allFiles\n        .filter((v) => v.endsWith('.js'))\n        .map((v) => __unsafeCreateTrustedScriptURL(v) + getAssetTokenQuery()),\n      css: allFiles\n        .filter((v) => v.endsWith('.css'))\n        .map((v) => v + getAssetTokenQuery()),\n    }\n  })\n}\n\nexport function createRouteLoader(assetPrefix: string): RouteLoader {\n  const entrypoints: Map<string, Future<RouteEntrypoint> | RouteEntrypoint> =\n    new Map()\n  const loadedScripts: Map<string, Promise<unknown>> = new Map()\n  const styleSheets: Map<string, Promise<RouteStyleSheet>> = new Map()\n  const routes: Map<string, Future<RouteLoaderEntry> | RouteLoaderEntry> =\n    new Map()\n\n  function maybeExecuteScript(\n    src: TrustedScriptURL | string\n  ): Promise<unknown> {\n    // With HMR we might need to \"reload\" scripts when they are\n    // disposed and readded. Executing scripts twice has no functional\n    // differences\n    if (process.env.NODE_ENV !== 'development') {\n      let prom: Promise<unknown> | undefined = loadedScripts.get(src.toString())\n      if (prom) {\n        return prom\n      }\n\n      // Skip executing script if it's already in the DOM:\n      if (document.querySelector(`script[src^=\"${src}\"]`)) {\n        return Promise.resolve()\n      }\n\n      loadedScripts.set(src.toString(), (prom = appendScript(src)))\n      return prom\n    } else {\n      return appendScript(src)\n    }\n  }\n\n  function fetchStyleSheet(href: string): Promise<RouteStyleSheet> {\n    let prom: Promise<RouteStyleSheet> | undefined = styleSheets.get(href)\n    if (prom) {\n      return prom\n    }\n\n    styleSheets.set(\n      href,\n      (prom = fetch(href, { credentials: 'same-origin' })\n        .then((res) => {\n          if (!res.ok) {\n            throw new Error(`Failed to load stylesheet: ${href}`)\n          }\n          return res.text().then((text) => ({ href: href, content: text }))\n        })\n        .catch((err) => {\n          throw markAssetError(err)\n        }))\n    )\n    return prom\n  }\n\n  return {\n    whenEntrypoint(route: string) {\n      return withFuture(route, entrypoints)\n    },\n    onEntrypoint(route: string, execute: undefined | (() => unknown)) {\n      ;(execute\n        ? Promise.resolve()\n            .then(() => execute())\n            .then(\n              (exports: any) => ({\n                component: (exports && exports.default) || exports,\n                exports: exports,\n              }),\n              (err) => ({ error: err })\n            )\n        : Promise.resolve(undefined)\n      ).then((input: RouteEntrypoint | undefined) => {\n        const old = entrypoints.get(route)\n        if (old && 'resolve' in old) {\n          if (input) {\n            entrypoints.set(route, input)\n            old.resolve(input)\n          }\n        } else {\n          if (input) {\n            entrypoints.set(route, input)\n          } else {\n            entrypoints.delete(route)\n          }\n          // when this entrypoint has been resolved before\n          // the route is outdated and we want to invalidate\n          // this cache entry\n          routes.delete(route)\n        }\n      })\n    },\n    loadRoute(route: string, prefetch?: boolean) {\n      return withFuture<RouteLoaderEntry>(route, routes, () => {\n        let devBuildPromiseResolve: () => void\n\n        if (process.env.NODE_ENV === 'development') {\n          devBuildPromise = new Promise<void>((resolve) => {\n            devBuildPromiseResolve = resolve\n          })\n        }\n\n        return resolvePromiseWithTimeout(\n          getFilesForRoute(assetPrefix, route)\n            .then(({ scripts, css }) => {\n              return Promise.all([\n                entrypoints.has(route)\n                  ? []\n                  : Promise.all(scripts.map(maybeExecuteScript)),\n                Promise.all(css.map(fetchStyleSheet)),\n              ] as const)\n            })\n            .then((res) => {\n              return this.whenEntrypoint(route).then((entrypoint) => ({\n                entrypoint,\n                styles: res[1],\n              }))\n            }),\n          markAssetError(new Error(`Route did not complete loading: ${route}`)),\n          devBuildPromise\n        )\n          .then(({ entrypoint, styles }) => {\n            const res: RouteLoaderEntry = Object.assign<\n              { styles: RouteStyleSheet[] },\n              RouteEntrypoint\n            >({ styles: styles! }, entrypoint)\n            return 'error' in entrypoint ? entrypoint : res\n          })\n          .catch((err) => {\n            if (prefetch) {\n              // we don't want to cache errors during prefetch\n              throw err\n            }\n            return { error: err }\n          })\n          .finally(() => devBuildPromiseResolve?.())\n      })\n    },\n    prefetch(route: string): Promise<void> {\n      // https://github.com/GoogleChromeLabs/quicklink/blob/453a661fa1fa940e2d2e044452398e38c67a98fb/src/index.mjs#L115-L118\n      // License: Apache 2.0\n      let cn\n      if ((cn = (navigator as any).connection)) {\n        // Don't prefetch if using 2G or if Save-Data is enabled.\n        if (cn.saveData || /2g/.test(cn.effectiveType)) return Promise.resolve()\n      }\n      return getFilesForRoute(assetPrefix, route)\n        .then((output) =>\n          Promise.all(\n            canPrefetch\n              ? output.scripts.map((script) =>\n                  prefetchViaDom(script.toString(), 'script')\n                )\n              : []\n          )\n        )\n        .then(() => {\n          requestIdleCallback(() => this.loadRoute(route, true).catch(() => {}))\n        })\n        .catch(\n          // swallow prefetch errors\n          () => {}\n        )\n    },\n  }\n}\n"],"names":["createRouteLoader","getClientBuildManifest","isAssetError","markAssetError","withFuture","key","map","generator","entry","get","future","Promise","resolve","resolver","prom","set","then","value","catch","err","delete","ASSET_LOAD_ERROR","Symbol","Object","defineProperty","hasPrefetch","link","document","createElement","window","MSInputMethodContext","documentMode","relList","supports","canPrefetch","prefetchViaDom","href","as","reject","selector","querySelector","rel","crossOrigin","process","env","__NEXT_CROSS_ORIGIN","onload","onerror","Error","head","appendChild","appendScript","src","script","body","devBuildPromise","self","__BUILD_MANIFEST","onBuildManifest","cb","__BUILD_MANIFEST_CB","resolvePromiseWithTimeout","getFilesForRoute","assetPrefix","route","NODE_ENV","scriptUrl","encodeURIPath","getAssetPathFromRoute","getAssetTokenQuery","scripts","__unsafeCreateTrustedScriptURL","css","manifest","allFiles","filter","v","endsWith","entrypoints","Map","loadedScripts","styleSheets","routes","maybeExecuteScript","toString","fetchStyleSheet","fetch","credentials","res","ok","text","content","whenEntrypoint","onEntrypoint","execute","exports","component","default","error","undefined","input","old","loadRoute","prefetch","devBuildPromiseResolve","all","has","entrypoint","styles","assign","finally","cn","navigator","connection","saveData","test","effectiveType","output","requestIdleCallback"],"mappings":"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","ignoreList":[0]}