| self.__BUILD_MANIFEST = { | ||
| "__rewrites": { | ||
| "afterFiles": [], | ||
| "beforeFiles": [], | ||
| "fallback": [] | ||
| }, | ||
| "sortedPages": [ | ||
| "/_app", | ||
| "/_error" | ||
| ] | ||
| };self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB() |
| self.__MIDDLEWARE_MATCHERS = [];self.__MIDDLEWARE_MATCHERS_CB && self.__MIDDLEWARE_MATCHERS_CB() |
| self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB() |
| --- | ||
| title: Runtime Integration | ||
| description: Understand how build-time adapters and runtime cache interfaces work together. | ||
| source: app/api-reference/adapters/runtime-integration | ||
| --- | ||
| {/* DO NOT EDIT. The content of this doc is generated from the source above. To edit the content of this page, navigate to the source page in your editor. You can use the <PagesOnly>Content</PagesOnly> component to add content that is specific to the Pages Router. Any shared content should not be wrapped in a component. */} |
| --- | ||
| title: Invoking Entrypoints | ||
| description: Invoke Node.js and Edge build entrypoints with adapter runtime context. | ||
| source: app/api-reference/adapters/invoking-entrypoints | ||
| --- | ||
| {/* DO NOT EDIT. The content of this doc is generated from the source above. To edit the content of this page, navigate to the source page in your editor. You can use the <PagesOnly>Content</PagesOnly> component to add content that is specific to the Pages Router. Any shared content should not be wrapped in a component. */} |
| --- | ||
| title: Output Types | ||
| description: Reference for all build output types exposed to adapters. | ||
| source: app/api-reference/adapters/output-types | ||
| --- | ||
| {/* DO NOT EDIT. The content of this doc is generated from the source above. To edit the content of this page, navigate to the source page in your editor. You can use the <PagesOnly>Content</PagesOnly> component to add content that is specific to the Pages Router. Any shared content should not be wrapped in a component. */} |
| --- | ||
| title: Routing Information | ||
| description: Reference for routing phases and route fields exposed in `onBuildComplete`. | ||
| source: app/api-reference/adapters/routing-information | ||
| --- | ||
| {/* DO NOT EDIT. The content of this doc is generated from the source above. To edit the content of this page, navigate to the source page in your editor. You can use the <PagesOnly>Content</PagesOnly> component to add content that is specific to the Pages Router. Any shared content should not be wrapped in a component. */} |
| --- | ||
| title: Use Cases | ||
| description: Common patterns and examples for deployment adapter implementations. | ||
| source: app/api-reference/adapters/use-cases | ||
| --- | ||
| {/* DO NOT EDIT. The content of this doc is generated from the source above. To edit the content of this page, navigate to the source page in your editor. You can use the <PagesOnly>Content</PagesOnly> component to add content that is specific to the Pages Router. Any shared content should not be wrapped in a component. */} |
| import { readFileSync, readdirSync } from 'fs'; | ||
| import { dirname, join, resolve } from 'path'; | ||
| import findUp from 'next/dist/compiled/find-up'; | ||
| function getGitProjectRoot(dotGitFile) { | ||
| try { | ||
| const gitWorktreePath = readFileSync(dotGitFile, 'utf8').match(/^gitdir:\s*(.+?)\s*$/m); | ||
| if (!gitWorktreePath) return undefined; | ||
| // The format here is <project>/.git/worktrees/<name> | ||
| // So we are trying to get to project directory | ||
| return dirname(dirname(dirname(resolve(dotGitFile, gitWorktreePath[1])))); | ||
| } catch { | ||
| return undefined; | ||
| } | ||
| } | ||
| export function getGitWorktreeInfo(cwd) { | ||
| const found = findUp.sync('.git', { | ||
| cwd, | ||
| type: 'file' | ||
| }); | ||
| if (!found) return undefined; | ||
| const projectRoot = getGitProjectRoot(found); | ||
| if (!projectRoot) return undefined; | ||
| return { | ||
| worktreeRoot: dirname(found), | ||
| mainRepoRoot: projectRoot, | ||
| isChild: dirname(found).startsWith(projectRoot) | ||
| }; | ||
| } | ||
| export function listLinkedWorktreeRoots(mainRepoRoot) { | ||
| const worktreesDir = join(mainRepoRoot, '.git', 'worktrees'); | ||
| let names; | ||
| try { | ||
| names = readdirSync(worktreesDir); | ||
| } catch { | ||
| return []; | ||
| } | ||
| const roots = []; | ||
| for (const name of names){ | ||
| try { | ||
| const gitdir = readFileSync(join(worktreesDir, name, 'gitdir'), 'utf8').trim(); | ||
| if (gitdir) roots.push(dirname(gitdir)); | ||
| } catch {} | ||
| } | ||
| return roots; | ||
| } | ||
| //# sourceMappingURL=git-worktree.js.map |
| {"version":3,"sources":["../../../src/lib/git-worktree.ts"],"sourcesContent":["import { readFileSync, readdirSync } from 'fs'\nimport { dirname, join, resolve } from 'path'\nimport findUp from 'next/dist/compiled/find-up'\n\nfunction getGitProjectRoot(dotGitFile: string): string | undefined {\n try {\n const gitWorktreePath = readFileSync(dotGitFile, 'utf8').match(\n /^gitdir:\\s*(.+?)\\s*$/m\n )\n if (!gitWorktreePath) return undefined\n // The format here is <project>/.git/worktrees/<name>\n // So we are trying to get to project directory\n return dirname(dirname(dirname(resolve(dotGitFile, gitWorktreePath[1]))))\n } catch {\n return undefined\n }\n}\n\nexport interface GitWorktreeInfo {\n worktreeRoot: string\n mainRepoRoot: string\n isChild: boolean\n}\n\nexport function getGitWorktreeInfo(cwd: string): GitWorktreeInfo | undefined {\n const found = findUp.sync('.git', { cwd, type: 'file' })\n if (!found) return undefined\n\n const projectRoot = getGitProjectRoot(found)\n if (!projectRoot) return undefined\n\n return {\n worktreeRoot: dirname(found),\n mainRepoRoot: projectRoot,\n isChild: dirname(found).startsWith(projectRoot),\n }\n}\n\nexport function listLinkedWorktreeRoots(mainRepoRoot: string): string[] {\n const worktreesDir = join(mainRepoRoot, '.git', 'worktrees')\n let names: string[]\n try {\n names = readdirSync(worktreesDir)\n } catch {\n return []\n }\n\n const roots: string[] = []\n for (const name of names) {\n try {\n const gitdir = readFileSync(\n join(worktreesDir, name, 'gitdir'),\n 'utf8'\n ).trim()\n if (gitdir) roots.push(dirname(gitdir))\n } catch {}\n }\n return roots\n}\n"],"names":["readFileSync","readdirSync","dirname","join","resolve","findUp","getGitProjectRoot","dotGitFile","gitWorktreePath","match","undefined","getGitWorktreeInfo","cwd","found","sync","type","projectRoot","worktreeRoot","mainRepoRoot","isChild","startsWith","listLinkedWorktreeRoots","worktreesDir","names","roots","name","gitdir","trim","push"],"mappings":"AAAA,SAASA,YAAY,EAAEC,WAAW,QAAQ,KAAI;AAC9C,SAASC,OAAO,EAAEC,IAAI,EAAEC,OAAO,QAAQ,OAAM;AAC7C,OAAOC,YAAY,6BAA4B;AAE/C,SAASC,kBAAkBC,UAAkB;IAC3C,IAAI;QACF,MAAMC,kBAAkBR,aAAaO,YAAY,QAAQE,KAAK,CAC5D;QAEF,IAAI,CAACD,iBAAiB,OAAOE;QAC7B,qDAAqD;QACrD,+CAA+C;QAC/C,OAAOR,QAAQA,QAAQA,QAAQE,QAAQG,YAAYC,eAAe,CAAC,EAAE;IACvE,EAAE,OAAM;QACN,OAAOE;IACT;AACF;AAQA,OAAO,SAASC,mBAAmBC,GAAW;IAC5C,MAAMC,QAAQR,OAAOS,IAAI,CAAC,QAAQ;QAAEF;QAAKG,MAAM;IAAO;IACtD,IAAI,CAACF,OAAO,OAAOH;IAEnB,MAAMM,cAAcV,kBAAkBO;IACtC,IAAI,CAACG,aAAa,OAAON;IAEzB,OAAO;QACLO,cAAcf,QAAQW;QACtBK,cAAcF;QACdG,SAASjB,QAAQW,OAAOO,UAAU,CAACJ;IACrC;AACF;AAEA,OAAO,SAASK,wBAAwBH,YAAoB;IAC1D,MAAMI,eAAenB,KAAKe,cAAc,QAAQ;IAChD,IAAIK;IACJ,IAAI;QACFA,QAAQtB,YAAYqB;IACtB,EAAE,OAAM;QACN,OAAO,EAAE;IACX;IAEA,MAAME,QAAkB,EAAE;IAC1B,KAAK,MAAMC,QAAQF,MAAO;QACxB,IAAI;YACF,MAAMG,SAAS1B,aACbG,KAAKmB,cAAcG,MAAM,WACzB,QACAE,IAAI;YACN,IAAID,QAAQF,MAAMI,IAAI,CAAC1B,QAAQwB;QACjC,EAAE,OAAM,CAAC;IACX;IACA,OAAOF;AACT","ignoreList":[0]} |
| import fs from 'fs'; | ||
| import path from 'path'; | ||
| import * as Log from '../build/output/log'; | ||
| import { getTurbopackCacheVersion } from '../build/swc'; | ||
| import { getGitWorktreeInfo, listLinkedWorktreeRoots } from './git-worktree'; | ||
| export function seedTurbopackCacheIfNeeded({ projectDir, distDir }) { | ||
| // This gets the version assuming that nothing is dirty. | ||
| // If things are dirty, turbopack would write things | ||
| // in a different location. There are other circumstances | ||
| // as well. This only matters for people developing turbopack | ||
| // see handle_db_versioning in turbotask backend for more details. | ||
| const version = getTurbopackCacheVersion(); | ||
| if (!version) return; | ||
| const worktreeInfo = getGitWorktreeInfo(projectDir); | ||
| if (!worktreeInfo) return; | ||
| const cacheDir = path.join(distDir, 'cache', 'turbopack'); | ||
| const targetVersionDir = path.join(cacheDir, version); | ||
| if (dirHasEntries(targetVersionDir)) return; | ||
| let sourceVersionDir; | ||
| try { | ||
| sourceVersionDir = findSeedSource(worktreeInfo, projectDir, distDir, version); | ||
| } catch { | ||
| return; | ||
| } | ||
| if (!sourceVersionDir) return; | ||
| const tmpDir = `${targetVersionDir}.seeding`; | ||
| // Making sure we don't copy partial data if process interrupted | ||
| // There is a potential race condition here | ||
| // if someone wrote to the cache while we were seeding it | ||
| // but with the immutable design and all that, I'm not super worried | ||
| try { | ||
| fs.mkdirSync(cacheDir, { | ||
| recursive: true | ||
| }); | ||
| fs.rmSync(tmpDir, { | ||
| recursive: true, | ||
| force: true | ||
| }); | ||
| seedCacheDir(sourceVersionDir, tmpDir); | ||
| fs.renameSync(tmpDir, targetVersionDir); | ||
| Log.info(`Seeded Turbopack cache from ${sourceVersionDir}.`); | ||
| } catch { | ||
| fs.rmSync(tmpDir, { | ||
| recursive: true, | ||
| force: true | ||
| }); | ||
| Log.warn(`Failed to seed Turbopack cache from ${sourceVersionDir} to ${targetVersionDir}.`); | ||
| } | ||
| } | ||
| function findSeedSource(worktreeInfo, projectDir, distDir, version) { | ||
| const projectRelToWorktree = path.relative(worktreeInfo.worktreeRoot, projectDir); | ||
| const distRelToProject = path.relative(projectDir, distDir); | ||
| const currentWorktree = path.resolve(worktreeInfo.worktreeRoot); | ||
| // We are going to find the best candidate worktree | ||
| // based on the newest mtime of the CURRENT file in the cache directory. | ||
| // We only look at our version | ||
| let best; | ||
| for (const root of [ | ||
| worktreeInfo.mainRepoRoot, | ||
| ...listLinkedWorktreeRoots(worktreeInfo.mainRepoRoot) | ||
| ]){ | ||
| if (path.resolve(root) === currentWorktree) continue; | ||
| const versionDir = path.join(root, projectRelToWorktree, distRelToProject, 'cache', 'turbopack', version); | ||
| const mtimeMs = currentMtimeMs(versionDir); | ||
| if (mtimeMs === undefined) continue; | ||
| if (!best || mtimeMs > best.mtimeMs) { | ||
| best = { | ||
| versionDir, | ||
| mtimeMs | ||
| }; | ||
| } | ||
| } | ||
| return best == null ? void 0 : best.versionDir; | ||
| } | ||
| function currentMtimeMs(versionDir) { | ||
| try { | ||
| return fs.statSync(path.join(versionDir, 'CURRENT')).mtimeMs; | ||
| } catch { | ||
| return undefined; | ||
| } | ||
| } | ||
| function dirHasEntries(dir) { | ||
| try { | ||
| return fs.readdirSync(dir).length > 0; | ||
| } catch { | ||
| return false; | ||
| } | ||
| } | ||
| const IMMUTABLE_CACHE_FILE = /\.(sst|blob|meta|del)$/; | ||
| function seedCacheDir(src, dst) { | ||
| const stat = fs.lstatSync(src); | ||
| if (stat.isDirectory()) { | ||
| fs.mkdirSync(dst, { | ||
| recursive: true | ||
| }); | ||
| for (const name of fs.readdirSync(src)){ | ||
| seedCacheDir(path.join(src, name), path.join(dst, name)); | ||
| } | ||
| } else if (IMMUTABLE_CACHE_FILE.test(src)) { | ||
| fs.linkSync(src, dst); | ||
| } else { | ||
| // Mutable/unknown (CURRENT, LOG, …) - copy so it gets its own inode. | ||
| fs.copyFileSync(src, dst); | ||
| } | ||
| } | ||
| //# sourceMappingURL=turbopack-cache-seed.js.map |
| {"version":3,"sources":["../../../src/lib/turbopack-cache-seed.ts"],"sourcesContent":["import fs from 'fs'\nimport path from 'path'\nimport * as Log from '../build/output/log'\nimport { getTurbopackCacheVersion } from '../build/swc'\nimport {\n getGitWorktreeInfo,\n listLinkedWorktreeRoots,\n type GitWorktreeInfo,\n} from './git-worktree'\n\nexport function seedTurbopackCacheIfNeeded({\n projectDir,\n distDir,\n}: {\n projectDir: string\n distDir: string\n}): void {\n // This gets the version assuming that nothing is dirty.\n // If things are dirty, turbopack would write things\n // in a different location. There are other circumstances\n // as well. This only matters for people developing turbopack\n // see handle_db_versioning in turbotask backend for more details.\n const version = getTurbopackCacheVersion()\n if (!version) return\n\n const worktreeInfo = getGitWorktreeInfo(projectDir)\n if (!worktreeInfo) return\n\n const cacheDir = path.join(distDir, 'cache', 'turbopack')\n const targetVersionDir = path.join(cacheDir, version)\n if (dirHasEntries(targetVersionDir)) return\n\n let sourceVersionDir: string | undefined\n try {\n sourceVersionDir = findSeedSource(\n worktreeInfo,\n projectDir,\n distDir,\n version\n )\n } catch {\n return\n }\n if (!sourceVersionDir) return\n\n const tmpDir = `${targetVersionDir}.seeding`\n // Making sure we don't copy partial data if process interrupted\n // There is a potential race condition here\n // if someone wrote to the cache while we were seeding it\n // but with the immutable design and all that, I'm not super worried\n try {\n fs.mkdirSync(cacheDir, { recursive: true })\n fs.rmSync(tmpDir, { recursive: true, force: true })\n seedCacheDir(sourceVersionDir, tmpDir)\n fs.renameSync(tmpDir, targetVersionDir)\n Log.info(`Seeded Turbopack cache from ${sourceVersionDir}.`)\n } catch {\n fs.rmSync(tmpDir, { recursive: true, force: true })\n Log.warn(\n `Failed to seed Turbopack cache from ${sourceVersionDir} to ${targetVersionDir}.`\n )\n }\n}\n\nfunction findSeedSource(\n worktreeInfo: GitWorktreeInfo,\n projectDir: string,\n distDir: string,\n version: string\n): string | undefined {\n const projectRelToWorktree = path.relative(\n worktreeInfo.worktreeRoot,\n projectDir\n )\n const distRelToProject = path.relative(projectDir, distDir)\n const currentWorktree = path.resolve(worktreeInfo.worktreeRoot)\n\n // We are going to find the best candidate worktree\n // based on the newest mtime of the CURRENT file in the cache directory.\n // We only look at our version\n\n let best: { versionDir: string; mtimeMs: number } | undefined\n for (const root of [\n worktreeInfo.mainRepoRoot,\n ...listLinkedWorktreeRoots(worktreeInfo.mainRepoRoot),\n ]) {\n if (path.resolve(root) === currentWorktree) continue\n const versionDir = path.join(\n root,\n projectRelToWorktree,\n distRelToProject,\n 'cache',\n 'turbopack',\n version\n )\n const mtimeMs = currentMtimeMs(versionDir)\n if (mtimeMs === undefined) continue\n if (!best || mtimeMs > best.mtimeMs) {\n best = { versionDir, mtimeMs }\n }\n }\n return best?.versionDir\n}\n\nfunction currentMtimeMs(versionDir: string): number | undefined {\n try {\n return fs.statSync(path.join(versionDir, 'CURRENT')).mtimeMs\n } catch {\n return undefined\n }\n}\n\nfunction dirHasEntries(dir: string): boolean {\n try {\n return fs.readdirSync(dir).length > 0\n } catch {\n return false\n }\n}\n\nconst IMMUTABLE_CACHE_FILE = /\\.(sst|blob|meta|del)$/\n\nfunction seedCacheDir(src: string, dst: string): void {\n const stat = fs.lstatSync(src)\n if (stat.isDirectory()) {\n fs.mkdirSync(dst, { recursive: true })\n for (const name of fs.readdirSync(src)) {\n seedCacheDir(path.join(src, name), path.join(dst, name))\n }\n } else if (IMMUTABLE_CACHE_FILE.test(src)) {\n fs.linkSync(src, dst)\n } else {\n // Mutable/unknown (CURRENT, LOG, …) - copy so it gets its own inode.\n fs.copyFileSync(src, dst)\n }\n}\n"],"names":["fs","path","Log","getTurbopackCacheVersion","getGitWorktreeInfo","listLinkedWorktreeRoots","seedTurbopackCacheIfNeeded","projectDir","distDir","version","worktreeInfo","cacheDir","join","targetVersionDir","dirHasEntries","sourceVersionDir","findSeedSource","tmpDir","mkdirSync","recursive","rmSync","force","seedCacheDir","renameSync","info","warn","projectRelToWorktree","relative","worktreeRoot","distRelToProject","currentWorktree","resolve","best","root","mainRepoRoot","versionDir","mtimeMs","currentMtimeMs","undefined","statSync","dir","readdirSync","length","IMMUTABLE_CACHE_FILE","src","dst","stat","lstatSync","isDirectory","name","test","linkSync","copyFileSync"],"mappings":"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","ignoreList":[0]} |
| export interface GitWorktreeInfo { | ||
| worktreeRoot: string; | ||
| mainRepoRoot: string; | ||
| isChild: boolean; | ||
| } | ||
| export declare function getGitWorktreeInfo(cwd: string): GitWorktreeInfo | undefined; | ||
| export declare function listLinkedWorktreeRoots(mainRepoRoot: string): string[]; |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { | ||
| value: true | ||
| }); | ||
| 0 && (module.exports = { | ||
| getGitWorktreeInfo: null, | ||
| listLinkedWorktreeRoots: null | ||
| }); | ||
| function _export(target, all) { | ||
| for(var name in all)Object.defineProperty(target, name, { | ||
| enumerable: true, | ||
| get: all[name] | ||
| }); | ||
| } | ||
| _export(exports, { | ||
| getGitWorktreeInfo: function() { | ||
| return getGitWorktreeInfo; | ||
| }, | ||
| listLinkedWorktreeRoots: function() { | ||
| return listLinkedWorktreeRoots; | ||
| } | ||
| }); | ||
| const _fs = require("fs"); | ||
| const _path = require("path"); | ||
| const _findup = /*#__PURE__*/ _interop_require_default(require("next/dist/compiled/find-up")); | ||
| function _interop_require_default(obj) { | ||
| return obj && obj.__esModule ? obj : { | ||
| default: obj | ||
| }; | ||
| } | ||
| function getGitProjectRoot(dotGitFile) { | ||
| try { | ||
| const gitWorktreePath = (0, _fs.readFileSync)(dotGitFile, 'utf8').match(/^gitdir:\s*(.+?)\s*$/m); | ||
| if (!gitWorktreePath) return undefined; | ||
| // The format here is <project>/.git/worktrees/<name> | ||
| // So we are trying to get to project directory | ||
| return (0, _path.dirname)((0, _path.dirname)((0, _path.dirname)((0, _path.resolve)(dotGitFile, gitWorktreePath[1])))); | ||
| } catch { | ||
| return undefined; | ||
| } | ||
| } | ||
| function getGitWorktreeInfo(cwd) { | ||
| const found = _findup.default.sync('.git', { | ||
| cwd, | ||
| type: 'file' | ||
| }); | ||
| if (!found) return undefined; | ||
| const projectRoot = getGitProjectRoot(found); | ||
| if (!projectRoot) return undefined; | ||
| return { | ||
| worktreeRoot: (0, _path.dirname)(found), | ||
| mainRepoRoot: projectRoot, | ||
| isChild: (0, _path.dirname)(found).startsWith(projectRoot) | ||
| }; | ||
| } | ||
| function listLinkedWorktreeRoots(mainRepoRoot) { | ||
| const worktreesDir = (0, _path.join)(mainRepoRoot, '.git', 'worktrees'); | ||
| let names; | ||
| try { | ||
| names = (0, _fs.readdirSync)(worktreesDir); | ||
| } catch { | ||
| return []; | ||
| } | ||
| const roots = []; | ||
| for (const name of names){ | ||
| try { | ||
| const gitdir = (0, _fs.readFileSync)((0, _path.join)(worktreesDir, name, 'gitdir'), 'utf8').trim(); | ||
| if (gitdir) roots.push((0, _path.dirname)(gitdir)); | ||
| } catch {} | ||
| } | ||
| return roots; | ||
| } | ||
| //# sourceMappingURL=git-worktree.js.map |
| {"version":3,"sources":["../../src/lib/git-worktree.ts"],"sourcesContent":["import { readFileSync, readdirSync } from 'fs'\nimport { dirname, join, resolve } from 'path'\nimport findUp from 'next/dist/compiled/find-up'\n\nfunction getGitProjectRoot(dotGitFile: string): string | undefined {\n try {\n const gitWorktreePath = readFileSync(dotGitFile, 'utf8').match(\n /^gitdir:\\s*(.+?)\\s*$/m\n )\n if (!gitWorktreePath) return undefined\n // The format here is <project>/.git/worktrees/<name>\n // So we are trying to get to project directory\n return dirname(dirname(dirname(resolve(dotGitFile, gitWorktreePath[1]))))\n } catch {\n return undefined\n }\n}\n\nexport interface GitWorktreeInfo {\n worktreeRoot: string\n mainRepoRoot: string\n isChild: boolean\n}\n\nexport function getGitWorktreeInfo(cwd: string): GitWorktreeInfo | undefined {\n const found = findUp.sync('.git', { cwd, type: 'file' })\n if (!found) return undefined\n\n const projectRoot = getGitProjectRoot(found)\n if (!projectRoot) return undefined\n\n return {\n worktreeRoot: dirname(found),\n mainRepoRoot: projectRoot,\n isChild: dirname(found).startsWith(projectRoot),\n }\n}\n\nexport function listLinkedWorktreeRoots(mainRepoRoot: string): string[] {\n const worktreesDir = join(mainRepoRoot, '.git', 'worktrees')\n let names: string[]\n try {\n names = readdirSync(worktreesDir)\n } catch {\n return []\n }\n\n const roots: string[] = []\n for (const name of names) {\n try {\n const gitdir = readFileSync(\n join(worktreesDir, name, 'gitdir'),\n 'utf8'\n ).trim()\n if (gitdir) roots.push(dirname(gitdir))\n } catch {}\n }\n return roots\n}\n"],"names":["getGitWorktreeInfo","listLinkedWorktreeRoots","getGitProjectRoot","dotGitFile","gitWorktreePath","readFileSync","match","undefined","dirname","resolve","cwd","found","findUp","sync","type","projectRoot","worktreeRoot","mainRepoRoot","isChild","startsWith","worktreesDir","join","names","readdirSync","roots","name","gitdir","trim","push"],"mappings":";;;;;;;;;;;;;;;IAwBgBA,kBAAkB;eAAlBA;;IAcAC,uBAAuB;eAAvBA;;;oBAtC0B;sBACH;+DACpB;;;;;;AAEnB,SAASC,kBAAkBC,UAAkB;IAC3C,IAAI;QACF,MAAMC,kBAAkBC,IAAAA,gBAAY,EAACF,YAAY,QAAQG,KAAK,CAC5D;QAEF,IAAI,CAACF,iBAAiB,OAAOG;QAC7B,qDAAqD;QACrD,+CAA+C;QAC/C,OAAOC,IAAAA,aAAO,EAACA,IAAAA,aAAO,EAACA,IAAAA,aAAO,EAACC,IAAAA,aAAO,EAACN,YAAYC,eAAe,CAAC,EAAE;IACvE,EAAE,OAAM;QACN,OAAOG;IACT;AACF;AAQO,SAASP,mBAAmBU,GAAW;IAC5C,MAAMC,QAAQC,eAAM,CAACC,IAAI,CAAC,QAAQ;QAAEH;QAAKI,MAAM;IAAO;IACtD,IAAI,CAACH,OAAO,OAAOJ;IAEnB,MAAMQ,cAAcb,kBAAkBS;IACtC,IAAI,CAACI,aAAa,OAAOR;IAEzB,OAAO;QACLS,cAAcR,IAAAA,aAAO,EAACG;QACtBM,cAAcF;QACdG,SAASV,IAAAA,aAAO,EAACG,OAAOQ,UAAU,CAACJ;IACrC;AACF;AAEO,SAASd,wBAAwBgB,YAAoB;IAC1D,MAAMG,eAAeC,IAAAA,UAAI,EAACJ,cAAc,QAAQ;IAChD,IAAIK;IACJ,IAAI;QACFA,QAAQC,IAAAA,eAAW,EAACH;IACtB,EAAE,OAAM;QACN,OAAO,EAAE;IACX;IAEA,MAAMI,QAAkB,EAAE;IAC1B,KAAK,MAAMC,QAAQH,MAAO;QACxB,IAAI;YACF,MAAMI,SAASrB,IAAAA,gBAAY,EACzBgB,IAAAA,UAAI,EAACD,cAAcK,MAAM,WACzB,QACAE,IAAI;YACN,IAAID,QAAQF,MAAMI,IAAI,CAACpB,IAAAA,aAAO,EAACkB;QACjC,EAAE,OAAM,CAAC;IACX;IACA,OAAOF;AACT","ignoreList":[0]} |
| export declare function seedTurbopackCacheIfNeeded({ projectDir, distDir, }: { | ||
| projectDir: string; | ||
| distDir: string; | ||
| }): void; |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { | ||
| value: true | ||
| }); | ||
| Object.defineProperty(exports, "seedTurbopackCacheIfNeeded", { | ||
| enumerable: true, | ||
| get: function() { | ||
| return seedTurbopackCacheIfNeeded; | ||
| } | ||
| }); | ||
| const _fs = /*#__PURE__*/ _interop_require_default(require("fs")); | ||
| const _path = /*#__PURE__*/ _interop_require_default(require("path")); | ||
| const _log = /*#__PURE__*/ _interop_require_wildcard(require("../build/output/log")); | ||
| const _swc = require("../build/swc"); | ||
| const _gitworktree = require("./git-worktree"); | ||
| function _interop_require_default(obj) { | ||
| return obj && obj.__esModule ? obj : { | ||
| default: obj | ||
| }; | ||
| } | ||
| function _getRequireWildcardCache(nodeInterop) { | ||
| if (typeof WeakMap !== "function") return null; | ||
| var cacheBabelInterop = new WeakMap(); | ||
| var cacheNodeInterop = new WeakMap(); | ||
| return (_getRequireWildcardCache = function(nodeInterop) { | ||
| return nodeInterop ? cacheNodeInterop : cacheBabelInterop; | ||
| })(nodeInterop); | ||
| } | ||
| function _interop_require_wildcard(obj, nodeInterop) { | ||
| if (!nodeInterop && obj && obj.__esModule) { | ||
| return obj; | ||
| } | ||
| if (obj === null || typeof obj !== "object" && typeof obj !== "function") { | ||
| return { | ||
| default: obj | ||
| }; | ||
| } | ||
| var cache = _getRequireWildcardCache(nodeInterop); | ||
| if (cache && cache.has(obj)) { | ||
| return cache.get(obj); | ||
| } | ||
| var newObj = { | ||
| __proto__: null | ||
| }; | ||
| var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; | ||
| for(var key in obj){ | ||
| if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { | ||
| var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; | ||
| if (desc && (desc.get || desc.set)) { | ||
| Object.defineProperty(newObj, key, desc); | ||
| } else { | ||
| newObj[key] = obj[key]; | ||
| } | ||
| } | ||
| } | ||
| newObj.default = obj; | ||
| if (cache) { | ||
| cache.set(obj, newObj); | ||
| } | ||
| return newObj; | ||
| } | ||
| function seedTurbopackCacheIfNeeded({ projectDir, distDir }) { | ||
| // This gets the version assuming that nothing is dirty. | ||
| // If things are dirty, turbopack would write things | ||
| // in a different location. There are other circumstances | ||
| // as well. This only matters for people developing turbopack | ||
| // see handle_db_versioning in turbotask backend for more details. | ||
| const version = (0, _swc.getTurbopackCacheVersion)(); | ||
| if (!version) return; | ||
| const worktreeInfo = (0, _gitworktree.getGitWorktreeInfo)(projectDir); | ||
| if (!worktreeInfo) return; | ||
| const cacheDir = _path.default.join(distDir, 'cache', 'turbopack'); | ||
| const targetVersionDir = _path.default.join(cacheDir, version); | ||
| if (dirHasEntries(targetVersionDir)) return; | ||
| let sourceVersionDir; | ||
| try { | ||
| sourceVersionDir = findSeedSource(worktreeInfo, projectDir, distDir, version); | ||
| } catch { | ||
| return; | ||
| } | ||
| if (!sourceVersionDir) return; | ||
| const tmpDir = `${targetVersionDir}.seeding`; | ||
| // Making sure we don't copy partial data if process interrupted | ||
| // There is a potential race condition here | ||
| // if someone wrote to the cache while we were seeding it | ||
| // but with the immutable design and all that, I'm not super worried | ||
| try { | ||
| _fs.default.mkdirSync(cacheDir, { | ||
| recursive: true | ||
| }); | ||
| _fs.default.rmSync(tmpDir, { | ||
| recursive: true, | ||
| force: true | ||
| }); | ||
| seedCacheDir(sourceVersionDir, tmpDir); | ||
| _fs.default.renameSync(tmpDir, targetVersionDir); | ||
| _log.info(`Seeded Turbopack cache from ${sourceVersionDir}.`); | ||
| } catch { | ||
| _fs.default.rmSync(tmpDir, { | ||
| recursive: true, | ||
| force: true | ||
| }); | ||
| _log.warn(`Failed to seed Turbopack cache from ${sourceVersionDir} to ${targetVersionDir}.`); | ||
| } | ||
| } | ||
| function findSeedSource(worktreeInfo, projectDir, distDir, version) { | ||
| const projectRelToWorktree = _path.default.relative(worktreeInfo.worktreeRoot, projectDir); | ||
| const distRelToProject = _path.default.relative(projectDir, distDir); | ||
| const currentWorktree = _path.default.resolve(worktreeInfo.worktreeRoot); | ||
| // We are going to find the best candidate worktree | ||
| // based on the newest mtime of the CURRENT file in the cache directory. | ||
| // We only look at our version | ||
| let best; | ||
| for (const root of [ | ||
| worktreeInfo.mainRepoRoot, | ||
| ...(0, _gitworktree.listLinkedWorktreeRoots)(worktreeInfo.mainRepoRoot) | ||
| ]){ | ||
| if (_path.default.resolve(root) === currentWorktree) continue; | ||
| const versionDir = _path.default.join(root, projectRelToWorktree, distRelToProject, 'cache', 'turbopack', version); | ||
| const mtimeMs = currentMtimeMs(versionDir); | ||
| if (mtimeMs === undefined) continue; | ||
| if (!best || mtimeMs > best.mtimeMs) { | ||
| best = { | ||
| versionDir, | ||
| mtimeMs | ||
| }; | ||
| } | ||
| } | ||
| return best == null ? void 0 : best.versionDir; | ||
| } | ||
| function currentMtimeMs(versionDir) { | ||
| try { | ||
| return _fs.default.statSync(_path.default.join(versionDir, 'CURRENT')).mtimeMs; | ||
| } catch { | ||
| return undefined; | ||
| } | ||
| } | ||
| function dirHasEntries(dir) { | ||
| try { | ||
| return _fs.default.readdirSync(dir).length > 0; | ||
| } catch { | ||
| return false; | ||
| } | ||
| } | ||
| const IMMUTABLE_CACHE_FILE = /\.(sst|blob|meta|del)$/; | ||
| function seedCacheDir(src, dst) { | ||
| const stat = _fs.default.lstatSync(src); | ||
| if (stat.isDirectory()) { | ||
| _fs.default.mkdirSync(dst, { | ||
| recursive: true | ||
| }); | ||
| for (const name of _fs.default.readdirSync(src)){ | ||
| seedCacheDir(_path.default.join(src, name), _path.default.join(dst, name)); | ||
| } | ||
| } else if (IMMUTABLE_CACHE_FILE.test(src)) { | ||
| _fs.default.linkSync(src, dst); | ||
| } else { | ||
| // Mutable/unknown (CURRENT, LOG, …) - copy so it gets its own inode. | ||
| _fs.default.copyFileSync(src, dst); | ||
| } | ||
| } | ||
| //# sourceMappingURL=turbopack-cache-seed.js.map |
| {"version":3,"sources":["../../src/lib/turbopack-cache-seed.ts"],"sourcesContent":["import fs from 'fs'\nimport path from 'path'\nimport * as Log from '../build/output/log'\nimport { getTurbopackCacheVersion } from '../build/swc'\nimport {\n getGitWorktreeInfo,\n listLinkedWorktreeRoots,\n type GitWorktreeInfo,\n} from './git-worktree'\n\nexport function seedTurbopackCacheIfNeeded({\n projectDir,\n distDir,\n}: {\n projectDir: string\n distDir: string\n}): void {\n // This gets the version assuming that nothing is dirty.\n // If things are dirty, turbopack would write things\n // in a different location. There are other circumstances\n // as well. This only matters for people developing turbopack\n // see handle_db_versioning in turbotask backend for more details.\n const version = getTurbopackCacheVersion()\n if (!version) return\n\n const worktreeInfo = getGitWorktreeInfo(projectDir)\n if (!worktreeInfo) return\n\n const cacheDir = path.join(distDir, 'cache', 'turbopack')\n const targetVersionDir = path.join(cacheDir, version)\n if (dirHasEntries(targetVersionDir)) return\n\n let sourceVersionDir: string | undefined\n try {\n sourceVersionDir = findSeedSource(\n worktreeInfo,\n projectDir,\n distDir,\n version\n )\n } catch {\n return\n }\n if (!sourceVersionDir) return\n\n const tmpDir = `${targetVersionDir}.seeding`\n // Making sure we don't copy partial data if process interrupted\n // There is a potential race condition here\n // if someone wrote to the cache while we were seeding it\n // but with the immutable design and all that, I'm not super worried\n try {\n fs.mkdirSync(cacheDir, { recursive: true })\n fs.rmSync(tmpDir, { recursive: true, force: true })\n seedCacheDir(sourceVersionDir, tmpDir)\n fs.renameSync(tmpDir, targetVersionDir)\n Log.info(`Seeded Turbopack cache from ${sourceVersionDir}.`)\n } catch {\n fs.rmSync(tmpDir, { recursive: true, force: true })\n Log.warn(\n `Failed to seed Turbopack cache from ${sourceVersionDir} to ${targetVersionDir}.`\n )\n }\n}\n\nfunction findSeedSource(\n worktreeInfo: GitWorktreeInfo,\n projectDir: string,\n distDir: string,\n version: string\n): string | undefined {\n const projectRelToWorktree = path.relative(\n worktreeInfo.worktreeRoot,\n projectDir\n )\n const distRelToProject = path.relative(projectDir, distDir)\n const currentWorktree = path.resolve(worktreeInfo.worktreeRoot)\n\n // We are going to find the best candidate worktree\n // based on the newest mtime of the CURRENT file in the cache directory.\n // We only look at our version\n\n let best: { versionDir: string; mtimeMs: number } | undefined\n for (const root of [\n worktreeInfo.mainRepoRoot,\n ...listLinkedWorktreeRoots(worktreeInfo.mainRepoRoot),\n ]) {\n if (path.resolve(root) === currentWorktree) continue\n const versionDir = path.join(\n root,\n projectRelToWorktree,\n distRelToProject,\n 'cache',\n 'turbopack',\n version\n )\n const mtimeMs = currentMtimeMs(versionDir)\n if (mtimeMs === undefined) continue\n if (!best || mtimeMs > best.mtimeMs) {\n best = { versionDir, mtimeMs }\n }\n }\n return best?.versionDir\n}\n\nfunction currentMtimeMs(versionDir: string): number | undefined {\n try {\n return fs.statSync(path.join(versionDir, 'CURRENT')).mtimeMs\n } catch {\n return undefined\n }\n}\n\nfunction dirHasEntries(dir: string): boolean {\n try {\n return fs.readdirSync(dir).length > 0\n } catch {\n return false\n }\n}\n\nconst IMMUTABLE_CACHE_FILE = /\\.(sst|blob|meta|del)$/\n\nfunction seedCacheDir(src: string, dst: string): void {\n const stat = fs.lstatSync(src)\n if (stat.isDirectory()) {\n fs.mkdirSync(dst, { recursive: true })\n for (const name of fs.readdirSync(src)) {\n seedCacheDir(path.join(src, name), path.join(dst, name))\n }\n } else if (IMMUTABLE_CACHE_FILE.test(src)) {\n fs.linkSync(src, dst)\n } else {\n // Mutable/unknown (CURRENT, LOG, …) - copy so it gets its own inode.\n fs.copyFileSync(src, dst)\n }\n}\n"],"names":["seedTurbopackCacheIfNeeded","projectDir","distDir","version","getTurbopackCacheVersion","worktreeInfo","getGitWorktreeInfo","cacheDir","path","join","targetVersionDir","dirHasEntries","sourceVersionDir","findSeedSource","tmpDir","fs","mkdirSync","recursive","rmSync","force","seedCacheDir","renameSync","Log","info","warn","projectRelToWorktree","relative","worktreeRoot","distRelToProject","currentWorktree","resolve","best","root","mainRepoRoot","listLinkedWorktreeRoots","versionDir","mtimeMs","currentMtimeMs","undefined","statSync","dir","readdirSync","length","IMMUTABLE_CACHE_FILE","src","dst","stat","lstatSync","isDirectory","name","test","linkSync","copyFileSync"],"mappings":"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","ignoreList":[0]} |
@@ -546,2 +546,3 @@ // Manual additions to make the generated types below work. | ||
| } | ||
| export declare function turbopackCacheVersion(nextVersion: string): string | ||
| /** | ||
@@ -548,0 +549,0 @@ * Turbopack's memory eviction strategy for the persistent cache, mirroring the |
@@ -39,2 +39,3 @@ import { type DefineEnvOptions } from '../define-env'; | ||
| }; | ||
| export declare function getTurbopackCacheVersion(): string | undefined; | ||
| /** | ||
@@ -41,0 +42,0 @@ * Initialize trace subscriber to emit traces. |
@@ -12,2 +12,3 @@ "use strict"; | ||
| getSupportedArchTriples: null, | ||
| getTurbopackCacheVersion: null, | ||
| initCustomTraceSubscriber: null, | ||
@@ -49,2 +50,5 @@ isReactCompilerRequired: null, | ||
| }, | ||
| getTurbopackCacheVersion: function() { | ||
| return getTurbopackCacheVersion; | ||
| }, | ||
| initCustomTraceSubscriber: function() { | ||
@@ -140,3 +144,3 @@ return initCustomTraceSubscriber; | ||
| }({}); | ||
| const nextVersion = "16.3.0-canary.102"; | ||
| const nextVersion = "16.3.0-canary.103"; | ||
| const ArchName = (0, _os.arch)(); | ||
@@ -1047,2 +1051,5 @@ const PlatformName = (0, _os.platform)(); | ||
| }, | ||
| turbopackCacheVersion () { | ||
| return undefined; | ||
| }, | ||
| turbo: { | ||
@@ -1254,2 +1261,3 @@ createProject (_options, _turboEngineOptions, _callbacks) { | ||
| getTargetTriple: bindings.getTargetTriple, | ||
| turbopackCacheVersion: bindings.turbopackCacheVersion, | ||
| initCustomTraceSubscriber: bindings.initCustomTraceSubscriber, | ||
@@ -1369,2 +1377,6 @@ teardownTraceSubscriber: bindings.teardownTraceSubscriber, | ||
| } | ||
| function getTurbopackCacheVersion() { | ||
| var _loadedBindings_turbopackCacheVersion; | ||
| return loadedBindings == null ? void 0 : (_loadedBindings_turbopackCacheVersion = loadedBindings.turbopackCacheVersion) == null ? void 0 : _loadedBindings_turbopackCacheVersion.call(loadedBindings, nextVersion); | ||
| } | ||
| function initCustomTraceSubscriber(traceFileName) { | ||
@@ -1371,0 +1383,0 @@ if (!swcTraceFlushGuard) { |
@@ -31,2 +31,3 @@ import type { NextConfigComplete } from '../../server/config-shared'; | ||
| getTargetTriple(): string | undefined; | ||
| turbopackCacheVersion(nextVersion: string): string | undefined; | ||
| initCustomTraceSubscriber?(traceOutFilePath?: string): ExternalObject<RefCell>; | ||
@@ -33,0 +34,0 @@ teardownTraceSubscriber?(guardExternal: ExternalObject<RefCell>): void; |
@@ -96,3 +96,3 @@ "use strict"; | ||
| isPersistentCachingEnabled: persistentCaching, | ||
| nextVersion: "16.3.0-canary.102" | ||
| nextVersion: "16.3.0-canary.103" | ||
| }, { | ||
@@ -99,0 +99,0 @@ turbopackMemoryEviction: config.experimental.turbopackMemoryEvictionMode, |
@@ -31,2 +31,3 @@ // Import cpu-profile first to start profiling early if enabled | ||
| const _turbopackwarning = require("../../lib/turbopack-warning"); | ||
| const _turbopackcacheseed = require("../../lib/turbopack-cache-seed"); | ||
| const _buildcontext = require("../build-context"); | ||
@@ -119,4 +120,10 @@ const _swc = require("../swc"); | ||
| deferredEntries: config.experimental.deferredEntries, | ||
| nextVersion: "16.3.0-canary.102" | ||
| nextVersion: "16.3.0-canary.103" | ||
| }; | ||
| if (config.experimental.turbopackSeedCacheFromWorktree) { | ||
| (0, _turbopackcacheseed.seedTurbopackCacheIfNeeded)({ | ||
| projectDir: dir, | ||
| distDir | ||
| }); | ||
| } | ||
| const sharedTurboOptions = { | ||
@@ -123,0 +130,0 @@ turbopackMemoryEviction: config.experimental.turbopackMemoryEvictionMode, |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../../../src/build/turbopack-build/impl.ts"],"sourcesContent":["// Import cpu-profile first to start profiling early if enabled\nimport { saveCpuProfile } from '../../server/lib/cpu-profile'\nimport path from 'path'\nimport { validateTurboNextConfig } from '../../lib/turbopack-warning'\nimport { NextBuildContext } from '../build-context'\nimport { createDefineEnv, getBindingsSync } from '../swc'\nimport { installBindings } from '../swc/install-bindings'\nimport {\n handleRouteType,\n rawEntrypointsToEntrypoints,\n} from '../handle-entrypoints'\nimport { TurbopackManifestLoader } from '../../shared/lib/turbopack/manifest-loader'\nimport { promises as fs } from 'fs'\nimport { PHASE_PRODUCTION_BUILD } from '../../shared/lib/constants'\nimport loadConfig from '../../server/config'\nimport { hasCustomExportOutput } from '../../export/utils'\nimport { Telemetry } from '../../telemetry/storage'\nimport { eventBuildFeatureUsageFromTurbopack } from '../../telemetry/events/build'\nimport {\n setGlobal,\n trace,\n initializeTraceState,\n getTraceEvents,\n} from '../../trace'\nimport type { TraceState } from '../../trace'\nimport { isCI } from '../../server/ci-info'\nimport { backgroundLogCompilationEvents } from '../../shared/lib/turbopack/compilation-events'\nimport { getSupportedBrowsers } from '../get-supported-browsers'\nimport { printBuildErrors } from '../print-build-errors'\nimport { normalizePath } from '../../lib/normalize-path'\nimport type {\n ProjectOptions,\n RawEntrypoints,\n TurbopackResult,\n} from '../swc/types'\nimport { Bundler } from '../../lib/bundler'\n\nexport async function turbopackBuild(telemetry: Telemetry): Promise<{\n duration: number\n buildTraceContext: undefined\n shutdownPromise: Promise<void>\n warnings: string[]\n}> {\n await validateTurboNextConfig({\n dir: NextBuildContext.dir!,\n configPhase: PHASE_PRODUCTION_BUILD,\n })\n\n const config = NextBuildContext.config!\n const dir = NextBuildContext.dir!\n const distDir = NextBuildContext.distDir!\n const buildId = NextBuildContext.buildId!\n const encryptionKey = NextBuildContext.encryptionKey!\n const previewProps = NextBuildContext.previewProps!\n const hasRewrites = NextBuildContext.hasRewrites!\n const rewrites = NextBuildContext.rewrites!\n const noMangling = NextBuildContext.noMangling!\n const currentNodeJsVersion = process.versions.node\n\n const startTime = process.hrtime()\n const bindings = getBindingsSync() // our caller should have already loaded these\n\n if (bindings.isWasm) {\n throw new Error(\n `Turbopack is not supported on this platform (${process.platform}/${process.arch}) because native bindings are not available. ` +\n `Only WebAssembly (WASM) bindings were loaded, and Turbopack requires native bindings.\\n\\n` +\n `To build on this platform, use Webpack instead:\\n` +\n ` next build --webpack\\n\\n` +\n `For more information, see: https://nextjs.org/docs/app/api-reference/turbopack#supported-platforms`\n )\n }\n\n const dev = false\n\n const supportedBrowsers = getSupportedBrowsers(dir, dev)\n\n const hasDeferredEntries =\n (config.experimental.deferredEntries?.length ?? 0) > 0\n\n const persistentCaching =\n config.experimental?.turbopackFileSystemCacheForBuild || false\n const rootPath = config.turbopack?.root || config.outputFileTracingRoot || dir\n\n // Shared options for createProject calls\n const sharedProjectOptions: Omit<ProjectOptions, 'debugBuildPaths'> = {\n rootPath,\n projectPath: normalizePath(path.relative(rootPath, dir) || '.'),\n distDir,\n nextConfig: config,\n watch: {\n enable: false,\n },\n dev,\n env: process.env as Record<string, string>,\n defineEnv: createDefineEnv({\n isTurbopack: true,\n clientRouterFilters: NextBuildContext.clientRouterFilters!,\n config,\n dev,\n distDir,\n projectPath: dir,\n fetchCacheKeyPrefix: config.experimental.fetchCacheKeyPrefix,\n hasRewrites,\n // Implemented separately in Turbopack, doesn't have to be passed here.\n middlewareMatchers: undefined,\n rewrites,\n }),\n buildId,\n encryptionKey,\n previewProps,\n browserslistQuery: supportedBrowsers.join(', '),\n noMangling,\n writeRoutesHashesManifest:\n !!process.env.NEXT_TURBOPACK_WRITE_ROUTES_HASHES_MANIFEST,\n currentNodeJsVersion,\n isPersistentCachingEnabled: persistentCaching,\n deferredEntries: config.experimental.deferredEntries,\n nextVersion: process.env.__NEXT_VERSION as string,\n }\n\n const sharedTurboOptions = {\n turbopackMemoryEviction: config.experimental.turbopackMemoryEvictionMode,\n dependencyTracking: persistentCaching || hasDeferredEntries,\n isCi: isCI,\n isShortSession: true,\n skipCompaction: process.env.NEXT_USE_POST_BUILD === '1',\n }\n\n const sriEnabled = Boolean(config.experimental.sri?.algorithm)\n\n const project = await bindings.turbo.createProject(\n {\n ...sharedProjectOptions,\n debugBuildPaths: NextBuildContext.debugBuildPaths,\n },\n sharedTurboOptions,\n hasDeferredEntries && config.experimental.onBeforeDeferredEntries\n ? {\n onBeforeDeferredEntries: async () => {\n const workerConfig = await loadConfig(PHASE_PRODUCTION_BUILD, dir, {\n debugPrerender: NextBuildContext.debugPrerender,\n reactProductionProfiling:\n NextBuildContext.reactProductionProfiling,\n bundler: Bundler.Turbopack,\n })\n\n await workerConfig.experimental.onBeforeDeferredEntries?.()\n },\n }\n : undefined\n )\n const buildEventsSpan = trace('turbopack-build-events')\n // Stop immediately: this span is only used as a parent for\n // manualTraceChild calls which carry their own timestamps.\n buildEventsSpan.stop()\n const shutdownController = new AbortController()\n const compilationEvents = backgroundLogCompilationEvents(project, {\n parentSpan: buildEventsSpan,\n signal: shutdownController.signal,\n })\n\n try {\n // Write an empty file in a known location to signal this was built with Turbopack\n await fs.writeFile(path.join(distDir, 'turbopack'), '')\n\n await fs.mkdir(path.join(distDir, 'server'), { recursive: true })\n await fs.mkdir(path.join(distDir, 'static', buildId), {\n recursive: true,\n })\n await fs.writeFile(\n path.join(distDir, 'package.json'),\n '{\"type\": \"commonjs\"}'\n )\n\n let appDirOnly = NextBuildContext.appDirOnly!\n\n const entrypoints = await project.writeAllEntrypointsToDisk(appDirOnly)\n // Defer warnings so the caller can print them after static generation,\n // keeping SSG errors more prominent than compile warnings.\n const { warnings } = printBuildErrors(entrypoints, dev, {\n deferWarnings: true,\n })\n\n // Skip when telemetry is fully off — featureUsage() isn't free.\n if (telemetry.isEnabled || process.env.NEXT_TELEMETRY_DEBUG) {\n try {\n const featureUsage = await project.featureUsage()\n const events = eventBuildFeatureUsageFromTurbopack(featureUsage)\n if (events.length > 0) {\n telemetry.record(events)\n }\n } catch (err) {\n // Telemetry must never break a build.\n console.warn('Failed to record Turbopack feature telemetry:', err)\n }\n }\n\n const routes = entrypoints.routes\n if (!routes) {\n // This should never ever happen, there should be an error issue, or the bindings call should\n // have thrown.\n throw new Error(`Turbopack build failed`)\n }\n\n const hasPagesEntries = Array.from(routes.values()).some((route) => {\n if (route.type === 'page' || route.type === 'page-api') {\n return true\n }\n return false\n })\n // If there's no pages entries, then we are in app-dir-only mode\n if (!hasPagesEntries) {\n appDirOnly = true\n }\n\n const manifestLoader = new TurbopackManifestLoader({\n buildId,\n distDir,\n encryptionKey,\n dev: false,\n sriEnabled,\n })\n\n const currentEntrypoints = await rawEntrypointsToEntrypoints(\n entrypoints as TurbopackResult<RawEntrypoints>\n )\n\n const promises: Promise<void>[] = []\n\n if (!appDirOnly) {\n for (const [page, route] of currentEntrypoints.page) {\n promises.push(\n handleRouteType({\n page,\n route,\n manifestLoader,\n })\n )\n }\n }\n\n for (const [page, route] of currentEntrypoints.app) {\n promises.push(\n handleRouteType({\n page,\n route,\n manifestLoader,\n })\n )\n }\n\n await Promise.all(promises)\n\n await Promise.all([\n // Only load pages router manifests if not app-only\n ...(!appDirOnly\n ? [\n manifestLoader.loadBuildManifest('_app'),\n manifestLoader.loadPagesManifest('_app'),\n manifestLoader.loadFontManifest('_app'),\n manifestLoader.loadPagesManifest('_document'),\n manifestLoader.loadClientBuildManifest('_error'),\n manifestLoader.loadBuildManifest('_error'),\n manifestLoader.loadPagesManifest('_error'),\n manifestLoader.loadFontManifest('_error'),\n ]\n : []),\n entrypoints.instrumentation &&\n manifestLoader.loadMiddlewareManifest(\n 'instrumentation',\n 'instrumentation'\n ),\n entrypoints.middleware &&\n (await manifestLoader.loadMiddlewareManifest(\n 'middleware',\n 'middleware'\n )),\n ])\n\n manifestLoader.writeManifests({\n devRewrites: undefined,\n productionRewrites: rewrites,\n entrypoints: currentEntrypoints,\n })\n\n if (NextBuildContext.analyze) {\n await project.writeAnalyzeData(appDirOnly)\n }\n\n // Shutdown may trigger final compilation events (e.g. persistence,\n // compaction trace spans). This is the last chance to capture them.\n // After shutdown resolves we abort the signal to close the iterator\n // and drain any remaining buffered events.\n const shutdownPromise = project.shutdown().then(() => {\n shutdownController.abort()\n return compilationEvents.catch(() => {})\n })\n\n const time = process.hrtime(startTime)\n return {\n duration: time[0] + time[1] / 1e9,\n buildTraceContext: undefined,\n shutdownPromise,\n warnings,\n }\n } catch (err) {\n await project.shutdown()\n shutdownController.abort()\n await compilationEvents.catch(() => {})\n throw err\n }\n}\n\nlet shutdownPromise: Promise<void> | undefined\nexport async function workerMain(workerData: {\n buildContext: typeof NextBuildContext\n traceState: TraceState & { shouldSaveTraceEvents: boolean }\n}): Promise<\n Omit<Awaited<ReturnType<typeof turbopackBuild>>, 'shutdownPromise'>\n> {\n // setup new build context from the serialized data passed from the parent\n Object.assign(NextBuildContext, workerData.buildContext)\n initializeTraceState(workerData.traceState)\n\n /// load the config because it's not serializable\n const config = await loadConfig(\n PHASE_PRODUCTION_BUILD,\n NextBuildContext.dir!,\n {\n debugPrerender: NextBuildContext.debugPrerender,\n reactProductionProfiling: NextBuildContext.reactProductionProfiling,\n bundler: Bundler.Turbopack,\n }\n )\n NextBuildContext.config = config\n // Matches handling in build/index.ts\n // https://github.com/vercel/next.js/blob/84f347fc86f4efc4ec9f13615c215e4b9fb6f8f0/packages/next/src/build/index.ts#L815-L818\n // Ensures the `config.distDir` option is matched.\n if (hasCustomExportOutput(NextBuildContext.config)) {\n NextBuildContext.config.distDir = '.next'\n }\n\n // Clone the telemetry for worker\n const telemetry = new Telemetry({\n distDir: NextBuildContext.config.distDir,\n })\n setGlobal('telemetry', telemetry)\n // Install bindings early so we can access synchronously later\n await installBindings(config.experimental?.useWasmBinary)\n\n try {\n const {\n shutdownPromise: resultShutdownPromise,\n buildTraceContext,\n duration,\n warnings,\n } = await turbopackBuild(telemetry)\n shutdownPromise = resultShutdownPromise\n return {\n buildTraceContext,\n duration,\n warnings,\n }\n } finally {\n // Always flush telemetry before worker exits (waits for async operations like setTimeout in debug mode)\n await telemetry.flush()\n // Save CPU profile before worker exits\n await saveCpuProfile()\n }\n}\n\nexport async function waitForShutdown(): Promise<{\n debugTraceEvents?: ReturnType<typeof getTraceEvents>\n}> {\n if (shutdownPromise) {\n await shutdownPromise\n }\n // Collect trace events after shutdown completes so that all compilation\n // events (e.g. persistence trace spans) have been processed.\n return { debugTraceEvents: getTraceEvents() }\n}\n"],"names":["turbopackBuild","waitForShutdown","workerMain","telemetry","config","validateTurboNextConfig","dir","NextBuildContext","configPhase","PHASE_PRODUCTION_BUILD","distDir","buildId","encryptionKey","previewProps","hasRewrites","rewrites","noMangling","currentNodeJsVersion","process","versions","node","startTime","hrtime","bindings","getBindingsSync","isWasm","Error","platform","arch","dev","supportedBrowsers","getSupportedBrowsers","hasDeferredEntries","experimental","deferredEntries","length","persistentCaching","turbopackFileSystemCacheForBuild","rootPath","turbopack","root","outputFileTracingRoot","sharedProjectOptions","projectPath","normalizePath","path","relative","nextConfig","watch","enable","env","defineEnv","createDefineEnv","isTurbopack","clientRouterFilters","fetchCacheKeyPrefix","middlewareMatchers","undefined","browserslistQuery","join","writeRoutesHashesManifest","NEXT_TURBOPACK_WRITE_ROUTES_HASHES_MANIFEST","isPersistentCachingEnabled","nextVersion","__NEXT_VERSION","sharedTurboOptions","turbopackMemoryEviction","turbopackMemoryEvictionMode","dependencyTracking","isCi","isCI","isShortSession","skipCompaction","NEXT_USE_POST_BUILD","sriEnabled","Boolean","sri","algorithm","project","turbo","createProject","debugBuildPaths","onBeforeDeferredEntries","workerConfig","loadConfig","debugPrerender","reactProductionProfiling","bundler","Bundler","Turbopack","buildEventsSpan","trace","stop","shutdownController","AbortController","compilationEvents","backgroundLogCompilationEvents","parentSpan","signal","fs","writeFile","mkdir","recursive","appDirOnly","entrypoints","writeAllEntrypointsToDisk","warnings","printBuildErrors","deferWarnings","isEnabled","NEXT_TELEMETRY_DEBUG","featureUsage","events","eventBuildFeatureUsageFromTurbopack","record","err","console","warn","routes","hasPagesEntries","Array","from","values","some","route","type","manifestLoader","TurbopackManifestLoader","currentEntrypoints","rawEntrypointsToEntrypoints","promises","page","push","handleRouteType","app","Promise","all","loadBuildManifest","loadPagesManifest","loadFontManifest","loadClientBuildManifest","instrumentation","loadMiddlewareManifest","middleware","writeManifests","devRewrites","productionRewrites","analyze","writeAnalyzeData","shutdownPromise","shutdown","then","abort","catch","time","duration","buildTraceContext","workerData","Object","assign","buildContext","initializeTraceState","traceState","hasCustomExportOutput","Telemetry","setGlobal","installBindings","useWasmBinary","resultShutdownPromise","flush","saveCpuProfile","debugTraceEvents","getTraceEvents"],"mappings":"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","ignoreList":[0]} | ||
| {"version":3,"sources":["../../../src/build/turbopack-build/impl.ts"],"sourcesContent":["// Import cpu-profile first to start profiling early if enabled\nimport { saveCpuProfile } from '../../server/lib/cpu-profile'\nimport path from 'path'\nimport { validateTurboNextConfig } from '../../lib/turbopack-warning'\nimport { seedTurbopackCacheIfNeeded } from '../../lib/turbopack-cache-seed'\nimport { NextBuildContext } from '../build-context'\nimport { createDefineEnv, getBindingsSync } from '../swc'\nimport { installBindings } from '../swc/install-bindings'\nimport {\n handleRouteType,\n rawEntrypointsToEntrypoints,\n} from '../handle-entrypoints'\nimport { TurbopackManifestLoader } from '../../shared/lib/turbopack/manifest-loader'\nimport { promises as fs } from 'fs'\nimport { PHASE_PRODUCTION_BUILD } from '../../shared/lib/constants'\nimport loadConfig from '../../server/config'\nimport { hasCustomExportOutput } from '../../export/utils'\nimport { Telemetry } from '../../telemetry/storage'\nimport { eventBuildFeatureUsageFromTurbopack } from '../../telemetry/events/build'\nimport {\n setGlobal,\n trace,\n initializeTraceState,\n getTraceEvents,\n} from '../../trace'\nimport type { TraceState } from '../../trace'\nimport { isCI } from '../../server/ci-info'\nimport { backgroundLogCompilationEvents } from '../../shared/lib/turbopack/compilation-events'\nimport { getSupportedBrowsers } from '../get-supported-browsers'\nimport { printBuildErrors } from '../print-build-errors'\nimport { normalizePath } from '../../lib/normalize-path'\nimport type {\n ProjectOptions,\n RawEntrypoints,\n TurbopackResult,\n} from '../swc/types'\nimport { Bundler } from '../../lib/bundler'\n\nexport async function turbopackBuild(telemetry: Telemetry): Promise<{\n duration: number\n buildTraceContext: undefined\n shutdownPromise: Promise<void>\n warnings: string[]\n}> {\n await validateTurboNextConfig({\n dir: NextBuildContext.dir!,\n configPhase: PHASE_PRODUCTION_BUILD,\n })\n\n const config = NextBuildContext.config!\n const dir = NextBuildContext.dir!\n const distDir = NextBuildContext.distDir!\n const buildId = NextBuildContext.buildId!\n const encryptionKey = NextBuildContext.encryptionKey!\n const previewProps = NextBuildContext.previewProps!\n const hasRewrites = NextBuildContext.hasRewrites!\n const rewrites = NextBuildContext.rewrites!\n const noMangling = NextBuildContext.noMangling!\n const currentNodeJsVersion = process.versions.node\n\n const startTime = process.hrtime()\n const bindings = getBindingsSync() // our caller should have already loaded these\n\n if (bindings.isWasm) {\n throw new Error(\n `Turbopack is not supported on this platform (${process.platform}/${process.arch}) because native bindings are not available. ` +\n `Only WebAssembly (WASM) bindings were loaded, and Turbopack requires native bindings.\\n\\n` +\n `To build on this platform, use Webpack instead:\\n` +\n ` next build --webpack\\n\\n` +\n `For more information, see: https://nextjs.org/docs/app/api-reference/turbopack#supported-platforms`\n )\n }\n\n const dev = false\n\n const supportedBrowsers = getSupportedBrowsers(dir, dev)\n\n const hasDeferredEntries =\n (config.experimental.deferredEntries?.length ?? 0) > 0\n\n const persistentCaching =\n config.experimental?.turbopackFileSystemCacheForBuild || false\n const rootPath = config.turbopack?.root || config.outputFileTracingRoot || dir\n\n // Shared options for createProject calls\n const sharedProjectOptions: Omit<ProjectOptions, 'debugBuildPaths'> = {\n rootPath,\n projectPath: normalizePath(path.relative(rootPath, dir) || '.'),\n distDir,\n nextConfig: config,\n watch: {\n enable: false,\n },\n dev,\n env: process.env as Record<string, string>,\n defineEnv: createDefineEnv({\n isTurbopack: true,\n clientRouterFilters: NextBuildContext.clientRouterFilters!,\n config,\n dev,\n distDir,\n projectPath: dir,\n fetchCacheKeyPrefix: config.experimental.fetchCacheKeyPrefix,\n hasRewrites,\n // Implemented separately in Turbopack, doesn't have to be passed here.\n middlewareMatchers: undefined,\n rewrites,\n }),\n buildId,\n encryptionKey,\n previewProps,\n browserslistQuery: supportedBrowsers.join(', '),\n noMangling,\n writeRoutesHashesManifest:\n !!process.env.NEXT_TURBOPACK_WRITE_ROUTES_HASHES_MANIFEST,\n currentNodeJsVersion,\n isPersistentCachingEnabled: persistentCaching,\n deferredEntries: config.experimental.deferredEntries,\n nextVersion: process.env.__NEXT_VERSION as string,\n }\n\n if (config.experimental.turbopackSeedCacheFromWorktree) {\n seedTurbopackCacheIfNeeded({\n projectDir: dir,\n distDir,\n })\n }\n\n const sharedTurboOptions = {\n turbopackMemoryEviction: config.experimental.turbopackMemoryEvictionMode,\n dependencyTracking: persistentCaching || hasDeferredEntries,\n isCi: isCI,\n isShortSession: true,\n skipCompaction: process.env.NEXT_USE_POST_BUILD === '1',\n }\n\n const sriEnabled = Boolean(config.experimental.sri?.algorithm)\n\n const project = await bindings.turbo.createProject(\n {\n ...sharedProjectOptions,\n debugBuildPaths: NextBuildContext.debugBuildPaths,\n },\n sharedTurboOptions,\n hasDeferredEntries && config.experimental.onBeforeDeferredEntries\n ? {\n onBeforeDeferredEntries: async () => {\n const workerConfig = await loadConfig(PHASE_PRODUCTION_BUILD, dir, {\n debugPrerender: NextBuildContext.debugPrerender,\n reactProductionProfiling:\n NextBuildContext.reactProductionProfiling,\n bundler: Bundler.Turbopack,\n })\n\n await workerConfig.experimental.onBeforeDeferredEntries?.()\n },\n }\n : undefined\n )\n const buildEventsSpan = trace('turbopack-build-events')\n // Stop immediately: this span is only used as a parent for\n // manualTraceChild calls which carry their own timestamps.\n buildEventsSpan.stop()\n const shutdownController = new AbortController()\n const compilationEvents = backgroundLogCompilationEvents(project, {\n parentSpan: buildEventsSpan,\n signal: shutdownController.signal,\n })\n\n try {\n // Write an empty file in a known location to signal this was built with Turbopack\n await fs.writeFile(path.join(distDir, 'turbopack'), '')\n\n await fs.mkdir(path.join(distDir, 'server'), { recursive: true })\n await fs.mkdir(path.join(distDir, 'static', buildId), {\n recursive: true,\n })\n await fs.writeFile(\n path.join(distDir, 'package.json'),\n '{\"type\": \"commonjs\"}'\n )\n\n let appDirOnly = NextBuildContext.appDirOnly!\n\n const entrypoints = await project.writeAllEntrypointsToDisk(appDirOnly)\n // Defer warnings so the caller can print them after static generation,\n // keeping SSG errors more prominent than compile warnings.\n const { warnings } = printBuildErrors(entrypoints, dev, {\n deferWarnings: true,\n })\n\n // Skip when telemetry is fully off — featureUsage() isn't free.\n if (telemetry.isEnabled || process.env.NEXT_TELEMETRY_DEBUG) {\n try {\n const featureUsage = await project.featureUsage()\n const events = eventBuildFeatureUsageFromTurbopack(featureUsage)\n if (events.length > 0) {\n telemetry.record(events)\n }\n } catch (err) {\n // Telemetry must never break a build.\n console.warn('Failed to record Turbopack feature telemetry:', err)\n }\n }\n\n const routes = entrypoints.routes\n if (!routes) {\n // This should never ever happen, there should be an error issue, or the bindings call should\n // have thrown.\n throw new Error(`Turbopack build failed`)\n }\n\n const hasPagesEntries = Array.from(routes.values()).some((route) => {\n if (route.type === 'page' || route.type === 'page-api') {\n return true\n }\n return false\n })\n // If there's no pages entries, then we are in app-dir-only mode\n if (!hasPagesEntries) {\n appDirOnly = true\n }\n\n const manifestLoader = new TurbopackManifestLoader({\n buildId,\n distDir,\n encryptionKey,\n dev: false,\n sriEnabled,\n })\n\n const currentEntrypoints = await rawEntrypointsToEntrypoints(\n entrypoints as TurbopackResult<RawEntrypoints>\n )\n\n const promises: Promise<void>[] = []\n\n if (!appDirOnly) {\n for (const [page, route] of currentEntrypoints.page) {\n promises.push(\n handleRouteType({\n page,\n route,\n manifestLoader,\n })\n )\n }\n }\n\n for (const [page, route] of currentEntrypoints.app) {\n promises.push(\n handleRouteType({\n page,\n route,\n manifestLoader,\n })\n )\n }\n\n await Promise.all(promises)\n\n await Promise.all([\n // Only load pages router manifests if not app-only\n ...(!appDirOnly\n ? [\n manifestLoader.loadBuildManifest('_app'),\n manifestLoader.loadPagesManifest('_app'),\n manifestLoader.loadFontManifest('_app'),\n manifestLoader.loadPagesManifest('_document'),\n manifestLoader.loadClientBuildManifest('_error'),\n manifestLoader.loadBuildManifest('_error'),\n manifestLoader.loadPagesManifest('_error'),\n manifestLoader.loadFontManifest('_error'),\n ]\n : []),\n entrypoints.instrumentation &&\n manifestLoader.loadMiddlewareManifest(\n 'instrumentation',\n 'instrumentation'\n ),\n entrypoints.middleware &&\n (await manifestLoader.loadMiddlewareManifest(\n 'middleware',\n 'middleware'\n )),\n ])\n\n manifestLoader.writeManifests({\n devRewrites: undefined,\n productionRewrites: rewrites,\n entrypoints: currentEntrypoints,\n })\n\n if (NextBuildContext.analyze) {\n await project.writeAnalyzeData(appDirOnly)\n }\n\n // Shutdown may trigger final compilation events (e.g. persistence,\n // compaction trace spans). This is the last chance to capture them.\n // After shutdown resolves we abort the signal to close the iterator\n // and drain any remaining buffered events.\n const shutdownPromise = project.shutdown().then(() => {\n shutdownController.abort()\n return compilationEvents.catch(() => {})\n })\n\n const time = process.hrtime(startTime)\n return {\n duration: time[0] + time[1] / 1e9,\n buildTraceContext: undefined,\n shutdownPromise,\n warnings,\n }\n } catch (err) {\n await project.shutdown()\n shutdownController.abort()\n await compilationEvents.catch(() => {})\n throw err\n }\n}\n\nlet shutdownPromise: Promise<void> | undefined\nexport async function workerMain(workerData: {\n buildContext: typeof NextBuildContext\n traceState: TraceState & { shouldSaveTraceEvents: boolean }\n}): Promise<\n Omit<Awaited<ReturnType<typeof turbopackBuild>>, 'shutdownPromise'>\n> {\n // setup new build context from the serialized data passed from the parent\n Object.assign(NextBuildContext, workerData.buildContext)\n initializeTraceState(workerData.traceState)\n\n /// load the config because it's not serializable\n const config = await loadConfig(\n PHASE_PRODUCTION_BUILD,\n NextBuildContext.dir!,\n {\n debugPrerender: NextBuildContext.debugPrerender,\n reactProductionProfiling: NextBuildContext.reactProductionProfiling,\n bundler: Bundler.Turbopack,\n }\n )\n NextBuildContext.config = config\n // Matches handling in build/index.ts\n // https://github.com/vercel/next.js/blob/84f347fc86f4efc4ec9f13615c215e4b9fb6f8f0/packages/next/src/build/index.ts#L815-L818\n // Ensures the `config.distDir` option is matched.\n if (hasCustomExportOutput(NextBuildContext.config)) {\n NextBuildContext.config.distDir = '.next'\n }\n\n // Clone the telemetry for worker\n const telemetry = new Telemetry({\n distDir: NextBuildContext.config.distDir,\n })\n setGlobal('telemetry', telemetry)\n // Install bindings early so we can access synchronously later\n await installBindings(config.experimental?.useWasmBinary)\n\n try {\n const {\n shutdownPromise: resultShutdownPromise,\n buildTraceContext,\n duration,\n warnings,\n } = await turbopackBuild(telemetry)\n shutdownPromise = resultShutdownPromise\n return {\n buildTraceContext,\n duration,\n warnings,\n }\n } finally {\n // Always flush telemetry before worker exits (waits for async operations like setTimeout in debug mode)\n await telemetry.flush()\n // Save CPU profile before worker exits\n await saveCpuProfile()\n }\n}\n\nexport async function waitForShutdown(): Promise<{\n debugTraceEvents?: ReturnType<typeof getTraceEvents>\n}> {\n if (shutdownPromise) {\n await shutdownPromise\n }\n // Collect trace events after shutdown completes so that all compilation\n // events (e.g. persistence trace spans) have been processed.\n return { debugTraceEvents: getTraceEvents() }\n}\n"],"names":["turbopackBuild","waitForShutdown","workerMain","telemetry","config","validateTurboNextConfig","dir","NextBuildContext","configPhase","PHASE_PRODUCTION_BUILD","distDir","buildId","encryptionKey","previewProps","hasRewrites","rewrites","noMangling","currentNodeJsVersion","process","versions","node","startTime","hrtime","bindings","getBindingsSync","isWasm","Error","platform","arch","dev","supportedBrowsers","getSupportedBrowsers","hasDeferredEntries","experimental","deferredEntries","length","persistentCaching","turbopackFileSystemCacheForBuild","rootPath","turbopack","root","outputFileTracingRoot","sharedProjectOptions","projectPath","normalizePath","path","relative","nextConfig","watch","enable","env","defineEnv","createDefineEnv","isTurbopack","clientRouterFilters","fetchCacheKeyPrefix","middlewareMatchers","undefined","browserslistQuery","join","writeRoutesHashesManifest","NEXT_TURBOPACK_WRITE_ROUTES_HASHES_MANIFEST","isPersistentCachingEnabled","nextVersion","__NEXT_VERSION","turbopackSeedCacheFromWorktree","seedTurbopackCacheIfNeeded","projectDir","sharedTurboOptions","turbopackMemoryEviction","turbopackMemoryEvictionMode","dependencyTracking","isCi","isCI","isShortSession","skipCompaction","NEXT_USE_POST_BUILD","sriEnabled","Boolean","sri","algorithm","project","turbo","createProject","debugBuildPaths","onBeforeDeferredEntries","workerConfig","loadConfig","debugPrerender","reactProductionProfiling","bundler","Bundler","Turbopack","buildEventsSpan","trace","stop","shutdownController","AbortController","compilationEvents","backgroundLogCompilationEvents","parentSpan","signal","fs","writeFile","mkdir","recursive","appDirOnly","entrypoints","writeAllEntrypointsToDisk","warnings","printBuildErrors","deferWarnings","isEnabled","NEXT_TELEMETRY_DEBUG","featureUsage","events","eventBuildFeatureUsageFromTurbopack","record","err","console","warn","routes","hasPagesEntries","Array","from","values","some","route","type","manifestLoader","TurbopackManifestLoader","currentEntrypoints","rawEntrypointsToEntrypoints","promises","page","push","handleRouteType","app","Promise","all","loadBuildManifest","loadPagesManifest","loadFontManifest","loadClientBuildManifest","instrumentation","loadMiddlewareManifest","middleware","writeManifests","devRewrites","productionRewrites","analyze","writeAnalyzeData","shutdownPromise","shutdown","then","abort","catch","time","duration","buildTraceContext","workerData","Object","assign","buildContext","initializeTraceState","traceState","hasCustomExportOutput","Telemetry","setGlobal","installBindings","useWasmBinary","resultShutdownPromise","flush","saveCpuProfile","debugTraceEvents","getTraceEvents"],"mappings":"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","ignoreList":[0]} |
@@ -6,5 +6,5 @@ 1:"$Sreact.fragment" | ||
| 7:"$Sreact.suspense" | ||
| 0:{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/0xj4y-ccrlxvx.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"zmUOAehUatBb4JcwKHyWm"} | ||
| 0:{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/0xj4y-ccrlxvx.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"fM3F6siuT83fnU_rkAx12"} | ||
| 4:{} | ||
| 5:"$0:rsc:props:children:0:props:serverProvidedParams:params" | ||
| 8:null |
@@ -12,3 +12,3 @@ 1:"$Sreact.fragment" | ||
| :HL["/_next/static/chunks/0i88bcw_h0tc6.css","style"] | ||
| 0:{"P":null,"c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0i88bcw_h0tc6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06v8vz55f9jqs.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"\n (function() {\n const theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n document.documentElement.classList.toggle('dark', theme === 'dark');\n\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {\n document.documentElement.classList.toggle('dark', e.matches);\n });\n })();\n "}}]}],["$","body",null,{"className":"font-sans antialiased","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":[["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@6","$@7"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/0xj4y-ccrlxvx.js","async":true,"nonce":"$undefined"}]],["$","$L8",null,{"children":["$","$9",null,{"name":"Next.MetadataOutlet","children":"$@a"}]}]]}],{},null,false,null]},null,false,null],["$","$1","h",{"children":[null,["$","$Lb",null,{"children":"$Lc"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$9",null,{"name":"Next.Metadata","children":"$Le"}]}]}],null]}],false]],"m":"$undefined","G":["$f",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0i88bcw_h0tc6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"zmUOAehUatBb4JcwKHyWm"} | ||
| 0:{"P":null,"c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0i88bcw_h0tc6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06v8vz55f9jqs.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"\n (function() {\n const theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n document.documentElement.classList.toggle('dark', theme === 'dark');\n\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {\n document.documentElement.classList.toggle('dark', e.matches);\n });\n })();\n "}}]}],["$","body",null,{"className":"font-sans antialiased","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":[["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@6","$@7"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/0xj4y-ccrlxvx.js","async":true,"nonce":"$undefined"}]],["$","$L8",null,{"children":["$","$9",null,{"name":"Next.MetadataOutlet","children":"$@a"}]}]]}],{},null,false,null]},null,false,null],["$","$1","h",{"children":[null,["$","$Lb",null,{"children":"$Lc"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$9",null,{"name":"Next.Metadata","children":"$Le"}]}]}],null]}],false]],"m":"$undefined","G":["$f",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0i88bcw_h0tc6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"fM3F6siuT83fnU_rkAx12"} | ||
| 6:{} | ||
@@ -15,0 +15,0 @@ 7:"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params" |
@@ -5,2 +5,2 @@ 1:"$Sreact.fragment" | ||
| 4:"$Sreact.suspense" | ||
| 0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Next.js Bundle Analyzer"}],["$","meta","1",{"name":"description","content":"Visualize and analyze your Next.js bundle sizes with interactive treemap and dependency analysis"}]]}]}]}],null]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"zmUOAehUatBb4JcwKHyWm"} | ||
| 0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Next.js Bundle Analyzer"}],["$","meta","1",{"name":"description","content":"Visualize and analyze your Next.js bundle sizes with interactive treemap and dependency analysis"}]]}]}]}],null]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"fM3F6siuT83fnU_rkAx12"} |
@@ -5,2 +5,2 @@ 1:"$Sreact.fragment" | ||
| :HL["/_next/static/chunks/0i88bcw_h0tc6.css","style"] | ||
| 0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0i88bcw_h0tc6.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06v8vz55f9jqs.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"\n (function() {\n const theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n document.documentElement.classList.toggle('dark', theme === 'dark');\n\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {\n document.documentElement.classList.toggle('dark', e.matches);\n });\n })();\n "}}]}],["$","body",null,{"className":"font-sans antialiased","children":["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"zmUOAehUatBb4JcwKHyWm"} | ||
| 0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0i88bcw_h0tc6.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06v8vz55f9jqs.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"\n (function() {\n const theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n document.documentElement.classList.toggle('dark', theme === 'dark');\n\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {\n document.documentElement.classList.toggle('dark', e.matches);\n });\n })();\n "}}]}],["$","body",null,{"className":"font-sans antialiased","children":["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"fM3F6siuT83fnU_rkAx12"} |
| :HL["/_next/static/chunks/0i88bcw_h0tc6.css","style"] | ||
| 0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}},"staleTime":300,"buildId":"zmUOAehUatBb4JcwKHyWm"} | ||
| 0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}},"staleTime":300,"buildId":"fM3F6siuT83fnU_rkAx12"} |
@@ -10,2 +10,2 @@ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/0i88bcw_h0tc6.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/0ixpj6btokq38.js"/><script src="/_next/static/chunks/0ky98glwh1r04.js" async=""></script><script src="/_next/static/chunks/13uv3qze.ya.i.js" async=""></script><script src="/_next/static/chunks/turbopack-12n2sr~p3a16v.js" async=""></script><script src="/_next/static/chunks/06v8vz55f9jqs.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>Next.js Bundle Analyzer</title><meta name="description" content="Visualize and analyze your Next.js bundle sizes with interactive treemap and dependency analysis"/><script> | ||
| })(); | ||
| </script><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body class="font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/0ixpj6btokq38.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[72359,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"default\"]\n3:I[28576,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"default\"]\n4:I[13942,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[13942,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"ViewportBoundary\"]\na:I[13942,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"MetadataBoundary\"]\nc:I[17147,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/0i88bcw_h0tc6.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0i88bcw_h0tc6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/06v8vz55f9jqs.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n (function() {\\n const theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\\n document.documentElement.classList.toggle('dark', theme === 'dark');\\n\\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) =\u003e {\\n document.documentElement.classList.toggle('dark', e.matches);\\n });\\n })();\\n \"}}]}],[\"$\",\"body\",null,{\"className\":\"font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0i88bcw_h0tc6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"zmUOAehUatBb4JcwKHyWm\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[[\"$\",\"title\",\"0\",{\"children\":\"Next.js Bundle Analyzer\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Visualize and analyze your Next.js bundle sizes with interactive treemap and dependency analysis\"}]]\n"])</script></body></html> | ||
| </script><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body class="font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/0ixpj6btokq38.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[72359,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"default\"]\n3:I[28576,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"default\"]\n4:I[13942,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[13942,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"ViewportBoundary\"]\na:I[13942,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"MetadataBoundary\"]\nc:I[17147,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/0i88bcw_h0tc6.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0i88bcw_h0tc6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/06v8vz55f9jqs.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n (function() {\\n const theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\\n document.documentElement.classList.toggle('dark', theme === 'dark');\\n\\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) =\u003e {\\n document.documentElement.classList.toggle('dark', e.matches);\\n });\\n })();\\n \"}}]}],[\"$\",\"body\",null,{\"className\":\"font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0i88bcw_h0tc6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"fM3F6siuT83fnU_rkAx12\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[[\"$\",\"title\",\"0\",{\"children\":\"Next.js Bundle Analyzer\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Visualize and analyze your Next.js bundle sizes with interactive treemap and dependency analysis\"}]]\n"])</script></body></html> |
@@ -10,3 +10,3 @@ 1:"$Sreact.fragment" | ||
| :HL["/_next/static/chunks/0i88bcw_h0tc6.css","style"] | ||
| 0:{"P":null,"c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0i88bcw_h0tc6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06v8vz55f9jqs.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"\n (function() {\n const theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n document.documentElement.classList.toggle('dark', theme === 'dark');\n\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {\n document.documentElement.classList.toggle('dark', e.matches);\n });\n })();\n "}}]}],["$","body",null,{"className":"font-sans antialiased","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"]},null,false,null],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],null]}],false]],"m":"$undefined","G":["$c",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0i88bcw_h0tc6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"zmUOAehUatBb4JcwKHyWm"} | ||
| 0:{"P":null,"c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0i88bcw_h0tc6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06v8vz55f9jqs.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"\n (function() {\n const theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n document.documentElement.classList.toggle('dark', theme === 'dark');\n\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {\n document.documentElement.classList.toggle('dark', e.matches);\n });\n })();\n "}}]}],["$","body",null,{"className":"font-sans antialiased","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"]},null,false,null],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],null]}],false]],"m":"$undefined","G":["$c",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0i88bcw_h0tc6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"fM3F6siuT83fnU_rkAx12"} | ||
| d:[] | ||
@@ -13,0 +13,0 @@ 7:"$Wd" |
@@ -10,3 +10,3 @@ 1:"$Sreact.fragment" | ||
| :HL["/_next/static/chunks/0i88bcw_h0tc6.css","style"] | ||
| 0:{"P":null,"c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0i88bcw_h0tc6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06v8vz55f9jqs.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"\n (function() {\n const theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n document.documentElement.classList.toggle('dark', theme === 'dark');\n\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {\n document.documentElement.classList.toggle('dark', e.matches);\n });\n })();\n "}}]}],["$","body",null,{"className":"font-sans antialiased","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"]},null,false,null],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],null]}],false]],"m":"$undefined","G":["$c",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0i88bcw_h0tc6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"zmUOAehUatBb4JcwKHyWm"} | ||
| 0:{"P":null,"c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0i88bcw_h0tc6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06v8vz55f9jqs.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"\n (function() {\n const theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n document.documentElement.classList.toggle('dark', theme === 'dark');\n\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {\n document.documentElement.classList.toggle('dark', e.matches);\n });\n })();\n "}}]}],["$","body",null,{"className":"font-sans antialiased","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"]},null,false,null],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],null]}],false]],"m":"$undefined","G":["$c",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0i88bcw_h0tc6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"fM3F6siuT83fnU_rkAx12"} | ||
| d:[] | ||
@@ -13,0 +13,0 @@ 7:"$Wd" |
@@ -5,2 +5,2 @@ 1:"$Sreact.fragment" | ||
| 4:"$Sreact.suspense" | ||
| 0:{"rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Next.js Bundle Analyzer"}],["$","meta","1",{"name":"description","content":"Visualize and analyze your Next.js bundle sizes with interactive treemap and dependency analysis"}]]}]}]}],null]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"zmUOAehUatBb4JcwKHyWm"} | ||
| 0:{"rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Next.js Bundle Analyzer"}],["$","meta","1",{"name":"description","content":"Visualize and analyze your Next.js bundle sizes with interactive treemap and dependency analysis"}]]}]}]}],null]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"fM3F6siuT83fnU_rkAx12"} |
@@ -5,2 +5,2 @@ 1:"$Sreact.fragment" | ||
| :HL["/_next/static/chunks/0i88bcw_h0tc6.css","style"] | ||
| 0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0i88bcw_h0tc6.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06v8vz55f9jqs.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"\n (function() {\n const theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n document.documentElement.classList.toggle('dark', theme === 'dark');\n\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {\n document.documentElement.classList.toggle('dark', e.matches);\n });\n })();\n "}}]}],["$","body",null,{"className":"font-sans antialiased","children":["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"zmUOAehUatBb4JcwKHyWm"} | ||
| 0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0i88bcw_h0tc6.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06v8vz55f9jqs.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"\n (function() {\n const theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n document.documentElement.classList.toggle('dark', theme === 'dark');\n\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {\n document.documentElement.classList.toggle('dark', e.matches);\n });\n })();\n "}}]}],["$","body",null,{"className":"font-sans antialiased","children":["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"fM3F6siuT83fnU_rkAx12"} |
| 1:"$Sreact.fragment" | ||
| 2:I[13942,["/_next/static/chunks/06v8vz55f9jqs.js"],"OutletBoundary"] | ||
| 3:"$Sreact.suspense" | ||
| 0:{"rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"zmUOAehUatBb4JcwKHyWm"} | ||
| 0:{"rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"fM3F6siuT83fnU_rkAx12"} | ||
| 4:null |
@@ -5,2 +5,2 @@ 1:"$Sreact.fragment" | ||
| 4:[] | ||
| 0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"zmUOAehUatBb4JcwKHyWm"} | ||
| 0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"fM3F6siuT83fnU_rkAx12"} |
| :HL["/_next/static/chunks/0i88bcw_h0tc6.css","style"] | ||
| 0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"/_not-found","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"zmUOAehUatBb4JcwKHyWm"} | ||
| 0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"/_not-found","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"fM3F6siuT83fnU_rkAx12"} |
@@ -10,2 +10,2 @@ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/0i88bcw_h0tc6.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/0ixpj6btokq38.js"/><script src="/_next/static/chunks/0ky98glwh1r04.js" async=""></script><script src="/_next/static/chunks/13uv3qze.ya.i.js" async=""></script><script src="/_next/static/chunks/turbopack-12n2sr~p3a16v.js" async=""></script><script src="/_next/static/chunks/06v8vz55f9jqs.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>Next.js Bundle Analyzer</title><meta name="description" content="Visualize and analyze your Next.js bundle sizes with interactive treemap and dependency analysis"/><script> | ||
| })(); | ||
| </script><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body class="font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/0ixpj6btokq38.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[72359,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"default\"]\n3:I[28576,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"default\"]\n4:I[13942,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[13942,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"ViewportBoundary\"]\na:I[13942,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"MetadataBoundary\"]\nc:I[17147,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/0i88bcw_h0tc6.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0i88bcw_h0tc6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/06v8vz55f9jqs.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n (function() {\\n const theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\\n document.documentElement.classList.toggle('dark', theme === 'dark');\\n\\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) =\u003e {\\n document.documentElement.classList.toggle('dark', e.matches);\\n });\\n })();\\n \"}}]}],[\"$\",\"body\",null,{\"className\":\"font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0i88bcw_h0tc6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"zmUOAehUatBb4JcwKHyWm\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[[\"$\",\"title\",\"0\",{\"children\":\"Next.js Bundle Analyzer\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Visualize and analyze your Next.js bundle sizes with interactive treemap and dependency analysis\"}]]\n"])</script></body></html> | ||
| </script><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body class="font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/0ixpj6btokq38.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[72359,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"default\"]\n3:I[28576,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"default\"]\n4:I[13942,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[13942,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"ViewportBoundary\"]\na:I[13942,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"MetadataBoundary\"]\nc:I[17147,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/0i88bcw_h0tc6.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0i88bcw_h0tc6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/06v8vz55f9jqs.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n (function() {\\n const theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\\n document.documentElement.classList.toggle('dark', theme === 'dark');\\n\\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) =\u003e {\\n document.documentElement.classList.toggle('dark', e.matches);\\n });\\n })();\\n \"}}]}],[\"$\",\"body\",null,{\"className\":\"font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0i88bcw_h0tc6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"fM3F6siuT83fnU_rkAx12\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[[\"$\",\"title\",\"0\",{\"children\":\"Next.js Bundle Analyzer\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Visualize and analyze your Next.js bundle sizes with interactive treemap and dependency analysis\"}]]\n"])</script></body></html> |
@@ -10,2 +10,2 @@ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/0i88bcw_h0tc6.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/0ixpj6btokq38.js"/><script src="/_next/static/chunks/0ky98glwh1r04.js" async=""></script><script src="/_next/static/chunks/13uv3qze.ya.i.js" async=""></script><script src="/_next/static/chunks/turbopack-12n2sr~p3a16v.js" async=""></script><script src="/_next/static/chunks/06v8vz55f9jqs.js" async=""></script><script src="/_next/static/chunks/0xj4y-ccrlxvx.js" async=""></script><title>Next.js Bundle Analyzer</title><meta name="description" content="Visualize and analyze your Next.js bundle sizes with interactive treemap and dependency analysis"/><script> | ||
| })(); | ||
| </script><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body class="font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><main class="h-screen flex flex-col bg-background"><div class="flex-none px-4 py-2 border-b border-border flex items-center gap-3"><div class="flex-1 flex"><div class="flex items-center gap-2 min-w-64 max-w-full"><button class="inline-flex items-center gap-2 whitespace-nowrap rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground h-9 px-4 py-2 flex-grow-1 w-full justify-between font-mono text-sm" role="combobox" aria-expanded="false" disabled="" type="button" aria-haspopup="dialog" aria-controls="radix-_R_lbtb_" data-state="closed"><div class="flex items-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader mr-2 inline animate-spin" aria-hidden="true"><path d="M12 2v4"></path><path d="m16.2 7.8 2.9-2.9"></path><path d="M18 12h4"></path><path d="m16.2 16.2 2.9 2.9"></path><path d="M12 18v4"></path><path d="m4.9 19.1 2.9-2.9"></path><path d="M2 12h4"></path><path d="m4.9 4.9 2.9 2.9"></path></svg>Loading routes...</div><div class="flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevrons-up-down h-4 w-4 shrink-0 opacity-50" aria-hidden="true"><path d="m7 15 5 5 5-5"></path><path d="m7 9 5-5 5 5"></path></svg></div></button></div></div><div class="flex items-center gap-2"></div></div><div class="flex-1 flex min-h-0"><div class="flex-1 min-w-0 p-4 bg-background"><div class="h-full w-full grid grid-cols-12 grid-rows-8 gap-2"><div class="animate-pulse rounded-md bg-muted col-span-5 row-span-4"></div><div class="animate-pulse rounded-md bg-muted col-span-4 row-span-3"></div><div class="animate-pulse rounded-md bg-muted col-span-3 row-span-3"></div><div class="animate-pulse rounded-md bg-muted col-span-4 row-span-1"></div><div class="animate-pulse rounded-md bg-muted col-span-3 row-span-2"></div><div class="animate-pulse rounded-md bg-muted col-span-3 row-span-4"></div><div class="animate-pulse rounded-md bg-muted col-span-2 row-span-2"></div><div class="animate-pulse rounded-md bg-muted col-span-2 row-span-2"></div><div class="animate-pulse rounded-md bg-muted col-span-3 row-span-2"></div><div class="animate-pulse rounded-md bg-muted col-span-4 row-span-2"></div><div class="animate-pulse rounded-md bg-muted col-span-2 row-span-2"></div><div class="animate-pulse rounded-md bg-muted col-span-3 row-span-2"></div></div></div><button type="button" class="flex-none w-1 bg-border cursor-col-resize transition-colors" disabled="" aria-label="Resize sidebar"></button><div class="flex-none bg-muted border-l border-border overflow-y-auto" style="width:20%"><div class="flex-1 p-3 space-y-4 overflow-y-auto"><div class="animate-pulse rounded-md bg-muted h-4 w-3/4"></div><div class="animate-pulse rounded-md bg-muted h-4 w-full"></div><div class="animate-pulse rounded-md bg-muted h-4 w-5/6"></div><div class="mt-4 space-y-2"><div class="animate-pulse rounded-md bg-muted h-3 w-full"></div><div class="animate-pulse rounded-md bg-muted h-3 w-full"></div><div class="animate-pulse rounded-md bg-muted h-3 w-4/5"></div></div></div></div></div></main><!--$--><!--/$--><script src="/_next/static/chunks/0ixpj6btokq38.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[72359,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"default\"]\n3:I[28576,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"default\"]\n4:I[38004,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"ClientPageRoot\"]\n5:I[79331,[\"/_next/static/chunks/06v8vz55f9jqs.js\",\"/_next/static/chunks/0xj4y-ccrlxvx.js\"],\"default\"]\n8:I[13942,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"OutletBoundary\"]\n9:\"$Sreact.suspense\"\nb:I[13942,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"ViewportBoundary\"]\nd:I[13942,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"MetadataBoundary\"]\nf:I[17147,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/0i88bcw_h0tc6.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0i88bcw_h0tc6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/06v8vz55f9jqs.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n (function() {\\n const theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\\n document.documentElement.classList.toggle('dark', theme === 'dark');\\n\\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) =\u003e {\\n document.documentElement.classList.toggle('dark', e.matches);\\n });\\n })();\\n \"}}]}],[\"$\",\"body\",null,{\"className\":\"font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L4\",null,{\"Component\":\"$5\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":{},\"promises\":[\"$@6\",\"$@7\"]}}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0xj4y-ccrlxvx.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@a\"}]}]]}],{},null,false,null]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Le\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0i88bcw_h0tc6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"zmUOAehUatBb4JcwKHyWm\"}\n"])</script><script>self.__next_f.push([1,"6:{}\n7:\"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params\"\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"a:null\ne:[[\"$\",\"title\",\"0\",{\"children\":\"Next.js Bundle Analyzer\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Visualize and analyze your Next.js bundle sizes with interactive treemap and dependency analysis\"}]]\n"])</script></body></html> | ||
| </script><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body class="font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><main class="h-screen flex flex-col bg-background"><div class="flex-none px-4 py-2 border-b border-border flex items-center gap-3"><div class="flex-1 flex"><div class="flex items-center gap-2 min-w-64 max-w-full"><button class="inline-flex items-center gap-2 whitespace-nowrap rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground h-9 px-4 py-2 flex-grow-1 w-full justify-between font-mono text-sm" role="combobox" aria-expanded="false" disabled="" type="button" aria-haspopup="dialog" aria-controls="radix-_R_lbtb_" data-state="closed"><div class="flex items-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader mr-2 inline animate-spin" aria-hidden="true"><path d="M12 2v4"></path><path d="m16.2 7.8 2.9-2.9"></path><path d="M18 12h4"></path><path d="m16.2 16.2 2.9 2.9"></path><path d="M12 18v4"></path><path d="m4.9 19.1 2.9-2.9"></path><path d="M2 12h4"></path><path d="m4.9 4.9 2.9 2.9"></path></svg>Loading routes...</div><div class="flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevrons-up-down h-4 w-4 shrink-0 opacity-50" aria-hidden="true"><path d="m7 15 5 5 5-5"></path><path d="m7 9 5-5 5 5"></path></svg></div></button></div></div><div class="flex items-center gap-2"></div></div><div class="flex-1 flex min-h-0"><div class="flex-1 min-w-0 p-4 bg-background"><div class="h-full w-full grid grid-cols-12 grid-rows-8 gap-2"><div class="animate-pulse rounded-md bg-muted col-span-5 row-span-4"></div><div class="animate-pulse rounded-md bg-muted col-span-4 row-span-3"></div><div class="animate-pulse rounded-md bg-muted col-span-3 row-span-3"></div><div class="animate-pulse rounded-md bg-muted col-span-4 row-span-1"></div><div class="animate-pulse rounded-md bg-muted col-span-3 row-span-2"></div><div class="animate-pulse rounded-md bg-muted col-span-3 row-span-4"></div><div class="animate-pulse rounded-md bg-muted col-span-2 row-span-2"></div><div class="animate-pulse rounded-md bg-muted col-span-2 row-span-2"></div><div class="animate-pulse rounded-md bg-muted col-span-3 row-span-2"></div><div class="animate-pulse rounded-md bg-muted col-span-4 row-span-2"></div><div class="animate-pulse rounded-md bg-muted col-span-2 row-span-2"></div><div class="animate-pulse rounded-md bg-muted col-span-3 row-span-2"></div></div></div><button type="button" class="flex-none w-1 bg-border cursor-col-resize transition-colors" disabled="" aria-label="Resize sidebar"></button><div class="flex-none bg-muted border-l border-border overflow-y-auto" style="width:20%"><div class="flex-1 p-3 space-y-4 overflow-y-auto"><div class="animate-pulse rounded-md bg-muted h-4 w-3/4"></div><div class="animate-pulse rounded-md bg-muted h-4 w-full"></div><div class="animate-pulse rounded-md bg-muted h-4 w-5/6"></div><div class="mt-4 space-y-2"><div class="animate-pulse rounded-md bg-muted h-3 w-full"></div><div class="animate-pulse rounded-md bg-muted h-3 w-full"></div><div class="animate-pulse rounded-md bg-muted h-3 w-4/5"></div></div></div></div></div></main><!--$--><!--/$--><script src="/_next/static/chunks/0ixpj6btokq38.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[72359,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"default\"]\n3:I[28576,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"default\"]\n4:I[38004,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"ClientPageRoot\"]\n5:I[79331,[\"/_next/static/chunks/06v8vz55f9jqs.js\",\"/_next/static/chunks/0xj4y-ccrlxvx.js\"],\"default\"]\n8:I[13942,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"OutletBoundary\"]\n9:\"$Sreact.suspense\"\nb:I[13942,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"ViewportBoundary\"]\nd:I[13942,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"MetadataBoundary\"]\nf:I[17147,[\"/_next/static/chunks/06v8vz55f9jqs.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/0i88bcw_h0tc6.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0i88bcw_h0tc6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/06v8vz55f9jqs.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n (function() {\\n const theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\\n document.documentElement.classList.toggle('dark', theme === 'dark');\\n\\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) =\u003e {\\n document.documentElement.classList.toggle('dark', e.matches);\\n });\\n })();\\n \"}}]}],[\"$\",\"body\",null,{\"className\":\"font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L4\",null,{\"Component\":\"$5\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":{},\"promises\":[\"$@6\",\"$@7\"]}}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0xj4y-ccrlxvx.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@a\"}]}]]}],{},null,false,null]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Le\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0i88bcw_h0tc6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"fM3F6siuT83fnU_rkAx12\"}\n"])</script><script>self.__next_f.push([1,"6:{}\n7:\"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params\"\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"a:null\ne:[[\"$\",\"title\",\"0\",{\"children\":\"Next.js Bundle Analyzer\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Visualize and analyze your Next.js bundle sizes with interactive treemap and dependency analysis\"}]]\n"])</script></body></html> |
@@ -12,3 +12,3 @@ 1:"$Sreact.fragment" | ||
| :HL["/_next/static/chunks/0i88bcw_h0tc6.css","style"] | ||
| 0:{"P":null,"c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0i88bcw_h0tc6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06v8vz55f9jqs.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"\n (function() {\n const theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n document.documentElement.classList.toggle('dark', theme === 'dark');\n\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {\n document.documentElement.classList.toggle('dark', e.matches);\n });\n })();\n "}}]}],["$","body",null,{"className":"font-sans antialiased","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":[["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@6","$@7"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/0xj4y-ccrlxvx.js","async":true,"nonce":"$undefined"}]],["$","$L8",null,{"children":["$","$9",null,{"name":"Next.MetadataOutlet","children":"$@a"}]}]]}],{},null,false,null]},null,false,null],["$","$1","h",{"children":[null,["$","$Lb",null,{"children":"$Lc"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$9",null,{"name":"Next.Metadata","children":"$Le"}]}]}],null]}],false]],"m":"$undefined","G":["$f",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0i88bcw_h0tc6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"zmUOAehUatBb4JcwKHyWm"} | ||
| 0:{"P":null,"c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0i88bcw_h0tc6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06v8vz55f9jqs.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"\n (function() {\n const theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n document.documentElement.classList.toggle('dark', theme === 'dark');\n\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {\n document.documentElement.classList.toggle('dark', e.matches);\n });\n })();\n "}}]}],["$","body",null,{"className":"font-sans antialiased","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":[["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@6","$@7"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/0xj4y-ccrlxvx.js","async":true,"nonce":"$undefined"}]],["$","$L8",null,{"children":["$","$9",null,{"name":"Next.MetadataOutlet","children":"$@a"}]}]]}],{},null,false,null]},null,false,null],["$","$1","h",{"children":[null,["$","$Lb",null,{"children":"$Lc"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$9",null,{"name":"Next.Metadata","children":"$Le"}]}]}],null]}],false]],"m":"$undefined","G":["$f",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0i88bcw_h0tc6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"fM3F6siuT83fnU_rkAx12"} | ||
| 6:{} | ||
@@ -15,0 +15,0 @@ 7:"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params" |
@@ -42,3 +42,3 @@ #!/usr/bin/env node | ||
| const nextBuild = async (options, directory)=>{ | ||
| process.title = `next-build (v${"16.3.0-canary.102"})`; | ||
| process.title = `next-build (v${"16.3.0-canary.103"})`; | ||
| process.on('SIGTERM', ()=>{ | ||
@@ -45,0 +45,0 @@ (0, _cpuprofile.saveCpuProfile)(); |
@@ -43,3 +43,3 @@ #!/usr/bin/env node | ||
| const bindings = await (0, _swc.loadBindings)((_config_experimental1 = config.experimental) == null ? void 0 : _config_experimental1.useWasmBinary); | ||
| await bindings.turbo.databaseCompact(cachePath, "16.3.0-canary.102"); | ||
| await bindings.turbo.databaseCompact(cachePath, "16.3.0-canary.103"); | ||
| console.log('Turbopack database compaction complete.'); | ||
@@ -46,0 +46,0 @@ }; |
@@ -18,3 +18,3 @@ /** | ||
| const _setattributesfromprops = require("./set-attributes-from-props"); | ||
| const version = "16.3.0-canary.102"; | ||
| const version = "16.3.0-canary.103"; | ||
| window.next = { | ||
@@ -21,0 +21,0 @@ version, |
@@ -224,13 +224,4 @@ 'use client'; | ||
| scrollRef.current = false; | ||
| const activeElement = document.activeElement; | ||
| if (activeElement !== null && 'blur' in activeElement && typeof activeElement.blur === 'function') { | ||
| // Trying to match hard navigations. | ||
| // Ideally we'd move the internal focus cursor either to the top | ||
| // or at least before the segment. But there's no DOM API to do that, | ||
| // so we just blur. | ||
| // We could workaround this by moving focus to a temporary element in | ||
| // the body. But adding elements might trigger layout or other effects | ||
| // so it should be well motivated. | ||
| activeElement.blur(); | ||
| } | ||
| // This handler intentionally leaves focus untouched; resetting focus on | ||
| // navigation is deferred. | ||
| (0, _disablesmoothscroll.disableSmoothScrollDuringRouteTransition)(()=>{ | ||
@@ -237,0 +228,0 @@ // In case of hash scroll, we only need to scroll the element into view |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../../../src/client/components/layout-router.tsx"],"sourcesContent":["'use client'\n\nimport type { CacheNode } from '../../shared/lib/app-router-types'\nimport type { LoadingModuleData } from '../../shared/lib/app-router-types'\nimport type {\n FlightRouterState,\n FlightSegmentPath,\n Segment,\n} from '../../shared/lib/app-router-types'\nimport type { ErrorComponent } from './error-boundary'\nimport type { FocusAndScrollRef } from './router-reducer/router-reducer-types'\n\nimport React, {\n Activity,\n Fragment,\n useContext,\n use,\n Suspense,\n useDeferredValue,\n useLayoutEffect,\n type FragmentInstance,\n type JSX,\n type ActivityProps,\n} from 'react'\nimport ReactDOM from 'react-dom'\nimport {\n LayoutRouterContext,\n GlobalLayoutRouterContext,\n TemplateContext,\n} from '../../shared/lib/app-router-context.shared-runtime'\nimport { unresolvedThenable } from './unresolved-thenable'\nimport { ErrorBoundary } from './error-boundary'\nimport { disableSmoothScrollDuringRouteTransition } from '../../shared/lib/router/utils/disable-smooth-scroll'\nimport { RedirectBoundary } from './redirect-boundary'\nimport { HTTPAccessFallbackBoundary } from './http-access-fallback/error-boundary'\nimport {\n InstantValidationBoundaryContext,\n RenderValidationBoundaryAtThisLevel,\n} from './instant-validation/boundary'\nimport { createRouterCacheKey } from './router-reducer/create-router-cache-key'\nimport {\n useRouterBFCache,\n type RouterBFCacheEntry,\n} from './bfcache-state-manager'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport {\n NavigationPromisesContext,\n type NavigationPromises,\n} from '../../shared/lib/hooks-client-context.shared-runtime'\nimport { getParamValueFromCacheKey } from '../route-params'\nimport type { Params } from '../../server/request/params'\nimport { isDeferredRsc } from './router-reducer/ppr-navigations'\n\nconst enableNewScrollHandler = process.env.__NEXT_APP_NEW_SCROLL_HANDLER\n\nconst __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = (\n ReactDOM as any\n).__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE\n\n// TODO-APP: Replace with new React API for finding dom nodes without a `ref` when available\n/**\n * Wraps ReactDOM.findDOMNode with additional logic to hide React Strict Mode warning\n */\nfunction findDOMNode(\n instance: React.ReactInstance | null | undefined\n): Element | Text | null {\n // Tree-shake for server bundle\n if (typeof window === 'undefined') return null\n\n // __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode is null during module init.\n // We need to lazily reference it.\n const internal_reactDOMfindDOMNode =\n __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode\n return internal_reactDOMfindDOMNode(instance)\n}\n\nconst rectProperties = [\n 'bottom',\n 'height',\n 'left',\n 'right',\n 'top',\n 'width',\n 'x',\n 'y',\n] as const\n/**\n * Check if a HTMLElement is hidden or fixed/sticky position\n */\nfunction shouldSkipElement(element: HTMLElement) {\n // we ignore fixed or sticky positioned elements since they'll likely pass the \"in-viewport\" check\n // and will result in a situation we bail on scroll because of something like a fixed nav,\n // even though the actual page content is offscreen\n if (['sticky', 'fixed'].includes(getComputedStyle(element).position)) {\n return true\n }\n\n // Uses `getBoundingClientRect` to check if the element is hidden instead of `offsetParent`\n // because `offsetParent` doesn't consider document/body\n const rect = element.getBoundingClientRect()\n return rectProperties.every((item) => rect[item] === 0)\n}\n\n/**\n * Check if the top corner of the HTMLElement is in the viewport.\n */\nfunction topOfElementInViewport(\n instance: HTMLElement | FragmentInstance,\n viewportHeight: number\n): boolean {\n const rects = instance.getClientRects()\n if (rects.length === 0) {\n // Just to be explicit.\n return false\n }\n let elementTop = Number.POSITIVE_INFINITY\n for (let i = 0; i < rects.length; i++) {\n const rect = rects[i]\n if (rect.top < elementTop) {\n elementTop = rect.top\n }\n }\n return elementTop >= 0 && elementTop <= viewportHeight\n}\n\n/**\n * Find the DOM node for a hash fragment.\n * If `top` the page has to scroll to the top of the page. This mirrors the browser's behavior.\n * If the hash fragment is an id, the page has to scroll to the element with that id.\n * If the hash fragment is a name, the page has to scroll to the first element with that name.\n */\nfunction getHashFragmentDomNode(hashFragment: string) {\n // If the hash fragment is `top` the page has to scroll to the top of the page.\n if (hashFragment === 'top') {\n return document.body\n }\n\n // If the hash fragment is an id, the page has to scroll to the element with that id.\n return (\n document.getElementById(hashFragment) ??\n // If the hash fragment is a name, the page has to scroll to the first element with that name.\n document.getElementsByName(hashFragment)[0]\n )\n}\ninterface ScrollAndMaybeFocusHandlerProps {\n focusAndScrollRef: FocusAndScrollRef\n children: React.ReactNode\n cacheNode: CacheNode\n}\nclass InnerScrollAndFocusHandlerOld extends React.Component<ScrollAndMaybeFocusHandlerProps> {\n handlePotentialScroll = () => {\n // Handle scroll and focus, it's only applied once.\n const { focusAndScrollRef, cacheNode } = this.props\n\n const scrollRef = focusAndScrollRef.forceScroll\n ? focusAndScrollRef.scrollRef\n : cacheNode.scrollRef\n if (scrollRef === null || !scrollRef.current) return\n\n let domNode:\n | ReturnType<typeof getHashFragmentDomNode>\n | ReturnType<typeof findDOMNode> = null\n const hashFragment = focusAndScrollRef.hashFragment\n\n if (hashFragment) {\n domNode = getHashFragmentDomNode(hashFragment)\n }\n\n // `findDOMNode` is tricky because it returns just the first child if the component is a fragment.\n // This already caused a bug where the first child was a <link/> in head.\n if (!domNode) {\n domNode = findDOMNode(this)\n }\n\n // If there is no DOM node this layout-router level is skipped. It'll be handled higher-up in the tree.\n if (!(domNode instanceof Element)) {\n return\n }\n\n // Verify if the element is a HTMLElement and if we want to consider it for scroll behavior.\n // If the element is skipped, try to select the next sibling and try again.\n while (!(domNode instanceof HTMLElement) || shouldSkipElement(domNode)) {\n if (process.env.NODE_ENV !== 'production') {\n if (domNode.parentElement?.localName === 'head') {\n // We enter this state when metadata was rendered as part of the page or via Next.js.\n // This is always a bug in Next.js and caused by React hoisting metadata.\n // Fixed with `experimental.appNewScrollHandler`\n }\n }\n\n // No siblings found that match the criteria are found, so handle scroll higher up in the tree instead.\n if (domNode.nextElementSibling === null) {\n return\n }\n domNode = domNode.nextElementSibling\n }\n\n // Mark as scrolled so no other segment scrolls for this navigation.\n scrollRef.current = false\n\n disableSmoothScrollDuringRouteTransition(\n () => {\n // In case of hash scroll, we only need to scroll the element into view\n if (hashFragment) {\n domNode.scrollIntoView()\n\n return\n }\n // Store the current viewport height because reading `clientHeight` causes a reflow,\n // and it won't change during this function.\n const htmlElement = document.documentElement\n const viewportHeight = htmlElement.clientHeight\n\n // If the element's top edge is already in the viewport, exit early.\n if (topOfElementInViewport(domNode, viewportHeight)) {\n return\n }\n\n // Otherwise, try scrolling go the top of the document to be backward compatible with pages\n // scrollIntoView() called on `<html/>` element scrolls horizontally on chrome and firefox (that shouldn't happen)\n // We could use it to scroll horizontally following RTL but that also seems to be broken - it will always scroll left\n // scrollLeft = 0 also seems to ignore RTL and manually checking for RTL is too much hassle so we will scroll just vertically\n htmlElement.scrollTop = 0\n\n // Scroll to domNode if domNode is not in viewport when scrolled to top of document\n if (!topOfElementInViewport(domNode, viewportHeight)) {\n // Scroll into view doesn't scroll horizontally by default when not needed\n domNode.scrollIntoView()\n }\n },\n {\n // We will force layout by querying domNode position\n dontForceLayout: true,\n onlyHashChange: focusAndScrollRef.onlyHashChange,\n }\n )\n\n // Mutate after scrolling so that it can be read by `disableSmoothScrollDuringRouteTransition`\n focusAndScrollRef.onlyHashChange = false\n focusAndScrollRef.hashFragment = null\n\n // Set focus on the element\n domNode.focus()\n }\n\n componentDidMount() {\n this.handlePotentialScroll()\n }\n\n componentDidUpdate() {\n this.handlePotentialScroll()\n }\n\n render() {\n return this.props.children\n }\n}\n\n/**\n * Fork of InnerScrollAndFocusHandlerOld using Fragment refs for scrolling.\n * No longer focuses the first host descendant.\n */\nfunction InnerScrollHandlerNew(props: ScrollAndMaybeFocusHandlerProps) {\n const childrenRef = React.useRef<FragmentInstance>(null)\n\n useLayoutEffect(\n () => {\n const { focusAndScrollRef, cacheNode } = props\n\n const scrollRef = focusAndScrollRef.forceScroll\n ? focusAndScrollRef.scrollRef\n : cacheNode.scrollRef\n if (scrollRef === null || !scrollRef.current) return\n\n let instance: FragmentInstance | HTMLElement | null = null\n const hashFragment = focusAndScrollRef.hashFragment\n\n if (hashFragment) {\n instance = getHashFragmentDomNode(hashFragment)\n }\n\n if (!instance) {\n instance = childrenRef.current\n }\n\n // If there is no DOM node this layout-router level is skipped. It'll be handled higher-up in the tree.\n if (instance === null) {\n return\n }\n\n // Mark as scrolled so no other segment scrolls for this navigation.\n scrollRef.current = false\n\n const activeElement = document.activeElement\n if (\n activeElement !== null &&\n 'blur' in activeElement &&\n typeof activeElement.blur === 'function'\n ) {\n // Trying to match hard navigations.\n // Ideally we'd move the internal focus cursor either to the top\n // or at least before the segment. But there's no DOM API to do that,\n // so we just blur.\n // We could workaround this by moving focus to a temporary element in\n // the body. But adding elements might trigger layout or other effects\n // so it should be well motivated.\n activeElement.blur()\n }\n\n disableSmoothScrollDuringRouteTransition(\n () => {\n // In case of hash scroll, we only need to scroll the element into view\n if (hashFragment) {\n instance.scrollIntoView()\n\n return\n }\n // Store the current viewport height because reading `clientHeight` causes a reflow,\n // and it won't change during this function.\n const htmlElement = document.documentElement\n const viewportHeight = htmlElement.clientHeight\n\n // If the element's top edge is already in the viewport, exit early.\n if (topOfElementInViewport(instance, viewportHeight)) {\n return\n }\n\n // Otherwise, try scrolling go the top of the document to be backward compatible with pages\n // scrollIntoView() called on `<html/>` element scrolls horizontally on chrome and firefox (that shouldn't happen)\n // We could use it to scroll horizontally following RTL but that also seems to be broken - it will always scroll left\n // scrollLeft = 0 also seems to ignore RTL and manually checking for RTL is too much hassle so we will scroll just vertically\n htmlElement.scrollTop = 0\n\n // Scroll to domNode if domNode is not in viewport when scrolled to top of document\n if (!topOfElementInViewport(instance, viewportHeight)) {\n // Scroll into view doesn't scroll horizontally by default when not needed\n instance.scrollIntoView()\n }\n },\n {\n // We will force layout by querying domNode position\n dontForceLayout: true,\n onlyHashChange: focusAndScrollRef.onlyHashChange,\n }\n )\n\n // Mutate after scrolling so that it can be read by `disableSmoothScrollDuringRouteTransition`\n focusAndScrollRef.onlyHashChange = false\n focusAndScrollRef.hashFragment = null\n },\n // Used to run on every commit. We may be able to be smarter about this\n // but be prepared for lots of manual testing.\n undefined\n )\n\n return <Fragment ref={childrenRef}>{props.children}</Fragment>\n}\n\nconst InnerScrollAndMaybeFocusHandler = enableNewScrollHandler\n ? InnerScrollHandlerNew\n : InnerScrollAndFocusHandlerOld\n\nfunction ScrollAndMaybeFocusHandler({\n children,\n cacheNode,\n}: {\n children: React.ReactNode\n cacheNode: CacheNode\n}) {\n const context = useContext(GlobalLayoutRouterContext)\n if (!context) {\n throw new Error('invariant global layout router not mounted')\n }\n\n return (\n <InnerScrollAndMaybeFocusHandler\n focusAndScrollRef={context.focusAndScrollRef}\n cacheNode={cacheNode}\n >\n {children}\n </InnerScrollAndMaybeFocusHandler>\n )\n}\n\n/**\n * InnerLayoutRouter handles rendering the provided segment based on the cache.\n */\nfunction InnerLayoutRouter({\n tree,\n segmentPath,\n debugNameContext,\n cacheNode: maybeCacheNode,\n params,\n url,\n isActive,\n}: {\n tree: FlightRouterState\n segmentPath: FlightSegmentPath\n debugNameContext: string\n cacheNode: CacheNode | null\n params: Params\n url: string\n isActive: boolean\n}) {\n const context = useContext(GlobalLayoutRouterContext)\n const parentNavPromises = useContext(NavigationPromisesContext)\n\n if (!context) {\n throw new Error('invariant global layout router not mounted')\n }\n\n const cacheNode =\n maybeCacheNode !== null\n ? maybeCacheNode\n : // This segment is not in the cache. Suspend indefinitely.\n //\n // This should only be reachable for inactive/hidden segments, during\n // prerendering The active segment should always be consistent with the\n // CacheNode tree. Regardless, if we don't have a matching CacheNode, we\n // must suspend rather than render nothing, to prevent showing an\n // inconsistent route.\n\n (use(unresolvedThenable) as never)\n\n // `rsc` represents the renderable node for this segment.\n\n // If this segment has a `prefetchRsc`, it's the statically prefetched data.\n // We should use that on initial render instead of `rsc`. Then we'll switch\n // to `rsc` when the dynamic response streams in.\n //\n // If no prefetch data is available, then we go straight to rendering `rsc`.\n const resolvedPrefetchRsc =\n cacheNode.prefetchRsc !== null ? cacheNode.prefetchRsc : cacheNode.rsc\n\n // We use `useDeferredValue` to handle switching between the prefetched and\n // final values. The second argument is returned on initial render, then it\n // re-renders with the first argument.\n const rsc: any = useDeferredValue(cacheNode.rsc, resolvedPrefetchRsc)\n\n // `rsc` is either a React node or a promise for a React node, except we\n // special case `null` to represent that this segment's data is missing. If\n // it's a promise, we need to unwrap it so we can determine whether or not the\n // data is missing.\n let resolvedRsc: React.ReactNode\n if (isDeferredRsc(rsc)) {\n const unwrappedRsc = use(rsc)\n if (unwrappedRsc === null) {\n // If the promise was resolved to `null`, it means the data for this\n // segment was not returned by the server. Suspend indefinitely. When this\n // happens, the router is responsible for triggering a new state update to\n // un-suspend this segment.\n use(unresolvedThenable) as never\n }\n resolvedRsc = unwrappedRsc\n } else {\n // This is not a deferred RSC promise. Don't need to unwrap it.\n if (rsc === null) {\n use(unresolvedThenable) as never\n }\n resolvedRsc = rsc\n }\n\n // In dev, we create a NavigationPromisesContext containing the instrumented promises that provide\n // `useSelectedLayoutSegment` and `useSelectedLayoutSegments`.\n // Promises are cached outside of render to survive suspense retries.\n let navigationPromises: NavigationPromises | null = null\n if (process.env.NODE_ENV !== 'production') {\n const { createNestedLayoutNavigationPromises } =\n require('./navigation-devtools') as typeof import('./navigation-devtools')\n\n navigationPromises = createNestedLayoutNavigationPromises(\n tree,\n parentNavPromises\n )\n }\n\n let children = resolvedRsc\n\n if (navigationPromises) {\n children = (\n <NavigationPromisesContext.Provider value={navigationPromises}>\n {resolvedRsc}\n </NavigationPromisesContext.Provider>\n )\n }\n\n children = (\n // The layout router context narrows down tree and childNodes at each level.\n <LayoutRouterContext.Provider\n value={{\n parentTree: tree,\n parentCacheNode: cacheNode,\n parentSegmentPath: segmentPath,\n parentParams: params,\n // This is always set to null as we enter a child segment. It's\n // populated by LoadingBoundaryProvider the next time we reach a\n // loading boundary.\n parentLoadingData: null,\n debugNameContext: debugNameContext,\n\n // TODO-APP: overriding of url for parallel routes\n url: url,\n isActive: isActive,\n }}\n >\n {children}\n </LayoutRouterContext.Provider>\n )\n\n return children\n}\n\nexport function LoadingBoundaryProvider({\n loading,\n children,\n}: {\n loading: LoadingModuleData\n children: React.ReactNode\n}) {\n // Provides the data needed to render a loading.tsx boundary, via context.\n //\n // loading.tsx creates a Suspense boundary around each of a layout's child\n // slots. (Might be bit confusing to think about the data flow, but: if\n // loading.tsx and layout.tsx are in the same directory, they are assigned\n // to the same CacheNode.)\n //\n // This provider component does not render the Suspense boundary directly;\n // that's handled by LoadingBoundary.\n //\n // TODO: For simplicity, we should combine this provider with LoadingBoundary\n // and render the Suspense boundary directly. The only real benefit of doing\n // it separately is so that when there are multiple parallel routes, we only\n // send the boundary data once, rather than once per child. But that's a\n // negligible benefit and can be achieved via caching instead.\n const parentContext = use(LayoutRouterContext)\n if (parentContext === null) {\n return children\n }\n // All values except for parentLoadingData are the same as the parent context.\n return (\n <LayoutRouterContext.Provider\n value={{\n parentTree: parentContext.parentTree,\n parentCacheNode: parentContext.parentCacheNode,\n parentSegmentPath: parentContext.parentSegmentPath,\n parentParams: parentContext.parentParams,\n parentLoadingData: loading,\n debugNameContext: parentContext.debugNameContext,\n url: parentContext.url,\n isActive: parentContext.isActive,\n }}\n >\n {children}\n </LayoutRouterContext.Provider>\n )\n}\n\n/**\n * Renders suspense boundary with the provided \"loading\" property as the fallback.\n * If no loading property is provided it renders the children without a suspense boundary.\n */\nfunction LoadingBoundary({\n name,\n loading,\n children,\n}: {\n name: ActivityProps['name']\n loading: LoadingModuleData | null\n children: React.ReactNode\n}): JSX.Element {\n // TODO: For LoadingBoundary, and the other built-in boundary types, don't\n // wrap in an extra function component if no user-defined boundary is\n // provided. In other words, inline this conditional wrapping logic into\n // the parent component. More efficient and keeps unnecessary junk out of\n // the component stack.\n if (loading !== null) {\n const loadingRsc = loading[0]\n const loadingStyles = loading[1]\n const loadingScripts = loading[2]\n return (\n <Suspense\n name={name}\n fallback={\n <>\n {loadingStyles}\n {loadingScripts}\n {loadingRsc}\n </>\n }\n >\n {children}\n </Suspense>\n )\n }\n\n return <>{children}</>\n}\n\n/**\n * OuterLayoutRouter handles the current segment as well as <Offscreen> rendering of other segments.\n * It can be rendered next to each other with a different `parallelRouterKey`, allowing for Parallel routes.\n */\nexport default function OuterLayoutRouter({\n parallelRouterKey,\n error,\n errorStyles,\n errorScripts,\n templateStyles,\n templateScripts,\n template,\n notFound,\n forbidden,\n unauthorized,\n segmentViewBoundaries,\n}: {\n parallelRouterKey: string\n error: ErrorComponent | undefined\n errorStyles: React.ReactNode | undefined\n errorScripts: React.ReactNode | undefined\n templateStyles: React.ReactNode | undefined\n templateScripts: React.ReactNode | undefined\n template: React.ReactNode\n notFound: React.ReactNode | undefined\n forbidden: React.ReactNode | undefined\n unauthorized: React.ReactNode | undefined\n segmentViewBoundaries?: React.ReactNode\n}) {\n const context = useContext(LayoutRouterContext)\n if (!context) {\n throw new Error('invariant expected layout router to be mounted')\n }\n\n const {\n parentTree,\n parentCacheNode,\n parentSegmentPath,\n parentParams,\n parentLoadingData,\n url,\n isActive,\n debugNameContext,\n } = context\n\n // Get the CacheNode for this segment by reading it from the parent segment's\n // child map.\n const parentTreeSegment = parentTree[0]\n const segmentPath =\n parentSegmentPath === null\n ? // TODO: The root segment value is currently omitted from the segment\n // path. This has led to a bunch of special cases scattered throughout\n // the code. We should clean this up.\n [parallelRouterKey]\n : parentSegmentPath.concat([parentTreeSegment, parallelRouterKey])\n\n // The \"state\" key of a segment is the one passed to React — it represents the\n // identity of the UI tree. Whenever the state key changes, the tree is\n // recreated and the state is reset. In the App Router model, search params do\n // not cause state to be lost, so two segments with the same segment path but\n // different search params should have the same state key.\n //\n // The \"cache\" key of a segment, however, *does* include the search params, if\n // it's possible that the segment accessed the search params on the server.\n // (This only applies to page segments; layout segments cannot access search\n // params on the server.)\n const activeTree = parentTree[1][parallelRouterKey]\n const maybeParentSlots = parentCacheNode.slots\n if (activeTree === undefined || maybeParentSlots === null) {\n // Could not find a matching segment. The client tree is inconsistent with\n // the server tree. Suspend indefinitely; the router will have already\n // detected the inconsistency when handling the server response, and\n // triggered a refresh of the page to recover.\n use(unresolvedThenable) as never\n }\n\n let maybeValidationBoundaryId: string | null = null\n if (typeof window === 'undefined' && process.env.__NEXT_CACHE_COMPONENTS) {\n maybeValidationBoundaryId = use(InstantValidationBoundaryContext)\n }\n\n const activeSegment = activeTree[0]\n const activeCacheNode = maybeParentSlots![parallelRouterKey] ?? null\n const activeStateKey = createRouterCacheKey(activeSegment, true) // no search params\n\n // At each level of the route tree, not only do we render the currently\n // active segment — we also render the last N segments that were active at\n // this level inside a hidden <Activity> boundary, to preserve their state\n // if or when the user navigates to them again.\n //\n // bfcacheEntry is a linked list of FlightRouterStates.\n let bfcacheEntry: RouterBFCacheEntry | null = useRouterBFCache(\n activeTree,\n activeCacheNode,\n activeStateKey\n )\n let children: Array<React.ReactNode> = []\n do {\n const tree = bfcacheEntry.tree\n const cacheNode = bfcacheEntry.cacheNode\n const stateKey = bfcacheEntry.stateKey\n const segment = tree[0]\n\n /*\n - Error boundary\n - Only renders error boundary if error component is provided.\n - Rendered for each segment to ensure they have their own error state.\n - When gracefully degrade for bots, skip rendering error boundary.\n - Loading boundary\n - Only renders suspense boundary if loading components is provided.\n - Rendered for each segment to ensure they have their own loading state.\n - Passed to the router during rendering to ensure it can be immediately rendered when suspending on a Flight fetch.\n */\n\n let segmentBoundaryTriggerNode: React.ReactNode = null\n let segmentViewStateNode: React.ReactNode = null\n if (process.env.NODE_ENV !== 'production') {\n const { SegmentBoundaryTriggerNode, SegmentViewStateNode } =\n require('../../next-devtools/userspace/app/segment-explorer-node') as typeof import('../../next-devtools/userspace/app/segment-explorer-node')\n\n const pagePrefix = normalizeAppPath(url)\n segmentViewStateNode = (\n <SegmentViewStateNode key={pagePrefix} page={pagePrefix} />\n )\n\n segmentBoundaryTriggerNode = (\n <>\n <SegmentBoundaryTriggerNode />\n </>\n )\n }\n\n let params = parentParams\n if (Array.isArray(segment)) {\n // This segment contains a route param. Accumulate these as we traverse\n // down the router tree. The result represents the set of params that\n // the layout/page components are permitted to access below this point.\n const paramName = segment[0]\n const paramCacheKey = segment[1]\n const paramType = segment[2]\n const paramValue = getParamValueFromCacheKey(paramCacheKey, paramType)\n if (paramValue !== null) {\n params = {\n ...parentParams,\n [paramName]: paramValue,\n }\n }\n }\n\n const debugName = getBoundaryDebugNameFromSegment(segment)\n // `debugNameContext` represents the nearest non-\"virtual\" parent segment.\n // `getBoundaryDebugNameFromSegment` returns undefined for virtual segments.\n // So if `debugName` is undefined, the context is passed through unchanged.\n const childDebugNameContext = debugName ?? debugNameContext\n\n // In practical terms, clicking this name in the Suspense DevTools\n // should select the child slots of that layout.\n //\n // So the name we apply to the Activity boundary is actually based on\n // the nearest parent segments.\n //\n // We skip over \"virtual\" parents, i.e. ones inserted by Next.js that\n // don't correspond to application-defined code.\n const isVirtual = debugName === undefined\n const debugNameToDisplay = isVirtual ? undefined : debugNameContext\n\n let templateValue = (\n <ScrollAndMaybeFocusHandler cacheNode={cacheNode}>\n <ErrorBoundary\n errorComponent={error}\n errorStyles={errorStyles}\n errorScripts={errorScripts}\n >\n <LoadingBoundary\n name={debugNameToDisplay}\n // TODO: The loading module data for a segment is stored on the\n // parent, then applied to each of that parent segment's\n // parallel route slots. In the simple case where there's only\n // one parallel route (the `children` slot), this is no\n // different from if the loading module data were stored on the\n // child directly. But I'm not sure this actually makes sense\n // when there are multiple parallel routes. It's not a huge\n // issue because you always have the option to define a narrower\n // loading boundary for a particular slot. But this sort of\n // smells like an implementation accident to me.\n loading={parentLoadingData}\n >\n <HTTPAccessFallbackBoundary\n notFound={notFound}\n forbidden={forbidden}\n unauthorized={unauthorized}\n >\n <RedirectBoundary>\n <InnerLayoutRouter\n url={url}\n tree={tree}\n params={params}\n cacheNode={cacheNode}\n segmentPath={segmentPath}\n debugNameContext={childDebugNameContext}\n isActive={isActive && stateKey === activeStateKey}\n />\n {segmentBoundaryTriggerNode}\n </RedirectBoundary>\n </HTTPAccessFallbackBoundary>\n </LoadingBoundary>\n </ErrorBoundary>\n {segmentViewStateNode}\n </ScrollAndMaybeFocusHandler>\n )\n\n if (\n typeof window === 'undefined' &&\n process.env.__NEXT_CACHE_COMPONENTS &&\n typeof maybeValidationBoundaryId === 'string'\n ) {\n templateValue = (\n <RenderValidationBoundaryAtThisLevel id={maybeValidationBoundaryId}>\n {templateValue}\n </RenderValidationBoundaryAtThisLevel>\n )\n }\n\n let child = (\n <TemplateContext.Provider key={stateKey} value={templateValue}>\n {templateStyles}\n {templateScripts}\n {template}\n </TemplateContext.Provider>\n )\n\n if (process.env.NODE_ENV !== 'production') {\n const { SegmentStateProvider } =\n require('../../next-devtools/userspace/app/segment-explorer-node') as typeof import('../../next-devtools/userspace/app/segment-explorer-node')\n\n child = (\n <SegmentStateProvider key={stateKey}>\n {child}\n {segmentViewBoundaries}\n </SegmentStateProvider>\n )\n }\n\n if (process.env.__NEXT_CACHE_COMPONENTS) {\n child = (\n <Activity\n name={debugNameToDisplay}\n key={stateKey}\n mode={stateKey === activeStateKey ? 'visible' : 'hidden'}\n >\n {child}\n </Activity>\n )\n }\n\n children.push(child)\n\n bfcacheEntry = bfcacheEntry.next\n } while (bfcacheEntry !== null)\n\n return children\n}\n\nfunction getBoundaryDebugNameFromSegment(segment: Segment): string | undefined {\n if (segment === '/') {\n // Reached the root\n return '/'\n }\n if (typeof segment === 'string') {\n if (isVirtualLayout(segment)) {\n return undefined\n } else {\n return segment + '/'\n }\n }\n const paramCacheKey = segment[1]\n return paramCacheKey + '/'\n}\n\nfunction isVirtualLayout(segment: string): boolean {\n return (\n // This is inserted by the loader. Uses double-underscore convention\n // (like __PAGE__ and __DEFAULT__) to avoid collisions with\n // user-defined route groups.\n segment === '(__SLOT__)'\n )\n}\n"],"names":["LoadingBoundaryProvider","OuterLayoutRouter","enableNewScrollHandler","process","env","__NEXT_APP_NEW_SCROLL_HANDLER","__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","ReactDOM","findDOMNode","instance","window","internal_reactDOMfindDOMNode","rectProperties","shouldSkipElement","element","includes","getComputedStyle","position","rect","getBoundingClientRect","every","item","topOfElementInViewport","viewportHeight","rects","getClientRects","length","elementTop","Number","POSITIVE_INFINITY","i","top","getHashFragmentDomNode","hashFragment","document","body","getElementById","getElementsByName","InnerScrollAndFocusHandlerOld","React","Component","componentDidMount","handlePotentialScroll","componentDidUpdate","render","props","children","focusAndScrollRef","cacheNode","scrollRef","forceScroll","current","domNode","Element","HTMLElement","NODE_ENV","parentElement","localName","nextElementSibling","disableSmoothScrollDuringRouteTransition","scrollIntoView","htmlElement","documentElement","clientHeight","scrollTop","dontForceLayout","onlyHashChange","focus","InnerScrollHandlerNew","childrenRef","useRef","useLayoutEffect","activeElement","blur","undefined","Fragment","ref","InnerScrollAndMaybeFocusHandler","ScrollAndMaybeFocusHandler","context","useContext","GlobalLayoutRouterContext","Error","InnerLayoutRouter","tree","segmentPath","debugNameContext","maybeCacheNode","params","url","isActive","parentNavPromises","NavigationPromisesContext","use","unresolvedThenable","resolvedPrefetchRsc","prefetchRsc","rsc","useDeferredValue","resolvedRsc","isDeferredRsc","unwrappedRsc","navigationPromises","createNestedLayoutNavigationPromises","require","Provider","value","LayoutRouterContext","parentTree","parentCacheNode","parentSegmentPath","parentParams","parentLoadingData","loading","parentContext","LoadingBoundary","name","loadingRsc","loadingStyles","loadingScripts","Suspense","fallback","parallelRouterKey","error","errorStyles","errorScripts","templateStyles","templateScripts","template","notFound","forbidden","unauthorized","segmentViewBoundaries","parentTreeSegment","concat","activeTree","maybeParentSlots","slots","maybeValidationBoundaryId","__NEXT_CACHE_COMPONENTS","InstantValidationBoundaryContext","activeSegment","activeCacheNode","activeStateKey","createRouterCacheKey","bfcacheEntry","useRouterBFCache","stateKey","segment","segmentBoundaryTriggerNode","segmentViewStateNode","SegmentBoundaryTriggerNode","SegmentViewStateNode","pagePrefix","normalizeAppPath","page","Array","isArray","paramName","paramCacheKey","paramType","paramValue","getParamValueFromCacheKey","debugName","getBoundaryDebugNameFromSegment","childDebugNameContext","isVirtual","debugNameToDisplay","templateValue","ErrorBoundary","errorComponent","HTTPAccessFallbackBoundary","RedirectBoundary","RenderValidationBoundaryAtThisLevel","id","child","TemplateContext","SegmentStateProvider","Activity","mode","push","next","isVirtualLayout"],"mappings":"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","ignoreList":[0]} | ||
| {"version":3,"sources":["../../../src/client/components/layout-router.tsx"],"sourcesContent":["'use client'\n\nimport type { CacheNode } from '../../shared/lib/app-router-types'\nimport type { LoadingModuleData } from '../../shared/lib/app-router-types'\nimport type {\n FlightRouterState,\n FlightSegmentPath,\n Segment,\n} from '../../shared/lib/app-router-types'\nimport type { ErrorComponent } from './error-boundary'\nimport type { FocusAndScrollRef } from './router-reducer/router-reducer-types'\n\nimport React, {\n Activity,\n Fragment,\n useContext,\n use,\n Suspense,\n useDeferredValue,\n useLayoutEffect,\n type FragmentInstance,\n type JSX,\n type ActivityProps,\n} from 'react'\nimport ReactDOM from 'react-dom'\nimport {\n LayoutRouterContext,\n GlobalLayoutRouterContext,\n TemplateContext,\n} from '../../shared/lib/app-router-context.shared-runtime'\nimport { unresolvedThenable } from './unresolved-thenable'\nimport { ErrorBoundary } from './error-boundary'\nimport { disableSmoothScrollDuringRouteTransition } from '../../shared/lib/router/utils/disable-smooth-scroll'\nimport { RedirectBoundary } from './redirect-boundary'\nimport { HTTPAccessFallbackBoundary } from './http-access-fallback/error-boundary'\nimport {\n InstantValidationBoundaryContext,\n RenderValidationBoundaryAtThisLevel,\n} from './instant-validation/boundary'\nimport { createRouterCacheKey } from './router-reducer/create-router-cache-key'\nimport {\n useRouterBFCache,\n type RouterBFCacheEntry,\n} from './bfcache-state-manager'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport {\n NavigationPromisesContext,\n type NavigationPromises,\n} from '../../shared/lib/hooks-client-context.shared-runtime'\nimport { getParamValueFromCacheKey } from '../route-params'\nimport type { Params } from '../../server/request/params'\nimport { isDeferredRsc } from './router-reducer/ppr-navigations'\n\nconst enableNewScrollHandler = process.env.__NEXT_APP_NEW_SCROLL_HANDLER\n\nconst __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = (\n ReactDOM as any\n).__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE\n\n// TODO-APP: Replace with new React API for finding dom nodes without a `ref` when available\n/**\n * Wraps ReactDOM.findDOMNode with additional logic to hide React Strict Mode warning\n */\nfunction findDOMNode(\n instance: React.ReactInstance | null | undefined\n): Element | Text | null {\n // Tree-shake for server bundle\n if (typeof window === 'undefined') return null\n\n // __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode is null during module init.\n // We need to lazily reference it.\n const internal_reactDOMfindDOMNode =\n __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode\n return internal_reactDOMfindDOMNode(instance)\n}\n\nconst rectProperties = [\n 'bottom',\n 'height',\n 'left',\n 'right',\n 'top',\n 'width',\n 'x',\n 'y',\n] as const\n/**\n * Check if a HTMLElement is hidden or fixed/sticky position\n */\nfunction shouldSkipElement(element: HTMLElement) {\n // we ignore fixed or sticky positioned elements since they'll likely pass the \"in-viewport\" check\n // and will result in a situation we bail on scroll because of something like a fixed nav,\n // even though the actual page content is offscreen\n if (['sticky', 'fixed'].includes(getComputedStyle(element).position)) {\n return true\n }\n\n // Uses `getBoundingClientRect` to check if the element is hidden instead of `offsetParent`\n // because `offsetParent` doesn't consider document/body\n const rect = element.getBoundingClientRect()\n return rectProperties.every((item) => rect[item] === 0)\n}\n\n/**\n * Check if the top corner of the HTMLElement is in the viewport.\n */\nfunction topOfElementInViewport(\n instance: HTMLElement | FragmentInstance,\n viewportHeight: number\n): boolean {\n const rects = instance.getClientRects()\n if (rects.length === 0) {\n // Just to be explicit.\n return false\n }\n let elementTop = Number.POSITIVE_INFINITY\n for (let i = 0; i < rects.length; i++) {\n const rect = rects[i]\n if (rect.top < elementTop) {\n elementTop = rect.top\n }\n }\n return elementTop >= 0 && elementTop <= viewportHeight\n}\n\n/**\n * Find the DOM node for a hash fragment.\n * If `top` the page has to scroll to the top of the page. This mirrors the browser's behavior.\n * If the hash fragment is an id, the page has to scroll to the element with that id.\n * If the hash fragment is a name, the page has to scroll to the first element with that name.\n */\nfunction getHashFragmentDomNode(hashFragment: string) {\n // If the hash fragment is `top` the page has to scroll to the top of the page.\n if (hashFragment === 'top') {\n return document.body\n }\n\n // If the hash fragment is an id, the page has to scroll to the element with that id.\n return (\n document.getElementById(hashFragment) ??\n // If the hash fragment is a name, the page has to scroll to the first element with that name.\n document.getElementsByName(hashFragment)[0]\n )\n}\ninterface ScrollAndMaybeFocusHandlerProps {\n focusAndScrollRef: FocusAndScrollRef\n children: React.ReactNode\n cacheNode: CacheNode\n}\nclass InnerScrollAndFocusHandlerOld extends React.Component<ScrollAndMaybeFocusHandlerProps> {\n handlePotentialScroll = () => {\n // Handle scroll and focus, it's only applied once.\n const { focusAndScrollRef, cacheNode } = this.props\n\n const scrollRef = focusAndScrollRef.forceScroll\n ? focusAndScrollRef.scrollRef\n : cacheNode.scrollRef\n if (scrollRef === null || !scrollRef.current) return\n\n let domNode:\n | ReturnType<typeof getHashFragmentDomNode>\n | ReturnType<typeof findDOMNode> = null\n const hashFragment = focusAndScrollRef.hashFragment\n\n if (hashFragment) {\n domNode = getHashFragmentDomNode(hashFragment)\n }\n\n // `findDOMNode` is tricky because it returns just the first child if the component is a fragment.\n // This already caused a bug where the first child was a <link/> in head.\n if (!domNode) {\n domNode = findDOMNode(this)\n }\n\n // If there is no DOM node this layout-router level is skipped. It'll be handled higher-up in the tree.\n if (!(domNode instanceof Element)) {\n return\n }\n\n // Verify if the element is a HTMLElement and if we want to consider it for scroll behavior.\n // If the element is skipped, try to select the next sibling and try again.\n while (!(domNode instanceof HTMLElement) || shouldSkipElement(domNode)) {\n if (process.env.NODE_ENV !== 'production') {\n if (domNode.parentElement?.localName === 'head') {\n // We enter this state when metadata was rendered as part of the page or via Next.js.\n // This is always a bug in Next.js and caused by React hoisting metadata.\n // Fixed with `experimental.appNewScrollHandler`\n }\n }\n\n // No siblings found that match the criteria are found, so handle scroll higher up in the tree instead.\n if (domNode.nextElementSibling === null) {\n return\n }\n domNode = domNode.nextElementSibling\n }\n\n // Mark as scrolled so no other segment scrolls for this navigation.\n scrollRef.current = false\n\n disableSmoothScrollDuringRouteTransition(\n () => {\n // In case of hash scroll, we only need to scroll the element into view\n if (hashFragment) {\n domNode.scrollIntoView()\n\n return\n }\n // Store the current viewport height because reading `clientHeight` causes a reflow,\n // and it won't change during this function.\n const htmlElement = document.documentElement\n const viewportHeight = htmlElement.clientHeight\n\n // If the element's top edge is already in the viewport, exit early.\n if (topOfElementInViewport(domNode, viewportHeight)) {\n return\n }\n\n // Otherwise, try scrolling go the top of the document to be backward compatible with pages\n // scrollIntoView() called on `<html/>` element scrolls horizontally on chrome and firefox (that shouldn't happen)\n // We could use it to scroll horizontally following RTL but that also seems to be broken - it will always scroll left\n // scrollLeft = 0 also seems to ignore RTL and manually checking for RTL is too much hassle so we will scroll just vertically\n htmlElement.scrollTop = 0\n\n // Scroll to domNode if domNode is not in viewport when scrolled to top of document\n if (!topOfElementInViewport(domNode, viewportHeight)) {\n // Scroll into view doesn't scroll horizontally by default when not needed\n domNode.scrollIntoView()\n }\n },\n {\n // We will force layout by querying domNode position\n dontForceLayout: true,\n onlyHashChange: focusAndScrollRef.onlyHashChange,\n }\n )\n\n // Mutate after scrolling so that it can be read by `disableSmoothScrollDuringRouteTransition`\n focusAndScrollRef.onlyHashChange = false\n focusAndScrollRef.hashFragment = null\n\n // Set focus on the element\n domNode.focus()\n }\n\n componentDidMount() {\n this.handlePotentialScroll()\n }\n\n componentDidUpdate() {\n this.handlePotentialScroll()\n }\n\n render() {\n return this.props.children\n }\n}\n\n/**\n * Fork of InnerScrollAndFocusHandlerOld using Fragment refs for scrolling.\n * No longer focuses the first host descendant.\n */\nfunction InnerScrollHandlerNew(props: ScrollAndMaybeFocusHandlerProps) {\n const childrenRef = React.useRef<FragmentInstance>(null)\n\n useLayoutEffect(\n () => {\n const { focusAndScrollRef, cacheNode } = props\n\n const scrollRef = focusAndScrollRef.forceScroll\n ? focusAndScrollRef.scrollRef\n : cacheNode.scrollRef\n if (scrollRef === null || !scrollRef.current) return\n\n let instance: FragmentInstance | HTMLElement | null = null\n const hashFragment = focusAndScrollRef.hashFragment\n\n if (hashFragment) {\n instance = getHashFragmentDomNode(hashFragment)\n }\n\n if (!instance) {\n instance = childrenRef.current\n }\n\n // If there is no DOM node this layout-router level is skipped. It'll be handled higher-up in the tree.\n if (instance === null) {\n return\n }\n\n // Mark as scrolled so no other segment scrolls for this navigation.\n scrollRef.current = false\n\n // This handler intentionally leaves focus untouched; resetting focus on\n // navigation is deferred.\n\n disableSmoothScrollDuringRouteTransition(\n () => {\n // In case of hash scroll, we only need to scroll the element into view\n if (hashFragment) {\n instance.scrollIntoView()\n\n return\n }\n // Store the current viewport height because reading `clientHeight` causes a reflow,\n // and it won't change during this function.\n const htmlElement = document.documentElement\n const viewportHeight = htmlElement.clientHeight\n\n // If the element's top edge is already in the viewport, exit early.\n if (topOfElementInViewport(instance, viewportHeight)) {\n return\n }\n\n // Otherwise, try scrolling go the top of the document to be backward compatible with pages\n // scrollIntoView() called on `<html/>` element scrolls horizontally on chrome and firefox (that shouldn't happen)\n // We could use it to scroll horizontally following RTL but that also seems to be broken - it will always scroll left\n // scrollLeft = 0 also seems to ignore RTL and manually checking for RTL is too much hassle so we will scroll just vertically\n htmlElement.scrollTop = 0\n\n // Scroll to domNode if domNode is not in viewport when scrolled to top of document\n if (!topOfElementInViewport(instance, viewportHeight)) {\n // Scroll into view doesn't scroll horizontally by default when not needed\n instance.scrollIntoView()\n }\n },\n {\n // We will force layout by querying domNode position\n dontForceLayout: true,\n onlyHashChange: focusAndScrollRef.onlyHashChange,\n }\n )\n\n // Mutate after scrolling so that it can be read by `disableSmoothScrollDuringRouteTransition`\n focusAndScrollRef.onlyHashChange = false\n focusAndScrollRef.hashFragment = null\n },\n // Used to run on every commit. We may be able to be smarter about this\n // but be prepared for lots of manual testing.\n undefined\n )\n\n return <Fragment ref={childrenRef}>{props.children}</Fragment>\n}\n\nconst InnerScrollAndMaybeFocusHandler = enableNewScrollHandler\n ? InnerScrollHandlerNew\n : InnerScrollAndFocusHandlerOld\n\nfunction ScrollAndMaybeFocusHandler({\n children,\n cacheNode,\n}: {\n children: React.ReactNode\n cacheNode: CacheNode\n}) {\n const context = useContext(GlobalLayoutRouterContext)\n if (!context) {\n throw new Error('invariant global layout router not mounted')\n }\n\n return (\n <InnerScrollAndMaybeFocusHandler\n focusAndScrollRef={context.focusAndScrollRef}\n cacheNode={cacheNode}\n >\n {children}\n </InnerScrollAndMaybeFocusHandler>\n )\n}\n\n/**\n * InnerLayoutRouter handles rendering the provided segment based on the cache.\n */\nfunction InnerLayoutRouter({\n tree,\n segmentPath,\n debugNameContext,\n cacheNode: maybeCacheNode,\n params,\n url,\n isActive,\n}: {\n tree: FlightRouterState\n segmentPath: FlightSegmentPath\n debugNameContext: string\n cacheNode: CacheNode | null\n params: Params\n url: string\n isActive: boolean\n}) {\n const context = useContext(GlobalLayoutRouterContext)\n const parentNavPromises = useContext(NavigationPromisesContext)\n\n if (!context) {\n throw new Error('invariant global layout router not mounted')\n }\n\n const cacheNode =\n maybeCacheNode !== null\n ? maybeCacheNode\n : // This segment is not in the cache. Suspend indefinitely.\n //\n // This should only be reachable for inactive/hidden segments, during\n // prerendering The active segment should always be consistent with the\n // CacheNode tree. Regardless, if we don't have a matching CacheNode, we\n // must suspend rather than render nothing, to prevent showing an\n // inconsistent route.\n\n (use(unresolvedThenable) as never)\n\n // `rsc` represents the renderable node for this segment.\n\n // If this segment has a `prefetchRsc`, it's the statically prefetched data.\n // We should use that on initial render instead of `rsc`. Then we'll switch\n // to `rsc` when the dynamic response streams in.\n //\n // If no prefetch data is available, then we go straight to rendering `rsc`.\n const resolvedPrefetchRsc =\n cacheNode.prefetchRsc !== null ? cacheNode.prefetchRsc : cacheNode.rsc\n\n // We use `useDeferredValue` to handle switching between the prefetched and\n // final values. The second argument is returned on initial render, then it\n // re-renders with the first argument.\n const rsc: any = useDeferredValue(cacheNode.rsc, resolvedPrefetchRsc)\n\n // `rsc` is either a React node or a promise for a React node, except we\n // special case `null` to represent that this segment's data is missing. If\n // it's a promise, we need to unwrap it so we can determine whether or not the\n // data is missing.\n let resolvedRsc: React.ReactNode\n if (isDeferredRsc(rsc)) {\n const unwrappedRsc = use(rsc)\n if (unwrappedRsc === null) {\n // If the promise was resolved to `null`, it means the data for this\n // segment was not returned by the server. Suspend indefinitely. When this\n // happens, the router is responsible for triggering a new state update to\n // un-suspend this segment.\n use(unresolvedThenable) as never\n }\n resolvedRsc = unwrappedRsc\n } else {\n // This is not a deferred RSC promise. Don't need to unwrap it.\n if (rsc === null) {\n use(unresolvedThenable) as never\n }\n resolvedRsc = rsc\n }\n\n // In dev, we create a NavigationPromisesContext containing the instrumented promises that provide\n // `useSelectedLayoutSegment` and `useSelectedLayoutSegments`.\n // Promises are cached outside of render to survive suspense retries.\n let navigationPromises: NavigationPromises | null = null\n if (process.env.NODE_ENV !== 'production') {\n const { createNestedLayoutNavigationPromises } =\n require('./navigation-devtools') as typeof import('./navigation-devtools')\n\n navigationPromises = createNestedLayoutNavigationPromises(\n tree,\n parentNavPromises\n )\n }\n\n let children = resolvedRsc\n\n if (navigationPromises) {\n children = (\n <NavigationPromisesContext.Provider value={navigationPromises}>\n {resolvedRsc}\n </NavigationPromisesContext.Provider>\n )\n }\n\n children = (\n // The layout router context narrows down tree and childNodes at each level.\n <LayoutRouterContext.Provider\n value={{\n parentTree: tree,\n parentCacheNode: cacheNode,\n parentSegmentPath: segmentPath,\n parentParams: params,\n // This is always set to null as we enter a child segment. It's\n // populated by LoadingBoundaryProvider the next time we reach a\n // loading boundary.\n parentLoadingData: null,\n debugNameContext: debugNameContext,\n\n // TODO-APP: overriding of url for parallel routes\n url: url,\n isActive: isActive,\n }}\n >\n {children}\n </LayoutRouterContext.Provider>\n )\n\n return children\n}\n\nexport function LoadingBoundaryProvider({\n loading,\n children,\n}: {\n loading: LoadingModuleData\n children: React.ReactNode\n}) {\n // Provides the data needed to render a loading.tsx boundary, via context.\n //\n // loading.tsx creates a Suspense boundary around each of a layout's child\n // slots. (Might be bit confusing to think about the data flow, but: if\n // loading.tsx and layout.tsx are in the same directory, they are assigned\n // to the same CacheNode.)\n //\n // This provider component does not render the Suspense boundary directly;\n // that's handled by LoadingBoundary.\n //\n // TODO: For simplicity, we should combine this provider with LoadingBoundary\n // and render the Suspense boundary directly. The only real benefit of doing\n // it separately is so that when there are multiple parallel routes, we only\n // send the boundary data once, rather than once per child. But that's a\n // negligible benefit and can be achieved via caching instead.\n const parentContext = use(LayoutRouterContext)\n if (parentContext === null) {\n return children\n }\n // All values except for parentLoadingData are the same as the parent context.\n return (\n <LayoutRouterContext.Provider\n value={{\n parentTree: parentContext.parentTree,\n parentCacheNode: parentContext.parentCacheNode,\n parentSegmentPath: parentContext.parentSegmentPath,\n parentParams: parentContext.parentParams,\n parentLoadingData: loading,\n debugNameContext: parentContext.debugNameContext,\n url: parentContext.url,\n isActive: parentContext.isActive,\n }}\n >\n {children}\n </LayoutRouterContext.Provider>\n )\n}\n\n/**\n * Renders suspense boundary with the provided \"loading\" property as the fallback.\n * If no loading property is provided it renders the children without a suspense boundary.\n */\nfunction LoadingBoundary({\n name,\n loading,\n children,\n}: {\n name: ActivityProps['name']\n loading: LoadingModuleData | null\n children: React.ReactNode\n}): JSX.Element {\n // TODO: For LoadingBoundary, and the other built-in boundary types, don't\n // wrap in an extra function component if no user-defined boundary is\n // provided. In other words, inline this conditional wrapping logic into\n // the parent component. More efficient and keeps unnecessary junk out of\n // the component stack.\n if (loading !== null) {\n const loadingRsc = loading[0]\n const loadingStyles = loading[1]\n const loadingScripts = loading[2]\n return (\n <Suspense\n name={name}\n fallback={\n <>\n {loadingStyles}\n {loadingScripts}\n {loadingRsc}\n </>\n }\n >\n {children}\n </Suspense>\n )\n }\n\n return <>{children}</>\n}\n\n/**\n * OuterLayoutRouter handles the current segment as well as <Offscreen> rendering of other segments.\n * It can be rendered next to each other with a different `parallelRouterKey`, allowing for Parallel routes.\n */\nexport default function OuterLayoutRouter({\n parallelRouterKey,\n error,\n errorStyles,\n errorScripts,\n templateStyles,\n templateScripts,\n template,\n notFound,\n forbidden,\n unauthorized,\n segmentViewBoundaries,\n}: {\n parallelRouterKey: string\n error: ErrorComponent | undefined\n errorStyles: React.ReactNode | undefined\n errorScripts: React.ReactNode | undefined\n templateStyles: React.ReactNode | undefined\n templateScripts: React.ReactNode | undefined\n template: React.ReactNode\n notFound: React.ReactNode | undefined\n forbidden: React.ReactNode | undefined\n unauthorized: React.ReactNode | undefined\n segmentViewBoundaries?: React.ReactNode\n}) {\n const context = useContext(LayoutRouterContext)\n if (!context) {\n throw new Error('invariant expected layout router to be mounted')\n }\n\n const {\n parentTree,\n parentCacheNode,\n parentSegmentPath,\n parentParams,\n parentLoadingData,\n url,\n isActive,\n debugNameContext,\n } = context\n\n // Get the CacheNode for this segment by reading it from the parent segment's\n // child map.\n const parentTreeSegment = parentTree[0]\n const segmentPath =\n parentSegmentPath === null\n ? // TODO: The root segment value is currently omitted from the segment\n // path. This has led to a bunch of special cases scattered throughout\n // the code. We should clean this up.\n [parallelRouterKey]\n : parentSegmentPath.concat([parentTreeSegment, parallelRouterKey])\n\n // The \"state\" key of a segment is the one passed to React — it represents the\n // identity of the UI tree. Whenever the state key changes, the tree is\n // recreated and the state is reset. In the App Router model, search params do\n // not cause state to be lost, so two segments with the same segment path but\n // different search params should have the same state key.\n //\n // The \"cache\" key of a segment, however, *does* include the search params, if\n // it's possible that the segment accessed the search params on the server.\n // (This only applies to page segments; layout segments cannot access search\n // params on the server.)\n const activeTree = parentTree[1][parallelRouterKey]\n const maybeParentSlots = parentCacheNode.slots\n if (activeTree === undefined || maybeParentSlots === null) {\n // Could not find a matching segment. The client tree is inconsistent with\n // the server tree. Suspend indefinitely; the router will have already\n // detected the inconsistency when handling the server response, and\n // triggered a refresh of the page to recover.\n use(unresolvedThenable) as never\n }\n\n let maybeValidationBoundaryId: string | null = null\n if (typeof window === 'undefined' && process.env.__NEXT_CACHE_COMPONENTS) {\n maybeValidationBoundaryId = use(InstantValidationBoundaryContext)\n }\n\n const activeSegment = activeTree[0]\n const activeCacheNode = maybeParentSlots![parallelRouterKey] ?? null\n const activeStateKey = createRouterCacheKey(activeSegment, true) // no search params\n\n // At each level of the route tree, not only do we render the currently\n // active segment — we also render the last N segments that were active at\n // this level inside a hidden <Activity> boundary, to preserve their state\n // if or when the user navigates to them again.\n //\n // bfcacheEntry is a linked list of FlightRouterStates.\n let bfcacheEntry: RouterBFCacheEntry | null = useRouterBFCache(\n activeTree,\n activeCacheNode,\n activeStateKey\n )\n let children: Array<React.ReactNode> = []\n do {\n const tree = bfcacheEntry.tree\n const cacheNode = bfcacheEntry.cacheNode\n const stateKey = bfcacheEntry.stateKey\n const segment = tree[0]\n\n /*\n - Error boundary\n - Only renders error boundary if error component is provided.\n - Rendered for each segment to ensure they have their own error state.\n - When gracefully degrade for bots, skip rendering error boundary.\n - Loading boundary\n - Only renders suspense boundary if loading components is provided.\n - Rendered for each segment to ensure they have their own loading state.\n - Passed to the router during rendering to ensure it can be immediately rendered when suspending on a Flight fetch.\n */\n\n let segmentBoundaryTriggerNode: React.ReactNode = null\n let segmentViewStateNode: React.ReactNode = null\n if (process.env.NODE_ENV !== 'production') {\n const { SegmentBoundaryTriggerNode, SegmentViewStateNode } =\n require('../../next-devtools/userspace/app/segment-explorer-node') as typeof import('../../next-devtools/userspace/app/segment-explorer-node')\n\n const pagePrefix = normalizeAppPath(url)\n segmentViewStateNode = (\n <SegmentViewStateNode key={pagePrefix} page={pagePrefix} />\n )\n\n segmentBoundaryTriggerNode = (\n <>\n <SegmentBoundaryTriggerNode />\n </>\n )\n }\n\n let params = parentParams\n if (Array.isArray(segment)) {\n // This segment contains a route param. Accumulate these as we traverse\n // down the router tree. The result represents the set of params that\n // the layout/page components are permitted to access below this point.\n const paramName = segment[0]\n const paramCacheKey = segment[1]\n const paramType = segment[2]\n const paramValue = getParamValueFromCacheKey(paramCacheKey, paramType)\n if (paramValue !== null) {\n params = {\n ...parentParams,\n [paramName]: paramValue,\n }\n }\n }\n\n const debugName = getBoundaryDebugNameFromSegment(segment)\n // `debugNameContext` represents the nearest non-\"virtual\" parent segment.\n // `getBoundaryDebugNameFromSegment` returns undefined for virtual segments.\n // So if `debugName` is undefined, the context is passed through unchanged.\n const childDebugNameContext = debugName ?? debugNameContext\n\n // In practical terms, clicking this name in the Suspense DevTools\n // should select the child slots of that layout.\n //\n // So the name we apply to the Activity boundary is actually based on\n // the nearest parent segments.\n //\n // We skip over \"virtual\" parents, i.e. ones inserted by Next.js that\n // don't correspond to application-defined code.\n const isVirtual = debugName === undefined\n const debugNameToDisplay = isVirtual ? undefined : debugNameContext\n\n let templateValue = (\n <ScrollAndMaybeFocusHandler cacheNode={cacheNode}>\n <ErrorBoundary\n errorComponent={error}\n errorStyles={errorStyles}\n errorScripts={errorScripts}\n >\n <LoadingBoundary\n name={debugNameToDisplay}\n // TODO: The loading module data for a segment is stored on the\n // parent, then applied to each of that parent segment's\n // parallel route slots. In the simple case where there's only\n // one parallel route (the `children` slot), this is no\n // different from if the loading module data were stored on the\n // child directly. But I'm not sure this actually makes sense\n // when there are multiple parallel routes. It's not a huge\n // issue because you always have the option to define a narrower\n // loading boundary for a particular slot. But this sort of\n // smells like an implementation accident to me.\n loading={parentLoadingData}\n >\n <HTTPAccessFallbackBoundary\n notFound={notFound}\n forbidden={forbidden}\n unauthorized={unauthorized}\n >\n <RedirectBoundary>\n <InnerLayoutRouter\n url={url}\n tree={tree}\n params={params}\n cacheNode={cacheNode}\n segmentPath={segmentPath}\n debugNameContext={childDebugNameContext}\n isActive={isActive && stateKey === activeStateKey}\n />\n {segmentBoundaryTriggerNode}\n </RedirectBoundary>\n </HTTPAccessFallbackBoundary>\n </LoadingBoundary>\n </ErrorBoundary>\n {segmentViewStateNode}\n </ScrollAndMaybeFocusHandler>\n )\n\n if (\n typeof window === 'undefined' &&\n process.env.__NEXT_CACHE_COMPONENTS &&\n typeof maybeValidationBoundaryId === 'string'\n ) {\n templateValue = (\n <RenderValidationBoundaryAtThisLevel id={maybeValidationBoundaryId}>\n {templateValue}\n </RenderValidationBoundaryAtThisLevel>\n )\n }\n\n let child = (\n <TemplateContext.Provider key={stateKey} value={templateValue}>\n {templateStyles}\n {templateScripts}\n {template}\n </TemplateContext.Provider>\n )\n\n if (process.env.NODE_ENV !== 'production') {\n const { SegmentStateProvider } =\n require('../../next-devtools/userspace/app/segment-explorer-node') as typeof import('../../next-devtools/userspace/app/segment-explorer-node')\n\n child = (\n <SegmentStateProvider key={stateKey}>\n {child}\n {segmentViewBoundaries}\n </SegmentStateProvider>\n )\n }\n\n if (process.env.__NEXT_CACHE_COMPONENTS) {\n child = (\n <Activity\n name={debugNameToDisplay}\n key={stateKey}\n mode={stateKey === activeStateKey ? 'visible' : 'hidden'}\n >\n {child}\n </Activity>\n )\n }\n\n children.push(child)\n\n bfcacheEntry = bfcacheEntry.next\n } while (bfcacheEntry !== null)\n\n return children\n}\n\nfunction getBoundaryDebugNameFromSegment(segment: Segment): string | undefined {\n if (segment === '/') {\n // Reached the root\n return '/'\n }\n if (typeof segment === 'string') {\n if (isVirtualLayout(segment)) {\n return undefined\n } else {\n return segment + '/'\n }\n }\n const paramCacheKey = segment[1]\n return paramCacheKey + '/'\n}\n\nfunction isVirtualLayout(segment: string): boolean {\n return (\n // This is inserted by the loader. Uses double-underscore convention\n // (like __PAGE__ and __DEFAULT__) to avoid collisions with\n // user-defined route groups.\n segment === '(__SLOT__)'\n )\n}\n"],"names":["LoadingBoundaryProvider","OuterLayoutRouter","enableNewScrollHandler","process","env","__NEXT_APP_NEW_SCROLL_HANDLER","__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","ReactDOM","findDOMNode","instance","window","internal_reactDOMfindDOMNode","rectProperties","shouldSkipElement","element","includes","getComputedStyle","position","rect","getBoundingClientRect","every","item","topOfElementInViewport","viewportHeight","rects","getClientRects","length","elementTop","Number","POSITIVE_INFINITY","i","top","getHashFragmentDomNode","hashFragment","document","body","getElementById","getElementsByName","InnerScrollAndFocusHandlerOld","React","Component","componentDidMount","handlePotentialScroll","componentDidUpdate","render","props","children","focusAndScrollRef","cacheNode","scrollRef","forceScroll","current","domNode","Element","HTMLElement","NODE_ENV","parentElement","localName","nextElementSibling","disableSmoothScrollDuringRouteTransition","scrollIntoView","htmlElement","documentElement","clientHeight","scrollTop","dontForceLayout","onlyHashChange","focus","InnerScrollHandlerNew","childrenRef","useRef","useLayoutEffect","undefined","Fragment","ref","InnerScrollAndMaybeFocusHandler","ScrollAndMaybeFocusHandler","context","useContext","GlobalLayoutRouterContext","Error","InnerLayoutRouter","tree","segmentPath","debugNameContext","maybeCacheNode","params","url","isActive","parentNavPromises","NavigationPromisesContext","use","unresolvedThenable","resolvedPrefetchRsc","prefetchRsc","rsc","useDeferredValue","resolvedRsc","isDeferredRsc","unwrappedRsc","navigationPromises","createNestedLayoutNavigationPromises","require","Provider","value","LayoutRouterContext","parentTree","parentCacheNode","parentSegmentPath","parentParams","parentLoadingData","loading","parentContext","LoadingBoundary","name","loadingRsc","loadingStyles","loadingScripts","Suspense","fallback","parallelRouterKey","error","errorStyles","errorScripts","templateStyles","templateScripts","template","notFound","forbidden","unauthorized","segmentViewBoundaries","parentTreeSegment","concat","activeTree","maybeParentSlots","slots","maybeValidationBoundaryId","__NEXT_CACHE_COMPONENTS","InstantValidationBoundaryContext","activeSegment","activeCacheNode","activeStateKey","createRouterCacheKey","bfcacheEntry","useRouterBFCache","stateKey","segment","segmentBoundaryTriggerNode","segmentViewStateNode","SegmentBoundaryTriggerNode","SegmentViewStateNode","pagePrefix","normalizeAppPath","page","Array","isArray","paramName","paramCacheKey","paramType","paramValue","getParamValueFromCacheKey","debugName","getBoundaryDebugNameFromSegment","childDebugNameContext","isVirtual","debugNameToDisplay","templateValue","ErrorBoundary","errorComponent","HTTPAccessFallbackBoundary","RedirectBoundary","RenderValidationBoundaryAtThisLevel","id","child","TemplateContext","SegmentStateProvider","Activity","mode","push","next","isVirtualLayout"],"mappings":"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","ignoreList":[0]} |
@@ -63,3 +63,3 @@ /* global location */ // imports polyfill from `@next/polyfill-module` after build. | ||
| const _isnextroutererror = require("./components/is-next-router-error"); | ||
| const version = "16.3.0-canary.102"; | ||
| const version = "16.3.0-canary.103"; | ||
| let router; | ||
@@ -66,0 +66,0 @@ const emitter = (0, _mitt.default)(); |
@@ -1,1 +0,1 @@ | ||
| (()=>{var e={595:e=>{const createImports=(e,r,t="rule")=>Object.keys(e).map((s=>{const o=e[s];const a=Object.keys(o).map((e=>r.decl({prop:e,value:o[e],raws:{before:"\n "}})));const n=a.length>0;const c=t==="rule"?r.rule({selector:`:import('${s}')`,raws:{after:n?"\n":""}}):r.atRule({name:"icss-import",params:`'${s}'`,raws:{after:n?"\n":""}});if(n){c.append(a)}return c}));const createExports=(e,r,t="rule")=>{const s=Object.keys(e).map((t=>r.decl({prop:t,value:e[t],raws:{before:"\n "}})));if(s.length===0){return[]}const o=t==="rule"?r.rule({selector:`:export`,raws:{after:"\n"}}):r.atRule({name:"icss-export",raws:{after:"\n"}});o.append(s);return[o]};const createICSSRules=(e,r,t,s)=>[...createImports(e,t,s),...createExports(r,t,s)];e.exports=createICSSRules},189:e=>{const r=/^:import\(("[^"]*"|'[^']*'|[^"']+)\)$/;const t=/^("[^"]*"|'[^']*'|[^"']+)$/;const getDeclsObject=e=>{const r={};e.walkDecls((e=>{const t=e.raws.before?e.raws.before.trim():"";r[t+e.prop]=e.value}));return r};const extractICSS=(e,s=true,o="auto")=>{const a={};const n={};function addImports(e,r){const t=r.replace(/'|"/g,"");a[t]=Object.assign(a[t]||{},getDeclsObject(e));if(s){e.remove()}}function addExports(e){Object.assign(n,getDeclsObject(e));if(s){e.remove()}}e.each((e=>{if(e.type==="rule"&&o!=="at-rule"){if(e.selector.slice(0,7)===":import"){const t=r.exec(e.selector);if(t){addImports(e,t[1])}}if(e.selector===":export"){addExports(e)}}if(e.type==="atrule"&&o!=="rule"){if(e.name==="icss-import"){const r=t.exec(e.params);if(r){addImports(e,r[1])}}if(e.name==="icss-export"){addExports(e)}}}));return{icssImports:a,icssExports:n}};e.exports=extractICSS},22:(e,r,t)=>{const s=t(380);const o=t(21);const a=t(189);const n=t(595);e.exports={replaceValueSymbols:s,replaceSymbols:o,extractICSS:a,createICSSRules:n}},21:(e,r,t)=>{const s=t(380);const replaceSymbols=(e,r)=>{e.walk((e=>{if(e.type==="decl"&&e.value){e.value=s(e.value.toString(),r)}else if(e.type==="rule"&&e.selector){e.selector=s(e.selector.toString(),r)}else if(e.type==="atrule"&&e.params){e.params=s(e.params.toString(),r)}}))};e.exports=replaceSymbols},380:e=>{const r=/[$]?[\w-]+/g;const replaceValueSymbols=(e,t)=>{let s;while(s=r.exec(e)){const o=t[s[0]];if(o){e=e.slice(0,s.index)+o+e.slice(r.lastIndex);r.lastIndex-=s[0].length-o.length}}return e};e.exports=replaceValueSymbols}};var r={};function __nccwpck_require__(t){var s=r[t];if(s!==undefined){return s.exports}var o=r[t]={exports:{}};var a=true;try{e[t](o,o.exports,__nccwpck_require__);a=false}finally{if(a)delete r[t]}return o.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var t=__nccwpck_require__(22);module.exports=t})(); | ||
| (()=>{var e={257:e=>{const createImports=(e,r,t="rule")=>Object.keys(e).map((s=>{const o=e[s];const a=Object.keys(o).map((e=>r.decl({prop:e,value:o[e],raws:{before:"\n "}})));const n=a.length>0;const c=t==="rule"?r.rule({selector:`:import('${s}')`,raws:{after:n?"\n":""}}):r.atRule({name:"icss-import",params:`'${s}'`,raws:{after:n?"\n":""}});if(n){c.append(a)}return c}));const createExports=(e,r,t="rule")=>{const s=Object.keys(e).map((t=>r.decl({prop:t,value:e[t],raws:{before:"\n "}})));if(s.length===0){return[]}const o=t==="rule"?r.rule({selector:`:export`,raws:{after:"\n"}}):r.atRule({name:"icss-export",raws:{after:"\n"}});o.append(s);return[o]};const createICSSRules=(e,r,t,s)=>[...createImports(e,t,s),...createExports(r,t,s)];e.exports=createICSSRules},243:e=>{const r=/^:import\(("[^"]*"|'[^']*'|[^"']+)\)$/;const t=/^("[^"]*"|'[^']*'|[^"']+)$/;const getDeclsObject=e=>{const r={};e.walkDecls((e=>{const t=e.raws.before?e.raws.before.trim():"";r[t+e.prop]=e.value}));return r};const extractICSS=(e,s=true,o="auto")=>{const a={};const n={};function addImports(e,r){const t=r.replace(/'|"/g,"");a[t]=Object.assign(a[t]||{},getDeclsObject(e));if(s){e.remove()}}function addExports(e){Object.assign(n,getDeclsObject(e));if(s){e.remove()}}e.each((e=>{if(e.type==="rule"&&o!=="at-rule"){if(e.selector.slice(0,7)===":import"){const t=r.exec(e.selector);if(t){addImports(e,t[1])}}if(e.selector===":export"){addExports(e)}}if(e.type==="atrule"&&o!=="rule"){if(e.name==="icss-import"){const r=t.exec(e.params);if(r){addImports(e,r[1])}}if(e.name==="icss-export"){addExports(e)}}}));return{icssImports:a,icssExports:n}};e.exports=extractICSS},548:(e,r,t)=>{const s=t(802);const o=t(331);const a=t(243);const n=t(257);e.exports={replaceValueSymbols:s,replaceSymbols:o,extractICSS:a,createICSSRules:n}},331:(e,r,t)=>{const s=t(802);const replaceSymbols=(e,r)=>{e.walk((e=>{if(e.type==="decl"&&e.value){e.value=s(e.value.toString(),r)}else if(e.type==="rule"&&e.selector){e.selector=s(e.selector.toString(),r)}else if(e.type==="atrule"&&e.params){e.params=s(e.params.toString(),r)}}))};e.exports=replaceSymbols},802:e=>{const r=/[$]?[\w-]+/g;const replaceValueSymbols=(e,t)=>{let s;while(s=r.exec(e)){const o=t[s[0]];if(o){e=e.slice(0,s.index)+o+e.slice(r.lastIndex);r.lastIndex-=s[0].length-o.length}}return e};e.exports=replaceValueSymbols}};var r={};function __nccwpck_require__(t){var s=r[t];if(s!==undefined){return s.exports}var o=r[t]={exports:{}};var a=true;try{e[t](o,o.exports,__nccwpck_require__);a=false}finally{if(a)delete r[t]}return o.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var t=__nccwpck_require__(548);module.exports=t})(); |
@@ -1,1 +0,1 @@ | ||
| (()=>{var e={494:(e,r,a)=>{var u=a(940);function shouldSetZeroBasis(e){if(!e){return false}return e==="0"||e.replace(/\s/g,"")==="0px"}function properBasis(e){if(shouldSetZeroBasis(e)){return"0%"}return e}e.exports=function(e){if(e.prop==="flex"){var r=u.list.space(e.value);var a="0";var s="1";var t="0%";if(r[0]){a=r[0]}if(r[1]){if(!isNaN(r[1])){s=r[1]}else{t=r[1]}}if(r[2]){t=r[2]}e.value=a+" "+s+" "+properBasis(t)}}},260:(e,r,a)=>{var u=a(940);e.exports=function(e){if(e.prop==="flex"){var r=u.list.space(e.value);var a=r[0];var s=r[1]||"1";var t=r[2]||"0%";if(t==="0%")t=null;e.value=a+" "+s+(t?" "+t:"")}}},224:(e,r,a)=>{var u=a(940);e.exports=function(e){var r=/(\d{1,}) (\d{1,}) (calc\(.*\))/g;var a=r.exec(e.value);if(e.prop==="flex"&&a){var s=u.decl({prop:"flex-grow",value:a[1],source:e.source});var t=u.decl({prop:"flex-shrink",value:a[2],source:e.source});var i=u.decl({prop:"flex-basis",value:a[3],source:e.source});e.parent.insertBefore(e,s);e.parent.insertBefore(e,t);e.parent.insertBefore(e,i);e.remove()}}},880:(e,r,a)=>{var u=a(494);var s=a(260);var t=a(224);var i=["none","auto","content","inherit","initial","unset"];e.exports=function(e){var r=Object.assign({bug4:true,bug6:true,bug81a:true},e);return{postcssPlugin:"postcss-flexbugs-fixes",Once:function(e,a){e.walkDecls((function(e){if(e.value.indexOf("var(")>-1){return}if(e.value==="none"){return}var n=a.list.space(e.value);if(i.indexOf(e.value)>0&&n.length===1){return}if(r.bug4){u(e)}if(r.bug6){s(e)}if(r.bug81a){t(e)}}))}}};e.exports.postcss=true},940:e=>{"use strict";e.exports=require("postcss")}};var r={};function __nccwpck_require__(a){var u=r[a];if(u!==undefined){return u.exports}var s=r[a]={exports:{}};var t=true;try{e[a](s,s.exports,__nccwpck_require__);t=false}finally{if(t)delete r[a]}return s.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var a=__nccwpck_require__(880);module.exports=a})(); | ||
| (()=>{var e={172:(e,r,a)=>{var u=a(940);function shouldSetZeroBasis(e){if(!e){return false}return e==="0"||e.replace(/\s/g,"")==="0px"}function properBasis(e){if(shouldSetZeroBasis(e)){return"0%"}return e}e.exports=function(e){if(e.prop==="flex"){var r=u.list.space(e.value);var a="0";var s="1";var t="0%";if(r[0]){a=r[0]}if(r[1]){if(!isNaN(r[1])){s=r[1]}else{t=r[1]}}if(r[2]){t=r[2]}e.value=a+" "+s+" "+properBasis(t)}}},630:(e,r,a)=>{var u=a(940);e.exports=function(e){if(e.prop==="flex"){var r=u.list.space(e.value);var a=r[0];var s=r[1]||"1";var t=r[2]||"0%";if(t==="0%")t=null;e.value=a+" "+s+(t?" "+t:"")}}},374:(e,r,a)=>{var u=a(940);e.exports=function(e){var r=/(\d{1,}) (\d{1,}) (calc\(.*\))/g;var a=r.exec(e.value);if(e.prop==="flex"&&a){var s=u.decl({prop:"flex-grow",value:a[1],source:e.source});var t=u.decl({prop:"flex-shrink",value:a[2],source:e.source});var i=u.decl({prop:"flex-basis",value:a[3],source:e.source});e.parent.insertBefore(e,s);e.parent.insertBefore(e,t);e.parent.insertBefore(e,i);e.remove()}}},826:(e,r,a)=>{var u=a(172);var s=a(630);var t=a(374);var i=["none","auto","content","inherit","initial","unset"];e.exports=function(e){var r=Object.assign({bug4:true,bug6:true,bug81a:true},e);return{postcssPlugin:"postcss-flexbugs-fixes",Once:function(e,a){e.walkDecls((function(e){if(e.value.indexOf("var(")>-1){return}if(e.value==="none"){return}var n=a.list.space(e.value);if(i.indexOf(e.value)>0&&n.length===1){return}if(r.bug4){u(e)}if(r.bug6){s(e)}if(r.bug81a){t(e)}}))}}};e.exports.postcss=true},940:e=>{"use strict";e.exports=require("postcss")}};var r={};function __nccwpck_require__(a){var u=r[a];if(u!==undefined){return u.exports}var s=r[a]={exports:{}};var t=true;try{e[a](s,s.exports,__nccwpck_require__);t=false}finally{if(t)delete r[a]}return s.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var a=__nccwpck_require__(826);module.exports=a})(); |
@@ -1,1 +0,1 @@ | ||
| (()=>{var r={523:(r,e,t)=>{const o=t(596);const n=/^(.+?)\s+from\s+(?:"([^"]+)"|'([^']+)'|(global))$/;const s=/^:import\((?:"([^"]+)"|'([^']+)')\)/;const c=1;function addImportToGraph(r,e,t,o){const n=e+"_"+"siblings";const s=e+"_"+r;if(o[s]!==c){if(!Array.isArray(o[n])){o[n]=[]}const e=o[n];if(Array.isArray(t[r])){t[r]=t[r].concat(e)}else{t[r]=e.slice()}o[s]=c;e.push(r)}}r.exports=(r={})=>{let e=0;const t=typeof r.createImportedName!=="function"?r=>`i__imported_${r.replace(/\W/g,"_")}_${e++}`:r.createImportedName;const c=r.failOnWrongOrder;return{postcssPlugin:"postcss-modules-extract-imports",prepare(){const r={};const e={};const a={};const i={};const p={};return{Once(l,f){l.walkRules((t=>{const o=s.exec(t.selector);if(o){const[,n,s]=o;const c=n||s;addImportToGraph(c,"root",r,e);a[c]=t}}));l.walkDecls(/^composes$/,(o=>{const s=o.value.match(n);if(!s){return}let c;let[,a,l,f,u]=s;if(u){c=a.split(/\s+/).map((r=>`global(${r})`))}else{const n=l||f;let s=o.parent;let u="";while(s.type!=="root"){u=s.parent.index(s)+"_"+u;s=s.parent}const{selector:d}=o.parent;const _=`_${u}${d}`;addImportToGraph(n,_,r,e);i[n]=o;p[n]=p[n]||{};c=a.split(/\s+/).map((r=>{if(!p[n][r]){p[n][r]=t(r,n)}return p[n][r]}))}o.value=c.join(" ")}));const u=o(r,c);if(u instanceof Error){const r=u.nodes.find((r=>i.hasOwnProperty(r)));const e=i[r];throw e.error("Failed to resolve order of composed modules "+u.nodes.map((r=>"`"+r+"`")).join(", ")+".",{plugin:"postcss-modules-extract-imports",word:"composes"})}let d;u.forEach((r=>{const e=p[r];let t=a[r];if(!t&&e){t=f.rule({selector:`:import("${r}")`,raws:{after:"\n"}});if(d){l.insertAfter(d,t)}else{l.prepend(t)}}d=t;if(!e){return}Object.keys(e).forEach((r=>{t.append(f.decl({value:r,prop:e[r],raws:{before:"\n "}}))}))}))}}}}};r.exports.postcss=true},596:r=>{const e=2;const t=1;function createError(r,e){const t=new Error("Nondeterministic import's order");const o=e[r];const n=o.find((t=>e[t].indexOf(r)>-1));t.nodes=[r,n];return t}function walkGraph(r,o,n,s,c){if(n[r]===e){return}if(n[r]===t){if(c){return createError(r,o)}return}n[r]=t;const a=o[r];const i=a.length;for(let r=0;r<i;++r){const e=walkGraph(a[r],o,n,s,c);if(e instanceof Error){return e}}n[r]=e;s.push(r)}function topologicalSort(r,e){const t=[];const o={};const n=Object.keys(r);const s=n.length;for(let c=0;c<s;++c){const s=walkGraph(n[c],r,o,t,e);if(s instanceof Error){return s}}return t}r.exports=topologicalSort}};var e={};function __nccwpck_require__(t){var o=e[t];if(o!==undefined){return o.exports}var n=e[t]={exports:{}};var s=true;try{r[t](n,n.exports,__nccwpck_require__);s=false}finally{if(s)delete e[t]}return n.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var t=__nccwpck_require__(523);module.exports=t})(); | ||
| (()=>{var r={109:(r,e,t)=>{const o=t(402);const n=/^(.+?)\s+from\s+(?:"([^"]+)"|'([^']+)'|(global))$/;const s=/^:import\((?:"([^"]+)"|'([^']+)')\)/;const c=1;function addImportToGraph(r,e,t,o){const n=e+"_"+"siblings";const s=e+"_"+r;if(o[s]!==c){if(!Array.isArray(o[n])){o[n]=[]}const e=o[n];if(Array.isArray(t[r])){t[r]=t[r].concat(e)}else{t[r]=e.slice()}o[s]=c;e.push(r)}}r.exports=(r={})=>{let e=0;const t=typeof r.createImportedName!=="function"?r=>`i__imported_${r.replace(/\W/g,"_")}_${e++}`:r.createImportedName;const c=r.failOnWrongOrder;return{postcssPlugin:"postcss-modules-extract-imports",prepare(){const r={};const e={};const a={};const i={};const p={};return{Once(l,f){l.walkRules((t=>{const o=s.exec(t.selector);if(o){const[,n,s]=o;const c=n||s;addImportToGraph(c,"root",r,e);a[c]=t}}));l.walkDecls(/^composes$/,(o=>{const s=o.value.match(n);if(!s){return}let c;let[,a,l,f,u]=s;if(u){c=a.split(/\s+/).map((r=>`global(${r})`))}else{const n=l||f;let s=o.parent;let u="";while(s.type!=="root"){u=s.parent.index(s)+"_"+u;s=s.parent}const{selector:d}=o.parent;const _=`_${u}${d}`;addImportToGraph(n,_,r,e);i[n]=o;p[n]=p[n]||{};c=a.split(/\s+/).map((r=>{if(!p[n][r]){p[n][r]=t(r,n)}return p[n][r]}))}o.value=c.join(" ")}));const u=o(r,c);if(u instanceof Error){const r=u.nodes.find((r=>i.hasOwnProperty(r)));const e=i[r];throw e.error("Failed to resolve order of composed modules "+u.nodes.map((r=>"`"+r+"`")).join(", ")+".",{plugin:"postcss-modules-extract-imports",word:"composes"})}let d;u.forEach((r=>{const e=p[r];let t=a[r];if(!t&&e){t=f.rule({selector:`:import("${r}")`,raws:{after:"\n"}});if(d){l.insertAfter(d,t)}else{l.prepend(t)}}d=t;if(!e){return}Object.keys(e).forEach((r=>{t.append(f.decl({value:r,prop:e[r],raws:{before:"\n "}}))}))}))}}}}};r.exports.postcss=true},402:r=>{const e=2;const t=1;function createError(r,e){const t=new Error("Nondeterministic import's order");const o=e[r];const n=o.find((t=>e[t].indexOf(r)>-1));t.nodes=[r,n];return t}function walkGraph(r,o,n,s,c){if(n[r]===e){return}if(n[r]===t){if(c){return createError(r,o)}return}n[r]=t;const a=o[r];const i=a.length;for(let r=0;r<i;++r){const e=walkGraph(a[r],o,n,s,c);if(e instanceof Error){return e}}n[r]=e;s.push(r)}function topologicalSort(r,e){const t=[];const o={};const n=Object.keys(r);const s=n.length;for(let c=0;c<s;++c){const s=walkGraph(n[c],r,o,t,e);if(s instanceof Error){return s}}return t}r.exports=topologicalSort}};var e={};function __nccwpck_require__(t){var o=e[t];if(o!==undefined){return o.exports}var n=e[t]={exports:{}};var s=true;try{r[t](n,n.exports,__nccwpck_require__);s=false}finally{if(s)delete e[t]}return n.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var t=__nccwpck_require__(109);module.exports=t})(); |
@@ -1,1 +0,1 @@ | ||
| (()=>{"use strict";var e={750:(e,r,t)=>{const s=t(326);const a=/^(.+?|\([\s\S]+?\))\s+from\s+("[^"]*"|'[^']*'|[\w-]+)$/;const n=/(?:\s+|^)([\w-]+):?(.*?)$/;const o=/^([\w-]+)(?:\s+as\s+([\w-]+))?/;e.exports=e=>{let r=0;const t=e&&e.createImportedName||(e=>`i__const_${e.replace(/\W/g,"_")}_${r++}`);return{postcssPlugin:"postcss-modules-values",prepare(e){const r=[];const p={};return{Once(i,c){i.walkAtRules(/value/i,(i=>{const c=i.params.match(a);if(c){let[,e,s]=c;if(p[s]){s=p[s]}const a=e.replace(/^\(\s*([\s\S]+)\s*\)$/,"$1").split(/\s*,\s*/).map((e=>{const r=o.exec(e);if(r){const[,e,s=e]=r;const a=t(s);p[s]=a;return{theirName:e,importedName:a}}else{throw new Error(`@import statement "${e}" is invalid!`)}}));r.push({path:s,imports:a});i.remove();return}if(i.params.indexOf("@value")!==-1){e.warn("Invalid value definition: "+i.params)}let[,l,u]=`${i.params}${i.raws.between}`.match(n);const m=u.replace(/\/\*((?!\*\/).*?)\*\//g,"");if(m.length===0){e.warn("Invalid value definition: "+i.params);i.remove();return}let _=/^\s+$/.test(m);if(!_){u=u.trim()}p[l]=s.replaceValueSymbols(u,p);i.remove()}));if(!Object.keys(p).length){return}s.replaceSymbols(i,p);const l=Object.keys(p).map((e=>c.decl({value:p[e],prop:e,raws:{before:"\n "}})));if(l.length>0){const e=c.rule({selector:":export",raws:{after:"\n"}});e.append(l);i.prepend(e)}r.reverse().forEach((({path:e,imports:r})=>{const t=c.rule({selector:`:import(${e})`,raws:{after:"\n"}});r.forEach((({theirName:e,importedName:r})=>{t.append({value:e,prop:r,raws:{before:"\n "}})}));i.prepend(t)}))}}}}};e.exports.postcss=true},326:e=>{e.exports=require("next/dist/compiled/icss-utils")}};var r={};function __nccwpck_require__(t){var s=r[t];if(s!==undefined){return s.exports}var a=r[t]={exports:{}};var n=true;try{e[t](a,a.exports,__nccwpck_require__);n=false}finally{if(n)delete r[t]}return a.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var t=__nccwpck_require__(750);module.exports=t})(); | ||
| (()=>{"use strict";var e={336:(e,r,t)=>{const s=t(326);const a=/^(.+?|\([\s\S]+?\))\s+from\s+("[^"]*"|'[^']*'|[\w-]+)$/;const n=/(?:\s+|^)([\w-]+):?(.*?)$/;const o=/^([\w-]+)(?:\s+as\s+([\w-]+))?/;e.exports=e=>{let r=0;const t=e&&e.createImportedName||(e=>`i__const_${e.replace(/\W/g,"_")}_${r++}`);return{postcssPlugin:"postcss-modules-values",prepare(e){const r=[];const p={};return{Once(i,c){i.walkAtRules(/value/i,(i=>{const c=i.params.match(a);if(c){let[,e,s]=c;if(p[s]){s=p[s]}const a=e.replace(/^\(\s*([\s\S]+)\s*\)$/,"$1").split(/\s*,\s*/).map((e=>{const r=o.exec(e);if(r){const[,e,s=e]=r;const a=t(s);p[s]=a;return{theirName:e,importedName:a}}else{throw new Error(`@import statement "${e}" is invalid!`)}}));r.push({path:s,imports:a});i.remove();return}if(i.params.indexOf("@value")!==-1){e.warn("Invalid value definition: "+i.params)}let[,l,u]=`${i.params}${i.raws.between}`.match(n);const m=u.replace(/\/\*((?!\*\/).*?)\*\//g,"");if(m.length===0){e.warn("Invalid value definition: "+i.params);i.remove();return}let _=/^\s+$/.test(m);if(!_){u=u.trim()}p[l]=s.replaceValueSymbols(u,p);i.remove()}));if(!Object.keys(p).length){return}s.replaceSymbols(i,p);const l=Object.keys(p).map((e=>c.decl({value:p[e],prop:e,raws:{before:"\n "}})));if(l.length>0){const e=c.rule({selector:":export",raws:{after:"\n"}});e.append(l);i.prepend(e)}r.reverse().forEach((({path:e,imports:r})=>{const t=c.rule({selector:`:import(${e})`,raws:{after:"\n"}});r.forEach((({theirName:e,importedName:r})=>{t.append({value:e,prop:r,raws:{before:"\n "}})}));i.prepend(t)}))}}}}};e.exports.postcss=true},326:e=>{e.exports=require("next/dist/compiled/icss-utils")}};var r={};function __nccwpck_require__(t){var s=r[t];if(s!==undefined){return s.exports}var a=r[t]={exports:{}};var n=true;try{e[t](a,a.exports,__nccwpck_require__);n=false}finally{if(n)delete r[t]}return a.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var t=__nccwpck_require__(336);module.exports=t})(); |
@@ -1,1 +0,1 @@ | ||
| (()=>{var e={831:e=>{let t=process||{},r=t.argv||[],s=t.env||{};let i=!(!!s.NO_COLOR||r.includes("--no-color"))&&(!!s.FORCE_COLOR||r.includes("--color")||t.platform==="win32"||(t.stdout||{}).isTTY&&s.TERM!=="dumb"||!!s.CI);let formatter=(e,t,r=e)=>s=>{let i=""+s,n=i.indexOf(t,e.length);return~n?e+replaceClose(i,t,r,n)+t:e+i+t};let replaceClose=(e,t,r,s)=>{let i="",n=0;do{i+=e.substring(n,s)+r;n=s+t.length;s=e.indexOf(t,n)}while(~s);return i+e.substring(n)};let createColors=(e=i)=>{let t=e?formatter:()=>String;return{isColorSupported:e,reset:t("[0m","[0m"),bold:t("[1m","[22m","[22m[1m"),dim:t("[2m","[22m","[22m[2m"),italic:t("[3m","[23m"),underline:t("[4m","[24m"),inverse:t("[7m","[27m"),hidden:t("[8m","[28m"),strikethrough:t("[9m","[29m"),black:t("[30m","[39m"),red:t("[31m","[39m"),green:t("[32m","[39m"),yellow:t("[33m","[39m"),blue:t("[34m","[39m"),magenta:t("[35m","[39m"),cyan:t("[36m","[39m"),white:t("[37m","[39m"),gray:t("[90m","[39m"),bgBlack:t("[40m","[49m"),bgRed:t("[41m","[49m"),bgGreen:t("[42m","[49m"),bgYellow:t("[43m","[49m"),bgBlue:t("[44m","[49m"),bgMagenta:t("[45m","[49m"),bgCyan:t("[46m","[49m"),bgWhite:t("[47m","[49m"),blackBright:t("[90m","[39m"),redBright:t("[91m","[39m"),greenBright:t("[92m","[39m"),yellowBright:t("[93m","[39m"),blueBright:t("[94m","[39m"),magentaBright:t("[95m","[39m"),cyanBright:t("[96m","[39m"),whiteBright:t("[97m","[39m"),bgBlackBright:t("[100m","[49m"),bgRedBright:t("[101m","[49m"),bgGreenBright:t("[102m","[49m"),bgYellowBright:t("[103m","[49m"),bgBlueBright:t("[104m","[49m"),bgMagentaBright:t("[105m","[49m"),bgCyanBright:t("[106m","[49m"),bgWhiteBright:t("[107m","[49m")}};e.exports=createColors();e.exports.createColors=createColors},754:(e,t,r)=>{let{Input:s}=r(940);let i=r(986);e.exports=function safeParse(e,t){let r=new s(e,t);let n=new i(r);n.parse();return n.root}},986:(e,t,r)=>{let s=r(892);let i=r(260);let n=r(838);class SafeParser extends n{createTokenizer(){this.tokenizer=s(this.input,{ignoreErrors:true})}comment(e){let t=new i;this.init(t,e[2]);let r=this.input.fromOffset(e[3])||this.input.fromOffset(this.input.css.length-1);t.source.end={offset:e[3],line:r.line,column:r.col};let s=e[1].slice(2);if(s.slice(-2)==="*/")s=s.slice(0,-2);if(/^\s*$/.test(s)){t.text="";t.raws.left=s;t.raws.right=""}else{let e=s.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2];t.raws.left=e[1];t.raws.right=e[3]}}decl(e){if(e.length>1&&e.some((e=>e[0]==="word"))){super.decl(e)}}unclosedBracket(){}unknownWord(e){this.spaces+=e.map((e=>e[1])).join("")}unexpectedClose(){this.current.raws.after+="}"}doubleColon(){}unnamedAtrule(e){e.name=""}precheckMissedSemicolon(e){let t=this.colon(e);if(t===false)return;let r,s;for(r=t-1;r>=0;r--){if(e[r][0]==="word")break}if(r===0)return;for(s=r-1;s>=0;s--){if(e[s][0]!=="space"){s+=1;break}}let i=e.slice(r);let n=e.slice(s,r);e.splice(s,e.length-s);this.spaces=n.map((e=>e[1])).join("");this.decl(i)}checkMissedSemicolon(){}endFile(){if(this.current.nodes&&this.current.nodes.length){this.current.raws.semicolon=this.semicolon}this.current.raws.after=(this.current.raws.after||"")+this.spaces;while(this.current.parent){this.current=this.current.parent;this.current.raws.after=""}}}e.exports=SafeParser},679:(e,t,r)=>{"use strict";let s=r(605);class AtRule extends s{constructor(e){super(e);this.type="atrule"}append(...e){if(!this.proxyOf.nodes)this.nodes=[];return super.append(...e)}prepend(...e){if(!this.proxyOf.nodes)this.nodes=[];return super.prepend(...e)}}e.exports=AtRule;AtRule.default=AtRule;s.registerAtRule(AtRule)},260:(e,t,r)=>{"use strict";let s=r(65);class Comment extends s{constructor(e){super(e);this.type="comment"}}e.exports=Comment;Comment.default=Comment},605:(e,t,r)=>{"use strict";let s=r(260);let i=r(997);let n=r(65);let{isClean:o,my:l}=r(48);let a,f,c,u;function cleanSource(e){return e.map((e=>{if(e.nodes)e.nodes=cleanSource(e.nodes);delete e.source;return e}))}function markTreeDirty(e){e[o]=false;if(e.proxyOf.nodes){for(let t of e.proxyOf.nodes){markTreeDirty(t)}}}class Container extends n{get first(){if(!this.proxyOf.nodes)return undefined;return this.proxyOf.nodes[0]}get last(){if(!this.proxyOf.nodes)return undefined;return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}append(...e){for(let t of e){let e=this.normalize(t,this.last);for(let t of e)this.proxyOf.nodes.push(t)}this.markDirty();return this}cleanRaws(e){super.cleanRaws(e);if(this.nodes){for(let t of this.nodes)t.cleanRaws(e)}}each(e){if(!this.proxyOf.nodes)return undefined;let t=this.getIterator();let r,s;while(this.indexes[t]<this.proxyOf.nodes.length){r=this.indexes[t];s=e(this.proxyOf.nodes[r],r);if(s===false)break;this.indexes[t]+=1}delete this.indexes[t];return s}every(e){return this.nodes.every(e)}getIterator(){if(!this.lastEach)this.lastEach=0;if(!this.indexes)this.indexes={};this.lastEach+=1;let e=this.lastEach;this.indexes[e]=0;return e}getProxyProcessor(){return{get(e,t){if(t==="proxyOf"){return e}else if(!e[t]){return e[t]}else if(t==="each"||typeof t==="string"&&t.startsWith("walk")){return(...r)=>e[t](...r.map((e=>{if(typeof e==="function"){return(t,r)=>e(t.toProxy(),r)}else{return e}})))}else if(t==="every"||t==="some"){return r=>e[t](((e,...t)=>r(e.toProxy(),...t)))}else if(t==="root"){return()=>e.root().toProxy()}else if(t==="nodes"){return e.nodes.map((e=>e.toProxy()))}else if(t==="first"||t==="last"){return e[t].toProxy()}else{return e[t]}},set(e,t,r){if(e[t]===r)return true;e[t]=r;if(t==="name"||t==="params"||t==="selector"){e.markDirty()}return true}}}index(e){if(typeof e==="number")return e;if(e.proxyOf)e=e.proxyOf;return this.proxyOf.nodes.indexOf(e)}insertAfter(e,t){let r=this.index(e);let s=this.normalize(t,this.proxyOf.nodes[r]).reverse();r=this.index(e);for(let e of s)this.proxyOf.nodes.splice(r+1,0,e);let i;for(let e in this.indexes){i=this.indexes[e];if(r<i){this.indexes[e]=i+s.length}}this.markDirty();return this}insertBefore(e,t){let r=this.index(e);let s=r===0?"prepend":false;let i=this.normalize(t,this.proxyOf.nodes[r],s).reverse();r=this.index(e);for(let e of i)this.proxyOf.nodes.splice(r,0,e);let n;for(let e in this.indexes){n=this.indexes[e];if(r<=n){this.indexes[e]=n+i.length}}this.markDirty();return this}normalize(e,t){if(typeof e==="string"){e=cleanSource(f(e).nodes)}else if(typeof e==="undefined"){e=[]}else if(Array.isArray(e)){e=e.slice(0);for(let t of e){if(t.parent)t.parent.removeChild(t,"ignore")}}else if(e.type==="root"&&this.type!=="document"){e=e.nodes.slice(0);for(let t of e){if(t.parent)t.parent.removeChild(t,"ignore")}}else if(e.type){e=[e]}else if(e.prop){if(typeof e.value==="undefined"){throw new Error("Value field is missed in node creation")}else if(typeof e.value!=="string"){e.value=String(e.value)}e=[new i(e)]}else if(e.selector||e.selectors){e=[new u(e)]}else if(e.name){e=[new a(e)]}else if(e.text){e=[new s(e)]}else{throw new Error("Unknown node type in node creation")}let r=e.map((e=>{if(!e[l])Container.rebuild(e);e=e.proxyOf;if(e.parent)e.parent.removeChild(e);if(e[o])markTreeDirty(e);if(!e.raws)e.raws={};if(typeof e.raws.before==="undefined"){if(t&&typeof t.raws.before!=="undefined"){e.raws.before=t.raws.before.replace(/\S/g,"")}}e.parent=this.proxyOf;return e}));return r}prepend(...e){e=e.reverse();for(let t of e){let e=this.normalize(t,this.first,"prepend").reverse();for(let t of e)this.proxyOf.nodes.unshift(t);for(let t in this.indexes){this.indexes[t]=this.indexes[t]+e.length}}this.markDirty();return this}push(e){e.parent=this;this.proxyOf.nodes.push(e);return this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=undefined;this.proxyOf.nodes=[];this.markDirty();return this}removeChild(e){e=this.index(e);this.proxyOf.nodes[e].parent=undefined;this.proxyOf.nodes.splice(e,1);let t;for(let r in this.indexes){t=this.indexes[r];if(t>=e){this.indexes[r]=t-1}}this.markDirty();return this}replaceValues(e,t,r){if(!r){r=t;t={}}this.walkDecls((s=>{if(t.props&&!t.props.includes(s.prop))return;if(t.fast&&!s.value.includes(t.fast))return;s.value=s.value.replace(e,r)}));this.markDirty();return this}some(e){return this.nodes.some(e)}walk(e){return this.each(((t,r)=>{let s;try{s=e(t,r)}catch(e){throw t.addToError(e)}if(s!==false&&t.walk){s=t.walk(e)}return s}))}walkAtRules(e,t){if(!t){t=e;return this.walk(((e,r)=>{if(e.type==="atrule"){return t(e,r)}}))}if(e instanceof RegExp){return this.walk(((r,s)=>{if(r.type==="atrule"&&e.test(r.name)){return t(r,s)}}))}return this.walk(((r,s)=>{if(r.type==="atrule"&&r.name===e){return t(r,s)}}))}walkComments(e){return this.walk(((t,r)=>{if(t.type==="comment"){return e(t,r)}}))}walkDecls(e,t){if(!t){t=e;return this.walk(((e,r)=>{if(e.type==="decl"){return t(e,r)}}))}if(e instanceof RegExp){return this.walk(((r,s)=>{if(r.type==="decl"&&e.test(r.prop)){return t(r,s)}}))}return this.walk(((r,s)=>{if(r.type==="decl"&&r.prop===e){return t(r,s)}}))}walkRules(e,t){if(!t){t=e;return this.walk(((e,r)=>{if(e.type==="rule"){return t(e,r)}}))}if(e instanceof RegExp){return this.walk(((r,s)=>{if(r.type==="rule"&&e.test(r.selector)){return t(r,s)}}))}return this.walk(((r,s)=>{if(r.type==="rule"&&r.selector===e){return t(r,s)}}))}}Container.registerParse=e=>{f=e};Container.registerRule=e=>{u=e};Container.registerAtRule=e=>{a=e};Container.registerRoot=e=>{c=e};e.exports=Container;Container.default=Container;Container.rebuild=e=>{if(e.type==="atrule"){Object.setPrototypeOf(e,a.prototype)}else if(e.type==="rule"){Object.setPrototypeOf(e,u.prototype)}else if(e.type==="decl"){Object.setPrototypeOf(e,i.prototype)}else if(e.type==="comment"){Object.setPrototypeOf(e,s.prototype)}else if(e.type==="root"){Object.setPrototypeOf(e,c.prototype)}e[l]=true;if(e.nodes){e.nodes.forEach((e=>{Container.rebuild(e)}))}}},519:(e,t,r)=>{"use strict";let s=r(831);let i=r(300);class CssSyntaxError extends Error{constructor(e,t,r,s,i,n){super(e);this.name="CssSyntaxError";this.reason=e;if(i){this.file=i}if(s){this.source=s}if(n){this.plugin=n}if(typeof t!=="undefined"&&typeof r!=="undefined"){if(typeof t==="number"){this.line=t;this.column=r}else{this.line=t.line;this.column=t.column;this.endLine=r.line;this.endColumn=r.column}}this.setMessage();if(Error.captureStackTrace){Error.captureStackTrace(this,CssSyntaxError)}}setMessage(){this.message=this.plugin?this.plugin+": ":"";this.message+=this.file?this.file:"<css input>";if(typeof this.line!=="undefined"){this.message+=":"+this.line+":"+this.column}this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;if(e==null)e=s.isColorSupported;let aside=e=>e;let mark=e=>e;let highlight=e=>e;if(e){let{bold:e,gray:t,red:r}=s.createColors(true);mark=t=>e(r(t));aside=e=>t(e);if(i){highlight=e=>i(e)}}let r=t.split(/\r?\n/);let n=Math.max(this.line-3,0);let o=Math.min(this.line+2,r.length);let l=String(o).length;return r.slice(n,o).map(((e,t)=>{let r=n+1+t;let s=" "+(" "+r).slice(-l)+" | ";if(r===this.line){if(e.length>160){let t=20;let r=Math.max(0,this.column-t);let i=Math.max(this.column+t,this.endColumn+t);let n=e.slice(r,i);let o=aside(s.replace(/\d/g," "))+e.slice(0,Math.min(this.column-1,t-1)).replace(/[^\t]/g," ");return mark(">")+aside(s)+highlight(n)+"\n "+o+mark("^")}let t=aside(s.replace(/\d/g," "))+e.slice(0,this.column-1).replace(/[^\t]/g," ");return mark(">")+aside(s)+highlight(e)+"\n "+t+mark("^")}return" "+aside(s)+highlight(e)})).join("\n")}toString(){let e=this.showSourceCode();if(e){e="\n\n"+e+"\n"}return this.name+": "+this.message+e}}e.exports=CssSyntaxError;CssSyntaxError.default=CssSyntaxError},997:(e,t,r)=>{"use strict";let s=r(65);class Declaration extends s{get variable(){return this.prop.startsWith("--")||this.prop[0]==="$"}constructor(e){if(e&&typeof e.value!=="undefined"&&typeof e.value!=="string"){e={...e,value:String(e.value)}}super(e);this.type="decl"}}e.exports=Declaration;Declaration.default=Declaration},57:e=>{"use strict";let t={comma(e){return t.split(e,[","],true)},space(e){let r=[" ","\n","\t"];return t.split(e,r)},split(e,t,r){let s=[];let i="";let n=false;let o=0;let l=false;let a="";let f=false;for(let r of e){if(f){f=false}else if(r==="\\"){f=true}else if(l){if(r===a){l=false}}else if(r==='"'||r==="'"){l=true;a=r}else if(r==="("){o+=1}else if(r===")"){if(o>0)o-=1}else if(o===0){if(t.includes(r))n=true}if(n){if(i!=="")s.push(i.trim());i="";n=false}else{i+=r}}if(r||i!=="")s.push(i.trim());return s}};e.exports=t;t.default=t},65:(e,t,r)=>{"use strict";let s=r(519);let i=r(383);let n=r(704);let{isClean:o,my:l}=r(48);function cloneNode(e,t){let r=new e.constructor;for(let s in e){if(!Object.prototype.hasOwnProperty.call(e,s)){continue}if(s==="proxyCache")continue;let i=e[s];let n=typeof i;if(s==="parent"&&n==="object"){if(t)r[s]=t}else if(s==="source"){r[s]=i}else if(Array.isArray(i)){r[s]=i.map((e=>cloneNode(e,r)))}else{if(n==="object"&&i!==null)i=cloneNode(i);r[s]=i}}return r}function sourceOffset(e,t){if(t&&typeof t.offset!=="undefined"){return t.offset}let r=1;let s=1;let i=0;for(let n=0;n<e.length;n++){if(s===t.line&&r===t.column){i=n;break}if(e[n]==="\n"){r=1;s+=1}else{r+=1}}return i}class Node{get proxyOf(){return this}constructor(e={}){this.raws={};this[o]=false;this[l]=true;for(let t in e){if(t==="nodes"){this.nodes=[];for(let r of e[t]){if(typeof r.clone==="function"){this.append(r.clone())}else{this.append(r)}}}else{this[t]=e[t]}}}addToError(e){e.postcssNode=this;if(e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){this.parent.insertAfter(this,e);return this}assign(e={}){for(let t in e){this[t]=e[t]}return this}before(e){this.parent.insertBefore(this,e);return this}cleanRaws(e){delete this.raws.before;delete this.raws.after;if(!e)delete this.raws.between}clone(e={}){let t=cloneNode(this);for(let r in e){t[r]=e[r]}return t}cloneAfter(e={}){let t=this.clone(e);this.parent.insertAfter(this,t);return t}cloneBefore(e={}){let t=this.clone(e);this.parent.insertBefore(this,t);return t}error(e,t={}){if(this.source){let{end:r,start:s}=this.rangeBy(t);return this.source.input.error(e,{column:s.column,line:s.line},{column:r.column,line:r.line},t)}return new s(e)}getProxyProcessor(){return{get(e,t){if(t==="proxyOf"){return e}else if(t==="root"){return()=>e.root().toProxy()}else{return e[t]}},set(e,t,r){if(e[t]===r)return true;e[t]=r;if(t==="prop"||t==="value"||t==="name"||t==="params"||t==="important"||t==="text"){e.markDirty()}return true}}}markClean(){this[o]=true}markDirty(){if(this[o]){this[o]=false;let e=this;while(e=e.parent){e[o]=false}}}next(){if(!this.parent)return undefined;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e={}){let t=this.source.start;if(e.index){t=this.positionInside(e.index)}else if(e.word){let r="document"in this.source.input?this.source.input.document:this.source.input.css;let s=r.slice(sourceOffset(r,this.source.start),sourceOffset(r,this.source.end));let i=s.indexOf(e.word);if(i!==-1)t=this.positionInside(i)}return t}positionInside(e){let t=this.source.start.column;let r=this.source.start.line;let s="document"in this.source.input?this.source.input.document:this.source.input.css;let i=sourceOffset(s,this.source.start);let n=i+e;for(let e=i;e<n;e++){if(s[e]==="\n"){t=1;r+=1}else{t+=1}}return{column:t,line:r,offset:n}}prev(){if(!this.parent)return undefined;let e=this.parent.index(this);return this.parent.nodes[e-1]}rangeBy(e={}){let t="document"in this.source.input?this.source.input.document:this.source.input.css;let r={column:this.source.start.column,line:this.source.start.line,offset:sourceOffset(t,this.source.start)};let s=this.source.end?{column:this.source.end.column+1,line:this.source.end.line,offset:typeof this.source.end.offset==="number"?this.source.end.offset:sourceOffset(t,this.source.end)+1}:{column:r.column+1,line:r.line,offset:r.offset+1};if(e.word){let i=t.slice(sourceOffset(t,this.source.start),sourceOffset(t,this.source.end));let n=i.indexOf(e.word);if(n!==-1){r=this.positionInside(n);s=this.positionInside(n+e.word.length)}}else{if(e.start){r={column:e.start.column,line:e.start.line,offset:sourceOffset(t,e.start)}}else if(e.index){r=this.positionInside(e.index)}if(e.end){s={column:e.end.column,line:e.end.line,offset:sourceOffset(t,e.end)}}else if(typeof e.endIndex==="number"){s=this.positionInside(e.endIndex)}else if(e.index){s=this.positionInside(e.index+1)}}if(s.line<r.line||s.line===r.line&&s.column<=r.column){s={column:r.column+1,line:r.line,offset:r.offset+1}}return{end:s,start:r}}raw(e,t){let r=new i;return r.raw(this,e,t)}remove(){if(this.parent){this.parent.removeChild(this)}this.parent=undefined;return this}replaceWith(...e){if(this.parent){let t=this;let r=false;for(let s of e){if(s===this){r=true}else if(r){this.parent.insertAfter(t,s);t=s}else{this.parent.insertBefore(t,s)}}if(!r){this.remove()}}return this}root(){let e=this;while(e.parent&&e.parent.type!=="document"){e=e.parent}return e}toJSON(e,t){let r={};let s=t==null;t=t||new Map;let i=0;for(let e in this){if(!Object.prototype.hasOwnProperty.call(this,e)){continue}if(e==="parent"||e==="proxyCache")continue;let s=this[e];if(Array.isArray(s)){r[e]=s.map((e=>{if(typeof e==="object"&&e.toJSON){return e.toJSON(null,t)}else{return e}}))}else if(typeof s==="object"&&s.toJSON){r[e]=s.toJSON(null,t)}else if(e==="source"){if(s==null)continue;let n=t.get(s.input);if(n==null){n=i;t.set(s.input,i);i++}r[e]={end:s.end,inputId:n,start:s.start}}else{r[e]=s}}if(s){r.inputs=[...t.keys()].map((e=>e.toJSON()))}return r}toProxy(){if(!this.proxyCache){this.proxyCache=new Proxy(this,this.getProxyProcessor())}return this.proxyCache}toString(e=n){if(e.stringify)e=e.stringify;let t="";e(this,(e=>{t+=e}));return t}warn(e,t,r={}){let s={node:this};for(let e in r)s[e]=r[e];return e.warn(t,s)}}e.exports=Node;Node.default=Node},838:(e,t,r)=>{"use strict";let s=r(679);let i=r(260);let n=r(997);let o=r(969);let l=r(363);let a=r(892);const f={empty:true,space:true};function findLastWithPosition(e){for(let t=e.length-1;t>=0;t--){let r=e[t];let s=r[3]||r[2];if(s)return s}}class Parser{constructor(e){this.input=e;this.root=new o;this.current=this.root;this.spaces="";this.semicolon=false;this.createTokenizer();this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t=new s;t.name=e[1].slice(1);if(t.name===""){this.unnamedAtrule(t,e)}this.init(t,e[2]);let r;let i;let n;let o=false;let l=false;let a=[];let f=[];while(!this.tokenizer.endOfFile()){e=this.tokenizer.nextToken();r=e[0];if(r==="("||r==="["){f.push(r==="("?")":"]")}else if(r==="{"&&f.length>0){f.push("}")}else if(r===f[f.length-1]){f.pop()}if(f.length===0){if(r===";"){t.source.end=this.getPosition(e[2]);t.source.end.offset++;this.semicolon=true;break}else if(r==="{"){l=true;break}else if(r==="}"){if(a.length>0){n=a.length-1;i=a[n];while(i&&i[0]==="space"){i=a[--n]}if(i){t.source.end=this.getPosition(i[3]||i[2]);t.source.end.offset++}}this.end(e);break}else{a.push(e)}}else{a.push(e)}if(this.tokenizer.endOfFile()){o=true;break}}t.raws.between=this.spacesAndCommentsFromEnd(a);if(a.length){t.raws.afterName=this.spacesAndCommentsFromStart(a);this.raw(t,"params",a);if(o){e=a[a.length-1];t.source.end=this.getPosition(e[3]||e[2]);t.source.end.offset++;this.spaces=t.raws.between;t.raws.between=""}}else{t.raws.afterName="";t.params=""}if(l){t.nodes=[];this.current=t}}checkMissedSemicolon(e){let t=this.colon(e);if(t===false)return;let r=0;let s;for(let i=t-1;i>=0;i--){s=e[i];if(s[0]!=="space"){r+=1;if(r===2)break}}throw this.input.error("Missed semicolon",s[0]==="word"?s[3]+1:s[2])}colon(e){let t=0;let r,s,i;for(let[n,o]of e.entries()){s=o;i=s[0];if(i==="("){t+=1}if(i===")"){t-=1}if(t===0&&i===":"){if(!r){this.doubleColon(s)}else if(r[0]==="word"&&r[1]==="progid"){continue}else{return n}}r=s}return false}comment(e){let t=new i;this.init(t,e[2]);t.source.end=this.getPosition(e[3]||e[2]);t.source.end.offset++;let r=e[1].slice(2,-2);if(!r.trim()){t.text="";t.raws.left=r;t.raws.right=""}else{let e=r.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2];t.raws.left=e[1];t.raws.right=e[3]}}createTokenizer(){this.tokenizer=a(this.input)}decl(e,t){let r=new n;this.init(r,e[0][2]);let s=e[e.length-1];if(s[0]===";"){this.semicolon=true;e.pop()}r.source.end=this.getPosition(s[3]||s[2]||findLastWithPosition(e));r.source.end.offset++;while(e[0][0]!=="word"){if(e.length===1)this.unknownWord(e);r.raws.before+=e.shift()[1]}r.source.start=this.getPosition(e[0][2]);r.prop="";while(e.length){let t=e[0][0];if(t===":"||t==="space"||t==="comment"){break}r.prop+=e.shift()[1]}r.raws.between="";let i;while(e.length){i=e.shift();if(i[0]===":"){r.raws.between+=i[1];break}else{if(i[0]==="word"&&/\w/.test(i[1])){this.unknownWord([i])}r.raws.between+=i[1]}}if(r.prop[0]==="_"||r.prop[0]==="*"){r.raws.before+=r.prop[0];r.prop=r.prop.slice(1)}let o=[];let l;while(e.length){l=e[0][0];if(l!=="space"&&l!=="comment")break;o.push(e.shift())}this.precheckMissedSemicolon(e);for(let t=e.length-1;t>=0;t--){i=e[t];if(i[1].toLowerCase()==="!important"){r.important=true;let s=this.stringFrom(e,t);s=this.spacesFromEnd(e)+s;if(s!==" !important")r.raws.important=s;break}else if(i[1].toLowerCase()==="important"){let s=e.slice(0);let i="";for(let e=t;e>0;e--){let t=s[e][0];if(i.trim().startsWith("!")&&t!=="space"){break}i=s.pop()[1]+i}if(i.trim().startsWith("!")){r.important=true;r.raws.important=i;e=s}}if(i[0]!=="space"&&i[0]!=="comment"){break}}let a=e.some((e=>e[0]!=="space"&&e[0]!=="comment"));if(a){r.raws.between+=o.map((e=>e[1])).join("");o=[]}this.raw(r,"value",o.concat(e),t);if(r.value.includes(":")&&!t){this.checkMissedSemicolon(e)}}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new l;this.init(t,e[2]);t.selector="";t.raws.between="";this.current=t}end(e){if(this.current.nodes&&this.current.nodes.length){this.current.raws.semicolon=this.semicolon}this.semicolon=false;this.current.raws.after=(this.current.raws.after||"")+this.spaces;this.spaces="";if(this.current.parent){this.current.source.end=this.getPosition(e[2]);this.current.source.end.offset++;this.current=this.current.parent}else{this.unexpectedClose(e)}}endFile(){if(this.current.parent)this.unclosedBlock();if(this.current.nodes&&this.current.nodes.length){this.current.raws.semicolon=this.semicolon}this.current.raws.after=(this.current.raws.after||"")+this.spaces;this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){this.spaces+=e[1];if(this.current.nodes){let t=this.current.nodes[this.current.nodes.length-1];if(t&&t.type==="rule"&&!t.raws.ownSemicolon){t.raws.ownSemicolon=this.spaces;this.spaces="";t.source.end=this.getPosition(e[2]);t.source.end.offset+=t.raws.ownSemicolon.length}}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e);e.source={input:this.input,start:this.getPosition(t)};e.raws.before=this.spaces;this.spaces="";if(e.type!=="comment")this.semicolon=false}other(e){let t=false;let r=null;let s=false;let i=null;let n=[];let o=e[1].startsWith("--");let l=[];let a=e;while(a){r=a[0];l.push(a);if(r==="("||r==="["){if(!i)i=a;n.push(r==="("?")":"]")}else if(o&&s&&r==="{"){if(!i)i=a;n.push("}")}else if(n.length===0){if(r===";"){if(s){this.decl(l,o);return}else{break}}else if(r==="{"){this.rule(l);return}else if(r==="}"){this.tokenizer.back(l.pop());t=true;break}else if(r===":"){s=true}}else if(r===n[n.length-1]){n.pop();if(n.length===0)i=null}a=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile())t=true;if(n.length>0)this.unclosedBracket(i);if(t&&s){if(!o){while(l.length){a=l[l.length-1][0];if(a!=="space"&&a!=="comment")break;this.tokenizer.back(l.pop())}}this.decl(l,o)}else{this.unknownWord(l)}}parse(){let e;while(!this.tokenizer.endOfFile()){e=this.tokenizer.nextToken();switch(e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e);break}}this.endFile()}precheckMissedSemicolon(){}raw(e,t,r,s){let i,n;let o=r.length;let l="";let a=true;let c,u;for(let e=0;e<o;e+=1){i=r[e];n=i[0];if(n==="space"&&e===o-1&&!s){a=false}else if(n==="comment"){u=r[e-1]?r[e-1][0]:"empty";c=r[e+1]?r[e+1][0]:"empty";if(!f[u]&&!f[c]){if(l.slice(-1)===","){a=false}else{l+=i[1]}}else{a=false}}else{l+=i[1]}}if(!a){let s=r.reduce(((e,t)=>e+t[1]),"");e.raws[t]={raw:s,value:l}}e[t]=l}rule(e){e.pop();let t=new l;this.init(t,e[0][2]);t.raws.between=this.spacesAndCommentsFromEnd(e);this.raw(t,"selector",e);this.current=t}spacesAndCommentsFromEnd(e){let t;let r="";while(e.length){t=e[e.length-1][0];if(t!=="space"&&t!=="comment")break;r=e.pop()[1]+r}return r}spacesAndCommentsFromStart(e){let t;let r="";while(e.length){t=e[0][0];if(t!=="space"&&t!=="comment")break;r+=e.shift()[1]}return r}spacesFromEnd(e){let t;let r="";while(e.length){t=e[e.length-1][0];if(t!=="space")break;r=e.pop()[1]+r}return r}stringFrom(e,t){let r="";for(let s=t;s<e.length;s++){r+=e[s][1]}e.splice(t,e.length-t);return r}unclosedBlock(){let e=this.current.source.start;throw this.input.error("Unclosed block",e.line,e.column)}unclosedBracket(e){throw this.input.error("Unclosed bracket",{offset:e[2]},{offset:e[2]+1})}unexpectedClose(e){throw this.input.error("Unexpected }",{offset:e[2]},{offset:e[2]+1})}unknownWord(e){throw this.input.error("Unknown word "+e[0][1],{offset:e[0][2]},{offset:e[0][2]+e[0][1].length})}unnamedAtrule(e,t){throw this.input.error("At-rule without name",{offset:t[2]},{offset:t[2]+t[1].length})}}e.exports=Parser},969:(e,t,r)=>{"use strict";let s=r(605);let i,n;class Root extends s{constructor(e){super(e);this.type="root";if(!this.nodes)this.nodes=[]}normalize(e,t,r){let s=super.normalize(e);if(t){if(r==="prepend"){if(this.nodes.length>1){t.raws.before=this.nodes[1].raws.before}else{delete t.raws.before}}else if(this.first!==t){for(let e of s){e.raws.before=t.raws.before}}}return s}removeChild(e,t){let r=this.index(e);if(!t&&r===0&&this.nodes.length>1){this.nodes[1].raws.before=this.nodes[r].raws.before}return super.removeChild(e)}toResult(e={}){let t=new i(new n,this,e);return t.stringify()}}Root.registerLazyResult=e=>{i=e};Root.registerProcessor=e=>{n=e};e.exports=Root;Root.default=Root;s.registerRoot(Root)},363:(e,t,r)=>{"use strict";let s=r(605);let i=r(57);class Rule extends s{get selectors(){return i.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null;let r=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(r)}constructor(e){super(e);this.type="rule";if(!this.nodes)this.nodes=[]}}e.exports=Rule;Rule.default=Rule;s.registerRule(Rule)},383:e=>{"use strict";const t=/(<)(\/?style\b)/gi;const r=/(<)(!--)/g;function escapeHTMLInCSS(e){if(typeof e!=="string")return e;if(!e.includes("<"))return e;return e.replace(t,"\\3c $2").replace(r,"\\3c $2")}const s={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:false};function capitalize(e){return e[0].toUpperCase()+e.slice(1)}class Stringifier{constructor(e){this.builder=e}atrule(e,t){let r="@"+e.name;let s=e.params?this.rawValue(e,"params"):"";if(typeof e.raws.afterName!=="undefined"){r+=e.raws.afterName}else if(s){r+=" "}if(e.nodes){this.block(e,r+s)}else{let i=(e.raws.between||"")+(t?";":"");this.builder(escapeHTMLInCSS(r+s+i),e)}}beforeAfter(e,t){let r;if(e.type==="decl"){r=this.raw(e,null,"beforeDecl")}else if(e.type==="comment"){r=this.raw(e,null,"beforeComment")}else if(t==="before"){r=this.raw(e,null,"beforeRule")}else{r=this.raw(e,null,"beforeClose")}let s=e.parent;let i=0;while(s&&s.type!=="root"){i+=1;s=s.parent}if(r.includes("\n")){let t=this.raw(e,null,"indent");if(t.length){for(let e=0;e<i;e++)r+=t}}return r}block(e,t){let r=this.raw(e,"between","beforeOpen");this.builder(escapeHTMLInCSS(t+r)+"{",e,"start");let s;if(e.nodes&&e.nodes.length){this.body(e);s=this.raw(e,"after")}else{s=this.raw(e,"after","emptyBody")}if(s)this.builder(escapeHTMLInCSS(s));this.builder("}",e,"end")}body(e){let t=e.nodes.length-1;while(t>0){if(e.nodes[t].type!=="comment")break;t-=1}let r=this.raw(e,"semicolon");let s=e.type==="document";for(let i=0;i<e.nodes.length;i++){let n=e.nodes[i];let o=this.raw(n,"before");if(o)this.builder(s?o:escapeHTMLInCSS(o));this.stringify(n,t!==i||r)}}comment(e){let t=this.raw(e,"left","commentLeft");let r=this.raw(e,"right","commentRight");this.builder(escapeHTMLInCSS("/*"+t+e.text+r+"*/"),e)}decl(e,t){let r=this.raw(e,"between","colon");let s=e.prop+r+this.rawValue(e,"value");if(e.important){s+=e.raws.important||" !important"}if(t)s+=";";this.builder(escapeHTMLInCSS(s),e)}document(e){this.body(e)}raw(e,t,r){let i;if(!r)r=t;if(t){i=e.raws[t];if(typeof i!=="undefined")return i}let n=e.parent;if(r==="before"){if(!n||n.type==="root"&&n.first===e){return""}if(n&&n.type==="document"){return""}}if(!n)return s[r];let o=e.root();if(!o.rawCache)o.rawCache={};if(typeof o.rawCache[r]!=="undefined"){return o.rawCache[r]}if(r==="before"||r==="after"){return this.beforeAfter(e,r)}else{let s="raw"+capitalize(r);if(this[s]){i=this[s](o,e)}else{o.walk((e=>{i=e.raws[t];if(typeof i!=="undefined")return false}))}}if(typeof i==="undefined")i=s[r];o.rawCache[r]=i;return i}rawBeforeClose(e){let t;e.walk((e=>{if(e.nodes&&e.nodes.length>0){if(typeof e.raws.after!=="undefined"){t=e.raws.after;if(t.includes("\n")){t=t.replace(/[^\n]+$/,"")}return false}}}));if(t)t=t.replace(/\S/g,"");return t}rawBeforeComment(e,t){let r;e.walkComments((e=>{if(typeof e.raws.before!=="undefined"){r=e.raws.before;if(r.includes("\n")){r=r.replace(/[^\n]+$/,"")}return false}}));if(typeof r==="undefined"){r=this.raw(t,null,"beforeDecl")}else if(r){r=r.replace(/\S/g,"")}return r}rawBeforeDecl(e,t){let r;e.walkDecls((e=>{if(typeof e.raws.before!=="undefined"){r=e.raws.before;if(r.includes("\n")){r=r.replace(/[^\n]+$/,"")}return false}}));if(typeof r==="undefined"){r=this.raw(t,null,"beforeRule")}else if(r){r=r.replace(/\S/g,"")}return r}rawBeforeOpen(e){let t;e.walk((e=>{if(e.type!=="decl"){t=e.raws.between;if(typeof t!=="undefined")return false}}));return t}rawBeforeRule(e){let t;e.walk((r=>{if(r.nodes&&(r.parent!==e||e.first!==r)){if(typeof r.raws.before!=="undefined"){t=r.raws.before;if(t.includes("\n")){t=t.replace(/[^\n]+$/,"")}return false}}}));if(t)t=t.replace(/\S/g,"");return t}rawColon(e){let t;e.walkDecls((e=>{if(typeof e.raws.between!=="undefined"){t=e.raws.between.replace(/[^\s:]/g,"");return false}}));return t}rawEmptyBody(e){let t;e.walk((e=>{if(e.nodes&&e.nodes.length===0){t=e.raws.after;if(typeof t!=="undefined")return false}}));return t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;e.walk((r=>{let s=r.parent;if(s&&s!==e&&s.parent&&s.parent===e){if(typeof r.raws.before!=="undefined"){let e=r.raws.before.split("\n");t=e[e.length-1];t=t.replace(/\S/g,"");return false}}}));return t}rawSemicolon(e){let t;e.walk((e=>{if(e.nodes&&e.nodes.length&&e.last.type==="decl"){t=e.raws.semicolon;if(typeof t!=="undefined")return false}}));return t}rawValue(e,t){let r=e[t];let s=e.raws[t];if(s&&s.value===r){return s.raw}return r}root(e){this.body(e);if(e.raws.after){let t=e.raws.after;let r=e.parent&&e.parent.type==="document";this.builder(r?t:escapeHTMLInCSS(t))}}rule(e){this.block(e,this.rawValue(e,"selector"));if(e.raws.ownSemicolon){this.builder(escapeHTMLInCSS(e.raws.ownSemicolon),e,"end")}}stringify(e,t){if(!this[e.type]){throw new Error("Unknown AST node type "+e.type+". "+"Maybe you need to change PostCSS stringifier.")}this[e.type](e,t)}}e.exports=Stringifier;Stringifier.default=Stringifier},704:(e,t,r)=>{"use strict";let s=r(383);function stringify(e,t){let r=new s(t);r.stringify(e)}e.exports=stringify;stringify.default=stringify},48:e=>{"use strict";e.exports.isClean=Symbol("isClean");e.exports.my=Symbol("my")},300:(e,t,r)=>{"use strict";let s=r(831);let i=r(892);let n;function registerInput(e){n=e}const o={";":s.yellow,":":s.yellow,"(":s.cyan,")":s.cyan,"[":s.yellow,"]":s.yellow,"{":s.yellow,"}":s.yellow,"at-word":s.cyan,brackets:s.cyan,call:s.cyan,class:s.yellow,comment:s.gray,hash:s.magenta,string:s.green};function getTokenType([e,t],r){if(e==="word"){if(t[0]==="."){return"class"}if(t[0]==="#"){return"hash"}}if(!r.endOfFile()){let e=r.nextToken();r.back(e);if(e[0]==="brackets"||e[0]==="(")return"call"}return e}function terminalHighlight(e){let t=i(new n(e),{ignoreErrors:true});let r="";while(!t.endOfFile()){let e=t.nextToken();let s=o[getTokenType(e,t)];if(s){r+=e[1].split(/\r?\n/).map((e=>s(e))).join("\n")}else{r+=e[1]}}return r}terminalHighlight.registerInput=registerInput;e.exports=terminalHighlight},892:e=>{"use strict";const t="'".charCodeAt(0);const r='"'.charCodeAt(0);const s="\\".charCodeAt(0);const i="/".charCodeAt(0);const n="\n".charCodeAt(0);const o=" ".charCodeAt(0);const l="\f".charCodeAt(0);const a="\t".charCodeAt(0);const f="\r".charCodeAt(0);const c="[".charCodeAt(0);const u="]".charCodeAt(0);const h="(".charCodeAt(0);const p=")".charCodeAt(0);const d="{".charCodeAt(0);const m="}".charCodeAt(0);const w=";".charCodeAt(0);const g="*".charCodeAt(0);const y=":".charCodeAt(0);const b="@".charCodeAt(0);const x=/[\t\n\f\r "#'()/;[\\\]{}]/g;const k=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g;const C=/.[\r\n"'(/\\]/;const O=/[\da-f]/i;e.exports=function tokenizer(e,S={}){let A=e.css.valueOf();let R=S.ignoreErrors;let v,P,B,T,I;let E,_,M,z,D;let F=A.length;let N=0;let L=[];let j=[];function position(){return N}function unclosed(t){throw e.error("Unclosed "+t,N)}function endOfFile(){return j.length===0&&N>=F}function nextToken(e){if(j.length)return j.pop();if(N>=F)return;let S=e?e.ignoreUnclosed:false;v=A.charCodeAt(N);switch(v){case n:case o:case a:case f:case l:{T=N;do{T+=1;v=A.charCodeAt(T)}while(v===o||v===n||v===a||v===f||v===l);E=["space",A.slice(N,T)];N=T-1;break}case c:case u:case d:case m:case y:case w:case p:{let e=String.fromCharCode(v);E=[e,e,N];break}case h:{D=L.length?L.pop()[1]:"";z=A.charCodeAt(N+1);if(D==="url"&&z!==t&&z!==r&&z!==o&&z!==n&&z!==a&&z!==l&&z!==f){T=N;do{_=false;T=A.indexOf(")",T+1);if(T===-1){if(R||S){T=N;break}else{unclosed("bracket")}}M=T;while(A.charCodeAt(M-1)===s){M-=1;_=!_}}while(_);E=["brackets",A.slice(N,T+1),N,T];N=T}else{T=A.indexOf(")",N+1);P=A.slice(N,T+1);if(T===-1||C.test(P)){E=["(","(",N]}else{E=["brackets",P,N,T];N=T}}break}case t:case r:{I=v===t?"'":'"';T=N;do{_=false;T=A.indexOf(I,T+1);if(T===-1){if(R||S){T=N+1;break}else{unclosed("string")}}M=T;while(A.charCodeAt(M-1)===s){M-=1;_=!_}}while(_);E=["string",A.slice(N,T+1),N,T];N=T;break}case b:{x.lastIndex=N+1;x.test(A);if(x.lastIndex===0){T=A.length-1}else{T=x.lastIndex-2}E=["at-word",A.slice(N,T+1),N,T];N=T;break}case s:{T=N;B=true;while(A.charCodeAt(T+1)===s){T+=1;B=!B}v=A.charCodeAt(T+1);if(B&&v!==i&&v!==o&&v!==n&&v!==a&&v!==f&&v!==l){T+=1;if(O.test(A.charAt(T))){while(O.test(A.charAt(T+1))){T+=1}if(A.charCodeAt(T+1)===o){T+=1}}}E=["word",A.slice(N,T+1),N,T];N=T;break}default:{if(v===i&&A.charCodeAt(N+1)===g){T=A.indexOf("*/",N+2)+1;if(T===0){if(R||S){T=A.length}else{unclosed("comment")}}E=["comment",A.slice(N,T+1),N,T];N=T}else{k.lastIndex=N+1;k.test(A);if(k.lastIndex===0){T=A.length-1}else{T=k.lastIndex-2}E=["word",A.slice(N,T+1),N,T];L.push(E);N=T}break}}N++;return E}function back(e){j.push(e)}return{back:back,endOfFile:endOfFile,nextToken:nextToken,position:position}}},940:e=>{"use strict";e.exports=require("postcss")}};var t={};function __nccwpck_require__(r){var s=t[r];if(s!==undefined){return s.exports}var i=t[r]={exports:{}};var n=true;try{e[r](i,i.exports,__nccwpck_require__);n=false}finally{if(n)delete t[r]}return i.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var r=__nccwpck_require__(754);module.exports=r})(); | ||
| (()=>{var e={831:e=>{let t=process||{},r=t.argv||[],s=t.env||{};let i=!(!!s.NO_COLOR||r.includes("--no-color"))&&(!!s.FORCE_COLOR||r.includes("--color")||t.platform==="win32"||(t.stdout||{}).isTTY&&s.TERM!=="dumb"||!!s.CI);let formatter=(e,t,r=e)=>s=>{let i=""+s,n=i.indexOf(t,e.length);return~n?e+replaceClose(i,t,r,n)+t:e+i+t};let replaceClose=(e,t,r,s)=>{let i="",n=0;do{i+=e.substring(n,s)+r;n=s+t.length;s=e.indexOf(t,n)}while(~s);return i+e.substring(n)};let createColors=(e=i)=>{let t=e?formatter:()=>String;return{isColorSupported:e,reset:t("[0m","[0m"),bold:t("[1m","[22m","[22m[1m"),dim:t("[2m","[22m","[22m[2m"),italic:t("[3m","[23m"),underline:t("[4m","[24m"),inverse:t("[7m","[27m"),hidden:t("[8m","[28m"),strikethrough:t("[9m","[29m"),black:t("[30m","[39m"),red:t("[31m","[39m"),green:t("[32m","[39m"),yellow:t("[33m","[39m"),blue:t("[34m","[39m"),magenta:t("[35m","[39m"),cyan:t("[36m","[39m"),white:t("[37m","[39m"),gray:t("[90m","[39m"),bgBlack:t("[40m","[49m"),bgRed:t("[41m","[49m"),bgGreen:t("[42m","[49m"),bgYellow:t("[43m","[49m"),bgBlue:t("[44m","[49m"),bgMagenta:t("[45m","[49m"),bgCyan:t("[46m","[49m"),bgWhite:t("[47m","[49m"),blackBright:t("[90m","[39m"),redBright:t("[91m","[39m"),greenBright:t("[92m","[39m"),yellowBright:t("[93m","[39m"),blueBright:t("[94m","[39m"),magentaBright:t("[95m","[39m"),cyanBright:t("[96m","[39m"),whiteBright:t("[97m","[39m"),bgBlackBright:t("[100m","[49m"),bgRedBright:t("[101m","[49m"),bgGreenBright:t("[102m","[49m"),bgYellowBright:t("[103m","[49m"),bgBlueBright:t("[104m","[49m"),bgMagentaBright:t("[105m","[49m"),bgCyanBright:t("[106m","[49m"),bgWhiteBright:t("[107m","[49m")}};e.exports=createColors();e.exports.createColors=createColors},476:(e,t,r)=>{let{Input:s}=r(940);let i=r(540);e.exports=function safeParse(e,t){let r=new s(e,t);let n=new i(r);n.parse();return n.root}},540:(e,t,r)=>{let s=r(298);let i=r(866);let n=r(736);class SafeParser extends n{createTokenizer(){this.tokenizer=s(this.input,{ignoreErrors:true})}comment(e){let t=new i;this.init(t,e[2]);let r=this.input.fromOffset(e[3])||this.input.fromOffset(this.input.css.length-1);t.source.end={offset:e[3],line:r.line,column:r.col};let s=e[1].slice(2);if(s.slice(-2)==="*/")s=s.slice(0,-2);if(/^\s*$/.test(s)){t.text="";t.raws.left=s;t.raws.right=""}else{let e=s.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2];t.raws.left=e[1];t.raws.right=e[3]}}decl(e){if(e.length>1&&e.some((e=>e[0]==="word"))){super.decl(e)}}unclosedBracket(){}unknownWord(e){this.spaces+=e.map((e=>e[1])).join("")}unexpectedClose(){this.current.raws.after+="}"}doubleColon(){}unnamedAtrule(e){e.name=""}precheckMissedSemicolon(e){let t=this.colon(e);if(t===false)return;let r,s;for(r=t-1;r>=0;r--){if(e[r][0]==="word")break}if(r===0)return;for(s=r-1;s>=0;s--){if(e[s][0]!=="space"){s+=1;break}}let i=e.slice(r);let n=e.slice(s,r);e.splice(s,e.length-s);this.spaces=n.map((e=>e[1])).join("");this.decl(i)}checkMissedSemicolon(){}endFile(){if(this.current.nodes&&this.current.nodes.length){this.current.raws.semicolon=this.semicolon}this.current.raws.after=(this.current.raws.after||"")+this.spaces;while(this.current.parent){this.current=this.current.parent;this.current.raws.after=""}}}e.exports=SafeParser},277:(e,t,r)=>{"use strict";let s=r(32);class AtRule extends s{constructor(e){super(e);this.type="atrule"}append(...e){if(!this.proxyOf.nodes)this.nodes=[];return super.append(...e)}prepend(...e){if(!this.proxyOf.nodes)this.nodes=[];return super.prepend(...e)}}e.exports=AtRule;AtRule.default=AtRule;s.registerAtRule(AtRule)},866:(e,t,r)=>{"use strict";let s=r(455);class Comment extends s{constructor(e){super(e);this.type="comment"}}e.exports=Comment;Comment.default=Comment},32:(e,t,r)=>{"use strict";let s=r(866);let i=r(535);let n=r(455);let{isClean:o,my:l}=r(698);let f,a,u,c;function cleanSource(e){let t=e.slice();while(t.length>0){let e=t.pop();delete e.source;if(e.nodes){e.nodes=e.nodes.slice();for(let r of e.nodes)t.push(r)}}return e.slice()}function markTreeDirty(e){let t=[e];while(t.length>0){let e=t.pop();e[o]=false;if(e.proxyOf.nodes){for(let r of e.proxyOf.nodes)t.push(r)}}}class Container extends n{get first(){if(!this.proxyOf.nodes)return undefined;return this.proxyOf.nodes[0]}get last(){if(!this.proxyOf.nodes)return undefined;return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}append(...e){for(let t of e){let e=this.normalize(t,this.last);for(let t of e)this.proxyOf.nodes.push(t)}this.markDirty();return this}cleanRaws(e){let t=[this];while(t.length>0){let r=t.pop();if(r!==this&&r.cleanRaws!==Container.prototype.cleanRaws){r.cleanRaws(e);continue}n.prototype.cleanRaws.call(r,e);if(r.nodes){for(let e of r.nodes)t.push(e)}}}each(e){if(!this.proxyOf.nodes)return undefined;let t=this.getIterator();let r,s;while(this.indexes[t]<this.proxyOf.nodes.length){r=this.indexes[t];s=e(this.proxyOf.nodes[r],r);if(s===false)break;this.indexes[t]+=1}delete this.indexes[t];return s}every(e){return this.nodes.every(e)}getIterator(){if(!this.lastEach)this.lastEach=0;if(!this.indexes)this.indexes={};this.lastEach+=1;let e=this.lastEach;this.indexes[e]=0;return e}getProxyProcessor(){return{get(e,t){if(t==="proxyOf"){return e}else if(!e[t]){return e[t]}else if(t==="each"||typeof t==="string"&&t.startsWith("walk")){return(...r)=>e[t](...r.map((e=>{if(typeof e==="function"){return(t,r)=>e(t.toProxy(),r)}else{return e}})))}else if(t==="every"||t==="some"){return r=>e[t](((e,...t)=>r(e.toProxy(),...t)))}else if(t==="root"){return()=>e.root().toProxy()}else if(t==="nodes"){return e.nodes.map((e=>e.toProxy()))}else if(t==="first"||t==="last"){return e[t].toProxy()}else{return e[t]}},set(e,t,r){if(e[t]===r)return true;e[t]=r;if(t==="name"||t==="params"||t==="selector"){e.markDirty()}return true}}}index(e){if(typeof e==="number")return e;if(e.proxyOf)e=e.proxyOf;return this.proxyOf.nodes.indexOf(e)}insertAfter(e,t){let r=this.index(e);let s=this.normalize(t,this.proxyOf.nodes[r]).reverse();r=this.index(e);for(let e of s)this.proxyOf.nodes.splice(r+1,0,e);let i;for(let e in this.indexes){i=this.indexes[e];if(r<i){this.indexes[e]=i+s.length}}this.markDirty();return this}insertBefore(e,t){let r=this.index(e);let s=r===0?"prepend":false;let i=this.normalize(t,this.proxyOf.nodes[r],s).reverse();r=this.index(e);for(let e of i)this.proxyOf.nodes.splice(r,0,e);let n;for(let e in this.indexes){n=this.indexes[e];if(r<=n){this.indexes[e]=n+i.length}}this.markDirty();return this}normalize(e,t){if(typeof e==="string"){e=cleanSource(a(e).nodes)}else if(typeof e==="undefined"){e=[]}else if(Array.isArray(e)){e=e.slice(0);for(let t of e){if(t.parent)t.parent.removeChild(t,"ignore")}}else if(e.type==="root"&&this.type!=="document"){e=e.nodes.slice(0);for(let t of e){if(t.parent)t.parent.removeChild(t,"ignore")}}else if(e.type){e=[e]}else if(e.prop){if(typeof e.value==="undefined"){throw new Error("Value field is missed in node creation")}else if(typeof e.value!=="string"){e.value=String(e.value)}e=[new i(e)]}else if(e.selector||e.selectors){e=[new c(e)]}else if(e.name){e=[new f(e)]}else if(e.text){e=[new s(e)]}else{throw new Error("Unknown node type in node creation")}let r=e.map((e=>{if(!e[l])Container.rebuild(e);e=e.proxyOf;if(e.parent)e.parent.removeChild(e);if(e[o])markTreeDirty(e);if(!e.raws)e.raws={};if(typeof e.raws.before==="undefined"){if(t&&typeof t.raws.before!=="undefined"){e.raws.before=t.raws.before.replace(/\S/g,"")}}e.parent=this.proxyOf;return e}));return r}prepend(...e){e=e.reverse();for(let t of e){let e=this.normalize(t,this.first,"prepend").reverse();for(let t of e)this.proxyOf.nodes.unshift(t);for(let t in this.indexes){this.indexes[t]=this.indexes[t]+e.length}}this.markDirty();return this}push(e){e.parent=this;this.proxyOf.nodes.push(e);return this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=undefined;this.proxyOf.nodes=[];this.markDirty();return this}removeChild(e){e=this.index(e);this.proxyOf.nodes[e].parent=undefined;this.proxyOf.nodes.splice(e,1);let t;for(let r in this.indexes){t=this.indexes[r];if(t>=e){this.indexes[r]=t-1}}this.markDirty();return this}replaceValues(e,t,r){if(!r){r=t;t={}}this.walkDecls((s=>{if(t.props&&!t.props.includes(s.prop))return;if(t.fast&&!s.value.includes(t.fast))return;s.value=s.value.replace(e,r)}));this.markDirty();return this}some(e){return this.nodes.some(e)}walk(e){if(!this.proxyOf.nodes)return undefined;let t=[{iterator:this.getIterator(),node:this.proxyOf}];while(t.length>0){let{iterator:r,node:s}=t[t.length-1];let i=s.indexes[r];if(i>=s.proxyOf.nodes.length){delete s.indexes[r];t.pop();let e=t[t.length-1];if(e)e.node.indexes[e.iterator]+=1;continue}let n=s.proxyOf.nodes[i];let o;try{o=e(n,i)}catch(e){throw n.addToError(e)}if(o===false){for(let e of t){delete e.node.indexes[e.iterator]}return false}if(n.walk&&n.proxyOf.nodes){t.push({iterator:n.getIterator(),node:n})}else{s.indexes[r]+=1}}return undefined}walkAtRules(e,t){if(!t){t=e;return this.walk(((e,r)=>{if(e.type==="atrule"){return t(e,r)}}))}if(e instanceof RegExp){return this.walk(((r,s)=>{if(r.type==="atrule"&&e.test(r.name)){return t(r,s)}}))}return this.walk(((r,s)=>{if(r.type==="atrule"&&r.name===e){return t(r,s)}}))}walkComments(e){return this.walk(((t,r)=>{if(t.type==="comment"){return e(t,r)}}))}walkDecls(e,t){if(!t){t=e;return this.walk(((e,r)=>{if(e.type==="decl"){return t(e,r)}}))}if(e instanceof RegExp){return this.walk(((r,s)=>{if(r.type==="decl"&&e.test(r.prop)){return t(r,s)}}))}return this.walk(((r,s)=>{if(r.type==="decl"&&r.prop===e){return t(r,s)}}))}walkRules(e,t){if(!t){t=e;return this.walk(((e,r)=>{if(e.type==="rule"){return t(e,r)}}))}if(e instanceof RegExp){return this.walk(((r,s)=>{if(r.type==="rule"&&e.test(r.selector)){return t(r,s)}}))}return this.walk(((r,s)=>{if(r.type==="rule"&&r.selector===e){return t(r,s)}}))}}Container.registerParse=e=>{a=e};Container.registerRule=e=>{c=e};Container.registerAtRule=e=>{f=e};Container.registerRoot=e=>{u=e};e.exports=Container;Container.default=Container;Container.rebuild=e=>{let t=[e];while(t.length>0){let e=t.pop();if(e.type==="atrule"){Object.setPrototypeOf(e,f.prototype)}else if(e.type==="rule"){Object.setPrototypeOf(e,c.prototype)}else if(e.type==="decl"){Object.setPrototypeOf(e,i.prototype)}else if(e.type==="comment"){Object.setPrototypeOf(e,s.prototype)}else if(e.type==="root"){Object.setPrototypeOf(e,u.prototype)}e[l]=true;if(e.nodes){for(let r of e.nodes)t.push(r)}}}},505:(e,t,r)=>{"use strict";let s=r(831);let i=r(370);class CssSyntaxError extends Error{constructor(e,t,r,s,i,n){super(e);this.name="CssSyntaxError";this.reason=e;if(i){this.file=i}if(s){this.source=s}if(n){this.plugin=n}if(typeof t!=="undefined"&&typeof r!=="undefined"){if(typeof t==="number"){this.line=t;this.column=r}else{this.line=t.line;this.column=t.column;this.endLine=r.line;this.endColumn=r.column}}this.setMessage();if(Error.captureStackTrace){Error.captureStackTrace(this,CssSyntaxError)}}setMessage(){this.message=this.plugin?this.plugin+": ":"";this.message+=this.file?this.file:"<css input>";if(typeof this.line!=="undefined"){this.message+=":"+this.line+":"+this.column}this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;if(e==null)e=s.isColorSupported;let aside=e=>e;let mark=e=>e;let highlight=e=>e;if(e){let{bold:e,gray:t,red:r}=s.createColors(true);mark=t=>e(r(t));aside=e=>t(e);if(i){highlight=e=>i(e)}}let r=t.split(/\r?\n/);let n=Math.max(this.line-3,0);let o=Math.min(this.line+2,r.length);let l=String(o).length;return r.slice(n,o).map(((e,t)=>{let r=n+1+t;let s=" "+(" "+r).slice(-l)+" | ";if(r===this.line){if(e.length>160){let t=20;let r=Math.max(0,this.column-t);let i=Math.max(this.column+t,this.endColumn+t);let n=e.slice(r,i);let o=aside(s.replace(/\d/g," "))+e.slice(0,Math.min(this.column-1,t-1)).replace(/[^\t]/g," ");return mark(">")+aside(s)+highlight(n)+"\n "+o+mark("^")}let t=aside(s.replace(/\d/g," "))+e.slice(0,this.column-1).replace(/[^\t]/g," ");return mark(">")+aside(s)+highlight(e)+"\n "+t+mark("^")}return" "+aside(s)+highlight(e)})).join("\n")}toString(){let e=this.showSourceCode();if(e){e="\n\n"+e+"\n"}return this.name+": "+this.message+e}}e.exports=CssSyntaxError;CssSyntaxError.default=CssSyntaxError},535:(e,t,r)=>{"use strict";let s=r(455);class Declaration extends s{get variable(){return this.prop.startsWith("--")||this.prop[0]==="$"}constructor(e){if(e&&typeof e.value!=="undefined"&&typeof e.value!=="string"){e={...e,value:String(e.value)}}super(e);this.type="decl"}}e.exports=Declaration;Declaration.default=Declaration},779:e=>{"use strict";let t={comma(e){return t.split(e,[","],true)},space(e){let r=[" ","\n","\t"];return t.split(e,r)},split(e,t,r){let s=[];let i="";let n=false;let o=0;let l=false;let f="";let a=false;for(let r of e){if(a){a=false}else if(r==="\\"){a=true}else if(l){if(r===f){l=false}}else if(r==='"'||r==="'"){l=true;f=r}else if(r==="("){o+=1}else if(r===")"){if(o>0)o-=1}else if(o===0){if(t.includes(r))n=true}if(n){if(i!=="")s.push(i.trim());i="";n=false}else{i+=r}}if(r||i!=="")s.push(i.trim());return s}};e.exports=t;t.default=t},455:(e,t,r)=>{"use strict";let s=r(505);let i=r(689);let n=r(862);let{isClean:o,my:l}=r(698);function cloneNode(e,t){let r=new e.constructor;let s=[[e,r,t]];while(s.length>0){let[e,t,r]=s.pop();for(let i in e){if(!Object.prototype.hasOwnProperty.call(e,i)){continue}if(i==="proxyCache")continue;let n=e[i];let o=typeof n;if(i==="parent"&&o==="object"){if(r)t[i]=r}else if(i==="source"){t[i]=n}else if(Array.isArray(n)){let e=[];t[i]=e;for(let r of n){let i=new r.constructor;e.push(i);s.push([r,i,t])}}else{if(o==="object"&&n!==null){let e=new n.constructor;s.push([n,e,undefined]);n=e}t[i]=n}}}return r}function sourceOffset(e,t){if(t&&typeof t.offset!=="undefined"){return t.offset}let r=1;let s=1;let i=0;for(let n=0;n<e.length;n++){if(s===t.line&&r===t.column){i=n;break}if(e[n]==="\n"){r=1;s+=1}else{r+=1}}return i}class Node{get proxyOf(){return this}constructor(e={}){this.raws={};this[o]=false;this[l]=true;for(let t of Object.keys(e)){if(t==="__proto__")continue;if(t==="nodes"){this.nodes=[];for(let r of e[t]){if(typeof r.clone==="function"&&r.parent){this.append(r.clone())}else{this.append(r)}}}else{this[t]=e[t]}}}addToError(e){e.postcssNode=this;if(e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){this.parent.insertAfter(this,e);return this}assign(e={}){for(let t in e){this[t]=e[t]}return this}before(e){this.parent.insertBefore(this,e);return this}cleanRaws(e){delete this.raws.before;delete this.raws.after;if(!e)delete this.raws.between}clone(e={}){let t=cloneNode(this);for(let r in e){t[r]=e[r]}return t}cloneAfter(e={}){let t=this.clone(e);this.parent.insertAfter(this,t);return t}cloneBefore(e={}){let t=this.clone(e);this.parent.insertBefore(this,t);return t}error(e,t={}){if(this.source){let{end:r,start:s}=this.rangeBy(t);return this.source.input.error(e,{column:s.column,line:s.line},{column:r.column,line:r.line},t)}return new s(e)}getProxyProcessor(){return{get(e,t){if(t==="proxyOf"){return e}else if(t==="root"){return()=>e.root().toProxy()}else{return e[t]}},set(e,t,r){if(e[t]===r)return true;e[t]=r;if(t==="prop"||t==="value"||t==="name"||t==="params"||t==="important"||t==="text"){e.markDirty()}return true}}}markClean(){this[o]=true}markDirty(){if(this[o]){this[o]=false;let e=this;while(e=e.parent){e[o]=false}}}next(){if(!this.parent)return undefined;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e={}){let t="document"in this.source.input?this.source.input.document:this.source.input.css;let r={column:this.source.start.column,line:this.source.start.line,offset:sourceOffset(t,this.source.start)};if(e.index){r=this.positionInside(e.index)}else if(e.word){let s=t.slice(sourceOffset(t,this.source.start),sourceOffset(t,this.source.end));let i=s.indexOf(e.word);if(i!==-1)r=this.positionInside(i)}return r}positionInside(e){let t=this.source.start.column;let r=this.source.start.line;let s="document"in this.source.input?this.source.input.document:this.source.input.css;let i=sourceOffset(s,this.source.start);let n=i+e;for(let e=i;e<n;e++){if(s[e]==="\n"){t=1;r+=1}else{t+=1}}return{column:t,line:r,offset:n}}prev(){if(!this.parent)return undefined;let e=this.parent.index(this);return this.parent.nodes[e-1]}rangeBy(e={}){let t="document"in this.source.input?this.source.input.document:this.source.input.css;let r={column:this.source.start.column,line:this.source.start.line,offset:sourceOffset(t,this.source.start)};let s=this.source.end?{column:this.source.end.column+1,line:this.source.end.line,offset:typeof this.source.end.offset==="number"?this.source.end.offset:sourceOffset(t,this.source.end)+1}:{column:r.column+1,line:r.line,offset:r.offset+1};if(e.word){let i=t.slice(sourceOffset(t,this.source.start),sourceOffset(t,this.source.end));let n=i.indexOf(e.word);if(n!==-1){r=this.positionInside(n);s=this.positionInside(n+e.word.length)}}else{if(e.start){r={column:e.start.column,line:e.start.line,offset:sourceOffset(t,e.start)}}else if(typeof e.index==="number"){r=this.positionInside(e.index)}if(e.end){s={column:e.end.column,line:e.end.line,offset:sourceOffset(t,e.end)}}else if(typeof e.endIndex==="number"){s=this.positionInside(e.endIndex)}else if(typeof e.index==="number"){s=this.positionInside(e.index+1)}}if(s.line<r.line||s.line===r.line&&s.column<=r.column){s={column:r.column+1,line:r.line,offset:r.offset+1}}return{end:s,start:r}}raw(e,t){let r=new i;return r.raw(this,e,t)}remove(){if(this.parent){this.parent.removeChild(this)}this.parent=undefined;return this}replaceWith(...e){if(this.parent){let t=this;let r=false;for(let s of e){if(s===this){r=true}else if(r){this.parent.insertAfter(t,s);t=s}else{this.parent.insertBefore(t,s)}}if(!r){this.remove()}}return this}root(){let e=this;while(e.parent&&e.parent.type!=="document"){e=e.parent}return e}toJSON(e,t){let r=t==null;t=t||new Map;let s=[];let i=[[this,s,0]];for(let e=0;e<i.length;e++){let[r,s,n]=i[e];let o={};s[n]=o;for(let e in r){if(!Object.prototype.hasOwnProperty.call(r,e)){continue}if(e==="parent"||e==="proxyCache")continue;let s=r[e];if(Array.isArray(s)){let r=[];o[e]=r;for(let e=0;e<s.length;e++){let n=s[e];if(typeof n==="object"&&n.toJSON){if(n.toJSON===Node.prototype.toJSON){i.push([n,r,e])}else{r[e]=n.toJSON(null,t)}}else{r[e]=n}}}else if(typeof s==="object"&&s.toJSON){if(s.toJSON===Node.prototype.toJSON){i.push([s,o,e])}else{o[e]=s.toJSON(null,t)}}else if(e==="source"){if(s==null)continue;let r=t.get(s.input);if(r==null){r=t.size;t.set(s.input,r)}o[e]={end:s.end,inputId:r,start:s.start}}else{o[e]=s}}}let n=s[0];if(r){n.inputs=[...t.keys()].map((e=>e.toJSON()))}return n}toProxy(){if(!this.proxyCache){this.proxyCache=new Proxy(this,this.getProxyProcessor())}return this.proxyCache}toString(e=n){if(e.stringify)e=e.stringify;let t="";e(this,(e=>{t+=e}));return t}warn(e,t,r={}){let s={node:this};for(let e in r)s[e]=r[e];return e.warn(t,s)}}e.exports=Node;Node.default=Node},736:(e,t,r)=>{"use strict";let s=r(277);let i=r(866);let n=r(535);let o=r(883);let l=r(301);let f=r(298);const a={empty:true,space:true};function findLastWithPosition(e){for(let t=e.length-1;t>=0;t--){let r=e[t];let s=r[3]||r[2];if(s)return s}}function tokensToString(e,t,r){let s="";for(let i=t;i<r;i++)s+=e[i][1];return s}class Parser{constructor(e){this.input=e;this.root=new o;this.current=this.root;this.spaces="";this.semicolon=false;this.createTokenizer();this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t=new s;t.name=e[1].slice(1);if(t.name===""){this.unnamedAtrule(t,e)}this.init(t,e[2]);let r;let i;let n;let o=false;let l=false;let f=[];let a=[];while(!this.tokenizer.endOfFile()){e=this.tokenizer.nextToken();r=e[0];if(r==="("||r==="["){a.push(r==="("?")":"]")}else if(r==="{"&&a.length>0){a.push("}")}else if(r===a[a.length-1]){a.pop()}if(a.length===0){if(r===";"){t.source.end=this.getPosition(e[2]);t.source.end.offset++;this.semicolon=true;break}else if(r==="{"){l=true;break}else if(r==="}"){if(f.length>0){n=f.length-1;i=f[n];while(i&&i[0]==="space"){i=f[--n]}if(i){t.source.end=this.getPosition(i[3]||i[2]);t.source.end.offset++}}this.end(e);break}else{f.push(e)}}else{f.push(e)}if(this.tokenizer.endOfFile()){o=true;break}}t.raws.between=this.spacesAndCommentsFromEnd(f);if(f.length){t.raws.afterName=this.spacesAndCommentsFromStart(f);this.raw(t,"params",f);if(o){e=f[f.length-1];t.source.end=this.getPosition(e[3]||e[2]);t.source.end.offset++;this.spaces=t.raws.between;t.raws.between=""}}else{t.raws.afterName="";t.params=""}if(l){t.nodes=[];this.current=t}}checkMissedSemicolon(e){let t=this.colon(e);if(t===false)return;let r=0;let s;for(let i=t-1;i>=0;i--){s=e[i];if(s[0]!=="space"){r+=1;if(r===2)break}}throw this.input.error("Missed semicolon",s[0]==="word"?s[3]+1:s[2])}colon(e){let t=0;let r,s,i;for(let[n,o]of e.entries()){s=o;i=s[0];if(i==="("){t+=1}if(i===")"){t-=1}if(t===0&&i===":"){if(!r){this.doubleColon(s)}else if(r[0]==="word"&&r[1]==="progid"){continue}else{return n}}r=s}return false}comment(e){let t=new i;this.init(t,e[2]);t.source.end=this.getPosition(e[3]||e[2]);t.source.end.offset++;let r=e[1].slice(2,-2);if(!r.trim()){t.text="";t.raws.left=r;t.raws.right=""}else{let e=r.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2];t.raws.left=e[1];t.raws.right=e[3]}}createTokenizer(){this.tokenizer=f(this.input)}decl(e,t){let r=new n;this.init(r,e[0][2]);let s=e[e.length-1];if(s[0]===";"){this.semicolon=true;e.pop()}r.source.end=this.getPosition(s[3]||s[2]||findLastWithPosition(e));r.source.end.offset++;let i=0;while(e[i][0]!=="word"){if(i===e.length-1)this.unknownWord([e[i]]);i++}r.raws.before+=tokensToString(e,0,i);r.source.start=this.getPosition(e[i][2]);let o=i;while(i<e.length){let t=e[i][0];if(t===":"||t==="space"||t==="comment"){break}i++}r.prop=tokensToString(e,o,i);let l=i;let f;while(i<e.length){f=e[i];i++;if(f[0]===":")break;if(f[0]==="word"&&/\w/.test(f[1])){this.unknownWord([f])}}r.raws.between=tokensToString(e,l,i);if(r.prop[0]==="_"||r.prop[0]==="*"){r.raws.before+=r.prop[0];r.prop=r.prop.slice(1)}let a=i;while(i<e.length){let t=e[i][0];if(t!=="space"&&t!=="comment")break;i++}let u=e.slice(a,i);e=e.slice(i);this.precheckMissedSemicolon(e);for(let t=e.length-1;t>=0;t--){f=e[t];if(f[1].toLowerCase()==="!important"){r.important=true;let s=this.stringFrom(e,t);s=this.spacesFromEnd(e)+s;if(s!==" !important")r.raws.important=s;break}else if(f[1].toLowerCase()==="important"){let s=e.slice(0);let i="";for(let e=t;e>0;e--){let t=s[e][0];if(i.trim().startsWith("!")&&t!=="space"){break}i=s.pop()[1]+i}if(i.trim().startsWith("!")){r.important=true;r.raws.important=i;e=s}}if(f[0]!=="space"&&f[0]!=="comment"){break}}let c=e.some((e=>e[0]!=="space"&&e[0]!=="comment"));if(c){r.raws.between+=u.map((e=>e[1])).join("");u=[]}this.raw(r,"value",u.concat(e),t);if(r.value.includes(":")&&!t){this.checkMissedSemicolon(e)}}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new l;this.init(t,e[2]);t.selector="";t.raws.between="";this.current=t}end(e){if(this.current.nodes&&this.current.nodes.length){this.current.raws.semicolon=this.semicolon}this.semicolon=false;this.current.raws.after=(this.current.raws.after||"")+this.spaces;this.spaces="";if(this.current.parent){this.current.source.end=this.getPosition(e[2]);this.current.source.end.offset++;this.current=this.current.parent}else{this.unexpectedClose(e)}}endFile(){if(this.current.parent)this.unclosedBlock();if(this.current.nodes&&this.current.nodes.length){this.current.raws.semicolon=this.semicolon}this.current.raws.after=(this.current.raws.after||"")+this.spaces;this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){this.spaces+=e[1];if(this.current.nodes){let t=this.current.nodes[this.current.nodes.length-1];if(t&&t.type==="rule"&&!t.raws.ownSemicolon){t.raws.ownSemicolon=this.spaces;this.spaces="";t.source.end=this.getPosition(e[2]);t.source.end.offset+=t.raws.ownSemicolon.length}}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e);e.source={input:this.input,start:this.getPosition(t)};e.raws.before=this.spaces;this.spaces="";if(e.type!=="comment")this.semicolon=false}other(e){let t=false;let r=null;let s=false;let i=null;let n=[];let o=e[1].startsWith("--");let l=[];let f=e;while(f){r=f[0];l.push(f);if(r==="("||r==="["){if(!i)i=f;n.push(r==="("?")":"]")}else if(o&&s&&r==="{"){if(!i)i=f;n.push("}")}else if(n.length===0){if(r===";"){if(s){this.decl(l,o);return}else{break}}else if(r==="{"){this.rule(l);return}else if(r==="}"){this.tokenizer.back(l.pop());t=true;break}else if(r===":"){s=true}}else if(r===n[n.length-1]){n.pop();if(n.length===0)i=null}f=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile())t=true;if(n.length>0)this.unclosedBracket(i);if(t&&s){if(!o){while(l.length){f=l[l.length-1][0];if(f!=="space"&&f!=="comment")break;this.tokenizer.back(l.pop())}}this.decl(l,o)}else{this.unknownWord(l)}}parse(){let e;while(!this.tokenizer.endOfFile()){e=this.tokenizer.nextToken();switch(e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e);break}}this.endFile()}precheckMissedSemicolon(){}raw(e,t,r,s){let i,n;let o=r.length;let l="";let f=true;let u,c;for(let e=0;e<o;e+=1){i=r[e];n=i[0];if(n==="space"&&e===o-1&&!s){f=false}else if(n==="comment"){c=r[e-1]?r[e-1][0]:"empty";u=r[e+1]?r[e+1][0]:"empty";if(!a[c]&&!a[u]){if(l.slice(-1)===","){f=false}else{l+=i[1]}}else{f=false}}else{l+=i[1]}}if(!f){let s=r.reduce(((e,t)=>e+t[1]),"");e.raws[t]={raw:s,value:l}}e[t]=l}rule(e){e.pop();let t=new l;this.init(t,e[0][2]);t.raws.between=this.spacesAndCommentsFromEnd(e);this.raw(t,"selector",e);this.current=t}spacesAndCommentsFromEnd(e){let t;let r="";while(e.length){t=e[e.length-1][0];if(t!=="space"&&t!=="comment")break;r=e.pop()[1]+r}return r}spacesAndCommentsFromStart(e){let t;let r="";while(e.length){t=e[0][0];if(t!=="space"&&t!=="comment")break;r+=e.shift()[1]}return r}spacesFromEnd(e){let t;let r="";while(e.length){t=e[e.length-1][0];if(t!=="space")break;r=e.pop()[1]+r}return r}stringFrom(e,t){let r="";for(let s=t;s<e.length;s++){r+=e[s][1]}e.splice(t,e.length-t);return r}unclosedBlock(){let e=this.current.source.start;throw this.input.error("Unclosed block",e.line,e.column)}unclosedBracket(e){throw this.input.error("Unclosed bracket",{offset:e[2]},{offset:e[2]+1})}unexpectedClose(e){throw this.input.error("Unexpected }",{offset:e[2]},{offset:e[2]+1})}unknownWord(e){throw this.input.error("Unknown word "+e[0][1],{offset:e[0][2]},{offset:e[0][2]+e[0][1].length})}unnamedAtrule(e,t){throw this.input.error("At-rule without name",{offset:t[2]},{offset:t[2]+t[1].length})}}e.exports=Parser},883:(e,t,r)=>{"use strict";let s=r(32);let i,n;class Root extends s{constructor(e){super(e);this.type="root";if(!this.nodes)this.nodes=[]}normalize(e,t,r){let s=new Set;for(let t of Array.isArray(e)?e:[e]){if(t&&typeof t==="object"&&!t.parent&&t.raws&&typeof t.raws.before!=="undefined"){s.add(t.raws)}}let i=super.normalize(e);if(t){if(r==="prepend"){if(this.nodes.length>1){t.raws.before=this.nodes[1].raws.before}else{delete t.raws.before}}else if(this.first!==t){for(let e of i){if(!s.has(e.raws)){e.raws.before=t.raws.before}}}}return i}removeChild(e,t){let r=this.index(e);if(!t&&r===0&&this.nodes.length>1){this.nodes[1].raws.before=this.nodes[r].raws.before}return super.removeChild(e)}toResult(e={}){let t=new i(new n,this,e);return t.stringify()}}Root.registerLazyResult=e=>{i=e};Root.registerProcessor=e=>{n=e};e.exports=Root;Root.default=Root;s.registerRoot(Root)},301:(e,t,r)=>{"use strict";let s=r(32);let i=r(779);class Rule extends s{get selectors(){return i.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null;let r=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(r)}constructor(e){super(e);this.type="rule";if(!this.nodes)this.nodes=[]}}e.exports=Rule;Rule.default=Rule;s.registerRule(Rule)},689:e=>{"use strict";const t=/(<)(\/?style\b)/gi;const r=/(<)(!--)/g;const s=/[\t\n\f\r "#'()/;[\\\]{}]/;function escapeHTMLInCSS(e){if(typeof e!=="string")return e;if(!e.includes("<"))return e;return e.replace(t,"\\3c $2").replace(r,"\\3c $2")}const i={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:false};function capitalize(e){return e[0].toUpperCase()+e.slice(1)}function atruleStart(e,t){let r="@"+t.name;let i=t.params?e.rawValue(t,"params"):"";let n=t.raws.afterName;if(typeof n==="undefined"){n=i?" ":""}else if(n===""&&i&&!s.test(i[0])){n=" "}return r+n+i}function pushBody(e,t,r){let s=r.nodes;let i=s.length-1;while(i>0){if(s[i].type!=="comment")break;i-=1}let n=e.raw(r,"semicolon");let o=r.type==="document";for(let e=s.length-1;e>=0;e--){let r=s[e];let l=i!==e||n;if(!l&&e<s.length-1&&(r.type==="atrule"&&!r.nodes||r.type==="decl"&&r.prop.startsWith("--"))){l=true}t.push({document:o,node:r,semicolon:l})}}function pushBlock(e,t,r,s){let i=e.raw(r,"between","beforeOpen");e.builder(escapeHTMLInCSS(s+i)+"{",r,"start");let n=r.nodes&&r.nodes.length;let close=()=>{let t=n?e.raw(r,"after"):e.raw(r,"after","emptyBody");if(t)e.builder(escapeHTMLInCSS(t));e.builder("}",r,"end");if(r.type==="rule"&&r.raws.ownSemicolon){e.builder(escapeHTMLInCSS(r.raws.ownSemicolon),r,"end")}};if(n){t.push(close);pushBody(e,t,r)}else{close()}}class Stringifier{constructor(e){this.builder=e}atrule(e,t){let r=atruleStart(this,e);if(e.nodes){this.block(e,r)}else{let s=(e.raws.between||"")+(t?";":"");this.builder(escapeHTMLInCSS(r+s),e)}}beforeAfter(e,t){let r;if(e.type==="decl"){r=this.raw(e,null,"beforeDecl")}else if(e.type==="comment"){r=this.raw(e,null,"beforeComment")}else if(t==="before"){r=this.raw(e,null,"beforeRule")}else{r=this.raw(e,null,"beforeClose")}let s=e.parent;let i=0;while(s&&s.type!=="root"){i+=1;s=s.parent}if(r.includes("\n")){let t=this.raw(e,null,"indent");if(t.length){for(let e=0;e<i;e++)r+=t}}return r}block(e,t){let r=this.raw(e,"between","beforeOpen");this.builder(escapeHTMLInCSS(t+r)+"{",e,"start");let s;if(e.nodes&&e.nodes.length){this.body(e);s=this.raw(e,"after")}else{s=this.raw(e,"after","emptyBody")}if(s)this.builder(escapeHTMLInCSS(s));this.builder("}",e,"end")}body(e){let t=Stringifier.prototype;let r=["atrule","block","body","rule","stringify"].every((e=>this[e]===t[e]));let s=[];pushBody(this,s,e);while(s.length>0){let e=s.pop();if(typeof e==="function"){e();continue}let t=e.node;let i=this.raw(t,"before");if(i){this.builder(e.document?i:escapeHTMLInCSS(i))}if(r&&t.type==="rule"){pushBlock(this,s,t,this.rawValue(t,"selector"))}else if(r&&t.type==="atrule"&&t.nodes){pushBlock(this,s,t,atruleStart(this,t))}else{this.stringify(t,e.semicolon)}}}comment(e){let t=this.raw(e,"left","commentLeft");let r=this.raw(e,"right","commentRight");this.builder(escapeHTMLInCSS("/*"+t+e.text+r+"*/"),e)}decl(e,t){let r=e.raws;let s=this.raw(e,"between","colon");let i=e.prop+s+this.rawValue(e,"value");if(e.important){i+=r.important||" !important"}if(t)i+=";";this.builder(escapeHTMLInCSS(i),e)}document(e){this.body(e)}raw(e,t,r){let s;if(!r)r=t;if(t){s=e.raws[t];if(typeof s!=="undefined")return s}let n=e.parent;if(r==="before"){if(!n||n.type==="root"&&n.first===e){return""}if(n&&n.type==="document"){return""}}if(!n)return i[r];let o=e.root();let l=o.rawCache||(o.rawCache={});if(typeof l[r]!=="undefined"){return l[r]}if(r==="before"||r==="after"){return this.beforeAfter(e,r)}else{let i="raw"+capitalize(r);if(this[i]){s=this[i](o,e)}else{o.walk((e=>{s=e.raws[t];if(typeof s!=="undefined")return false}))}}if(typeof s==="undefined")s=i[r];l[r]=s;return s}rawBeforeClose(e){let t;e.walk((e=>{if(e.nodes&&e.nodes.length>0){if(typeof e.raws.after!=="undefined"){t=e.raws.after;if(t.includes("\n")){t=t.replace(/[^\n]+$/,"")}return false}}}));if(t)t=t.replace(/\S/g,"");return t}rawBeforeComment(e,t){let r;e.walkComments((e=>{if(typeof e.raws.before!=="undefined"){r=e.raws.before;if(r.includes("\n")){r=r.replace(/[^\n]+$/,"")}return false}}));if(typeof r==="undefined"){r=this.raw(t,null,"beforeDecl")}else if(r){r=r.replace(/\S/g,"")}return r}rawBeforeDecl(e,t){let r;e.walkDecls((e=>{if(typeof e.raws.before!=="undefined"){r=e.raws.before;if(r.includes("\n")){r=r.replace(/[^\n]+$/,"")}return false}}));if(typeof r==="undefined"){r=this.raw(t,null,"beforeRule")}else if(r){r=r.replace(/\S/g,"")}return r}rawBeforeOpen(e){let t;e.walk((e=>{if(e.type!=="decl"){t=e.raws.between;if(typeof t!=="undefined")return false}}));return t}rawBeforeRule(e){let t;e.walk((r=>{if(r.nodes&&(r.parent!==e||e.first!==r)){if(typeof r.raws.before!=="undefined"){t=r.raws.before;if(t.includes("\n")){t=t.replace(/[^\n]+$/,"")}return false}}}));if(t)t=t.replace(/\S/g,"");return t}rawColon(e){let t;e.walkDecls((e=>{if(typeof e.raws.between!=="undefined"){t=e.raws.between.replace(/[^\s:]/g,"");return false}}));return t}rawEmptyBody(e){let t;e.walk((e=>{if(e.nodes&&e.nodes.length===0){t=e.raws.after;if(typeof t!=="undefined")return false}}));return t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;e.walk((r=>{let s=r.parent;if(s&&s!==e&&s.parent&&s.parent===e){if(typeof r.raws.before!=="undefined"){let e=r.raws.before.split("\n");t=e[e.length-1];t=t.replace(/\S/g,"");return false}}}));return t}rawSemicolon(e){let t;e.walk((e=>{if(e.nodes&&e.nodes.length&&e.last.type==="decl"){t=e.raws.semicolon;if(typeof t!=="undefined")return false}}));return t}rawValue(e,t){let r=e[t];let s=e.raws[t];if(s&&s.value===r){return s.raw}return r}root(e){this.body(e);if(e.raws.after){let t=e.raws.after;let r=e.parent&&e.parent.type==="document";this.builder(r?t:escapeHTMLInCSS(t))}}rule(e){this.block(e,this.rawValue(e,"selector"));if(e.raws.ownSemicolon){this.builder(escapeHTMLInCSS(e.raws.ownSemicolon),e,"end")}}stringify(e,t){if(!this[e.type]){throw new Error("Unknown AST node type "+e.type+". "+"Maybe you need to change PostCSS stringifier.")}this[e.type](e,t)}}e.exports=Stringifier;Stringifier.default=Stringifier},862:(e,t,r)=>{"use strict";let s=r(689);function stringify(e,t){let r=new s(t);r.stringify(e)}e.exports=stringify;stringify.default=stringify},698:e=>{"use strict";e.exports.isClean=Symbol("isClean");e.exports.my=Symbol("my")},370:(e,t,r)=>{"use strict";let s=r(831);let i=r(298);let n;function registerInput(e){n=e}const o={";":s.yellow,":":s.yellow,"(":s.cyan,")":s.cyan,"[":s.yellow,"]":s.yellow,"{":s.yellow,"}":s.yellow,"at-word":s.cyan,brackets:s.cyan,call:s.cyan,class:s.yellow,comment:s.gray,hash:s.magenta,string:s.green};function getTokenType([e,t],r){if(e==="word"){if(t[0]==="."){return"class"}if(t[0]==="#"){return"hash"}}if(!r.endOfFile()){let e=r.nextToken();r.back(e);if(e[0]==="brackets"||e[0]==="(")return"call"}return e}function terminalHighlight(e){let t=i(new n(e),{ignoreErrors:true});let r="";while(!t.endOfFile()){let e=t.nextToken();let s=o[getTokenType(e,t)];if(s){r+=e[1].split(/\r?\n/).map((e=>s(e))).join("\n")}else{r+=e[1]}}return r}terminalHighlight.registerInput=registerInput;e.exports=terminalHighlight},298:e=>{"use strict";const t="'".charCodeAt(0);const r='"'.charCodeAt(0);const s="\\".charCodeAt(0);const i="/".charCodeAt(0);const n="\n".charCodeAt(0);const o=" ".charCodeAt(0);const l="\f".charCodeAt(0);const f="\t".charCodeAt(0);const a="\r".charCodeAt(0);const u="[".charCodeAt(0);const c="]".charCodeAt(0);const h="(".charCodeAt(0);const p=")".charCodeAt(0);const d="{".charCodeAt(0);const m="}".charCodeAt(0);const w=";".charCodeAt(0);const y="*".charCodeAt(0);const g=":".charCodeAt(0);const b="@".charCodeAt(0);const x=/[\t\n\f\r "#'()/;[\\\]{}]/g;const k=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g;const C=/.[\r\n"'(/\\]/;const O=/[\da-f]/i;e.exports=function tokenizer(e,S={}){let A=e.css.valueOf();let R=S.ignoreErrors;let B,v,P,T,I;let _,E,M,z,D;let N=A.length;let F=0;let L=[];let j=[];let W=-1;function position(){return F}function unclosed(t){throw e.error("Unclosed "+t,F)}function endOfFile(){return j.length===0&&F>=N}function nextToken(e){if(j.length)return j.pop();if(F>=N)return;let S=e?e.ignoreUnclosed:false;B=A.charCodeAt(F);switch(B){case n:case o:case f:case a:case l:{T=F;do{T+=1;B=A.charCodeAt(T)}while(B===o||B===n||B===f||B===a||B===l);_=["space",A.slice(F,T)];F=T-1;break}case u:case c:case d:case m:case g:case w:case p:{let e=String.fromCharCode(B);_=[e,e,F];break}case h:{D=L.length?L.pop()[1]:"";z=A.charCodeAt(F+1);if(D==="url"&&z!==t&&z!==r&&z!==o&&z!==n&&z!==f&&z!==l&&z!==a){T=F;do{E=false;T=A.indexOf(")",T+1);if(T===-1){if(R||S){T=F;break}else{unclosed("bracket")}}M=T;while(A.charCodeAt(M-1)===s){M-=1;E=!E}}while(E);_=["brackets",A.slice(F,T+1),F,T];F=T}else if(F<=W){_=["(","(",F]}else{T=A.indexOf(")",F+1);v=A.slice(F,T+1);if(T===-1||C.test(v)){W=T===-1?N:T;_=["(","(",F]}else{_=["brackets",v,F,T];F=T}}break}case t:case r:{I=B===t?"'":'"';T=F;do{E=false;T=A.indexOf(I,T+1);if(T===-1){if(R||S){T=F+1;break}else{unclosed("string")}}M=T;while(A.charCodeAt(M-1)===s){M-=1;E=!E}}while(E);_=["string",A.slice(F,T+1),F,T];F=T;break}case b:{x.lastIndex=F+1;x.test(A);if(x.lastIndex===0){T=A.length-1}else{T=x.lastIndex-2}_=["at-word",A.slice(F,T+1),F,T];F=T;break}case s:{T=F;P=true;while(A.charCodeAt(T+1)===s){T+=1;P=!P}B=A.charCodeAt(T+1);if(P&&B!==i&&B!==o&&B!==n&&B!==f&&B!==a&&B!==l){T+=1;if(O.test(A.charAt(T))){while(O.test(A.charAt(T+1))){T+=1}if(A.charCodeAt(T+1)===o){T+=1}}}_=["word",A.slice(F,T+1),F,T];F=T;break}default:{if(B===i&&A.charCodeAt(F+1)===y){T=A.indexOf("*/",F+2)+1;if(T===0){if(R||S){T=A.length}else{unclosed("comment")}}_=["comment",A.slice(F,T+1),F,T];F=T}else{k.lastIndex=F+1;k.test(A);if(k.lastIndex===0){T=A.length-1}else{T=k.lastIndex-2}_=["word",A.slice(F,T+1),F,T];L.push(_);F=T}break}}F++;return _}function back(e){j.push(e)}return{back:back,endOfFile:endOfFile,nextToken:nextToken,position:position}}},940:e=>{"use strict";e.exports=require("postcss")}};var t={};function __nccwpck_require__(r){var s=t[r];if(s!==undefined){return s.exports}var i=t[r]={exports:{}};var n=true;try{e[r](i,i.exports,__nccwpck_require__);n=false}finally{if(n)delete t[r]}return i.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var r=__nccwpck_require__(476);module.exports=r})(); |
@@ -1,1 +0,1 @@ | ||
| (()=>{var e={921:(e,t,r)=>{const{Container:s}=r(940);class NestedDeclaration extends s{constructor(e){super(e);this.type="decl";this.isNested=true;if(!this.nodes)this.nodes=[]}}e.exports=NestedDeclaration},781:(e,t,r)=>{let{Input:s}=r(940);let i=r(639);e.exports=function scssParse(e,t){let r=new s(e,t);let n=new i(r);n.parse();return n.root}},639:(e,t,r)=>{let{Comment:s}=r(940);let i=r(426);let n=r(921);let l=r(313);class ScssParser extends i{createTokenizer(){this.tokenizer=l(this.input)}rule(e){let t=false;let r=0;let s="";for(let i of e){if(t){if(i[0]!=="comment"&&i[0]!=="{"){s+=i[1]}}else if(i[0]==="space"&&i[1].includes("\n")){break}else if(i[0]==="("){r+=1}else if(i[0]===")"){r-=1}else if(r===0&&i[0]===":"){t=true}}if(!t||s.trim()===""||/^[#:A-Za-z-]/.test(s)){super.rule(e)}else{e.pop();let t=new n;this.init(t,e[0][2]);let r;for(let t=e.length-1;t>=0;t--){if(e[t][0]!=="space"){r=e[t];break}}if(r[3]){let e=this.input.fromOffset(r[3]);t.source.end={offset:r[3],line:e.line,column:e.col}}else{let e=this.input.fromOffset(r[2]);t.source.end={offset:r[2],line:e.line,column:e.col}}while(e[0][0]!=="word"){t.raws.before+=e.shift()[1]}if(e[0][2]){let r=this.input.fromOffset(e[0][2]);t.source.start={offset:e[0][2],line:r.line,column:r.col}}t.prop="";while(e.length){let r=e[0][0];if(r===":"||r==="space"||r==="comment"){break}t.prop+=e.shift()[1]}t.raws.between="";let s;while(e.length){s=e.shift();if(s[0]===":"){t.raws.between+=s[1];break}else{t.raws.between+=s[1]}}if(t.prop[0]==="_"||t.prop[0]==="*"){t.raws.before+=t.prop[0];t.prop=t.prop.slice(1)}t.raws.between+=this.spacesAndCommentsFromStart(e);this.precheckMissedSemicolon(e);for(let r=e.length-1;r>0;r--){s=e[r];if(s[1]==="!important"){t.important=true;let s=this.stringFrom(e,r);s=this.spacesFromEnd(e)+s;if(s!==" !important"){t.raws.important=s}break}else if(s[1]==="important"){let s=e.slice(0);let i="";for(let e=r;e>0;e--){let t=s[e][0];if(i.trim().indexOf("!")===0&&t!=="space"){break}i=s.pop()[1]+i}if(i.trim().indexOf("!")===0){t.important=true;t.raws.important=i;e=s}}if(s[0]!=="space"&&s[0]!=="comment"){break}}this.raw(t,"value",e);if(t.value.includes(":")){this.checkMissedSemicolon(e)}this.current=t}}comment(e){if(e[4]==="inline"){let t=new s;this.init(t,e[2]);t.raws.inline=true;let r=this.input.fromOffset(e[3]);t.source.end={offset:e[3],line:r.line,column:r.col};let i=e[1].slice(2);if(/^\s*$/.test(i)){t.text="";t.raws.left=i;t.raws.right=""}else{let e=i.match(/^(\s*)([^]*\S)(\s*)$/);let r=e[2].replace(/(\*\/|\/\*)/g,"*//*");t.text=r;t.raws.left=e[1];t.raws.right=e[3];t.raws.text=e[2]}}else{super.comment(e)}}atrule(e){let t=e[1];let r=e;while(!this.tokenizer.endOfFile()){let e=this.tokenizer.nextToken();if(e[0]==="word"&&e[2]===r[3]+1){t+=e[1];r=e}else{this.tokenizer.back(e);break}}super.atrule(["at-word",t,e[2],r[3]])}raw(e,t,r){super.raw(e,t,r);if(e.raws[t]){let s=e.raws[t].raw;e.raws[t].raw=r.reduce(((e,t)=>{if(t[0]==="comment"&&t[4]==="inline"){let r=t[1].slice(2).replace(/(\*\/|\/\*)/g,"*//*");return e+"/*"+r+"*/"}else{return e+t[1]}}),"");if(s!==e.raws[t].raw){e.raws[t].scss=s}}}}e.exports=ScssParser},744:(e,t,r)=>{let s=r(383);class ScssStringifier extends s{comment(e){let t=this.raw(e,"left","commentLeft");let r=this.raw(e,"right","commentRight");if(e.raws.inline){let s=e.raws.text||e.text;this.builder("//"+t+s+r,e)}else{this.builder("/*"+t+e.text+r+"*/",e)}}decl(e,t){if(!e.isNested){super.decl(e,t)}else{let t=this.raw(e,"between","colon");let r=e.prop+t+this.rawValue(e,"value");if(e.important){r+=e.raws.important||" !important"}this.builder(r+"{",e,"start");let s;if(e.nodes&&e.nodes.length){this.body(e);s=this.raw(e,"after")}else{s=this.raw(e,"after","emptyBody")}if(s)this.builder(s);this.builder("}",e,"end")}}rawValue(e,t){let r=e[t];let s=e.raws[t];if(s&&s.value===r){return s.scss?s.scss:s.raw}else{return r}}}e.exports=ScssStringifier},763:(e,t,r)=>{let s=r(744);e.exports=function scssStringify(e,t){let r=new s(t);r.stringify(e)}},267:(e,t,r)=>{let s=r(763);let i=r(781);e.exports={parse:i,stringify:s}},313:e=>{"use strict";const t="'".charCodeAt(0);const r='"'.charCodeAt(0);const s="\\".charCodeAt(0);const i="/".charCodeAt(0);const n="\n".charCodeAt(0);const l=" ".charCodeAt(0);const a="\f".charCodeAt(0);const o="\t".charCodeAt(0);const f="\r".charCodeAt(0);const c="[".charCodeAt(0);const d="]".charCodeAt(0);const u="(".charCodeAt(0);const p=")".charCodeAt(0);const h="{".charCodeAt(0);const w="}".charCodeAt(0);const m=";".charCodeAt(0);const b="*".charCodeAt(0);const g=":".charCodeAt(0);const C="@".charCodeAt(0);const k=",".charCodeAt(0);const y="#".charCodeAt(0);const S=/[\t\n\f\r "#'()/;[\\\]{}]/g;const x=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g;const A=/.[\n"'(/\\]/;const _=/[\da-f]/i;const I=/[\n\f\r]/g;e.exports=function scssTokenize(e,O={}){let T=e.css.valueOf();let v=O.ignoreErrors;let L,M,z,B,H;let D,$,q,F;let R=T.length;let N=0;let V=[];let E=[];let P;function position(){return N}function unclosed(t){throw e.error("Unclosed "+t,N)}function endOfFile(){return E.length===0&&N>=R}function interpolation(){let e=1;let i=false;let n=false;while(e>0){M+=1;if(T.length<=M)unclosed("interpolation");L=T.charCodeAt(M);q=T.charCodeAt(M+1);if(i){if(!n&&L===i){i=false;n=false}else if(L===s){n=!n}else if(n){n=false}}else if(L===t||L===r){i=L}else if(L===w){e-=1}else if(L===y&&q===h){e+=1}}}function nextToken(e){if(E.length)return E.pop();if(N>=R)return;let O=e?e.ignoreUnclosed:false;L=T.charCodeAt(N);switch(L){case n:case l:case o:case f:case a:{M=N;do{M+=1;L=T.charCodeAt(M)}while(L===l||L===n||L===o||L===f||L===a);F=["space",T.slice(N,M)];N=M-1;break}case c:case d:case h:case w:case g:case m:case p:{let e=String.fromCharCode(L);F=[e,e,N];break}case k:{F=["word",",",N,N+1];break}case u:{$=V.length?V.pop()[1]:"";q=T.charCodeAt(N+1);if($==="url"&&q!==t&&q!==r){P=1;D=false;M=N+1;while(M<=T.length-1){q=T.charCodeAt(M);if(q===s){D=!D}else if(q===u){P+=1}else if(q===p){P-=1;if(P===0)break}M+=1}B=T.slice(N,M+1);F=["brackets",B,N,M];N=M}else{M=T.indexOf(")",N+1);B=T.slice(N,M+1);if(M===-1||A.test(B)){F=["(","(",N]}else{F=["brackets",B,N,M];N=M}}break}case t:case r:{z=L;M=N;D=false;while(M<R){M++;if(M===R)unclosed("string");L=T.charCodeAt(M);q=T.charCodeAt(M+1);if(!D&&L===z){break}else if(L===s){D=!D}else if(D){D=false}else if(L===y&&q===h){interpolation()}}F=["string",T.slice(N,M+1),N,M];N=M;break}case C:{S.lastIndex=N+1;S.test(T);if(S.lastIndex===0){M=T.length-1}else{M=S.lastIndex-2}F=["at-word",T.slice(N,M+1),N,M];N=M;break}case s:{M=N;H=true;while(T.charCodeAt(M+1)===s){M+=1;H=!H}L=T.charCodeAt(M+1);if(H&&L!==i&&L!==l&&L!==n&&L!==o&&L!==f&&L!==a){M+=1;if(_.test(T.charAt(M))){while(_.test(T.charAt(M+1))){M+=1}if(T.charCodeAt(M+1)===l){M+=1}}}F=["word",T.slice(N,M+1),N,M];N=M;break}default:q=T.charCodeAt(N+1);if(L===y&&q===h){M=N;interpolation();B=T.slice(N,M+1);F=["word",B,N,M];N=M}else if(L===i&&q===b){M=T.indexOf("*/",N+2)+1;if(M===0){if(v||O){M=T.length}else{unclosed("comment")}}F=["comment",T.slice(N,M+1),N,M];N=M}else if(L===i&&q===i){I.lastIndex=N+1;I.test(T);if(I.lastIndex===0){M=T.length-1}else{M=I.lastIndex-2}B=T.slice(N,M+1);F=["comment",B,N,M,"inline"];N=M}else{x.lastIndex=N+1;x.test(T);if(x.lastIndex===0){M=T.length-1}else{M=x.lastIndex-2}F=["word",T.slice(N,M+1),N,M];V.push(F);N=M}break}N++;return F}function back(e){E.push(e)}return{back:back,nextToken:nextToken,endOfFile:endOfFile,position:position}}},383:e=>{"use strict";const t=/(<)(\/?style\b)/gi;const r=/(<)(!--)/g;function escapeHTMLInCSS(e){if(typeof e!=="string")return e;if(!e.includes("<"))return e;return e.replace(t,"\\3c $2").replace(r,"\\3c $2")}const s={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:false};function capitalize(e){return e[0].toUpperCase()+e.slice(1)}class Stringifier{constructor(e){this.builder=e}atrule(e,t){let r="@"+e.name;let s=e.params?this.rawValue(e,"params"):"";if(typeof e.raws.afterName!=="undefined"){r+=e.raws.afterName}else if(s){r+=" "}if(e.nodes){this.block(e,r+s)}else{let i=(e.raws.between||"")+(t?";":"");this.builder(escapeHTMLInCSS(r+s+i),e)}}beforeAfter(e,t){let r;if(e.type==="decl"){r=this.raw(e,null,"beforeDecl")}else if(e.type==="comment"){r=this.raw(e,null,"beforeComment")}else if(t==="before"){r=this.raw(e,null,"beforeRule")}else{r=this.raw(e,null,"beforeClose")}let s=e.parent;let i=0;while(s&&s.type!=="root"){i+=1;s=s.parent}if(r.includes("\n")){let t=this.raw(e,null,"indent");if(t.length){for(let e=0;e<i;e++)r+=t}}return r}block(e,t){let r=this.raw(e,"between","beforeOpen");this.builder(escapeHTMLInCSS(t+r)+"{",e,"start");let s;if(e.nodes&&e.nodes.length){this.body(e);s=this.raw(e,"after")}else{s=this.raw(e,"after","emptyBody")}if(s)this.builder(escapeHTMLInCSS(s));this.builder("}",e,"end")}body(e){let t=e.nodes.length-1;while(t>0){if(e.nodes[t].type!=="comment")break;t-=1}let r=this.raw(e,"semicolon");let s=e.type==="document";for(let i=0;i<e.nodes.length;i++){let n=e.nodes[i];let l=this.raw(n,"before");if(l)this.builder(s?l:escapeHTMLInCSS(l));this.stringify(n,t!==i||r)}}comment(e){let t=this.raw(e,"left","commentLeft");let r=this.raw(e,"right","commentRight");this.builder(escapeHTMLInCSS("/*"+t+e.text+r+"*/"),e)}decl(e,t){let r=this.raw(e,"between","colon");let s=e.prop+r+this.rawValue(e,"value");if(e.important){s+=e.raws.important||" !important"}if(t)s+=";";this.builder(escapeHTMLInCSS(s),e)}document(e){this.body(e)}raw(e,t,r){let i;if(!r)r=t;if(t){i=e.raws[t];if(typeof i!=="undefined")return i}let n=e.parent;if(r==="before"){if(!n||n.type==="root"&&n.first===e){return""}if(n&&n.type==="document"){return""}}if(!n)return s[r];let l=e.root();if(!l.rawCache)l.rawCache={};if(typeof l.rawCache[r]!=="undefined"){return l.rawCache[r]}if(r==="before"||r==="after"){return this.beforeAfter(e,r)}else{let s="raw"+capitalize(r);if(this[s]){i=this[s](l,e)}else{l.walk((e=>{i=e.raws[t];if(typeof i!=="undefined")return false}))}}if(typeof i==="undefined")i=s[r];l.rawCache[r]=i;return i}rawBeforeClose(e){let t;e.walk((e=>{if(e.nodes&&e.nodes.length>0){if(typeof e.raws.after!=="undefined"){t=e.raws.after;if(t.includes("\n")){t=t.replace(/[^\n]+$/,"")}return false}}}));if(t)t=t.replace(/\S/g,"");return t}rawBeforeComment(e,t){let r;e.walkComments((e=>{if(typeof e.raws.before!=="undefined"){r=e.raws.before;if(r.includes("\n")){r=r.replace(/[^\n]+$/,"")}return false}}));if(typeof r==="undefined"){r=this.raw(t,null,"beforeDecl")}else if(r){r=r.replace(/\S/g,"")}return r}rawBeforeDecl(e,t){let r;e.walkDecls((e=>{if(typeof e.raws.before!=="undefined"){r=e.raws.before;if(r.includes("\n")){r=r.replace(/[^\n]+$/,"")}return false}}));if(typeof r==="undefined"){r=this.raw(t,null,"beforeRule")}else if(r){r=r.replace(/\S/g,"")}return r}rawBeforeOpen(e){let t;e.walk((e=>{if(e.type!=="decl"){t=e.raws.between;if(typeof t!=="undefined")return false}}));return t}rawBeforeRule(e){let t;e.walk((r=>{if(r.nodes&&(r.parent!==e||e.first!==r)){if(typeof r.raws.before!=="undefined"){t=r.raws.before;if(t.includes("\n")){t=t.replace(/[^\n]+$/,"")}return false}}}));if(t)t=t.replace(/\S/g,"");return t}rawColon(e){let t;e.walkDecls((e=>{if(typeof e.raws.between!=="undefined"){t=e.raws.between.replace(/[^\s:]/g,"");return false}}));return t}rawEmptyBody(e){let t;e.walk((e=>{if(e.nodes&&e.nodes.length===0){t=e.raws.after;if(typeof t!=="undefined")return false}}));return t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;e.walk((r=>{let s=r.parent;if(s&&s!==e&&s.parent&&s.parent===e){if(typeof r.raws.before!=="undefined"){let e=r.raws.before.split("\n");t=e[e.length-1];t=t.replace(/\S/g,"");return false}}}));return t}rawSemicolon(e){let t;e.walk((e=>{if(e.nodes&&e.nodes.length&&e.last.type==="decl"){t=e.raws.semicolon;if(typeof t!=="undefined")return false}}));return t}rawValue(e,t){let r=e[t];let s=e.raws[t];if(s&&s.value===r){return s.raw}return r}root(e){this.body(e);if(e.raws.after){let t=e.raws.after;let r=e.parent&&e.parent.type==="document";this.builder(r?t:escapeHTMLInCSS(t))}}rule(e){this.block(e,this.rawValue(e,"selector"));if(e.raws.ownSemicolon){this.builder(escapeHTMLInCSS(e.raws.ownSemicolon),e,"end")}}stringify(e,t){if(!this[e.type]){throw new Error("Unknown AST node type "+e.type+". "+"Maybe you need to change PostCSS stringifier.")}this[e.type](e,t)}}e.exports=Stringifier;Stringifier.default=Stringifier},940:e=>{"use strict";e.exports=require("postcss")},426:e=>{"use strict";e.exports=require("postcss/lib/parser")}};var t={};function __nccwpck_require__(r){var s=t[r];if(s!==undefined){return s.exports}var i=t[r]={exports:{}};var n=true;try{e[r](i,i.exports,__nccwpck_require__);n=false}finally{if(n)delete t[r]}return i.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var r=__nccwpck_require__(267);module.exports=r})(); | ||
| (()=>{var e={595:(e,t,r)=>{const{Container:s}=r(940);class NestedDeclaration extends s{constructor(e){super(e);this.type="decl";this.isNested=true;if(!this.nodes)this.nodes=[]}}e.exports=NestedDeclaration},623:(e,t,r)=>{let{Input:s}=r(940);let n=r(393);e.exports=function scssParse(e,t){let r=new s(e,t);let i=new n(r);i.parse();return i.root}},393:(e,t,r)=>{let{Comment:s}=r(940);let n=r(426);let i=r(595);let l=r(783);class ScssParser extends n{createTokenizer(){this.tokenizer=l(this.input)}rule(e){let t=false;let r=0;let s="";for(let n of e){if(t){if(n[0]!=="comment"&&n[0]!=="{"){s+=n[1]}}else if(n[0]==="space"&&n[1].includes("\n")){break}else if(n[0]==="("){r+=1}else if(n[0]===")"){r-=1}else if(r===0&&n[0]===":"){t=true}}if(!t||s.trim()===""||/^[#:A-Za-z-]/.test(s)){super.rule(e)}else{e.pop();let t=new i;this.init(t,e[0][2]);let r;for(let t=e.length-1;t>=0;t--){if(e[t][0]!=="space"){r=e[t];break}}if(r[3]){let e=this.input.fromOffset(r[3]);t.source.end={offset:r[3],line:e.line,column:e.col}}else{let e=this.input.fromOffset(r[2]);t.source.end={offset:r[2],line:e.line,column:e.col}}while(e[0][0]!=="word"){t.raws.before+=e.shift()[1]}if(e[0][2]){let r=this.input.fromOffset(e[0][2]);t.source.start={offset:e[0][2],line:r.line,column:r.col}}t.prop="";while(e.length){let r=e[0][0];if(r===":"||r==="space"||r==="comment"){break}t.prop+=e.shift()[1]}t.raws.between="";let s;while(e.length){s=e.shift();if(s[0]===":"){t.raws.between+=s[1];break}else{t.raws.between+=s[1]}}if(t.prop[0]==="_"||t.prop[0]==="*"){t.raws.before+=t.prop[0];t.prop=t.prop.slice(1)}t.raws.between+=this.spacesAndCommentsFromStart(e);this.precheckMissedSemicolon(e);for(let r=e.length-1;r>0;r--){s=e[r];if(s[1]==="!important"){t.important=true;let s=this.stringFrom(e,r);s=this.spacesFromEnd(e)+s;if(s!==" !important"){t.raws.important=s}break}else if(s[1]==="important"){let s=e.slice(0);let n="";for(let e=r;e>0;e--){let t=s[e][0];if(n.trim().indexOf("!")===0&&t!=="space"){break}n=s.pop()[1]+n}if(n.trim().indexOf("!")===0){t.important=true;t.raws.important=n;e=s}}if(s[0]!=="space"&&s[0]!=="comment"){break}}this.raw(t,"value",e);if(t.value.includes(":")){this.checkMissedSemicolon(e)}this.current=t}}comment(e){if(e[4]==="inline"){let t=new s;this.init(t,e[2]);t.raws.inline=true;let r=this.input.fromOffset(e[3]);t.source.end={offset:e[3],line:r.line,column:r.col};let n=e[1].slice(2);if(/^\s*$/.test(n)){t.text="";t.raws.left=n;t.raws.right=""}else{let e=n.match(/^(\s*)([^]*\S)(\s*)$/);let r=e[2].replace(/(\*\/|\/\*)/g,"*//*");t.text=r;t.raws.left=e[1];t.raws.right=e[3];t.raws.text=e[2]}}else{super.comment(e)}}atrule(e){let t=e[1];let r=e;while(!this.tokenizer.endOfFile()){let e=this.tokenizer.nextToken();if(e[0]==="word"&&e[2]===r[3]+1){t+=e[1];r=e}else{this.tokenizer.back(e);break}}super.atrule(["at-word",t,e[2],r[3]])}raw(e,t,r){super.raw(e,t,r);if(e.raws[t]){let s=e.raws[t].raw;e.raws[t].raw=r.reduce(((e,t)=>{if(t[0]==="comment"&&t[4]==="inline"){let r=t[1].slice(2).replace(/(\*\/|\/\*)/g,"*//*");return e+"/*"+r+"*/"}else{return e+t[1]}}),"");if(s!==e.raws[t].raw){e.raws[t].scss=s}}}}e.exports=ScssParser},410:(e,t,r)=>{let s=r(689);class ScssStringifier extends s{comment(e){let t=this.raw(e,"left","commentLeft");let r=this.raw(e,"right","commentRight");if(e.raws.inline){let s=e.raws.text||e.text;this.builder("//"+t+s+r,e)}else{this.builder("/*"+t+e.text+r+"*/",e)}}decl(e,t){if(!e.isNested){super.decl(e,t)}else{let t=this.raw(e,"between","colon");let r=e.prop+t+this.rawValue(e,"value");if(e.important){r+=e.raws.important||" !important"}this.builder(r+"{",e,"start");let s;if(e.nodes&&e.nodes.length){this.body(e);s=this.raw(e,"after")}else{s=this.raw(e,"after","emptyBody")}if(s)this.builder(s);this.builder("}",e,"end")}}rawValue(e,t){let r=e[t];let s=e.raws[t];if(s&&s.value===r){return s.scss?s.scss:s.raw}else{return r}}}e.exports=ScssStringifier},321:(e,t,r)=>{let s=r(410);e.exports=function scssStringify(e,t){let r=new s(t);r.stringify(e)}},633:(e,t,r)=>{let s=r(321);let n=r(623);e.exports={parse:n,stringify:s}},783:e=>{"use strict";const t="'".charCodeAt(0);const r='"'.charCodeAt(0);const s="\\".charCodeAt(0);const n="/".charCodeAt(0);const i="\n".charCodeAt(0);const l=" ".charCodeAt(0);const o="\f".charCodeAt(0);const a="\t".charCodeAt(0);const f="\r".charCodeAt(0);const c="[".charCodeAt(0);const u="]".charCodeAt(0);const d="(".charCodeAt(0);const p=")".charCodeAt(0);const h="{".charCodeAt(0);const w="}".charCodeAt(0);const m=";".charCodeAt(0);const b="*".charCodeAt(0);const y=":".charCodeAt(0);const g="@".charCodeAt(0);const C=",".charCodeAt(0);const k="#".charCodeAt(0);const S=/[\t\n\f\r "#'()/;[\\\]{}]/g;const x=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g;const A=/.[\n"'(/\\]/;const _=/[\da-f]/i;const I=/[\n\f\r]/g;e.exports=function scssTokenize(e,T={}){let O=e.css.valueOf();let B=T.ignoreErrors;let L,M,v,H,z;let D,$,q,F;let R=O.length;let V=0;let N=[];let E=[];let P;function position(){return V}function unclosed(t){throw e.error("Unclosed "+t,V)}function endOfFile(){return E.length===0&&V>=R}function interpolation(){let e=1;let n=false;let i=false;while(e>0){M+=1;if(O.length<=M)unclosed("interpolation");L=O.charCodeAt(M);q=O.charCodeAt(M+1);if(n){if(!i&&L===n){n=false;i=false}else if(L===s){i=!i}else if(i){i=false}}else if(L===t||L===r){n=L}else if(L===w){e-=1}else if(L===k&&q===h){e+=1}}}function nextToken(e){if(E.length)return E.pop();if(V>=R)return;let T=e?e.ignoreUnclosed:false;L=O.charCodeAt(V);switch(L){case i:case l:case a:case f:case o:{M=V;do{M+=1;L=O.charCodeAt(M)}while(L===l||L===i||L===a||L===f||L===o);F=["space",O.slice(V,M)];V=M-1;break}case c:case u:case h:case w:case y:case m:case p:{let e=String.fromCharCode(L);F=[e,e,V];break}case C:{F=["word",",",V,V+1];break}case d:{$=N.length?N.pop()[1]:"";q=O.charCodeAt(V+1);if($==="url"&&q!==t&&q!==r){P=1;D=false;M=V+1;while(M<=O.length-1){q=O.charCodeAt(M);if(q===s){D=!D}else if(q===d){P+=1}else if(q===p){P-=1;if(P===0)break}M+=1}H=O.slice(V,M+1);F=["brackets",H,V,M];V=M}else{M=O.indexOf(")",V+1);H=O.slice(V,M+1);if(M===-1||A.test(H)){F=["(","(",V]}else{F=["brackets",H,V,M];V=M}}break}case t:case r:{v=L;M=V;D=false;while(M<R){M++;if(M===R)unclosed("string");L=O.charCodeAt(M);q=O.charCodeAt(M+1);if(!D&&L===v){break}else if(L===s){D=!D}else if(D){D=false}else if(L===k&&q===h){interpolation()}}F=["string",O.slice(V,M+1),V,M];V=M;break}case g:{S.lastIndex=V+1;S.test(O);if(S.lastIndex===0){M=O.length-1}else{M=S.lastIndex-2}F=["at-word",O.slice(V,M+1),V,M];V=M;break}case s:{M=V;z=true;while(O.charCodeAt(M+1)===s){M+=1;z=!z}L=O.charCodeAt(M+1);if(z&&L!==n&&L!==l&&L!==i&&L!==a&&L!==f&&L!==o){M+=1;if(_.test(O.charAt(M))){while(_.test(O.charAt(M+1))){M+=1}if(O.charCodeAt(M+1)===l){M+=1}}}F=["word",O.slice(V,M+1),V,M];V=M;break}default:q=O.charCodeAt(V+1);if(L===k&&q===h){M=V;interpolation();H=O.slice(V,M+1);F=["word",H,V,M];V=M}else if(L===n&&q===b){M=O.indexOf("*/",V+2)+1;if(M===0){if(B||T){M=O.length}else{unclosed("comment")}}F=["comment",O.slice(V,M+1),V,M];V=M}else if(L===n&&q===n){I.lastIndex=V+1;I.test(O);if(I.lastIndex===0){M=O.length-1}else{M=I.lastIndex-2}H=O.slice(V,M+1);F=["comment",H,V,M,"inline"];V=M}else{x.lastIndex=V+1;x.test(O);if(x.lastIndex===0){M=O.length-1}else{M=x.lastIndex-2}F=["word",O.slice(V,M+1),V,M];N.push(F);V=M}break}V++;return F}function back(e){E.push(e)}return{back:back,nextToken:nextToken,endOfFile:endOfFile,position:position}}},689:e=>{"use strict";const t=/(<)(\/?style\b)/gi;const r=/(<)(!--)/g;const s=/[\t\n\f\r "#'()/;[\\\]{}]/;function escapeHTMLInCSS(e){if(typeof e!=="string")return e;if(!e.includes("<"))return e;return e.replace(t,"\\3c $2").replace(r,"\\3c $2")}const n={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:false};function capitalize(e){return e[0].toUpperCase()+e.slice(1)}function atruleStart(e,t){let r="@"+t.name;let n=t.params?e.rawValue(t,"params"):"";let i=t.raws.afterName;if(typeof i==="undefined"){i=n?" ":""}else if(i===""&&n&&!s.test(n[0])){i=" "}return r+i+n}function pushBody(e,t,r){let s=r.nodes;let n=s.length-1;while(n>0){if(s[n].type!=="comment")break;n-=1}let i=e.raw(r,"semicolon");let l=r.type==="document";for(let e=s.length-1;e>=0;e--){let r=s[e];let o=n!==e||i;if(!o&&e<s.length-1&&(r.type==="atrule"&&!r.nodes||r.type==="decl"&&r.prop.startsWith("--"))){o=true}t.push({document:l,node:r,semicolon:o})}}function pushBlock(e,t,r,s){let n=e.raw(r,"between","beforeOpen");e.builder(escapeHTMLInCSS(s+n)+"{",r,"start");let i=r.nodes&&r.nodes.length;let close=()=>{let t=i?e.raw(r,"after"):e.raw(r,"after","emptyBody");if(t)e.builder(escapeHTMLInCSS(t));e.builder("}",r,"end");if(r.type==="rule"&&r.raws.ownSemicolon){e.builder(escapeHTMLInCSS(r.raws.ownSemicolon),r,"end")}};if(i){t.push(close);pushBody(e,t,r)}else{close()}}class Stringifier{constructor(e){this.builder=e}atrule(e,t){let r=atruleStart(this,e);if(e.nodes){this.block(e,r)}else{let s=(e.raws.between||"")+(t?";":"");this.builder(escapeHTMLInCSS(r+s),e)}}beforeAfter(e,t){let r;if(e.type==="decl"){r=this.raw(e,null,"beforeDecl")}else if(e.type==="comment"){r=this.raw(e,null,"beforeComment")}else if(t==="before"){r=this.raw(e,null,"beforeRule")}else{r=this.raw(e,null,"beforeClose")}let s=e.parent;let n=0;while(s&&s.type!=="root"){n+=1;s=s.parent}if(r.includes("\n")){let t=this.raw(e,null,"indent");if(t.length){for(let e=0;e<n;e++)r+=t}}return r}block(e,t){let r=this.raw(e,"between","beforeOpen");this.builder(escapeHTMLInCSS(t+r)+"{",e,"start");let s;if(e.nodes&&e.nodes.length){this.body(e);s=this.raw(e,"after")}else{s=this.raw(e,"after","emptyBody")}if(s)this.builder(escapeHTMLInCSS(s));this.builder("}",e,"end")}body(e){let t=Stringifier.prototype;let r=["atrule","block","body","rule","stringify"].every((e=>this[e]===t[e]));let s=[];pushBody(this,s,e);while(s.length>0){let e=s.pop();if(typeof e==="function"){e();continue}let t=e.node;let n=this.raw(t,"before");if(n){this.builder(e.document?n:escapeHTMLInCSS(n))}if(r&&t.type==="rule"){pushBlock(this,s,t,this.rawValue(t,"selector"))}else if(r&&t.type==="atrule"&&t.nodes){pushBlock(this,s,t,atruleStart(this,t))}else{this.stringify(t,e.semicolon)}}}comment(e){let t=this.raw(e,"left","commentLeft");let r=this.raw(e,"right","commentRight");this.builder(escapeHTMLInCSS("/*"+t+e.text+r+"*/"),e)}decl(e,t){let r=e.raws;let s=this.raw(e,"between","colon");let n=e.prop+s+this.rawValue(e,"value");if(e.important){n+=r.important||" !important"}if(t)n+=";";this.builder(escapeHTMLInCSS(n),e)}document(e){this.body(e)}raw(e,t,r){let s;if(!r)r=t;if(t){s=e.raws[t];if(typeof s!=="undefined")return s}let i=e.parent;if(r==="before"){if(!i||i.type==="root"&&i.first===e){return""}if(i&&i.type==="document"){return""}}if(!i)return n[r];let l=e.root();let o=l.rawCache||(l.rawCache={});if(typeof o[r]!=="undefined"){return o[r]}if(r==="before"||r==="after"){return this.beforeAfter(e,r)}else{let n="raw"+capitalize(r);if(this[n]){s=this[n](l,e)}else{l.walk((e=>{s=e.raws[t];if(typeof s!=="undefined")return false}))}}if(typeof s==="undefined")s=n[r];o[r]=s;return s}rawBeforeClose(e){let t;e.walk((e=>{if(e.nodes&&e.nodes.length>0){if(typeof e.raws.after!=="undefined"){t=e.raws.after;if(t.includes("\n")){t=t.replace(/[^\n]+$/,"")}return false}}}));if(t)t=t.replace(/\S/g,"");return t}rawBeforeComment(e,t){let r;e.walkComments((e=>{if(typeof e.raws.before!=="undefined"){r=e.raws.before;if(r.includes("\n")){r=r.replace(/[^\n]+$/,"")}return false}}));if(typeof r==="undefined"){r=this.raw(t,null,"beforeDecl")}else if(r){r=r.replace(/\S/g,"")}return r}rawBeforeDecl(e,t){let r;e.walkDecls((e=>{if(typeof e.raws.before!=="undefined"){r=e.raws.before;if(r.includes("\n")){r=r.replace(/[^\n]+$/,"")}return false}}));if(typeof r==="undefined"){r=this.raw(t,null,"beforeRule")}else if(r){r=r.replace(/\S/g,"")}return r}rawBeforeOpen(e){let t;e.walk((e=>{if(e.type!=="decl"){t=e.raws.between;if(typeof t!=="undefined")return false}}));return t}rawBeforeRule(e){let t;e.walk((r=>{if(r.nodes&&(r.parent!==e||e.first!==r)){if(typeof r.raws.before!=="undefined"){t=r.raws.before;if(t.includes("\n")){t=t.replace(/[^\n]+$/,"")}return false}}}));if(t)t=t.replace(/\S/g,"");return t}rawColon(e){let t;e.walkDecls((e=>{if(typeof e.raws.between!=="undefined"){t=e.raws.between.replace(/[^\s:]/g,"");return false}}));return t}rawEmptyBody(e){let t;e.walk((e=>{if(e.nodes&&e.nodes.length===0){t=e.raws.after;if(typeof t!=="undefined")return false}}));return t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;e.walk((r=>{let s=r.parent;if(s&&s!==e&&s.parent&&s.parent===e){if(typeof r.raws.before!=="undefined"){let e=r.raws.before.split("\n");t=e[e.length-1];t=t.replace(/\S/g,"");return false}}}));return t}rawSemicolon(e){let t;e.walk((e=>{if(e.nodes&&e.nodes.length&&e.last.type==="decl"){t=e.raws.semicolon;if(typeof t!=="undefined")return false}}));return t}rawValue(e,t){let r=e[t];let s=e.raws[t];if(s&&s.value===r){return s.raw}return r}root(e){this.body(e);if(e.raws.after){let t=e.raws.after;let r=e.parent&&e.parent.type==="document";this.builder(r?t:escapeHTMLInCSS(t))}}rule(e){this.block(e,this.rawValue(e,"selector"));if(e.raws.ownSemicolon){this.builder(escapeHTMLInCSS(e.raws.ownSemicolon),e,"end")}}stringify(e,t){if(!this[e.type]){throw new Error("Unknown AST node type "+e.type+". "+"Maybe you need to change PostCSS stringifier.")}this[e.type](e,t)}}e.exports=Stringifier;Stringifier.default=Stringifier},940:e=>{"use strict";e.exports=require("postcss")},426:e=>{"use strict";e.exports=require("postcss/lib/parser")}};var t={};function __nccwpck_require__(r){var s=t[r];if(s!==undefined){return s.exports}var n=t[r]={exports:{}};var i=true;try{e[r](n,n.exports,__nccwpck_require__);i=false}finally{if(i)delete t[r]}return n.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var r=__nccwpck_require__(633);module.exports=r})(); |
@@ -102,3 +102,3 @@ --- | ||
| On the server, Next.js uses React's APIs to orchestrate rendering. The rendering work is split into chunks, by individual route segments ([layouts and pages](/docs/app/getting-started/layouts-and-pages)): | ||
| On the server, Next.js uses React's APIs to orchestrate rendering. The rendering work is split into chunks, by individual route segments ([layouts and pages](/docs/app/getting-started/layouts-and-pages)), including [parallel route slots](/docs/app/api-reference/file-conventions/parallel-routes) whether or not they are displayed: | ||
@@ -105,0 +105,0 @@ - **Server Components** are rendered into a special data format called the React Server Component Payload (RSC Payload). |
@@ -68,7 +68,7 @@ --- | ||
| | `<Link>` prop | Before (Cache Components default) | After Partial Prefetching | | ||
| | ----------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | ||
| | `<Link href="/x">` | Prefetched the cached page render. | Loads the shared App Shell for `/x`. | | ||
| | `<Link href="/x" prefetch>` | Prefetched the cached page render **and** any dynamic content. | Loads the App Shell. If `/x` opts into [runtime prefetching](/docs/app/guides/runtime-prefetching), also prefetches per-link runtime data. | | ||
| | `<Link href="/x" prefetch={false}>` | Disabled prefetching for this link. | Unchanged. Still disabled. | | ||
| | `<Link>` prop | Before (Cache Components default) | After Partial Prefetching | | ||
| | ----------------------------------- | -------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | | ||
| | `<Link href="/x">` | Prefetched the cached page render. | Loads the shared App Shell for `/x`. | | ||
| | `<Link href="/x" prefetch>` | Prefetched the cached page render **and** any dynamic content. | Loads the App Shell, plus per-link runtime data through [runtime prefetching](/docs/app/guides/runtime-prefetching) when `/x` reads it. | | ||
| | `<Link href="/x" prefetch={false}>` | Disabled prefetching for this link. | Unchanged. Still disabled. | | ||
@@ -75,0 +75,0 @@ The App Shell is shared across every link to a given route, regardless of dynamic params, so rendering many `<Link>`s to the same destination doesn't multiply the work. |
@@ -1352,2 +1352,4 @@ --- | ||
| A layout also does not control whether the rest of the route renders. Route segments and [parallel route slots](/docs/app/api-reference/file-conventions/parallel-routes#conditional-routes) are rendered by the router, so a layout that hides or swaps them does not stop them from running or from appearing in the [RSC Payload](/docs/app/glossary#rsc-payload). | ||
| Instead, you should do the checks close to your data source or the component that'll be conditionally rendered. | ||
@@ -1354,0 +1356,0 @@ |
@@ -482,2 +482,31 @@ --- | ||
| ## Re-applying attributes in development | ||
| The inline script sets the attribute during parsing, which is all a production build needs. In development, though, [React's Strict Mode](https://react.dev/reference/react/StrictMode) remounts components once to surface bugs, and on that remount it resets `<html>`, `<head>`, and `<body>` to only the attributes it manages from JSX, clearing the one the script set. The page then renders without the attribute, ignoring the value's source of truth. | ||
| One way to fix this is to do what you would do without the inline script at all. Read the stored value on the client and apply it, in the component that owns the theme, in a [`useLayoutEffect`](https://react.dev/reference/react/useLayoutEffect) that runs [before paint](#why-not-useeffect): | ||
| ```tsx filename="app/components/theme-toggle.tsx" | ||
| 'use client' | ||
| import { useLayoutEffect } from 'react' | ||
| export function ThemeToggle() { | ||
| // Re-apply after React clears it on the dev remount. This is a no-op in production. | ||
| useLayoutEffect(() => { | ||
| const theme = localStorage.getItem('theme') | ||
| if (theme) document.documentElement.setAttribute('data-theme', theme) | ||
| }, []) | ||
| function toggle() { | ||
| const next = | ||
| (localStorage.getItem('theme') ?? 'light') === 'dark' ? 'light' : 'dark' | ||
| localStorage.setItem('theme', next) | ||
| document.documentElement.setAttribute('data-theme', next) | ||
| } | ||
| return <button onClick={toggle}>Toggle theme</button> | ||
| } | ||
| ``` | ||
| ## When to use other approaches | ||
@@ -484,0 +513,0 @@ |
@@ -674,4 +674,4 @@ --- | ||
| 2. **Static Exports:** If your application requires not running a server, and instead using a static export of files, you can update the Next.js configuration to enable this change. Learn more in the [Next.js Static Export documentation](/docs/app/guides/static-exports). However, you will need to move from Server Actions to calling an external API, as well as moving your defined headers to your proxy. | ||
| 3. **Offline Support**: Next.js provides an experimental [`useOffline`](/docs/app/api-reference/functions/use-offline) hook and matching [`experimental.useOffline`](/docs/app/api-reference/config/next-config-js/useOffline) config for connectivity-aware UI and automatic retry of failed navigation and Server Action requests. For full service-worker-based offline caching, one option is [Serwist](https://github.com/serwist/serwist) with Next.js. You can find an example of how to integrate Serwist with Next.js in their [documentation](https://github.com/serwist/serwist/tree/main/examples/next-basic). **Note:** this plugin currently requires webpack configuration. | ||
| 3. **Offline Support**: Next.js provides an experimental [`useOffline`](/docs/app/api-reference/functions/use-offline) hook and matching [`experimental.useOffline`](/docs/app/api-reference/config/next-config-js/useOffline) config for connectivity-aware UI and automatic retries of failed navigation and Server Action requests. For full service-worker-based offline caching, one option is [Serwist](https://github.com/serwist/serwist), which provides Next.js integration examples for both [Turbopack](https://github.com/serwist/serwist/tree/main/examples/next-turbo-basic) and [webpack](https://github.com/serwist/serwist/tree/main/examples/next-basic). | ||
| 4. **Security Considerations**: Ensure that your service worker is properly secured. This includes using HTTPS, validating the source of push messages, and implementing proper error handling. | ||
| 5. **User Experience**: Consider implementing progressive enhancement techniques to ensure your app works well even when certain PWA features are not supported by the user's browser. |
@@ -46,3 +46,3 @@ --- | ||
| Runtime prefetching is opted into per link with `<Link prefetch={true}>`. Any destination with [Partial Prefetching](/docs/app/api-reference/config/next-config-js/partialPrefetching) enabled supports it — globally via `partialPrefetching`, or per segment with [`prefetch = 'partial'`](/docs/app/api-reference/file-conventions/route-segment-config/prefetch#partial). | ||
| Runtime prefetching is opted into per link with `<Link prefetch={true}>`. Any destination with [Partial Prefetching](/docs/app/api-reference/config/next-config-js/partialPrefetching) enabled supports it, either globally via `partialPrefetching` or per segment with [`prefetch = 'partial'`](/docs/app/api-reference/file-conventions/route-segment-config/prefetch#partial). | ||
@@ -107,3 +107,3 @@ A user on `/` sees links to `/search?q=react` and `/search?q=next`, each opting in with `prefetch={true}`: | ||
| Generating it costs **a server invocation per prefetchable link**, so it is opt-in per link. On pages where all the content is statically renderable, Next.js serves the prefetch from the static cache instead; a page that accesses non-static data is prefetched at runtime. | ||
| Generating it costs **a server invocation per prefetchable link**, so it is opt-in per link. On pages where all the content is statically renderable, Next.js serves the prefetch from the static cache instead. A page that accesses non-static data is prefetched at runtime. | ||
@@ -116,3 +116,3 @@ > **Good to know:** A cold cache (first visit, or after expiration) means the server still has to compute the cached result. Users may see a loading spinner on that first navigation. Subsequent navigations are instant as long as the cache is warm. | ||
| Runtime prefetching is for URL data. Session data is handled separately: a route that reads `cookies()` or `headers()`, including through `"use cache: private"`, gets an App Shell that includes its session data, cached per session on the client and ready on navigation without a per-link runtime prefetch. | ||
| Runtime prefetching is for URL data. Session data is handled separately. A route that reads `cookies()` or `headers()`, including through `"use cache: private"`, gets an App Shell that includes its session data, cached per session on the client and ready on navigation without a per-link runtime prefetch. | ||
@@ -213,3 +213,3 @@ A lookup based on session data needs a cache lifetime, the same way `search(q)` did for the URL. Take a dashboard nav that reads a cookie, then looks up content based on it: | ||
| When many links to a route are visible at once, such as a grid of cards, each `<Link prefetch={true}>` prefetches that link's content as it enters the viewport, so the grid makes one such server request per card. Prefetch on intent instead: a [hover-triggered prefetch](/docs/app/guides/prefetching#hover-triggered-prefetch) fetches only the links the user is likely to click. The default `<Link>` (without `prefetch={true}`) prefetches just the App Shell, so it doesn't carry this cost. | ||
| When many links to a route are visible at once, such as a grid of cards, each `<Link prefetch={true}>` prefetches that link's content as it enters the viewport, so the grid makes one such server request per card. Prefetch on intent instead. A [hover-triggered prefetch](/docs/app/guides/prefetching#hover-triggered-prefetch) fetches only the links the user is likely to click. The default `<Link>` (without `prefetch={true}`) prefetches only the App Shell, so it doesn't carry this cost. | ||
@@ -216,0 +216,0 @@ | | App Shell | Per-link runtime prefetch with `prefetch={true}` | |
@@ -9,25 +9,57 @@ --- | ||
| ## Upgrading from 15 to 16 | ||
| ## Use an AI agent (recommended) | ||
| ### Using AI Agents | ||
| An AI coding agent can run the mechanical parts of the upgrade, inspect the diff, fix follow-up breakages, and verify the app. The prompt below asks the agent to read version-matched docs, use the codemods where appropriate, explain important changes, and verify the result. Some runtime verification tools are only available after the app is upgraded. | ||
| If you're using an AI coding assistant, it can run the upgrade for you with the [codemod](#using-the-codemod) below and then help resolve any remaining breaking changes. | ||
| Give the agent this prompt: | ||
| For the best results, also configure the [`next-devtools-mcp`](https://github.com/vercel/next-devtools-mcp) server. It lets your agent inspect your running dev server for migration errors and read the version-accurate Next.js docs bundled with your project: | ||
| ```prompt | ||
| Upgrade this app to Next.js 16. | ||
| ```json filename=".mcp.json" | ||
| { | ||
| "mcpServers": { | ||
| "next-devtools": { | ||
| "command": "npx", | ||
| "args": ["-y", "next-devtools-mcp@latest"] | ||
| } | ||
| } | ||
| } | ||
| Before editing code, make sure AGENTS.md points at version-matched Next.js docs. If it is missing or outdated, follow [Set up AI agent docs](/docs/app/guides/upgrading/version-16#set-up-ai-agent-docs), then read AGENTS.md. | ||
| Then follow the [Next.js 16 upgrade guide](/docs/app/guides/upgrading/version-16) as the source of truth for the migration. Use the [codemod](/docs/app/guides/upgrading/version-16#using-the-codemod) when you're ready to run the mechanical upgrade. | ||
| Briefly explain the upgrade plan in user-facing language before making broad changes. Follow the documented defaults and keep moving unless the guide requires a project-specific decision, the change is destructive, credentials or environment setup are missing, or the correct migration is ambiguous. Keep the migration scoped to the upgrade, inspect the diff, run the relevant checks, and fix remaining breaking changes. | ||
| After the app is upgraded, use the runtime verification flow from the [AI Coding Agents guide](/docs/app/guides/ai-agents) to confirm it still works. Prefer the `next-dev-loop` skill when it is available (Next.js 16.3 or later with Turbopack); otherwise fall back to the best available `next dev`, browser, and build checks. Open the key interactive UI states and check the Next dev indicator plus browser and server logs. Summarize what changed, what was verified, and what could not be verified. | ||
| Before finishing, repeat the post-upgrade check in [Set up AI agent docs](/docs/app/guides/upgrading/version-16#set-up-ai-agent-docs) so the project is ready for future agent work. | ||
| ``` | ||
| See the [Next.js MCP guide](/docs/app/guides/mcp) and the [`next-devtools-mcp` documentation](https://github.com/vercel/next-devtools-mcp#mcp-client-configuration) for client setup. Then ask your agent to upgrade your app — it will run the codemod and use the dev server's diagnostics to fix breaking changes. | ||
| ## Or upgrade manually | ||
| ### Using the Codemod | ||
| Upgrading manually follows a few steps, in order: | ||
| 1. [Set up AI agent docs](#set-up-ai-agent-docs) if you use an assistant now or want future agent work grounded in version-matched docs. | ||
| 2. [Run the upgrade codemod](#using-the-codemod). | ||
| 3. If you prefer not to run the codemod, [install packages manually](#install-packages-manually). | ||
| 4. Continue through the breaking changes below, run the relevant checks, and fix any remaining issues. | ||
| ## Set up AI agent docs | ||
| The prompt above asks the agent to do this before it edits code. You can also prepare the project yourself before starting the upgrade. See the [AI Coding Agents guide](/docs/app/guides/ai-agents) for the full setup. | ||
| ```bash filename="Terminal" | ||
| npx @next/codemod@canary agents-md | ||
| ``` | ||
| After upgrading, verify `AGENTS.md` still points at the docs for the installed Next.js version. On Next.js 16.2 and later, that should be the bundled docs in `node_modules/next/dist/docs/`. If the pre-upgrade setup downloaded docs into `.next-docs/`, update `AGENTS.md` to point at the bundled docs, then remove `.next-docs/` once nothing references it. | ||
| The managed block should look like this: | ||
| ```md filename="AGENTS.md" | ||
| <!-- BEGIN:nextjs-agent-rules --> | ||
| # This is NOT the Next.js you know | ||
| This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` (resolved from this file's directory; in monorepos the `next` package may not be visible from the repo root) before writing any code. Heed deprecation notices. | ||
| This block is written and re-added by `next dev` — verify at `node_modules/next/dist/server/lib/generate-agent-files.js`. Removing it from a diff only re-creates the uncommitted change; committing it with your work keeps the tree clean. | ||
| <!-- END:nextjs-agent-rules --> | ||
| ``` | ||
| ## Using the codemod | ||
| To update to Next.js version 16, you can use the `upgrade` [codemod](/docs/app/guides/upgrading/codemods#160): | ||
@@ -59,2 +91,10 @@ | ||
| The `upgrade` codemod does not run every migration codemod. If your app still uses synchronous `params`, `searchParams`, `cookies()`, `headers()`, or `draftMode()` access from the Next.js 15 compatibility period, also run the async Request APIs codemod: | ||
| ```bash filename="Terminal" | ||
| npx @next/codemod@canary next-async-request-api . | ||
| ``` | ||
| ## Install packages manually | ||
| If you prefer to do it manually, install the latest Next.js and React versions: | ||
@@ -1189,3 +1229,3 @@ | ||
| The `experimental.dynamicIO` and `experimental.useCache` flags are deprecated. Use top-level [`cacheComponents`](/docs/app/api-reference/config/next-config-js/cacheComponents) instead. | ||
| The `experimental.dynamicIO` and `experimental.useCache` flags have been removed. | ||
@@ -1210,2 +1250,4 @@ ```js filename="next.config.js" | ||
| If you were actively using these flags, migrate to top-level [`cacheComponents`](/docs/app/api-reference/config/next-config-js/cacheComponents): | ||
| ```ts filename="next.config.ts" switcher | ||
@@ -1229,6 +1271,8 @@ import type { NextConfig } from 'next' | ||
| For more on Cache Components, see [Migrating to Cache Components](/docs/app/guides/migrating-to-cache-components). | ||
| If you were not actively adopting Cache Components, remove the flags instead. Enabling `cacheComponents` is not a rename-only change: it can surface build errors for uncached data outside of `<Suspense>` and requires adopting the Cache Components model. | ||
| For the full migration path, see [Migrating to Cache Components](/docs/app/guides/migrating-to-cache-components). | ||
| ### `unstable_rootParams` | ||
| The `unstable_rootParams` function has been removed. Use [`next/root-params`](/docs/app/api-reference/functions/next-root-params) instead. |
@@ -303,3 +303,3 @@ --- | ||
| - **`"auto"` or `null` (default)**: Prefetch behavior depends on whether the route is static or dynamic. For static routes, the full route will be prefetched (including all its data). For dynamic routes, the partial route down to the nearest segment with a [`loading.js`](/docs/app/api-reference/file-conventions/loading#instant-loading-states) boundary will be prefetched. | ||
| - **`true`**: The full route is prefetched for both static and dynamic routes. With [Partial Prefetching](/docs/app/guides/adopting-partial-prefetching) enabled, the prefetch is the [App Shell](/docs/app/glossary#app-shell) plus the per-link runtime data and the cached content behind it — see [Runtime prefetching](/docs/app/guides/runtime-prefetching). | ||
| - **`true`**: The full route is prefetched for both static and dynamic routes. With [Partial Prefetching](/docs/app/guides/adopting-partial-prefetching) enabled, the prefetch is the [App Shell](/docs/app/glossary#app-shell) plus the per-link runtime data and the cached content behind it. See [Runtime prefetching](/docs/app/guides/runtime-prefetching). | ||
| - `false`: Prefetching will never happen both on entering the viewport and on hover. | ||
@@ -306,0 +306,0 @@ |
@@ -42,3 +42,3 @@ --- | ||
| For links that opt into a wider prefetch with [`<Link prefetch={true}>`](/docs/app/api-reference/components/link#prefetch), Next.js may also prefetch the segment at runtime: the server renders a fresh response that resolves per-link runtime data — `params`, `searchParams`, and the full URL. On pages where all the content is statically renderable, Next.js serves prefetches from the static cache; if a page accesses non-static data, it's prefetched at runtime. | ||
| For links that opt into a wider prefetch with [`<Link prefetch={true}>`](/docs/app/api-reference/components/link#prefetch), Next.js may also prefetch the segment at runtime. The server renders a fresh response that resolves per-link runtime data (`params`, `searchParams`, and the full URL). On pages where all the content is statically renderable, Next.js serves prefetches from the static cache. If a page accesses non-static data, it's prefetched at runtime. | ||
@@ -45,0 +45,0 @@ Use this for incremental adoption when you can't enable `partialPrefetching` for the entire app at once. Once every route in scope has `prefetch = 'partial'`, enable the global flag and remove the per-route exports. |
@@ -7,2 +7,3 @@ --- | ||
| - app/api-reference/file-conventions/default | ||
| - app/guides/authentication | ||
| --- | ||
@@ -173,2 +174,22 @@ | ||
| Both slots render on the server, regardless of which one the layout returns. The conditional decides what the user sees, not what runs: `@admin/page.js` executes its data fetches for every user, and its output is included in the response sent to the browser. Authorize inside each slot's page, or in your [Data Access Layer](/docs/app/guides/authentication#creating-a-data-access-layer-dal): | ||
| ```tsx filename="app/dashboard/@admin/page.tsx" switcher | ||
| import { getAdminStats } from '@/lib/dal' | ||
| export default async function AdminPage() { | ||
| const stats = await getAdminStats() | ||
| return <Stats stats={stats} /> | ||
| } | ||
| ``` | ||
| ```jsx filename="app/dashboard/@admin/page.js" switcher | ||
| import { getAdminStats } from '@/lib/dal' | ||
| export default async function AdminPage() { | ||
| const stats = await getAdminStats() | ||
| return <Stats stats={stats} /> | ||
| } | ||
| ``` | ||
| ### Tab Groups | ||
@@ -175,0 +196,0 @@ |
@@ -55,3 +55,3 @@ --- | ||
| A link can ask for more than the App Shell with [`<Link prefetch={true}>`](/docs/app/api-reference/components/link#prefetch): the prefetch also resolves per-link runtime data like `params`, `searchParams`, and the full URL. See [Runtime prefetching](/docs/app/guides/runtime-prefetching). | ||
| A link can ask for more than the App Shell with [`<Link prefetch={true}>`](/docs/app/api-reference/components/link#prefetch). The prefetch also resolves per-link runtime data like `params`, `searchParams`, and the full URL. See [Runtime prefetching](/docs/app/guides/runtime-prefetching). | ||
@@ -58,0 +58,0 @@ > **Good to know**: If you use `<Link prefetch={true}>` to a route that hasn't opted into Partial Prefetching, a dev console error suggests enabling `partialPrefetching` app-wide or `prefetch = 'partial'` on the segment. The [dev warning Insight](/docs/messages/instant-link-prefetch-partial) covers each fix in detail. |
@@ -20,2 +20,4 @@ --- | ||
| <AppOnly> | ||
| ## PPR Chain Headers | ||
@@ -32,1 +34,3 @@ | ||
| > **Good to know:** In standard `next start`, the server handles both the shell and dynamic render in a single pass automatically. The resume protocol is useful for adapter-based deployments and CDN-to-origin architectures that want to serve the shell separately. See the [PPR Platform Guide](/docs/app/guides/ppr-platform-guide) for the full implementation context. | ||
| </AppOnly> |
@@ -8,2 +8,4 @@ --- | ||
| <AppOnly> | ||
| - [Configuration](/docs/app/api-reference/adapters/configuration) | ||
@@ -21,1 +23,18 @@ - [Creating an Adapter](/docs/app/api-reference/adapters/creating-an-adapter) | ||
| - [Supporting Immutable Static Assets](/docs/app/api-reference/adapters/immutable-static-assets) | ||
| </AppOnly> | ||
| <PagesOnly> | ||
| - [Configuration](/docs/pages/api-reference/adapters/configuration) | ||
| - [Creating an Adapter](/docs/pages/api-reference/adapters/creating-an-adapter) | ||
| - [API Reference](/docs/pages/api-reference/adapters/api-reference) | ||
| - [Testing Adapters](/docs/pages/api-reference/adapters/testing-adapters) | ||
| - [Routing with `@next/routing`](/docs/pages/api-reference/adapters/routing-with-next-routing) | ||
| - [Runtime Integration](/docs/pages/api-reference/adapters/runtime-integration) | ||
| - [Invoking Entrypoints](/docs/pages/api-reference/adapters/invoking-entrypoints) | ||
| - [Output Types](/docs/pages/api-reference/adapters/output-types) | ||
| - [Routing Information](/docs/pages/api-reference/adapters/routing-information) | ||
| - [Use Cases](/docs/pages/api-reference/adapters/use-cases) | ||
| </PagesOnly> |
@@ -546,2 +546,3 @@ // Manual additions to make the generated types below work. | ||
| } | ||
| export declare function turbopackCacheVersion(nextVersion: string): string | ||
| /** | ||
@@ -548,0 +549,0 @@ * Turbopack's memory eviction strategy for the persistent cache, mirroring the |
@@ -14,3 +14,3 @@ import path from 'path'; | ||
| }({}); | ||
| const nextVersion = "16.3.0-canary.102"; | ||
| const nextVersion = "16.3.0-canary.103"; | ||
| const ArchName = arch(); | ||
@@ -930,2 +930,5 @@ const PlatformName = platform(); | ||
| }, | ||
| turbopackCacheVersion () { | ||
| return undefined; | ||
| }, | ||
| turbo: { | ||
@@ -1137,2 +1140,3 @@ createProject (_options, _turboEngineOptions, _callbacks) { | ||
| getTargetTriple: bindings.getTargetTriple, | ||
| turbopackCacheVersion: bindings.turbopackCacheVersion, | ||
| initCustomTraceSubscriber: bindings.initCustomTraceSubscriber, | ||
@@ -1252,2 +1256,6 @@ teardownTraceSubscriber: bindings.teardownTraceSubscriber, | ||
| } | ||
| export function getTurbopackCacheVersion() { | ||
| var _loadedBindings_turbopackCacheVersion; | ||
| return loadedBindings == null ? void 0 : (_loadedBindings_turbopackCacheVersion = loadedBindings.turbopackCacheVersion) == null ? void 0 : _loadedBindings_turbopackCacheVersion.call(loadedBindings, nextVersion); | ||
| } | ||
| /** | ||
@@ -1254,0 +1262,0 @@ * Initialize trace subscriber to emit traces. |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../../../../src/build/swc/types.ts"],"sourcesContent":["import type { NextConfigComplete } from '../../server/config-shared'\nimport type { __ApiPreviewProps } from '../../server/api-utils'\nimport type {\n ExternalObject,\n RefCell,\n NapiTurboEngineOptions,\n NapiSourceDiagnostic,\n NapiProjectOptions,\n NapiPartialProjectOptions,\n NapiCodeFrameOptions,\n NapiCodeFrameLocation,\n TraceServerHandle,\n TraceQueryOptions,\n TraceQueryResult,\n MemoryEvictionMode,\n} from './generated-native'\n\nexport type { TraceServerHandle, TraceQueryOptions, TraceQueryResult }\n\nexport type { NapiTurboEngineOptions as TurboEngineOptions }\n\nexport type { MemoryEvictionMode }\n\nexport type Lockfile = { __napiType: 'Lockfile' }\n\nexport interface TurbopackProjectCallbacks {\n onBeforeDeferredEntries?: () => Promise<void>\n}\n\nexport interface Binding {\n isWasm: boolean\n turbo: {\n createProject(\n options: ProjectOptions,\n turboEngineOptions: NapiTurboEngineOptions,\n callbacks?: TurbopackProjectCallbacks\n ): Promise<Project>\n startTurbopackTraceServerHandle(\n traceFilePath: string,\n port: number | undefined\n ): TraceServerHandle\n queryTraceSpans(\n handle: TraceServerHandle,\n options: TraceQueryOptions\n ): TraceQueryResult\n databaseCompact(path: string, nextVersion: string): Promise<void>\n\n nextBuild?: any\n }\n mdx: {\n compile(src: string, options: any): any\n compileSync(src: string, options: any): any\n }\n minify(src: string, options: any): Promise<any>\n minifySync(src: string, options: any): any\n transform(src: string, options: any): Promise<any>\n transformSync(src: string, options: any): any\n parse(src: string, options: any): Promise<string>\n\n getTargetTriple(): string | undefined\n\n initCustomTraceSubscriber?(traceOutFilePath?: string): ExternalObject<RefCell>\n teardownTraceSubscriber?(guardExternal: ExternalObject<RefCell>): void\n css: {\n lightning: {\n transform(transformOptions: any): Promise<any>\n transformStyleAttr(transformAttrOptions: any): Promise<any>\n featureNamesToMask(names: string[]): number\n }\n }\n\n reactCompiler: {\n isReactCompilerRequired(filename: string): Promise<boolean>\n }\n\n rspack: {\n getModuleNamedExports(resourcePath: string): Promise<string[]>\n warnForEdgeRuntime(\n source: string,\n isProduction: boolean\n ): Promise<NapiSourceDiagnostic[]>\n }\n expandNextJsTemplate(\n content: Buffer,\n templatePath: string,\n nextPackageDirPath: string,\n replacements: Record<`VAR_${string}`, string>,\n injections: Record<string, string>,\n imports: Record<string, string | null>\n ): string\n\n lockfileTryAcquire(\n path: string,\n content?: string | null\n ): Promise<Lockfile | null>\n lockfileTryAcquireSync(path: string, content?: string | null): Lockfile | null\n lockfileUnlock(lockfile: Lockfile): Promise<void>\n lockfileUnlockSync(lockfile: Lockfile): void\n codeFrameColumns(\n source: string,\n location: NapiCodeFrameLocation,\n options?: NapiCodeFrameOptions\n ): string | undefined\n}\n\nexport type StyledString =\n | {\n type: 'text'\n value: string\n }\n | {\n type: 'code'\n value: string\n }\n | {\n type: 'strong'\n value: string\n }\n | {\n type: 'stack'\n value: StyledString[]\n }\n | {\n type: 'line'\n value: StyledString[]\n }\n\n/** 0-indexed line and column position within a source file. */\nexport interface SourcePosition {\n line: number\n column: number\n}\n\nexport interface IssueSource {\n source: {\n ident: string\n filePath: string\n }\n range?: {\n start: SourcePosition\n end: SourcePosition\n }\n}\n\nexport interface AdditionalIssueSource {\n description: string\n source: IssueSource\n /** Pre-rendered code frame from the Rust NAPI layer */\n codeFrame?: string\n}\n\nexport interface Issue {\n severity: string\n stage: string\n filePath: string\n title: StyledString\n description?: StyledString\n detail?: StyledString\n source?: IssueSource\n additionalSources?: AdditionalIssueSource[]\n documentationLink: string\n importTraces?: PlainTraceItem[][]\n /** Pre-rendered code frame from the Rust NAPI layer */\n codeFrame?: string\n}\nexport interface PlainTraceItem {\n fsName: string\n path: string\n rootPath: string\n layer?: string\n}\n\nexport interface BuildFeatureUsage {\n featureName: string\n invocationCount: number\n}\n\nexport type TurbopackResult<T = {}> = T & {\n issues: Issue[]\n}\n\nexport interface Middleware {\n endpoint: Endpoint\n isProxy: boolean\n}\n\nexport interface Instrumentation {\n nodeJs: Endpoint\n edge: Endpoint\n}\n\nexport interface RawEntrypoints {\n routes: Map<string, Route>\n middleware?: Middleware\n instrumentation?: Instrumentation\n pagesDocumentEndpoint: Endpoint\n pagesAppEndpoint: Endpoint\n pagesErrorEndpoint: Endpoint\n}\n\ninterface BaseUpdate {\n resource: {\n headers: unknown\n path: string\n }\n diagnostics: unknown[]\n issues: Issue[]\n}\n\ninterface IssuesUpdate extends BaseUpdate {\n type: 'issues'\n}\n\ninterface EcmascriptMergedUpdate {\n type: 'EcmascriptMergedUpdate'\n chunks: { [moduleName: string]: { type: 'partial' } }\n entries: { [moduleName: string]: { code: string; map: string; url: string } }\n}\n\ninterface PartialUpdate extends BaseUpdate {\n type: 'partial'\n instruction: {\n type: 'ChunkListUpdate'\n merged: EcmascriptMergedUpdate[] | undefined\n }\n}\n\nexport type Update = IssuesUpdate | PartialUpdate\n\n/**\n * IMPORTANT: This type is duplicated in:\n * turbopack/crates/turbopack-ecmascript-runtime/js/src/nodejs/hmr-types.d.ts\n *\n * The runtime file cannot import from this ES module without triggering module semantics,\n * so we maintain a copy there. Please keep both definitions in sync.\n */\nexport interface NodeJsEcmascriptMergedUpdate {\n type: 'EcmascriptMergedUpdate'\n entries?: Record<\n string,\n { code: string; url: string; map?: string | undefined }\n >\n chunks?: Record<\n string,\n | { type: 'added' | 'deleted'; modules?: string[] }\n | { type: 'partial'; added?: string[]; deleted?: string[] }\n >\n}\n\nexport interface NodeJsChunkListUpdate {\n type: 'ChunkListUpdate'\n merged?: NodeJsEcmascriptMergedUpdate[]\n chunks?: Record<string, { type: 'added' | 'deleted' | 'total' | 'partial' }>\n}\n\nexport interface NodeJsPartialHmrUpdate extends BaseUpdate {\n type: 'partial'\n instruction: NodeJsEcmascriptMergedUpdate | NodeJsChunkListUpdate\n}\n\nexport interface NodeJsRestartHmrUpdate {\n type: 'restart'\n}\n\nexport type NodeJsHmrUpdate =\n | IssuesUpdate\n | NodeJsPartialHmrUpdate\n | NodeJsRestartHmrUpdate\n\nexport interface HmrChunkNames {\n /** Relative paths to output chunks that can receive HMR updates (e.g., \"server/chunks/ssr/..._.js\") */\n chunkNames: string[]\n}\n\n/** @see https://github.com/vercel/next.js/blob/415cd74b9a220b6f50da64da68c13043e9b02995/crates/next-napi-bindings/src/next_api/project.rs#L824-L833 */\nexport interface TurbopackStackFrame {\n isServer: boolean\n isIgnored?: boolean\n file: string\n originalFile?: string\n /** 1-indexed, unlike source map tokens */\n line?: number\n /** 1-indexed, unlike source map tokens */\n column?: number\n methodName?: string\n}\n\nexport type UpdateMessage =\n | {\n updateType: 'start'\n }\n | {\n updateType: 'end'\n value: UpdateInfo\n }\n\nexport type CompilationEvent = {\n typeName: string\n message: string\n severity: string\n eventJson: string\n eventData: any\n}\n\nexport interface UpdateInfo {\n duration: number\n tasks: number\n}\n\nexport interface Project {\n update(options: Partial<ProjectOptions>): Promise<void>\n\n writeAnalyzeData(appDirOnly: boolean): Promise<TurbopackResult<void>>\n\n getAllCompilationIssues(): Promise<TurbopackResult<void>>\n\n writeAllEntrypointsToDisk(\n appDirOnly: boolean\n ): Promise<TurbopackResult<Partial<RawEntrypoints>>>\n\n /**\n * Returns the build-feature-usage telemetry summary — `(featureName,\n * invocationCount)` pairs reported to the Next.js telemetry service.\n *\n * **Must only be called in a `next build` (production) context**, once at the\n * end of the build, after `writeAllEntrypointsToDisk`. The Rust implementation\n * walks the whole-app module graph and will error if invoked from a\n * development project, because dev builds do not produce a complete graph.\n */\n featureUsage(): Promise<BuildFeatureUsage[]>\n\n entrypointsSubscribe(): AsyncIterableIterator<\n TurbopackResult<RawEntrypoints | {}>\n >\n\n // Note: only the Server target is implemented in the native binding;\n // add a Client overload once `all_hmr_update` supports it.\n allHmrEvents(\n target: import('./index').HmrTarget.Server\n ): AsyncIterableIterator<TurbopackResult<NodeJsHmrUpdate>>\n\n hmrEvents(\n identifier: string,\n target: import('./index').HmrTarget.Client\n ): AsyncIterableIterator<TurbopackResult<Update>>\n hmrEvents(\n identifier: string,\n target: import('./index').HmrTarget.Server\n ): AsyncIterableIterator<TurbopackResult<NodeJsHmrUpdate>>\n\n hmrChunkNamesSubscribe(\n target: import('./index').HmrTarget\n ): AsyncIterableIterator<TurbopackResult<HmrChunkNames>>\n\n getSourceForAsset(filePath: string): Promise<string | null>\n\n getSourceMap(filePath: string): Promise<string | null>\n getSourceMapSync(filePath: string): string | null\n\n traceSource(\n stackFrame: TurbopackStackFrame,\n currentDirectoryFileUrl: string\n ): Promise<TurbopackStackFrame | null>\n\n updateInfoSubscribe(\n aggregationMs: number\n ): AsyncIterableIterator<TurbopackResult<UpdateMessage>>\n\n compilationEventsSubscribe(\n eventTypes?: string[]\n ): AsyncIterableIterator<TurbopackResult<CompilationEvent>>\n\n invalidateFileSystemCache(): Promise<void>\n\n shutdown(): Promise<void>\n\n onExit(): Promise<void>\n}\n\nexport type Route =\n | {\n type: 'conflict'\n }\n | {\n type: 'app-page'\n pages: {\n originalName: string\n htmlEndpoint: Endpoint\n rscHmrEndpoint: Endpoint\n }[]\n }\n | {\n type: 'app-route'\n originalName: string\n endpoint: Endpoint\n }\n | {\n type: 'page'\n htmlEndpoint: Endpoint\n dataEndpoint: Endpoint\n }\n | {\n type: 'page-api'\n endpoint: Endpoint\n }\n\nexport interface Endpoint {\n /** Write files for the endpoint to disk. */\n writeToDisk(): Promise<TurbopackResult<WrittenEndpoint>>\n\n /**\n * Listen to client-side changes to the endpoint.\n * After clientChanged() has been awaited it will listen to changes.\n * The async iterator will yield for each change.\n */\n clientChanged(): Promise<AsyncIterableIterator<TurbopackResult>>\n\n /**\n * Listen to server-side changes to the endpoint.\n * After serverChanged() has been awaited it will listen to changes.\n * The async iterator will yield for each change.\n */\n serverChanged(\n includeIssues: boolean\n ): Promise<AsyncIterableIterator<TurbopackResult>>\n}\n\ninterface EndpointConfig {\n dynamic?: 'auto' | 'force-dynamic' | 'error' | 'force-static'\n dynamicParams?: boolean\n revalidate?: 'never' | 'force-cache' | number\n fetchCache?:\n | 'auto'\n | 'default-cache'\n | 'only-cache'\n | 'force-cache'\n | 'default-no-store'\n | 'only-no-store'\n | 'force-no-store'\n runtime?: 'nodejs' | 'edge'\n preferredRegion?: string\n}\n\nexport type ServerPath = {\n path: string\n contentHash: string\n}\n\nexport type WrittenEndpoint =\n | {\n type: 'nodejs'\n /** The entry path for the endpoint. */\n entryPath: string\n /** All client paths that have been written for the endpoint. */\n clientPaths: string[]\n /** All server paths that have been written for the endpoint. */\n serverPaths: ServerPath[]\n config: EndpointConfig\n }\n | {\n type: 'edge'\n /** All client paths that have been written for the endpoint. */\n clientPaths: string[]\n /** All server paths that have been written for the endpoint. */\n serverPaths: ServerPath[]\n config: EndpointConfig\n }\n | {\n type: 'none'\n clientPaths: []\n serverPaths: []\n config: EndpointConfig\n }\n\nexport interface ProjectOptions\n extends Omit<NapiProjectOptions, 'nextConfig' | 'env'> {\n /**\n * The next.config.js contents.\n */\n nextConfig: NextConfigComplete\n\n /**\n * A map of environment variables to use when compiling code.\n */\n env: Record<string, string>\n}\n\nexport interface PartialProjectOptions\n extends Omit<NapiPartialProjectOptions, 'nextConfig' | 'env'> {\n rootPath: NapiProjectOptions['rootPath']\n projectPath: NapiProjectOptions['projectPath']\n /**\n * The next.config.js contents.\n */\n nextConfig?: NextConfigComplete\n\n /**\n * A map of environment variables to use when compiling code.\n */\n env?: Record<string, string>\n}\n\nexport interface DefineEnv {\n client: RustifiedOptionalEnv\n edge: RustifiedOptionalEnv\n nodejs: RustifiedOptionalEnv\n}\n\nexport type RustifiedEnv = { name: string; value: string }[]\nexport type RustifiedOptionalEnv = { name: string; value: string | undefined }[]\n\nexport interface GlobalEntrypoints {\n app: Endpoint | undefined\n document: Endpoint | undefined\n error: Endpoint | undefined\n middleware: Middleware | undefined\n instrumentation: Instrumentation | undefined\n}\n\nexport type PageRoute =\n | {\n type: 'page'\n htmlEndpoint: Endpoint\n dataEndpoint: Endpoint\n }\n | {\n type: 'page-api'\n endpoint: Endpoint\n }\n\nexport type AppRoute =\n | {\n type: 'app-page'\n htmlEndpoint: Endpoint\n rscHmrEndpoint: Endpoint\n }\n | {\n type: 'app-route'\n endpoint: Endpoint\n }\n\n// pathname -> route\nexport type PageEntrypoints = Map<string, PageRoute>\n\n// originalName / page -> route\nexport type AppEntrypoints = Map<string, AppRoute>\n\nexport type Entrypoints = {\n global: GlobalEntrypoints\n page: PageEntrypoints\n app: AppEntrypoints\n}\n"],"names":[],"mappings":"AAmiBA,WAIC","ignoreList":[0]} | ||
| {"version":3,"sources":["../../../../src/build/swc/types.ts"],"sourcesContent":["import type { NextConfigComplete } from '../../server/config-shared'\nimport type { __ApiPreviewProps } from '../../server/api-utils'\nimport type {\n ExternalObject,\n RefCell,\n NapiTurboEngineOptions,\n NapiSourceDiagnostic,\n NapiProjectOptions,\n NapiPartialProjectOptions,\n NapiCodeFrameOptions,\n NapiCodeFrameLocation,\n TraceServerHandle,\n TraceQueryOptions,\n TraceQueryResult,\n MemoryEvictionMode,\n} from './generated-native'\n\nexport type { TraceServerHandle, TraceQueryOptions, TraceQueryResult }\n\nexport type { NapiTurboEngineOptions as TurboEngineOptions }\n\nexport type { MemoryEvictionMode }\n\nexport type Lockfile = { __napiType: 'Lockfile' }\n\nexport interface TurbopackProjectCallbacks {\n onBeforeDeferredEntries?: () => Promise<void>\n}\n\nexport interface Binding {\n isWasm: boolean\n turbo: {\n createProject(\n options: ProjectOptions,\n turboEngineOptions: NapiTurboEngineOptions,\n callbacks?: TurbopackProjectCallbacks\n ): Promise<Project>\n startTurbopackTraceServerHandle(\n traceFilePath: string,\n port: number | undefined\n ): TraceServerHandle\n queryTraceSpans(\n handle: TraceServerHandle,\n options: TraceQueryOptions\n ): TraceQueryResult\n databaseCompact(path: string, nextVersion: string): Promise<void>\n\n nextBuild?: any\n }\n mdx: {\n compile(src: string, options: any): any\n compileSync(src: string, options: any): any\n }\n minify(src: string, options: any): Promise<any>\n minifySync(src: string, options: any): any\n transform(src: string, options: any): Promise<any>\n transformSync(src: string, options: any): any\n parse(src: string, options: any): Promise<string>\n\n getTargetTriple(): string | undefined\n turbopackCacheVersion(nextVersion: string): string | undefined\n\n initCustomTraceSubscriber?(traceOutFilePath?: string): ExternalObject<RefCell>\n teardownTraceSubscriber?(guardExternal: ExternalObject<RefCell>): void\n css: {\n lightning: {\n transform(transformOptions: any): Promise<any>\n transformStyleAttr(transformAttrOptions: any): Promise<any>\n featureNamesToMask(names: string[]): number\n }\n }\n\n reactCompiler: {\n isReactCompilerRequired(filename: string): Promise<boolean>\n }\n\n rspack: {\n getModuleNamedExports(resourcePath: string): Promise<string[]>\n warnForEdgeRuntime(\n source: string,\n isProduction: boolean\n ): Promise<NapiSourceDiagnostic[]>\n }\n expandNextJsTemplate(\n content: Buffer,\n templatePath: string,\n nextPackageDirPath: string,\n replacements: Record<`VAR_${string}`, string>,\n injections: Record<string, string>,\n imports: Record<string, string | null>\n ): string\n\n lockfileTryAcquire(\n path: string,\n content?: string | null\n ): Promise<Lockfile | null>\n lockfileTryAcquireSync(path: string, content?: string | null): Lockfile | null\n lockfileUnlock(lockfile: Lockfile): Promise<void>\n lockfileUnlockSync(lockfile: Lockfile): void\n codeFrameColumns(\n source: string,\n location: NapiCodeFrameLocation,\n options?: NapiCodeFrameOptions\n ): string | undefined\n}\n\nexport type StyledString =\n | {\n type: 'text'\n value: string\n }\n | {\n type: 'code'\n value: string\n }\n | {\n type: 'strong'\n value: string\n }\n | {\n type: 'stack'\n value: StyledString[]\n }\n | {\n type: 'line'\n value: StyledString[]\n }\n\n/** 0-indexed line and column position within a source file. */\nexport interface SourcePosition {\n line: number\n column: number\n}\n\nexport interface IssueSource {\n source: {\n ident: string\n filePath: string\n }\n range?: {\n start: SourcePosition\n end: SourcePosition\n }\n}\n\nexport interface AdditionalIssueSource {\n description: string\n source: IssueSource\n /** Pre-rendered code frame from the Rust NAPI layer */\n codeFrame?: string\n}\n\nexport interface Issue {\n severity: string\n stage: string\n filePath: string\n title: StyledString\n description?: StyledString\n detail?: StyledString\n source?: IssueSource\n additionalSources?: AdditionalIssueSource[]\n documentationLink: string\n importTraces?: PlainTraceItem[][]\n /** Pre-rendered code frame from the Rust NAPI layer */\n codeFrame?: string\n}\nexport interface PlainTraceItem {\n fsName: string\n path: string\n rootPath: string\n layer?: string\n}\n\nexport interface BuildFeatureUsage {\n featureName: string\n invocationCount: number\n}\n\nexport type TurbopackResult<T = {}> = T & {\n issues: Issue[]\n}\n\nexport interface Middleware {\n endpoint: Endpoint\n isProxy: boolean\n}\n\nexport interface Instrumentation {\n nodeJs: Endpoint\n edge: Endpoint\n}\n\nexport interface RawEntrypoints {\n routes: Map<string, Route>\n middleware?: Middleware\n instrumentation?: Instrumentation\n pagesDocumentEndpoint: Endpoint\n pagesAppEndpoint: Endpoint\n pagesErrorEndpoint: Endpoint\n}\n\ninterface BaseUpdate {\n resource: {\n headers: unknown\n path: string\n }\n diagnostics: unknown[]\n issues: Issue[]\n}\n\ninterface IssuesUpdate extends BaseUpdate {\n type: 'issues'\n}\n\ninterface EcmascriptMergedUpdate {\n type: 'EcmascriptMergedUpdate'\n chunks: { [moduleName: string]: { type: 'partial' } }\n entries: { [moduleName: string]: { code: string; map: string; url: string } }\n}\n\ninterface PartialUpdate extends BaseUpdate {\n type: 'partial'\n instruction: {\n type: 'ChunkListUpdate'\n merged: EcmascriptMergedUpdate[] | undefined\n }\n}\n\nexport type Update = IssuesUpdate | PartialUpdate\n\n/**\n * IMPORTANT: This type is duplicated in:\n * turbopack/crates/turbopack-ecmascript-runtime/js/src/nodejs/hmr-types.d.ts\n *\n * The runtime file cannot import from this ES module without triggering module semantics,\n * so we maintain a copy there. Please keep both definitions in sync.\n */\nexport interface NodeJsEcmascriptMergedUpdate {\n type: 'EcmascriptMergedUpdate'\n entries?: Record<\n string,\n { code: string; url: string; map?: string | undefined }\n >\n chunks?: Record<\n string,\n | { type: 'added' | 'deleted'; modules?: string[] }\n | { type: 'partial'; added?: string[]; deleted?: string[] }\n >\n}\n\nexport interface NodeJsChunkListUpdate {\n type: 'ChunkListUpdate'\n merged?: NodeJsEcmascriptMergedUpdate[]\n chunks?: Record<string, { type: 'added' | 'deleted' | 'total' | 'partial' }>\n}\n\nexport interface NodeJsPartialHmrUpdate extends BaseUpdate {\n type: 'partial'\n instruction: NodeJsEcmascriptMergedUpdate | NodeJsChunkListUpdate\n}\n\nexport interface NodeJsRestartHmrUpdate {\n type: 'restart'\n}\n\nexport type NodeJsHmrUpdate =\n | IssuesUpdate\n | NodeJsPartialHmrUpdate\n | NodeJsRestartHmrUpdate\n\nexport interface HmrChunkNames {\n /** Relative paths to output chunks that can receive HMR updates (e.g., \"server/chunks/ssr/..._.js\") */\n chunkNames: string[]\n}\n\n/** @see https://github.com/vercel/next.js/blob/415cd74b9a220b6f50da64da68c13043e9b02995/crates/next-napi-bindings/src/next_api/project.rs#L824-L833 */\nexport interface TurbopackStackFrame {\n isServer: boolean\n isIgnored?: boolean\n file: string\n originalFile?: string\n /** 1-indexed, unlike source map tokens */\n line?: number\n /** 1-indexed, unlike source map tokens */\n column?: number\n methodName?: string\n}\n\nexport type UpdateMessage =\n | {\n updateType: 'start'\n }\n | {\n updateType: 'end'\n value: UpdateInfo\n }\n\nexport type CompilationEvent = {\n typeName: string\n message: string\n severity: string\n eventJson: string\n eventData: any\n}\n\nexport interface UpdateInfo {\n duration: number\n tasks: number\n}\n\nexport interface Project {\n update(options: Partial<ProjectOptions>): Promise<void>\n\n writeAnalyzeData(appDirOnly: boolean): Promise<TurbopackResult<void>>\n\n getAllCompilationIssues(): Promise<TurbopackResult<void>>\n\n writeAllEntrypointsToDisk(\n appDirOnly: boolean\n ): Promise<TurbopackResult<Partial<RawEntrypoints>>>\n\n /**\n * Returns the build-feature-usage telemetry summary — `(featureName,\n * invocationCount)` pairs reported to the Next.js telemetry service.\n *\n * **Must only be called in a `next build` (production) context**, once at the\n * end of the build, after `writeAllEntrypointsToDisk`. The Rust implementation\n * walks the whole-app module graph and will error if invoked from a\n * development project, because dev builds do not produce a complete graph.\n */\n featureUsage(): Promise<BuildFeatureUsage[]>\n\n entrypointsSubscribe(): AsyncIterableIterator<\n TurbopackResult<RawEntrypoints | {}>\n >\n\n // Note: only the Server target is implemented in the native binding;\n // add a Client overload once `all_hmr_update` supports it.\n allHmrEvents(\n target: import('./index').HmrTarget.Server\n ): AsyncIterableIterator<TurbopackResult<NodeJsHmrUpdate>>\n\n hmrEvents(\n identifier: string,\n target: import('./index').HmrTarget.Client\n ): AsyncIterableIterator<TurbopackResult<Update>>\n hmrEvents(\n identifier: string,\n target: import('./index').HmrTarget.Server\n ): AsyncIterableIterator<TurbopackResult<NodeJsHmrUpdate>>\n\n hmrChunkNamesSubscribe(\n target: import('./index').HmrTarget\n ): AsyncIterableIterator<TurbopackResult<HmrChunkNames>>\n\n getSourceForAsset(filePath: string): Promise<string | null>\n\n getSourceMap(filePath: string): Promise<string | null>\n getSourceMapSync(filePath: string): string | null\n\n traceSource(\n stackFrame: TurbopackStackFrame,\n currentDirectoryFileUrl: string\n ): Promise<TurbopackStackFrame | null>\n\n updateInfoSubscribe(\n aggregationMs: number\n ): AsyncIterableIterator<TurbopackResult<UpdateMessage>>\n\n compilationEventsSubscribe(\n eventTypes?: string[]\n ): AsyncIterableIterator<TurbopackResult<CompilationEvent>>\n\n invalidateFileSystemCache(): Promise<void>\n\n shutdown(): Promise<void>\n\n onExit(): Promise<void>\n}\n\nexport type Route =\n | {\n type: 'conflict'\n }\n | {\n type: 'app-page'\n pages: {\n originalName: string\n htmlEndpoint: Endpoint\n rscHmrEndpoint: Endpoint\n }[]\n }\n | {\n type: 'app-route'\n originalName: string\n endpoint: Endpoint\n }\n | {\n type: 'page'\n htmlEndpoint: Endpoint\n dataEndpoint: Endpoint\n }\n | {\n type: 'page-api'\n endpoint: Endpoint\n }\n\nexport interface Endpoint {\n /** Write files for the endpoint to disk. */\n writeToDisk(): Promise<TurbopackResult<WrittenEndpoint>>\n\n /**\n * Listen to client-side changes to the endpoint.\n * After clientChanged() has been awaited it will listen to changes.\n * The async iterator will yield for each change.\n */\n clientChanged(): Promise<AsyncIterableIterator<TurbopackResult>>\n\n /**\n * Listen to server-side changes to the endpoint.\n * After serverChanged() has been awaited it will listen to changes.\n * The async iterator will yield for each change.\n */\n serverChanged(\n includeIssues: boolean\n ): Promise<AsyncIterableIterator<TurbopackResult>>\n}\n\ninterface EndpointConfig {\n dynamic?: 'auto' | 'force-dynamic' | 'error' | 'force-static'\n dynamicParams?: boolean\n revalidate?: 'never' | 'force-cache' | number\n fetchCache?:\n | 'auto'\n | 'default-cache'\n | 'only-cache'\n | 'force-cache'\n | 'default-no-store'\n | 'only-no-store'\n | 'force-no-store'\n runtime?: 'nodejs' | 'edge'\n preferredRegion?: string\n}\n\nexport type ServerPath = {\n path: string\n contentHash: string\n}\n\nexport type WrittenEndpoint =\n | {\n type: 'nodejs'\n /** The entry path for the endpoint. */\n entryPath: string\n /** All client paths that have been written for the endpoint. */\n clientPaths: string[]\n /** All server paths that have been written for the endpoint. */\n serverPaths: ServerPath[]\n config: EndpointConfig\n }\n | {\n type: 'edge'\n /** All client paths that have been written for the endpoint. */\n clientPaths: string[]\n /** All server paths that have been written for the endpoint. */\n serverPaths: ServerPath[]\n config: EndpointConfig\n }\n | {\n type: 'none'\n clientPaths: []\n serverPaths: []\n config: EndpointConfig\n }\n\nexport interface ProjectOptions\n extends Omit<NapiProjectOptions, 'nextConfig' | 'env'> {\n /**\n * The next.config.js contents.\n */\n nextConfig: NextConfigComplete\n\n /**\n * A map of environment variables to use when compiling code.\n */\n env: Record<string, string>\n}\n\nexport interface PartialProjectOptions\n extends Omit<NapiPartialProjectOptions, 'nextConfig' | 'env'> {\n rootPath: NapiProjectOptions['rootPath']\n projectPath: NapiProjectOptions['projectPath']\n /**\n * The next.config.js contents.\n */\n nextConfig?: NextConfigComplete\n\n /**\n * A map of environment variables to use when compiling code.\n */\n env?: Record<string, string>\n}\n\nexport interface DefineEnv {\n client: RustifiedOptionalEnv\n edge: RustifiedOptionalEnv\n nodejs: RustifiedOptionalEnv\n}\n\nexport type RustifiedEnv = { name: string; value: string }[]\nexport type RustifiedOptionalEnv = { name: string; value: string | undefined }[]\n\nexport interface GlobalEntrypoints {\n app: Endpoint | undefined\n document: Endpoint | undefined\n error: Endpoint | undefined\n middleware: Middleware | undefined\n instrumentation: Instrumentation | undefined\n}\n\nexport type PageRoute =\n | {\n type: 'page'\n htmlEndpoint: Endpoint\n dataEndpoint: Endpoint\n }\n | {\n type: 'page-api'\n endpoint: Endpoint\n }\n\nexport type AppRoute =\n | {\n type: 'app-page'\n htmlEndpoint: Endpoint\n rscHmrEndpoint: Endpoint\n }\n | {\n type: 'app-route'\n endpoint: Endpoint\n }\n\n// pathname -> route\nexport type PageEntrypoints = Map<string, PageRoute>\n\n// originalName / page -> route\nexport type AppEntrypoints = Map<string, AppRoute>\n\nexport type Entrypoints = {\n global: GlobalEntrypoints\n page: PageEntrypoints\n app: AppEntrypoints\n}\n"],"names":[],"mappings":"AAoiBA,WAIC","ignoreList":[0]} |
@@ -69,3 +69,3 @@ import path from 'path'; | ||
| isPersistentCachingEnabled: persistentCaching, | ||
| nextVersion: "16.3.0-canary.102" | ||
| nextVersion: "16.3.0-canary.103" | ||
| }, { | ||
@@ -72,0 +72,0 @@ turbopackMemoryEviction: config.experimental.turbopackMemoryEvictionMode, |
@@ -5,2 +5,3 @@ // Import cpu-profile first to start profiling early if enabled | ||
| import { validateTurboNextConfig } from '../../lib/turbopack-warning'; | ||
| import { seedTurbopackCacheIfNeeded } from '../../lib/turbopack-cache-seed'; | ||
| import { NextBuildContext } from '../build-context'; | ||
@@ -88,4 +89,10 @@ import { createDefineEnv, getBindingsSync } from '../swc'; | ||
| deferredEntries: config.experimental.deferredEntries, | ||
| nextVersion: "16.3.0-canary.102" | ||
| nextVersion: "16.3.0-canary.103" | ||
| }; | ||
| if (config.experimental.turbopackSeedCacheFromWorktree) { | ||
| seedTurbopackCacheIfNeeded({ | ||
| projectDir: dir, | ||
| distDir | ||
| }); | ||
| } | ||
| const sharedTurboOptions = { | ||
@@ -92,0 +99,0 @@ turbopackMemoryEviction: config.experimental.turbopackMemoryEvictionMode, |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../../../../src/build/turbopack-build/impl.ts"],"sourcesContent":["// Import cpu-profile first to start profiling early if enabled\nimport { saveCpuProfile } from '../../server/lib/cpu-profile'\nimport path from 'path'\nimport { validateTurboNextConfig } from '../../lib/turbopack-warning'\nimport { NextBuildContext } from '../build-context'\nimport { createDefineEnv, getBindingsSync } from '../swc'\nimport { installBindings } from '../swc/install-bindings'\nimport {\n handleRouteType,\n rawEntrypointsToEntrypoints,\n} from '../handle-entrypoints'\nimport { TurbopackManifestLoader } from '../../shared/lib/turbopack/manifest-loader'\nimport { promises as fs } from 'fs'\nimport { PHASE_PRODUCTION_BUILD } from '../../shared/lib/constants'\nimport loadConfig from '../../server/config'\nimport { hasCustomExportOutput } from '../../export/utils'\nimport { Telemetry } from '../../telemetry/storage'\nimport { eventBuildFeatureUsageFromTurbopack } from '../../telemetry/events/build'\nimport {\n setGlobal,\n trace,\n initializeTraceState,\n getTraceEvents,\n} from '../../trace'\nimport type { TraceState } from '../../trace'\nimport { isCI } from '../../server/ci-info'\nimport { backgroundLogCompilationEvents } from '../../shared/lib/turbopack/compilation-events'\nimport { getSupportedBrowsers } from '../get-supported-browsers'\nimport { printBuildErrors } from '../print-build-errors'\nimport { normalizePath } from '../../lib/normalize-path'\nimport type {\n ProjectOptions,\n RawEntrypoints,\n TurbopackResult,\n} from '../swc/types'\nimport { Bundler } from '../../lib/bundler'\n\nexport async function turbopackBuild(telemetry: Telemetry): Promise<{\n duration: number\n buildTraceContext: undefined\n shutdownPromise: Promise<void>\n warnings: string[]\n}> {\n await validateTurboNextConfig({\n dir: NextBuildContext.dir!,\n configPhase: PHASE_PRODUCTION_BUILD,\n })\n\n const config = NextBuildContext.config!\n const dir = NextBuildContext.dir!\n const distDir = NextBuildContext.distDir!\n const buildId = NextBuildContext.buildId!\n const encryptionKey = NextBuildContext.encryptionKey!\n const previewProps = NextBuildContext.previewProps!\n const hasRewrites = NextBuildContext.hasRewrites!\n const rewrites = NextBuildContext.rewrites!\n const noMangling = NextBuildContext.noMangling!\n const currentNodeJsVersion = process.versions.node\n\n const startTime = process.hrtime()\n const bindings = getBindingsSync() // our caller should have already loaded these\n\n if (bindings.isWasm) {\n throw new Error(\n `Turbopack is not supported on this platform (${process.platform}/${process.arch}) because native bindings are not available. ` +\n `Only WebAssembly (WASM) bindings were loaded, and Turbopack requires native bindings.\\n\\n` +\n `To build on this platform, use Webpack instead:\\n` +\n ` next build --webpack\\n\\n` +\n `For more information, see: https://nextjs.org/docs/app/api-reference/turbopack#supported-platforms`\n )\n }\n\n const dev = false\n\n const supportedBrowsers = getSupportedBrowsers(dir, dev)\n\n const hasDeferredEntries =\n (config.experimental.deferredEntries?.length ?? 0) > 0\n\n const persistentCaching =\n config.experimental?.turbopackFileSystemCacheForBuild || false\n const rootPath = config.turbopack?.root || config.outputFileTracingRoot || dir\n\n // Shared options for createProject calls\n const sharedProjectOptions: Omit<ProjectOptions, 'debugBuildPaths'> = {\n rootPath,\n projectPath: normalizePath(path.relative(rootPath, dir) || '.'),\n distDir,\n nextConfig: config,\n watch: {\n enable: false,\n },\n dev,\n env: process.env as Record<string, string>,\n defineEnv: createDefineEnv({\n isTurbopack: true,\n clientRouterFilters: NextBuildContext.clientRouterFilters!,\n config,\n dev,\n distDir,\n projectPath: dir,\n fetchCacheKeyPrefix: config.experimental.fetchCacheKeyPrefix,\n hasRewrites,\n // Implemented separately in Turbopack, doesn't have to be passed here.\n middlewareMatchers: undefined,\n rewrites,\n }),\n buildId,\n encryptionKey,\n previewProps,\n browserslistQuery: supportedBrowsers.join(', '),\n noMangling,\n writeRoutesHashesManifest:\n !!process.env.NEXT_TURBOPACK_WRITE_ROUTES_HASHES_MANIFEST,\n currentNodeJsVersion,\n isPersistentCachingEnabled: persistentCaching,\n deferredEntries: config.experimental.deferredEntries,\n nextVersion: process.env.__NEXT_VERSION as string,\n }\n\n const sharedTurboOptions = {\n turbopackMemoryEviction: config.experimental.turbopackMemoryEvictionMode,\n dependencyTracking: persistentCaching || hasDeferredEntries,\n isCi: isCI,\n isShortSession: true,\n skipCompaction: process.env.NEXT_USE_POST_BUILD === '1',\n }\n\n const sriEnabled = Boolean(config.experimental.sri?.algorithm)\n\n const project = await bindings.turbo.createProject(\n {\n ...sharedProjectOptions,\n debugBuildPaths: NextBuildContext.debugBuildPaths,\n },\n sharedTurboOptions,\n hasDeferredEntries && config.experimental.onBeforeDeferredEntries\n ? {\n onBeforeDeferredEntries: async () => {\n const workerConfig = await loadConfig(PHASE_PRODUCTION_BUILD, dir, {\n debugPrerender: NextBuildContext.debugPrerender,\n reactProductionProfiling:\n NextBuildContext.reactProductionProfiling,\n bundler: Bundler.Turbopack,\n })\n\n await workerConfig.experimental.onBeforeDeferredEntries?.()\n },\n }\n : undefined\n )\n const buildEventsSpan = trace('turbopack-build-events')\n // Stop immediately: this span is only used as a parent for\n // manualTraceChild calls which carry their own timestamps.\n buildEventsSpan.stop()\n const shutdownController = new AbortController()\n const compilationEvents = backgroundLogCompilationEvents(project, {\n parentSpan: buildEventsSpan,\n signal: shutdownController.signal,\n })\n\n try {\n // Write an empty file in a known location to signal this was built with Turbopack\n await fs.writeFile(path.join(distDir, 'turbopack'), '')\n\n await fs.mkdir(path.join(distDir, 'server'), { recursive: true })\n await fs.mkdir(path.join(distDir, 'static', buildId), {\n recursive: true,\n })\n await fs.writeFile(\n path.join(distDir, 'package.json'),\n '{\"type\": \"commonjs\"}'\n )\n\n let appDirOnly = NextBuildContext.appDirOnly!\n\n const entrypoints = await project.writeAllEntrypointsToDisk(appDirOnly)\n // Defer warnings so the caller can print them after static generation,\n // keeping SSG errors more prominent than compile warnings.\n const { warnings } = printBuildErrors(entrypoints, dev, {\n deferWarnings: true,\n })\n\n // Skip when telemetry is fully off — featureUsage() isn't free.\n if (telemetry.isEnabled || process.env.NEXT_TELEMETRY_DEBUG) {\n try {\n const featureUsage = await project.featureUsage()\n const events = eventBuildFeatureUsageFromTurbopack(featureUsage)\n if (events.length > 0) {\n telemetry.record(events)\n }\n } catch (err) {\n // Telemetry must never break a build.\n console.warn('Failed to record Turbopack feature telemetry:', err)\n }\n }\n\n const routes = entrypoints.routes\n if (!routes) {\n // This should never ever happen, there should be an error issue, or the bindings call should\n // have thrown.\n throw new Error(`Turbopack build failed`)\n }\n\n const hasPagesEntries = Array.from(routes.values()).some((route) => {\n if (route.type === 'page' || route.type === 'page-api') {\n return true\n }\n return false\n })\n // If there's no pages entries, then we are in app-dir-only mode\n if (!hasPagesEntries) {\n appDirOnly = true\n }\n\n const manifestLoader = new TurbopackManifestLoader({\n buildId,\n distDir,\n encryptionKey,\n dev: false,\n sriEnabled,\n })\n\n const currentEntrypoints = await rawEntrypointsToEntrypoints(\n entrypoints as TurbopackResult<RawEntrypoints>\n )\n\n const promises: Promise<void>[] = []\n\n if (!appDirOnly) {\n for (const [page, route] of currentEntrypoints.page) {\n promises.push(\n handleRouteType({\n page,\n route,\n manifestLoader,\n })\n )\n }\n }\n\n for (const [page, route] of currentEntrypoints.app) {\n promises.push(\n handleRouteType({\n page,\n route,\n manifestLoader,\n })\n )\n }\n\n await Promise.all(promises)\n\n await Promise.all([\n // Only load pages router manifests if not app-only\n ...(!appDirOnly\n ? [\n manifestLoader.loadBuildManifest('_app'),\n manifestLoader.loadPagesManifest('_app'),\n manifestLoader.loadFontManifest('_app'),\n manifestLoader.loadPagesManifest('_document'),\n manifestLoader.loadClientBuildManifest('_error'),\n manifestLoader.loadBuildManifest('_error'),\n manifestLoader.loadPagesManifest('_error'),\n manifestLoader.loadFontManifest('_error'),\n ]\n : []),\n entrypoints.instrumentation &&\n manifestLoader.loadMiddlewareManifest(\n 'instrumentation',\n 'instrumentation'\n ),\n entrypoints.middleware &&\n (await manifestLoader.loadMiddlewareManifest(\n 'middleware',\n 'middleware'\n )),\n ])\n\n manifestLoader.writeManifests({\n devRewrites: undefined,\n productionRewrites: rewrites,\n entrypoints: currentEntrypoints,\n })\n\n if (NextBuildContext.analyze) {\n await project.writeAnalyzeData(appDirOnly)\n }\n\n // Shutdown may trigger final compilation events (e.g. persistence,\n // compaction trace spans). This is the last chance to capture them.\n // After shutdown resolves we abort the signal to close the iterator\n // and drain any remaining buffered events.\n const shutdownPromise = project.shutdown().then(() => {\n shutdownController.abort()\n return compilationEvents.catch(() => {})\n })\n\n const time = process.hrtime(startTime)\n return {\n duration: time[0] + time[1] / 1e9,\n buildTraceContext: undefined,\n shutdownPromise,\n warnings,\n }\n } catch (err) {\n await project.shutdown()\n shutdownController.abort()\n await compilationEvents.catch(() => {})\n throw err\n }\n}\n\nlet shutdownPromise: Promise<void> | undefined\nexport async function workerMain(workerData: {\n buildContext: typeof NextBuildContext\n traceState: TraceState & { shouldSaveTraceEvents: boolean }\n}): Promise<\n Omit<Awaited<ReturnType<typeof turbopackBuild>>, 'shutdownPromise'>\n> {\n // setup new build context from the serialized data passed from the parent\n Object.assign(NextBuildContext, workerData.buildContext)\n initializeTraceState(workerData.traceState)\n\n /// load the config because it's not serializable\n const config = await loadConfig(\n PHASE_PRODUCTION_BUILD,\n NextBuildContext.dir!,\n {\n debugPrerender: NextBuildContext.debugPrerender,\n reactProductionProfiling: NextBuildContext.reactProductionProfiling,\n bundler: Bundler.Turbopack,\n }\n )\n NextBuildContext.config = config\n // Matches handling in build/index.ts\n // https://github.com/vercel/next.js/blob/84f347fc86f4efc4ec9f13615c215e4b9fb6f8f0/packages/next/src/build/index.ts#L815-L818\n // Ensures the `config.distDir` option is matched.\n if (hasCustomExportOutput(NextBuildContext.config)) {\n NextBuildContext.config.distDir = '.next'\n }\n\n // Clone the telemetry for worker\n const telemetry = new Telemetry({\n distDir: NextBuildContext.config.distDir,\n })\n setGlobal('telemetry', telemetry)\n // Install bindings early so we can access synchronously later\n await installBindings(config.experimental?.useWasmBinary)\n\n try {\n const {\n shutdownPromise: resultShutdownPromise,\n buildTraceContext,\n duration,\n warnings,\n } = await turbopackBuild(telemetry)\n shutdownPromise = resultShutdownPromise\n return {\n buildTraceContext,\n duration,\n warnings,\n }\n } finally {\n // Always flush telemetry before worker exits (waits for async operations like setTimeout in debug mode)\n await telemetry.flush()\n // Save CPU profile before worker exits\n await saveCpuProfile()\n }\n}\n\nexport async function waitForShutdown(): Promise<{\n debugTraceEvents?: ReturnType<typeof getTraceEvents>\n}> {\n if (shutdownPromise) {\n await shutdownPromise\n }\n // Collect trace events after shutdown completes so that all compilation\n // events (e.g. persistence trace spans) have been processed.\n return { debugTraceEvents: getTraceEvents() }\n}\n"],"names":["saveCpuProfile","path","validateTurboNextConfig","NextBuildContext","createDefineEnv","getBindingsSync","installBindings","handleRouteType","rawEntrypointsToEntrypoints","TurbopackManifestLoader","promises","fs","PHASE_PRODUCTION_BUILD","loadConfig","hasCustomExportOutput","Telemetry","eventBuildFeatureUsageFromTurbopack","setGlobal","trace","initializeTraceState","getTraceEvents","isCI","backgroundLogCompilationEvents","getSupportedBrowsers","printBuildErrors","normalizePath","Bundler","turbopackBuild","telemetry","config","dir","configPhase","distDir","buildId","encryptionKey","previewProps","hasRewrites","rewrites","noMangling","currentNodeJsVersion","process","versions","node","startTime","hrtime","bindings","isWasm","Error","platform","arch","dev","supportedBrowsers","hasDeferredEntries","experimental","deferredEntries","length","persistentCaching","turbopackFileSystemCacheForBuild","rootPath","turbopack","root","outputFileTracingRoot","sharedProjectOptions","projectPath","relative","nextConfig","watch","enable","env","defineEnv","isTurbopack","clientRouterFilters","fetchCacheKeyPrefix","middlewareMatchers","undefined","browserslistQuery","join","writeRoutesHashesManifest","NEXT_TURBOPACK_WRITE_ROUTES_HASHES_MANIFEST","isPersistentCachingEnabled","nextVersion","__NEXT_VERSION","sharedTurboOptions","turbopackMemoryEviction","turbopackMemoryEvictionMode","dependencyTracking","isCi","isShortSession","skipCompaction","NEXT_USE_POST_BUILD","sriEnabled","Boolean","sri","algorithm","project","turbo","createProject","debugBuildPaths","onBeforeDeferredEntries","workerConfig","debugPrerender","reactProductionProfiling","bundler","Turbopack","buildEventsSpan","stop","shutdownController","AbortController","compilationEvents","parentSpan","signal","writeFile","mkdir","recursive","appDirOnly","entrypoints","writeAllEntrypointsToDisk","warnings","deferWarnings","isEnabled","NEXT_TELEMETRY_DEBUG","featureUsage","events","record","err","console","warn","routes","hasPagesEntries","Array","from","values","some","route","type","manifestLoader","currentEntrypoints","page","push","app","Promise","all","loadBuildManifest","loadPagesManifest","loadFontManifest","loadClientBuildManifest","instrumentation","loadMiddlewareManifest","middleware","writeManifests","devRewrites","productionRewrites","analyze","writeAnalyzeData","shutdownPromise","shutdown","then","abort","catch","time","duration","buildTraceContext","workerMain","workerData","Object","assign","buildContext","traceState","useWasmBinary","resultShutdownPromise","flush","waitForShutdown","debugTraceEvents"],"mappings":"AAAA,+DAA+D;AAC/D,SAASA,cAAc,QAAQ,+BAA8B;AAC7D,OAAOC,UAAU,OAAM;AACvB,SAASC,uBAAuB,QAAQ,8BAA6B;AACrE,SAASC,gBAAgB,QAAQ,mBAAkB;AACnD,SAASC,eAAe,EAAEC,eAAe,QAAQ,SAAQ;AACzD,SAASC,eAAe,QAAQ,0BAAyB;AACzD,SACEC,eAAe,EACfC,2BAA2B,QACtB,wBAAuB;AAC9B,SAASC,uBAAuB,QAAQ,6CAA4C;AACpF,SAASC,YAAYC,EAAE,QAAQ,KAAI;AACnC,SAASC,sBAAsB,QAAQ,6BAA4B;AACnE,OAAOC,gBAAgB,sBAAqB;AAC5C,SAASC,qBAAqB,QAAQ,qBAAoB;AAC1D,SAASC,SAAS,QAAQ,0BAAyB;AACnD,SAASC,mCAAmC,QAAQ,+BAA8B;AAClF,SACEC,SAAS,EACTC,KAAK,EACLC,oBAAoB,EACpBC,cAAc,QACT,cAAa;AAEpB,SAASC,IAAI,QAAQ,uBAAsB;AAC3C,SAASC,8BAA8B,QAAQ,gDAA+C;AAC9F,SAASC,oBAAoB,QAAQ,4BAA2B;AAChE,SAASC,gBAAgB,QAAQ,wBAAuB;AACxD,SAASC,aAAa,QAAQ,2BAA0B;AAMxD,SAASC,OAAO,QAAQ,oBAAmB;AAE3C,OAAO,eAAeC,eAAeC,SAAoB;QAwCpDC,sCAGDA,sBACeA,mBA+CUA;IArF3B,MAAM3B,wBAAwB;QAC5B4B,KAAK3B,iBAAiB2B,GAAG;QACzBC,aAAanB;IACf;IAEA,MAAMiB,SAAS1B,iBAAiB0B,MAAM;IACtC,MAAMC,MAAM3B,iBAAiB2B,GAAG;IAChC,MAAME,UAAU7B,iBAAiB6B,OAAO;IACxC,MAAMC,UAAU9B,iBAAiB8B,OAAO;IACxC,MAAMC,gBAAgB/B,iBAAiB+B,aAAa;IACpD,MAAMC,eAAehC,iBAAiBgC,YAAY;IAClD,MAAMC,cAAcjC,iBAAiBiC,WAAW;IAChD,MAAMC,WAAWlC,iBAAiBkC,QAAQ;IAC1C,MAAMC,aAAanC,iBAAiBmC,UAAU;IAC9C,MAAMC,uBAAuBC,QAAQC,QAAQ,CAACC,IAAI;IAElD,MAAMC,YAAYH,QAAQI,MAAM;IAChC,MAAMC,WAAWxC,kBAAkB,8CAA8C;;IAEjF,IAAIwC,SAASC,MAAM,EAAE;QACnB,MAAM,qBAML,CANK,IAAIC,MACR,CAAC,6CAA6C,EAAEP,QAAQQ,QAAQ,CAAC,CAAC,EAAER,QAAQS,IAAI,CAAC,6CAA6C,CAAC,GAC7H,CAAC,yFAAyF,CAAC,GAC3F,CAAC,iDAAiD,CAAC,GACnD,CAAC,0BAA0B,CAAC,GAC5B,CAAC,kGAAkG,CAAC,GALlG,qBAAA;mBAAA;wBAAA;0BAAA;QAMN;IACF;IAEA,MAAMC,MAAM;IAEZ,MAAMC,oBAAoB5B,qBAAqBO,KAAKoB;IAEpD,MAAME,qBACJ,AAACvB,CAAAA,EAAAA,uCAAAA,OAAOwB,YAAY,CAACC,eAAe,qBAAnCzB,qCAAqC0B,MAAM,KAAI,CAAA,IAAK;IAEvD,MAAMC,oBACJ3B,EAAAA,uBAAAA,OAAOwB,YAAY,qBAAnBxB,qBAAqB4B,gCAAgC,KAAI;IAC3D,MAAMC,WAAW7B,EAAAA,oBAAAA,OAAO8B,SAAS,qBAAhB9B,kBAAkB+B,IAAI,KAAI/B,OAAOgC,qBAAqB,IAAI/B;IAE3E,yCAAyC;IACzC,MAAMgC,uBAAgE;QACpEJ;QACAK,aAAatC,cAAcxB,KAAK+D,QAAQ,CAACN,UAAU5B,QAAQ;QAC3DE;QACAiC,YAAYpC;QACZqC,OAAO;YACLC,QAAQ;QACV;QACAjB;QACAkB,KAAK5B,QAAQ4B,GAAG;QAChBC,WAAWjE,gBAAgB;YACzBkE,aAAa;YACbC,qBAAqBpE,iBAAiBoE,mBAAmB;YACzD1C;YACAqB;YACAlB;YACA+B,aAAajC;YACb0C,qBAAqB3C,OAAOwB,YAAY,CAACmB,mBAAmB;YAC5DpC;YACA,uEAAuE;YACvEqC,oBAAoBC;YACpBrC;QACF;QACAJ;QACAC;QACAC;QACAwC,mBAAmBxB,kBAAkByB,IAAI,CAAC;QAC1CtC;QACAuC,2BACE,CAAC,CAACrC,QAAQ4B,GAAG,CAACU,2CAA2C;QAC3DvC;QACAwC,4BAA4BvB;QAC5BF,iBAAiBzB,OAAOwB,YAAY,CAACC,eAAe;QACpD0B,aAAaxC,QAAQ4B,GAAG,CAACa,cAAc;IACzC;IAEA,MAAMC,qBAAqB;QACzBC,yBAAyBtD,OAAOwB,YAAY,CAAC+B,2BAA2B;QACxEC,oBAAoB7B,qBAAqBJ;QACzCkC,MAAMjE;QACNkE,gBAAgB;QAChBC,gBAAgBhD,QAAQ4B,GAAG,CAACqB,mBAAmB,KAAK;IACtD;IAEA,MAAMC,aAAaC,SAAQ9D,2BAAAA,OAAOwB,YAAY,CAACuC,GAAG,qBAAvB/D,yBAAyBgE,SAAS;IAE7D,MAAMC,UAAU,MAAMjD,SAASkD,KAAK,CAACC,aAAa,CAChD;QACE,GAAGlC,oBAAoB;QACvBmC,iBAAiB9F,iBAAiB8F,eAAe;IACnD,GACAf,oBACA9B,sBAAsBvB,OAAOwB,YAAY,CAAC6C,uBAAuB,GAC7D;QACEA,yBAAyB;YACvB,MAAMC,eAAe,MAAMtF,WAAWD,wBAAwBkB,KAAK;gBACjEsE,gBAAgBjG,iBAAiBiG,cAAc;gBAC/CC,0BACElG,iBAAiBkG,wBAAwB;gBAC3CC,SAAS5E,QAAQ6E,SAAS;YAC5B;YAEA,OAAMJ,aAAa9C,YAAY,CAAC6C,uBAAuB,oBAAjDC,aAAa9C,YAAY,CAAC6C,uBAAuB,MAAjDC,aAAa9C,YAAY;QACjC;IACF,IACAqB;IAEN,MAAM8B,kBAAkBtF,MAAM;IAC9B,2DAA2D;IAC3D,2DAA2D;IAC3DsF,gBAAgBC,IAAI;IACpB,MAAMC,qBAAqB,IAAIC;IAC/B,MAAMC,oBAAoBtF,+BAA+BwE,SAAS;QAChEe,YAAYL;QACZM,QAAQJ,mBAAmBI,MAAM;IACnC;IAEA,IAAI;QACF,kFAAkF;QAClF,MAAMnG,GAAGoG,SAAS,CAAC9G,KAAK2E,IAAI,CAAC5C,SAAS,cAAc;QAEpD,MAAMrB,GAAGqG,KAAK,CAAC/G,KAAK2E,IAAI,CAAC5C,SAAS,WAAW;YAAEiF,WAAW;QAAK;QAC/D,MAAMtG,GAAGqG,KAAK,CAAC/G,KAAK2E,IAAI,CAAC5C,SAAS,UAAUC,UAAU;YACpDgF,WAAW;QACb;QACA,MAAMtG,GAAGoG,SAAS,CAChB9G,KAAK2E,IAAI,CAAC5C,SAAS,iBACnB;QAGF,IAAIkF,aAAa/G,iBAAiB+G,UAAU;QAE5C,MAAMC,cAAc,MAAMrB,QAAQsB,yBAAyB,CAACF;QAC5D,uEAAuE;QACvE,2DAA2D;QAC3D,MAAM,EAAEG,QAAQ,EAAE,GAAG7F,iBAAiB2F,aAAajE,KAAK;YACtDoE,eAAe;QACjB;QAEA,gEAAgE;QAChE,IAAI1F,UAAU2F,SAAS,IAAI/E,QAAQ4B,GAAG,CAACoD,oBAAoB,EAAE;YAC3D,IAAI;gBACF,MAAMC,eAAe,MAAM3B,QAAQ2B,YAAY;gBAC/C,MAAMC,SAAS1G,oCAAoCyG;gBACnD,IAAIC,OAAOnE,MAAM,GAAG,GAAG;oBACrB3B,UAAU+F,MAAM,CAACD;gBACnB;YACF,EAAE,OAAOE,KAAK;gBACZ,sCAAsC;gBACtCC,QAAQC,IAAI,CAAC,iDAAiDF;YAChE;QACF;QAEA,MAAMG,SAASZ,YAAYY,MAAM;QACjC,IAAI,CAACA,QAAQ;YACX,6FAA6F;YAC7F,eAAe;YACf,MAAM,qBAAmC,CAAnC,IAAIhF,MAAM,CAAC,sBAAsB,CAAC,GAAlC,qBAAA;uBAAA;4BAAA;8BAAA;YAAkC;QAC1C;QAEA,MAAMiF,kBAAkBC,MAAMC,IAAI,CAACH,OAAOI,MAAM,IAAIC,IAAI,CAAC,CAACC;YACxD,IAAIA,MAAMC,IAAI,KAAK,UAAUD,MAAMC,IAAI,KAAK,YAAY;gBACtD,OAAO;YACT;YACA,OAAO;QACT;QACA,gEAAgE;QAChE,IAAI,CAACN,iBAAiB;YACpBd,aAAa;QACf;QAEA,MAAMqB,iBAAiB,IAAI9H,wBAAwB;YACjDwB;YACAD;YACAE;YACAgB,KAAK;YACLwC;QACF;QAEA,MAAM8C,qBAAqB,MAAMhI,4BAC/B2G;QAGF,MAAMzG,WAA4B,EAAE;QAEpC,IAAI,CAACwG,YAAY;YACf,KAAK,MAAM,CAACuB,MAAMJ,MAAM,IAAIG,mBAAmBC,IAAI,CAAE;gBACnD/H,SAASgI,IAAI,CACXnI,gBAAgB;oBACdkI;oBACAJ;oBACAE;gBACF;YAEJ;QACF;QAEA,KAAK,MAAM,CAACE,MAAMJ,MAAM,IAAIG,mBAAmBG,GAAG,CAAE;YAClDjI,SAASgI,IAAI,CACXnI,gBAAgB;gBACdkI;gBACAJ;gBACAE;YACF;QAEJ;QAEA,MAAMK,QAAQC,GAAG,CAACnI;QAElB,MAAMkI,QAAQC,GAAG,CAAC;YAChB,mDAAmD;eAC/C,CAAC3B,aACD;gBACEqB,eAAeO,iBAAiB,CAAC;gBACjCP,eAAeQ,iBAAiB,CAAC;gBACjCR,eAAeS,gBAAgB,CAAC;gBAChCT,eAAeQ,iBAAiB,CAAC;gBACjCR,eAAeU,uBAAuB,CAAC;gBACvCV,eAAeO,iBAAiB,CAAC;gBACjCP,eAAeQ,iBAAiB,CAAC;gBACjCR,eAAeS,gBAAgB,CAAC;aACjC,GACD,EAAE;YACN7B,YAAY+B,eAAe,IACzBX,eAAeY,sBAAsB,CACnC,mBACA;YAEJhC,YAAYiC,UAAU,IACnB,MAAMb,eAAeY,sBAAsB,CAC1C,cACA;SAEL;QAEDZ,eAAec,cAAc,CAAC;YAC5BC,aAAa5E;YACb6E,oBAAoBlH;YACpB8E,aAAaqB;QACf;QAEA,IAAIrI,iBAAiBqJ,OAAO,EAAE;YAC5B,MAAM1D,QAAQ2D,gBAAgB,CAACvC;QACjC;QAEA,mEAAmE;QACnE,qEAAqE;QACrE,oEAAoE;QACpE,2CAA2C;QAC3C,MAAMwC,kBAAkB5D,QAAQ6D,QAAQ,GAAGC,IAAI,CAAC;YAC9ClD,mBAAmBmD,KAAK;YACxB,OAAOjD,kBAAkBkD,KAAK,CAAC,KAAO;QACxC;QAEA,MAAMC,OAAOvH,QAAQI,MAAM,CAACD;QAC5B,OAAO;YACLqH,UAAUD,IAAI,CAAC,EAAE,GAAGA,IAAI,CAAC,EAAE,GAAG;YAC9BE,mBAAmBvF;YACnBgF;YACArC;QACF;IACF,EAAE,OAAOO,KAAK;QACZ,MAAM9B,QAAQ6D,QAAQ;QACtBjD,mBAAmBmD,KAAK;QACxB,MAAMjD,kBAAkBkD,KAAK,CAAC,KAAO;QACrC,MAAMlC;IACR;AACF;AAEA,IAAI8B;AACJ,OAAO,eAAeQ,WAAWC,UAGhC;QA+BuBtI;IA5BtB,0EAA0E;IAC1EuI,OAAOC,MAAM,CAAClK,kBAAkBgK,WAAWG,YAAY;IACvDnJ,qBAAqBgJ,WAAWI,UAAU;IAE1C,iDAAiD;IACjD,MAAM1I,SAAS,MAAMhB,WACnBD,wBACAT,iBAAiB2B,GAAG,EACpB;QACEsE,gBAAgBjG,iBAAiBiG,cAAc;QAC/CC,0BAA0BlG,iBAAiBkG,wBAAwB;QACnEC,SAAS5E,QAAQ6E,SAAS;IAC5B;IAEFpG,iBAAiB0B,MAAM,GAAGA;IAC1B,qCAAqC;IACrC,6HAA6H;IAC7H,kDAAkD;IAClD,IAAIf,sBAAsBX,iBAAiB0B,MAAM,GAAG;QAClD1B,iBAAiB0B,MAAM,CAACG,OAAO,GAAG;IACpC;IAEA,iCAAiC;IACjC,MAAMJ,YAAY,IAAIb,UAAU;QAC9BiB,SAAS7B,iBAAiB0B,MAAM,CAACG,OAAO;IAC1C;IACAf,UAAU,aAAaW;IACvB,8DAA8D;IAC9D,MAAMtB,iBAAgBuB,uBAAAA,OAAOwB,YAAY,qBAAnBxB,qBAAqB2I,aAAa;IAExD,IAAI;QACF,MAAM,EACJd,iBAAiBe,qBAAqB,EACtCR,iBAAiB,EACjBD,QAAQ,EACR3C,QAAQ,EACT,GAAG,MAAM1F,eAAeC;QACzB8H,kBAAkBe;QAClB,OAAO;YACLR;YACAD;YACA3C;QACF;IACF,SAAU;QACR,wGAAwG;QACxG,MAAMzF,UAAU8I,KAAK;QACrB,uCAAuC;QACvC,MAAM1K;IACR;AACF;AAEA,OAAO,eAAe2K;IAGpB,IAAIjB,iBAAiB;QACnB,MAAMA;IACR;IACA,wEAAwE;IACxE,6DAA6D;IAC7D,OAAO;QAAEkB,kBAAkBxJ;IAAiB;AAC9C","ignoreList":[0]} | ||
| {"version":3,"sources":["../../../../src/build/turbopack-build/impl.ts"],"sourcesContent":["// Import cpu-profile first to start profiling early if enabled\nimport { saveCpuProfile } from '../../server/lib/cpu-profile'\nimport path from 'path'\nimport { validateTurboNextConfig } from '../../lib/turbopack-warning'\nimport { seedTurbopackCacheIfNeeded } from '../../lib/turbopack-cache-seed'\nimport { NextBuildContext } from '../build-context'\nimport { createDefineEnv, getBindingsSync } from '../swc'\nimport { installBindings } from '../swc/install-bindings'\nimport {\n handleRouteType,\n rawEntrypointsToEntrypoints,\n} from '../handle-entrypoints'\nimport { TurbopackManifestLoader } from '../../shared/lib/turbopack/manifest-loader'\nimport { promises as fs } from 'fs'\nimport { PHASE_PRODUCTION_BUILD } from '../../shared/lib/constants'\nimport loadConfig from '../../server/config'\nimport { hasCustomExportOutput } from '../../export/utils'\nimport { Telemetry } from '../../telemetry/storage'\nimport { eventBuildFeatureUsageFromTurbopack } from '../../telemetry/events/build'\nimport {\n setGlobal,\n trace,\n initializeTraceState,\n getTraceEvents,\n} from '../../trace'\nimport type { TraceState } from '../../trace'\nimport { isCI } from '../../server/ci-info'\nimport { backgroundLogCompilationEvents } from '../../shared/lib/turbopack/compilation-events'\nimport { getSupportedBrowsers } from '../get-supported-browsers'\nimport { printBuildErrors } from '../print-build-errors'\nimport { normalizePath } from '../../lib/normalize-path'\nimport type {\n ProjectOptions,\n RawEntrypoints,\n TurbopackResult,\n} from '../swc/types'\nimport { Bundler } from '../../lib/bundler'\n\nexport async function turbopackBuild(telemetry: Telemetry): Promise<{\n duration: number\n buildTraceContext: undefined\n shutdownPromise: Promise<void>\n warnings: string[]\n}> {\n await validateTurboNextConfig({\n dir: NextBuildContext.dir!,\n configPhase: PHASE_PRODUCTION_BUILD,\n })\n\n const config = NextBuildContext.config!\n const dir = NextBuildContext.dir!\n const distDir = NextBuildContext.distDir!\n const buildId = NextBuildContext.buildId!\n const encryptionKey = NextBuildContext.encryptionKey!\n const previewProps = NextBuildContext.previewProps!\n const hasRewrites = NextBuildContext.hasRewrites!\n const rewrites = NextBuildContext.rewrites!\n const noMangling = NextBuildContext.noMangling!\n const currentNodeJsVersion = process.versions.node\n\n const startTime = process.hrtime()\n const bindings = getBindingsSync() // our caller should have already loaded these\n\n if (bindings.isWasm) {\n throw new Error(\n `Turbopack is not supported on this platform (${process.platform}/${process.arch}) because native bindings are not available. ` +\n `Only WebAssembly (WASM) bindings were loaded, and Turbopack requires native bindings.\\n\\n` +\n `To build on this platform, use Webpack instead:\\n` +\n ` next build --webpack\\n\\n` +\n `For more information, see: https://nextjs.org/docs/app/api-reference/turbopack#supported-platforms`\n )\n }\n\n const dev = false\n\n const supportedBrowsers = getSupportedBrowsers(dir, dev)\n\n const hasDeferredEntries =\n (config.experimental.deferredEntries?.length ?? 0) > 0\n\n const persistentCaching =\n config.experimental?.turbopackFileSystemCacheForBuild || false\n const rootPath = config.turbopack?.root || config.outputFileTracingRoot || dir\n\n // Shared options for createProject calls\n const sharedProjectOptions: Omit<ProjectOptions, 'debugBuildPaths'> = {\n rootPath,\n projectPath: normalizePath(path.relative(rootPath, dir) || '.'),\n distDir,\n nextConfig: config,\n watch: {\n enable: false,\n },\n dev,\n env: process.env as Record<string, string>,\n defineEnv: createDefineEnv({\n isTurbopack: true,\n clientRouterFilters: NextBuildContext.clientRouterFilters!,\n config,\n dev,\n distDir,\n projectPath: dir,\n fetchCacheKeyPrefix: config.experimental.fetchCacheKeyPrefix,\n hasRewrites,\n // Implemented separately in Turbopack, doesn't have to be passed here.\n middlewareMatchers: undefined,\n rewrites,\n }),\n buildId,\n encryptionKey,\n previewProps,\n browserslistQuery: supportedBrowsers.join(', '),\n noMangling,\n writeRoutesHashesManifest:\n !!process.env.NEXT_TURBOPACK_WRITE_ROUTES_HASHES_MANIFEST,\n currentNodeJsVersion,\n isPersistentCachingEnabled: persistentCaching,\n deferredEntries: config.experimental.deferredEntries,\n nextVersion: process.env.__NEXT_VERSION as string,\n }\n\n if (config.experimental.turbopackSeedCacheFromWorktree) {\n seedTurbopackCacheIfNeeded({\n projectDir: dir,\n distDir,\n })\n }\n\n const sharedTurboOptions = {\n turbopackMemoryEviction: config.experimental.turbopackMemoryEvictionMode,\n dependencyTracking: persistentCaching || hasDeferredEntries,\n isCi: isCI,\n isShortSession: true,\n skipCompaction: process.env.NEXT_USE_POST_BUILD === '1',\n }\n\n const sriEnabled = Boolean(config.experimental.sri?.algorithm)\n\n const project = await bindings.turbo.createProject(\n {\n ...sharedProjectOptions,\n debugBuildPaths: NextBuildContext.debugBuildPaths,\n },\n sharedTurboOptions,\n hasDeferredEntries && config.experimental.onBeforeDeferredEntries\n ? {\n onBeforeDeferredEntries: async () => {\n const workerConfig = await loadConfig(PHASE_PRODUCTION_BUILD, dir, {\n debugPrerender: NextBuildContext.debugPrerender,\n reactProductionProfiling:\n NextBuildContext.reactProductionProfiling,\n bundler: Bundler.Turbopack,\n })\n\n await workerConfig.experimental.onBeforeDeferredEntries?.()\n },\n }\n : undefined\n )\n const buildEventsSpan = trace('turbopack-build-events')\n // Stop immediately: this span is only used as a parent for\n // manualTraceChild calls which carry their own timestamps.\n buildEventsSpan.stop()\n const shutdownController = new AbortController()\n const compilationEvents = backgroundLogCompilationEvents(project, {\n parentSpan: buildEventsSpan,\n signal: shutdownController.signal,\n })\n\n try {\n // Write an empty file in a known location to signal this was built with Turbopack\n await fs.writeFile(path.join(distDir, 'turbopack'), '')\n\n await fs.mkdir(path.join(distDir, 'server'), { recursive: true })\n await fs.mkdir(path.join(distDir, 'static', buildId), {\n recursive: true,\n })\n await fs.writeFile(\n path.join(distDir, 'package.json'),\n '{\"type\": \"commonjs\"}'\n )\n\n let appDirOnly = NextBuildContext.appDirOnly!\n\n const entrypoints = await project.writeAllEntrypointsToDisk(appDirOnly)\n // Defer warnings so the caller can print them after static generation,\n // keeping SSG errors more prominent than compile warnings.\n const { warnings } = printBuildErrors(entrypoints, dev, {\n deferWarnings: true,\n })\n\n // Skip when telemetry is fully off — featureUsage() isn't free.\n if (telemetry.isEnabled || process.env.NEXT_TELEMETRY_DEBUG) {\n try {\n const featureUsage = await project.featureUsage()\n const events = eventBuildFeatureUsageFromTurbopack(featureUsage)\n if (events.length > 0) {\n telemetry.record(events)\n }\n } catch (err) {\n // Telemetry must never break a build.\n console.warn('Failed to record Turbopack feature telemetry:', err)\n }\n }\n\n const routes = entrypoints.routes\n if (!routes) {\n // This should never ever happen, there should be an error issue, or the bindings call should\n // have thrown.\n throw new Error(`Turbopack build failed`)\n }\n\n const hasPagesEntries = Array.from(routes.values()).some((route) => {\n if (route.type === 'page' || route.type === 'page-api') {\n return true\n }\n return false\n })\n // If there's no pages entries, then we are in app-dir-only mode\n if (!hasPagesEntries) {\n appDirOnly = true\n }\n\n const manifestLoader = new TurbopackManifestLoader({\n buildId,\n distDir,\n encryptionKey,\n dev: false,\n sriEnabled,\n })\n\n const currentEntrypoints = await rawEntrypointsToEntrypoints(\n entrypoints as TurbopackResult<RawEntrypoints>\n )\n\n const promises: Promise<void>[] = []\n\n if (!appDirOnly) {\n for (const [page, route] of currentEntrypoints.page) {\n promises.push(\n handleRouteType({\n page,\n route,\n manifestLoader,\n })\n )\n }\n }\n\n for (const [page, route] of currentEntrypoints.app) {\n promises.push(\n handleRouteType({\n page,\n route,\n manifestLoader,\n })\n )\n }\n\n await Promise.all(promises)\n\n await Promise.all([\n // Only load pages router manifests if not app-only\n ...(!appDirOnly\n ? [\n manifestLoader.loadBuildManifest('_app'),\n manifestLoader.loadPagesManifest('_app'),\n manifestLoader.loadFontManifest('_app'),\n manifestLoader.loadPagesManifest('_document'),\n manifestLoader.loadClientBuildManifest('_error'),\n manifestLoader.loadBuildManifest('_error'),\n manifestLoader.loadPagesManifest('_error'),\n manifestLoader.loadFontManifest('_error'),\n ]\n : []),\n entrypoints.instrumentation &&\n manifestLoader.loadMiddlewareManifest(\n 'instrumentation',\n 'instrumentation'\n ),\n entrypoints.middleware &&\n (await manifestLoader.loadMiddlewareManifest(\n 'middleware',\n 'middleware'\n )),\n ])\n\n manifestLoader.writeManifests({\n devRewrites: undefined,\n productionRewrites: rewrites,\n entrypoints: currentEntrypoints,\n })\n\n if (NextBuildContext.analyze) {\n await project.writeAnalyzeData(appDirOnly)\n }\n\n // Shutdown may trigger final compilation events (e.g. persistence,\n // compaction trace spans). This is the last chance to capture them.\n // After shutdown resolves we abort the signal to close the iterator\n // and drain any remaining buffered events.\n const shutdownPromise = project.shutdown().then(() => {\n shutdownController.abort()\n return compilationEvents.catch(() => {})\n })\n\n const time = process.hrtime(startTime)\n return {\n duration: time[0] + time[1] / 1e9,\n buildTraceContext: undefined,\n shutdownPromise,\n warnings,\n }\n } catch (err) {\n await project.shutdown()\n shutdownController.abort()\n await compilationEvents.catch(() => {})\n throw err\n }\n}\n\nlet shutdownPromise: Promise<void> | undefined\nexport async function workerMain(workerData: {\n buildContext: typeof NextBuildContext\n traceState: TraceState & { shouldSaveTraceEvents: boolean }\n}): Promise<\n Omit<Awaited<ReturnType<typeof turbopackBuild>>, 'shutdownPromise'>\n> {\n // setup new build context from the serialized data passed from the parent\n Object.assign(NextBuildContext, workerData.buildContext)\n initializeTraceState(workerData.traceState)\n\n /// load the config because it's not serializable\n const config = await loadConfig(\n PHASE_PRODUCTION_BUILD,\n NextBuildContext.dir!,\n {\n debugPrerender: NextBuildContext.debugPrerender,\n reactProductionProfiling: NextBuildContext.reactProductionProfiling,\n bundler: Bundler.Turbopack,\n }\n )\n NextBuildContext.config = config\n // Matches handling in build/index.ts\n // https://github.com/vercel/next.js/blob/84f347fc86f4efc4ec9f13615c215e4b9fb6f8f0/packages/next/src/build/index.ts#L815-L818\n // Ensures the `config.distDir` option is matched.\n if (hasCustomExportOutput(NextBuildContext.config)) {\n NextBuildContext.config.distDir = '.next'\n }\n\n // Clone the telemetry for worker\n const telemetry = new Telemetry({\n distDir: NextBuildContext.config.distDir,\n })\n setGlobal('telemetry', telemetry)\n // Install bindings early so we can access synchronously later\n await installBindings(config.experimental?.useWasmBinary)\n\n try {\n const {\n shutdownPromise: resultShutdownPromise,\n buildTraceContext,\n duration,\n warnings,\n } = await turbopackBuild(telemetry)\n shutdownPromise = resultShutdownPromise\n return {\n buildTraceContext,\n duration,\n warnings,\n }\n } finally {\n // Always flush telemetry before worker exits (waits for async operations like setTimeout in debug mode)\n await telemetry.flush()\n // Save CPU profile before worker exits\n await saveCpuProfile()\n }\n}\n\nexport async function waitForShutdown(): Promise<{\n debugTraceEvents?: ReturnType<typeof getTraceEvents>\n}> {\n if (shutdownPromise) {\n await shutdownPromise\n }\n // Collect trace events after shutdown completes so that all compilation\n // events (e.g. persistence trace spans) have been processed.\n return { debugTraceEvents: getTraceEvents() }\n}\n"],"names":["saveCpuProfile","path","validateTurboNextConfig","seedTurbopackCacheIfNeeded","NextBuildContext","createDefineEnv","getBindingsSync","installBindings","handleRouteType","rawEntrypointsToEntrypoints","TurbopackManifestLoader","promises","fs","PHASE_PRODUCTION_BUILD","loadConfig","hasCustomExportOutput","Telemetry","eventBuildFeatureUsageFromTurbopack","setGlobal","trace","initializeTraceState","getTraceEvents","isCI","backgroundLogCompilationEvents","getSupportedBrowsers","printBuildErrors","normalizePath","Bundler","turbopackBuild","telemetry","config","dir","configPhase","distDir","buildId","encryptionKey","previewProps","hasRewrites","rewrites","noMangling","currentNodeJsVersion","process","versions","node","startTime","hrtime","bindings","isWasm","Error","platform","arch","dev","supportedBrowsers","hasDeferredEntries","experimental","deferredEntries","length","persistentCaching","turbopackFileSystemCacheForBuild","rootPath","turbopack","root","outputFileTracingRoot","sharedProjectOptions","projectPath","relative","nextConfig","watch","enable","env","defineEnv","isTurbopack","clientRouterFilters","fetchCacheKeyPrefix","middlewareMatchers","undefined","browserslistQuery","join","writeRoutesHashesManifest","NEXT_TURBOPACK_WRITE_ROUTES_HASHES_MANIFEST","isPersistentCachingEnabled","nextVersion","__NEXT_VERSION","turbopackSeedCacheFromWorktree","projectDir","sharedTurboOptions","turbopackMemoryEviction","turbopackMemoryEvictionMode","dependencyTracking","isCi","isShortSession","skipCompaction","NEXT_USE_POST_BUILD","sriEnabled","Boolean","sri","algorithm","project","turbo","createProject","debugBuildPaths","onBeforeDeferredEntries","workerConfig","debugPrerender","reactProductionProfiling","bundler","Turbopack","buildEventsSpan","stop","shutdownController","AbortController","compilationEvents","parentSpan","signal","writeFile","mkdir","recursive","appDirOnly","entrypoints","writeAllEntrypointsToDisk","warnings","deferWarnings","isEnabled","NEXT_TELEMETRY_DEBUG","featureUsage","events","record","err","console","warn","routes","hasPagesEntries","Array","from","values","some","route","type","manifestLoader","currentEntrypoints","page","push","app","Promise","all","loadBuildManifest","loadPagesManifest","loadFontManifest","loadClientBuildManifest","instrumentation","loadMiddlewareManifest","middleware","writeManifests","devRewrites","productionRewrites","analyze","writeAnalyzeData","shutdownPromise","shutdown","then","abort","catch","time","duration","buildTraceContext","workerMain","workerData","Object","assign","buildContext","traceState","useWasmBinary","resultShutdownPromise","flush","waitForShutdown","debugTraceEvents"],"mappings":"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","ignoreList":[0]} |
@@ -8,3 +8,3 @@ /** | ||
| import { setAttributesFromProps } from './set-attributes-from-props'; | ||
| const version = "16.3.0-canary.102"; | ||
| const version = "16.3.0-canary.103"; | ||
| window.next = { | ||
@@ -11,0 +11,0 @@ version, |
@@ -197,13 +197,4 @@ 'use client'; | ||
| scrollRef.current = false; | ||
| const activeElement = document.activeElement; | ||
| if (activeElement !== null && 'blur' in activeElement && typeof activeElement.blur === 'function') { | ||
| // Trying to match hard navigations. | ||
| // Ideally we'd move the internal focus cursor either to the top | ||
| // or at least before the segment. But there's no DOM API to do that, | ||
| // so we just blur. | ||
| // We could workaround this by moving focus to a temporary element in | ||
| // the body. But adding elements might trigger layout or other effects | ||
| // so it should be well motivated. | ||
| activeElement.blur(); | ||
| } | ||
| // This handler intentionally leaves focus untouched; resetting focus on | ||
| // navigation is deferred. | ||
| disableSmoothScrollDuringRouteTransition(()=>{ | ||
@@ -210,0 +201,0 @@ // In case of hash scroll, we only need to scroll the element into view |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../../../../src/client/components/layout-router.tsx"],"sourcesContent":["'use client'\n\nimport type { CacheNode } from '../../shared/lib/app-router-types'\nimport type { LoadingModuleData } from '../../shared/lib/app-router-types'\nimport type {\n FlightRouterState,\n FlightSegmentPath,\n Segment,\n} from '../../shared/lib/app-router-types'\nimport type { ErrorComponent } from './error-boundary'\nimport type { FocusAndScrollRef } from './router-reducer/router-reducer-types'\n\nimport React, {\n Activity,\n Fragment,\n useContext,\n use,\n Suspense,\n useDeferredValue,\n useLayoutEffect,\n type FragmentInstance,\n type JSX,\n type ActivityProps,\n} from 'react'\nimport ReactDOM from 'react-dom'\nimport {\n LayoutRouterContext,\n GlobalLayoutRouterContext,\n TemplateContext,\n} from '../../shared/lib/app-router-context.shared-runtime'\nimport { unresolvedThenable } from './unresolved-thenable'\nimport { ErrorBoundary } from './error-boundary'\nimport { disableSmoothScrollDuringRouteTransition } from '../../shared/lib/router/utils/disable-smooth-scroll'\nimport { RedirectBoundary } from './redirect-boundary'\nimport { HTTPAccessFallbackBoundary } from './http-access-fallback/error-boundary'\nimport {\n InstantValidationBoundaryContext,\n RenderValidationBoundaryAtThisLevel,\n} from './instant-validation/boundary'\nimport { createRouterCacheKey } from './router-reducer/create-router-cache-key'\nimport {\n useRouterBFCache,\n type RouterBFCacheEntry,\n} from './bfcache-state-manager'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport {\n NavigationPromisesContext,\n type NavigationPromises,\n} from '../../shared/lib/hooks-client-context.shared-runtime'\nimport { getParamValueFromCacheKey } from '../route-params'\nimport type { Params } from '../../server/request/params'\nimport { isDeferredRsc } from './router-reducer/ppr-navigations'\n\nconst enableNewScrollHandler = process.env.__NEXT_APP_NEW_SCROLL_HANDLER\n\nconst __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = (\n ReactDOM as any\n).__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE\n\n// TODO-APP: Replace with new React API for finding dom nodes without a `ref` when available\n/**\n * Wraps ReactDOM.findDOMNode with additional logic to hide React Strict Mode warning\n */\nfunction findDOMNode(\n instance: React.ReactInstance | null | undefined\n): Element | Text | null {\n // Tree-shake for server bundle\n if (typeof window === 'undefined') return null\n\n // __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode is null during module init.\n // We need to lazily reference it.\n const internal_reactDOMfindDOMNode =\n __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode\n return internal_reactDOMfindDOMNode(instance)\n}\n\nconst rectProperties = [\n 'bottom',\n 'height',\n 'left',\n 'right',\n 'top',\n 'width',\n 'x',\n 'y',\n] as const\n/**\n * Check if a HTMLElement is hidden or fixed/sticky position\n */\nfunction shouldSkipElement(element: HTMLElement) {\n // we ignore fixed or sticky positioned elements since they'll likely pass the \"in-viewport\" check\n // and will result in a situation we bail on scroll because of something like a fixed nav,\n // even though the actual page content is offscreen\n if (['sticky', 'fixed'].includes(getComputedStyle(element).position)) {\n return true\n }\n\n // Uses `getBoundingClientRect` to check if the element is hidden instead of `offsetParent`\n // because `offsetParent` doesn't consider document/body\n const rect = element.getBoundingClientRect()\n return rectProperties.every((item) => rect[item] === 0)\n}\n\n/**\n * Check if the top corner of the HTMLElement is in the viewport.\n */\nfunction topOfElementInViewport(\n instance: HTMLElement | FragmentInstance,\n viewportHeight: number\n): boolean {\n const rects = instance.getClientRects()\n if (rects.length === 0) {\n // Just to be explicit.\n return false\n }\n let elementTop = Number.POSITIVE_INFINITY\n for (let i = 0; i < rects.length; i++) {\n const rect = rects[i]\n if (rect.top < elementTop) {\n elementTop = rect.top\n }\n }\n return elementTop >= 0 && elementTop <= viewportHeight\n}\n\n/**\n * Find the DOM node for a hash fragment.\n * If `top` the page has to scroll to the top of the page. This mirrors the browser's behavior.\n * If the hash fragment is an id, the page has to scroll to the element with that id.\n * If the hash fragment is a name, the page has to scroll to the first element with that name.\n */\nfunction getHashFragmentDomNode(hashFragment: string) {\n // If the hash fragment is `top` the page has to scroll to the top of the page.\n if (hashFragment === 'top') {\n return document.body\n }\n\n // If the hash fragment is an id, the page has to scroll to the element with that id.\n return (\n document.getElementById(hashFragment) ??\n // If the hash fragment is a name, the page has to scroll to the first element with that name.\n document.getElementsByName(hashFragment)[0]\n )\n}\ninterface ScrollAndMaybeFocusHandlerProps {\n focusAndScrollRef: FocusAndScrollRef\n children: React.ReactNode\n cacheNode: CacheNode\n}\nclass InnerScrollAndFocusHandlerOld extends React.Component<ScrollAndMaybeFocusHandlerProps> {\n handlePotentialScroll = () => {\n // Handle scroll and focus, it's only applied once.\n const { focusAndScrollRef, cacheNode } = this.props\n\n const scrollRef = focusAndScrollRef.forceScroll\n ? focusAndScrollRef.scrollRef\n : cacheNode.scrollRef\n if (scrollRef === null || !scrollRef.current) return\n\n let domNode:\n | ReturnType<typeof getHashFragmentDomNode>\n | ReturnType<typeof findDOMNode> = null\n const hashFragment = focusAndScrollRef.hashFragment\n\n if (hashFragment) {\n domNode = getHashFragmentDomNode(hashFragment)\n }\n\n // `findDOMNode` is tricky because it returns just the first child if the component is a fragment.\n // This already caused a bug where the first child was a <link/> in head.\n if (!domNode) {\n domNode = findDOMNode(this)\n }\n\n // If there is no DOM node this layout-router level is skipped. It'll be handled higher-up in the tree.\n if (!(domNode instanceof Element)) {\n return\n }\n\n // Verify if the element is a HTMLElement and if we want to consider it for scroll behavior.\n // If the element is skipped, try to select the next sibling and try again.\n while (!(domNode instanceof HTMLElement) || shouldSkipElement(domNode)) {\n if (process.env.NODE_ENV !== 'production') {\n if (domNode.parentElement?.localName === 'head') {\n // We enter this state when metadata was rendered as part of the page or via Next.js.\n // This is always a bug in Next.js and caused by React hoisting metadata.\n // Fixed with `experimental.appNewScrollHandler`\n }\n }\n\n // No siblings found that match the criteria are found, so handle scroll higher up in the tree instead.\n if (domNode.nextElementSibling === null) {\n return\n }\n domNode = domNode.nextElementSibling\n }\n\n // Mark as scrolled so no other segment scrolls for this navigation.\n scrollRef.current = false\n\n disableSmoothScrollDuringRouteTransition(\n () => {\n // In case of hash scroll, we only need to scroll the element into view\n if (hashFragment) {\n domNode.scrollIntoView()\n\n return\n }\n // Store the current viewport height because reading `clientHeight` causes a reflow,\n // and it won't change during this function.\n const htmlElement = document.documentElement\n const viewportHeight = htmlElement.clientHeight\n\n // If the element's top edge is already in the viewport, exit early.\n if (topOfElementInViewport(domNode, viewportHeight)) {\n return\n }\n\n // Otherwise, try scrolling go the top of the document to be backward compatible with pages\n // scrollIntoView() called on `<html/>` element scrolls horizontally on chrome and firefox (that shouldn't happen)\n // We could use it to scroll horizontally following RTL but that also seems to be broken - it will always scroll left\n // scrollLeft = 0 also seems to ignore RTL and manually checking for RTL is too much hassle so we will scroll just vertically\n htmlElement.scrollTop = 0\n\n // Scroll to domNode if domNode is not in viewport when scrolled to top of document\n if (!topOfElementInViewport(domNode, viewportHeight)) {\n // Scroll into view doesn't scroll horizontally by default when not needed\n domNode.scrollIntoView()\n }\n },\n {\n // We will force layout by querying domNode position\n dontForceLayout: true,\n onlyHashChange: focusAndScrollRef.onlyHashChange,\n }\n )\n\n // Mutate after scrolling so that it can be read by `disableSmoothScrollDuringRouteTransition`\n focusAndScrollRef.onlyHashChange = false\n focusAndScrollRef.hashFragment = null\n\n // Set focus on the element\n domNode.focus()\n }\n\n componentDidMount() {\n this.handlePotentialScroll()\n }\n\n componentDidUpdate() {\n this.handlePotentialScroll()\n }\n\n render() {\n return this.props.children\n }\n}\n\n/**\n * Fork of InnerScrollAndFocusHandlerOld using Fragment refs for scrolling.\n * No longer focuses the first host descendant.\n */\nfunction InnerScrollHandlerNew(props: ScrollAndMaybeFocusHandlerProps) {\n const childrenRef = React.useRef<FragmentInstance>(null)\n\n useLayoutEffect(\n () => {\n const { focusAndScrollRef, cacheNode } = props\n\n const scrollRef = focusAndScrollRef.forceScroll\n ? focusAndScrollRef.scrollRef\n : cacheNode.scrollRef\n if (scrollRef === null || !scrollRef.current) return\n\n let instance: FragmentInstance | HTMLElement | null = null\n const hashFragment = focusAndScrollRef.hashFragment\n\n if (hashFragment) {\n instance = getHashFragmentDomNode(hashFragment)\n }\n\n if (!instance) {\n instance = childrenRef.current\n }\n\n // If there is no DOM node this layout-router level is skipped. It'll be handled higher-up in the tree.\n if (instance === null) {\n return\n }\n\n // Mark as scrolled so no other segment scrolls for this navigation.\n scrollRef.current = false\n\n const activeElement = document.activeElement\n if (\n activeElement !== null &&\n 'blur' in activeElement &&\n typeof activeElement.blur === 'function'\n ) {\n // Trying to match hard navigations.\n // Ideally we'd move the internal focus cursor either to the top\n // or at least before the segment. But there's no DOM API to do that,\n // so we just blur.\n // We could workaround this by moving focus to a temporary element in\n // the body. But adding elements might trigger layout or other effects\n // so it should be well motivated.\n activeElement.blur()\n }\n\n disableSmoothScrollDuringRouteTransition(\n () => {\n // In case of hash scroll, we only need to scroll the element into view\n if (hashFragment) {\n instance.scrollIntoView()\n\n return\n }\n // Store the current viewport height because reading `clientHeight` causes a reflow,\n // and it won't change during this function.\n const htmlElement = document.documentElement\n const viewportHeight = htmlElement.clientHeight\n\n // If the element's top edge is already in the viewport, exit early.\n if (topOfElementInViewport(instance, viewportHeight)) {\n return\n }\n\n // Otherwise, try scrolling go the top of the document to be backward compatible with pages\n // scrollIntoView() called on `<html/>` element scrolls horizontally on chrome and firefox (that shouldn't happen)\n // We could use it to scroll horizontally following RTL but that also seems to be broken - it will always scroll left\n // scrollLeft = 0 also seems to ignore RTL and manually checking for RTL is too much hassle so we will scroll just vertically\n htmlElement.scrollTop = 0\n\n // Scroll to domNode if domNode is not in viewport when scrolled to top of document\n if (!topOfElementInViewport(instance, viewportHeight)) {\n // Scroll into view doesn't scroll horizontally by default when not needed\n instance.scrollIntoView()\n }\n },\n {\n // We will force layout by querying domNode position\n dontForceLayout: true,\n onlyHashChange: focusAndScrollRef.onlyHashChange,\n }\n )\n\n // Mutate after scrolling so that it can be read by `disableSmoothScrollDuringRouteTransition`\n focusAndScrollRef.onlyHashChange = false\n focusAndScrollRef.hashFragment = null\n },\n // Used to run on every commit. We may be able to be smarter about this\n // but be prepared for lots of manual testing.\n undefined\n )\n\n return <Fragment ref={childrenRef}>{props.children}</Fragment>\n}\n\nconst InnerScrollAndMaybeFocusHandler = enableNewScrollHandler\n ? InnerScrollHandlerNew\n : InnerScrollAndFocusHandlerOld\n\nfunction ScrollAndMaybeFocusHandler({\n children,\n cacheNode,\n}: {\n children: React.ReactNode\n cacheNode: CacheNode\n}) {\n const context = useContext(GlobalLayoutRouterContext)\n if (!context) {\n throw new Error('invariant global layout router not mounted')\n }\n\n return (\n <InnerScrollAndMaybeFocusHandler\n focusAndScrollRef={context.focusAndScrollRef}\n cacheNode={cacheNode}\n >\n {children}\n </InnerScrollAndMaybeFocusHandler>\n )\n}\n\n/**\n * InnerLayoutRouter handles rendering the provided segment based on the cache.\n */\nfunction InnerLayoutRouter({\n tree,\n segmentPath,\n debugNameContext,\n cacheNode: maybeCacheNode,\n params,\n url,\n isActive,\n}: {\n tree: FlightRouterState\n segmentPath: FlightSegmentPath\n debugNameContext: string\n cacheNode: CacheNode | null\n params: Params\n url: string\n isActive: boolean\n}) {\n const context = useContext(GlobalLayoutRouterContext)\n const parentNavPromises = useContext(NavigationPromisesContext)\n\n if (!context) {\n throw new Error('invariant global layout router not mounted')\n }\n\n const cacheNode =\n maybeCacheNode !== null\n ? maybeCacheNode\n : // This segment is not in the cache. Suspend indefinitely.\n //\n // This should only be reachable for inactive/hidden segments, during\n // prerendering The active segment should always be consistent with the\n // CacheNode tree. Regardless, if we don't have a matching CacheNode, we\n // must suspend rather than render nothing, to prevent showing an\n // inconsistent route.\n\n (use(unresolvedThenable) as never)\n\n // `rsc` represents the renderable node for this segment.\n\n // If this segment has a `prefetchRsc`, it's the statically prefetched data.\n // We should use that on initial render instead of `rsc`. Then we'll switch\n // to `rsc` when the dynamic response streams in.\n //\n // If no prefetch data is available, then we go straight to rendering `rsc`.\n const resolvedPrefetchRsc =\n cacheNode.prefetchRsc !== null ? cacheNode.prefetchRsc : cacheNode.rsc\n\n // We use `useDeferredValue` to handle switching between the prefetched and\n // final values. The second argument is returned on initial render, then it\n // re-renders with the first argument.\n const rsc: any = useDeferredValue(cacheNode.rsc, resolvedPrefetchRsc)\n\n // `rsc` is either a React node or a promise for a React node, except we\n // special case `null` to represent that this segment's data is missing. If\n // it's a promise, we need to unwrap it so we can determine whether or not the\n // data is missing.\n let resolvedRsc: React.ReactNode\n if (isDeferredRsc(rsc)) {\n const unwrappedRsc = use(rsc)\n if (unwrappedRsc === null) {\n // If the promise was resolved to `null`, it means the data for this\n // segment was not returned by the server. Suspend indefinitely. When this\n // happens, the router is responsible for triggering a new state update to\n // un-suspend this segment.\n use(unresolvedThenable) as never\n }\n resolvedRsc = unwrappedRsc\n } else {\n // This is not a deferred RSC promise. Don't need to unwrap it.\n if (rsc === null) {\n use(unresolvedThenable) as never\n }\n resolvedRsc = rsc\n }\n\n // In dev, we create a NavigationPromisesContext containing the instrumented promises that provide\n // `useSelectedLayoutSegment` and `useSelectedLayoutSegments`.\n // Promises are cached outside of render to survive suspense retries.\n let navigationPromises: NavigationPromises | null = null\n if (process.env.NODE_ENV !== 'production') {\n const { createNestedLayoutNavigationPromises } =\n require('./navigation-devtools') as typeof import('./navigation-devtools')\n\n navigationPromises = createNestedLayoutNavigationPromises(\n tree,\n parentNavPromises\n )\n }\n\n let children = resolvedRsc\n\n if (navigationPromises) {\n children = (\n <NavigationPromisesContext.Provider value={navigationPromises}>\n {resolvedRsc}\n </NavigationPromisesContext.Provider>\n )\n }\n\n children = (\n // The layout router context narrows down tree and childNodes at each level.\n <LayoutRouterContext.Provider\n value={{\n parentTree: tree,\n parentCacheNode: cacheNode,\n parentSegmentPath: segmentPath,\n parentParams: params,\n // This is always set to null as we enter a child segment. It's\n // populated by LoadingBoundaryProvider the next time we reach a\n // loading boundary.\n parentLoadingData: null,\n debugNameContext: debugNameContext,\n\n // TODO-APP: overriding of url for parallel routes\n url: url,\n isActive: isActive,\n }}\n >\n {children}\n </LayoutRouterContext.Provider>\n )\n\n return children\n}\n\nexport function LoadingBoundaryProvider({\n loading,\n children,\n}: {\n loading: LoadingModuleData\n children: React.ReactNode\n}) {\n // Provides the data needed to render a loading.tsx boundary, via context.\n //\n // loading.tsx creates a Suspense boundary around each of a layout's child\n // slots. (Might be bit confusing to think about the data flow, but: if\n // loading.tsx and layout.tsx are in the same directory, they are assigned\n // to the same CacheNode.)\n //\n // This provider component does not render the Suspense boundary directly;\n // that's handled by LoadingBoundary.\n //\n // TODO: For simplicity, we should combine this provider with LoadingBoundary\n // and render the Suspense boundary directly. The only real benefit of doing\n // it separately is so that when there are multiple parallel routes, we only\n // send the boundary data once, rather than once per child. But that's a\n // negligible benefit and can be achieved via caching instead.\n const parentContext = use(LayoutRouterContext)\n if (parentContext === null) {\n return children\n }\n // All values except for parentLoadingData are the same as the parent context.\n return (\n <LayoutRouterContext.Provider\n value={{\n parentTree: parentContext.parentTree,\n parentCacheNode: parentContext.parentCacheNode,\n parentSegmentPath: parentContext.parentSegmentPath,\n parentParams: parentContext.parentParams,\n parentLoadingData: loading,\n debugNameContext: parentContext.debugNameContext,\n url: parentContext.url,\n isActive: parentContext.isActive,\n }}\n >\n {children}\n </LayoutRouterContext.Provider>\n )\n}\n\n/**\n * Renders suspense boundary with the provided \"loading\" property as the fallback.\n * If no loading property is provided it renders the children without a suspense boundary.\n */\nfunction LoadingBoundary({\n name,\n loading,\n children,\n}: {\n name: ActivityProps['name']\n loading: LoadingModuleData | null\n children: React.ReactNode\n}): JSX.Element {\n // TODO: For LoadingBoundary, and the other built-in boundary types, don't\n // wrap in an extra function component if no user-defined boundary is\n // provided. In other words, inline this conditional wrapping logic into\n // the parent component. More efficient and keeps unnecessary junk out of\n // the component stack.\n if (loading !== null) {\n const loadingRsc = loading[0]\n const loadingStyles = loading[1]\n const loadingScripts = loading[2]\n return (\n <Suspense\n name={name}\n fallback={\n <>\n {loadingStyles}\n {loadingScripts}\n {loadingRsc}\n </>\n }\n >\n {children}\n </Suspense>\n )\n }\n\n return <>{children}</>\n}\n\n/**\n * OuterLayoutRouter handles the current segment as well as <Offscreen> rendering of other segments.\n * It can be rendered next to each other with a different `parallelRouterKey`, allowing for Parallel routes.\n */\nexport default function OuterLayoutRouter({\n parallelRouterKey,\n error,\n errorStyles,\n errorScripts,\n templateStyles,\n templateScripts,\n template,\n notFound,\n forbidden,\n unauthorized,\n segmentViewBoundaries,\n}: {\n parallelRouterKey: string\n error: ErrorComponent | undefined\n errorStyles: React.ReactNode | undefined\n errorScripts: React.ReactNode | undefined\n templateStyles: React.ReactNode | undefined\n templateScripts: React.ReactNode | undefined\n template: React.ReactNode\n notFound: React.ReactNode | undefined\n forbidden: React.ReactNode | undefined\n unauthorized: React.ReactNode | undefined\n segmentViewBoundaries?: React.ReactNode\n}) {\n const context = useContext(LayoutRouterContext)\n if (!context) {\n throw new Error('invariant expected layout router to be mounted')\n }\n\n const {\n parentTree,\n parentCacheNode,\n parentSegmentPath,\n parentParams,\n parentLoadingData,\n url,\n isActive,\n debugNameContext,\n } = context\n\n // Get the CacheNode for this segment by reading it from the parent segment's\n // child map.\n const parentTreeSegment = parentTree[0]\n const segmentPath =\n parentSegmentPath === null\n ? // TODO: The root segment value is currently omitted from the segment\n // path. This has led to a bunch of special cases scattered throughout\n // the code. We should clean this up.\n [parallelRouterKey]\n : parentSegmentPath.concat([parentTreeSegment, parallelRouterKey])\n\n // The \"state\" key of a segment is the one passed to React — it represents the\n // identity of the UI tree. Whenever the state key changes, the tree is\n // recreated and the state is reset. In the App Router model, search params do\n // not cause state to be lost, so two segments with the same segment path but\n // different search params should have the same state key.\n //\n // The \"cache\" key of a segment, however, *does* include the search params, if\n // it's possible that the segment accessed the search params on the server.\n // (This only applies to page segments; layout segments cannot access search\n // params on the server.)\n const activeTree = parentTree[1][parallelRouterKey]\n const maybeParentSlots = parentCacheNode.slots\n if (activeTree === undefined || maybeParentSlots === null) {\n // Could not find a matching segment. The client tree is inconsistent with\n // the server tree. Suspend indefinitely; the router will have already\n // detected the inconsistency when handling the server response, and\n // triggered a refresh of the page to recover.\n use(unresolvedThenable) as never\n }\n\n let maybeValidationBoundaryId: string | null = null\n if (typeof window === 'undefined' && process.env.__NEXT_CACHE_COMPONENTS) {\n maybeValidationBoundaryId = use(InstantValidationBoundaryContext)\n }\n\n const activeSegment = activeTree[0]\n const activeCacheNode = maybeParentSlots![parallelRouterKey] ?? null\n const activeStateKey = createRouterCacheKey(activeSegment, true) // no search params\n\n // At each level of the route tree, not only do we render the currently\n // active segment — we also render the last N segments that were active at\n // this level inside a hidden <Activity> boundary, to preserve their state\n // if or when the user navigates to them again.\n //\n // bfcacheEntry is a linked list of FlightRouterStates.\n let bfcacheEntry: RouterBFCacheEntry | null = useRouterBFCache(\n activeTree,\n activeCacheNode,\n activeStateKey\n )\n let children: Array<React.ReactNode> = []\n do {\n const tree = bfcacheEntry.tree\n const cacheNode = bfcacheEntry.cacheNode\n const stateKey = bfcacheEntry.stateKey\n const segment = tree[0]\n\n /*\n - Error boundary\n - Only renders error boundary if error component is provided.\n - Rendered for each segment to ensure they have their own error state.\n - When gracefully degrade for bots, skip rendering error boundary.\n - Loading boundary\n - Only renders suspense boundary if loading components is provided.\n - Rendered for each segment to ensure they have their own loading state.\n - Passed to the router during rendering to ensure it can be immediately rendered when suspending on a Flight fetch.\n */\n\n let segmentBoundaryTriggerNode: React.ReactNode = null\n let segmentViewStateNode: React.ReactNode = null\n if (process.env.NODE_ENV !== 'production') {\n const { SegmentBoundaryTriggerNode, SegmentViewStateNode } =\n require('../../next-devtools/userspace/app/segment-explorer-node') as typeof import('../../next-devtools/userspace/app/segment-explorer-node')\n\n const pagePrefix = normalizeAppPath(url)\n segmentViewStateNode = (\n <SegmentViewStateNode key={pagePrefix} page={pagePrefix} />\n )\n\n segmentBoundaryTriggerNode = (\n <>\n <SegmentBoundaryTriggerNode />\n </>\n )\n }\n\n let params = parentParams\n if (Array.isArray(segment)) {\n // This segment contains a route param. Accumulate these as we traverse\n // down the router tree. The result represents the set of params that\n // the layout/page components are permitted to access below this point.\n const paramName = segment[0]\n const paramCacheKey = segment[1]\n const paramType = segment[2]\n const paramValue = getParamValueFromCacheKey(paramCacheKey, paramType)\n if (paramValue !== null) {\n params = {\n ...parentParams,\n [paramName]: paramValue,\n }\n }\n }\n\n const debugName = getBoundaryDebugNameFromSegment(segment)\n // `debugNameContext` represents the nearest non-\"virtual\" parent segment.\n // `getBoundaryDebugNameFromSegment` returns undefined for virtual segments.\n // So if `debugName` is undefined, the context is passed through unchanged.\n const childDebugNameContext = debugName ?? debugNameContext\n\n // In practical terms, clicking this name in the Suspense DevTools\n // should select the child slots of that layout.\n //\n // So the name we apply to the Activity boundary is actually based on\n // the nearest parent segments.\n //\n // We skip over \"virtual\" parents, i.e. ones inserted by Next.js that\n // don't correspond to application-defined code.\n const isVirtual = debugName === undefined\n const debugNameToDisplay = isVirtual ? undefined : debugNameContext\n\n let templateValue = (\n <ScrollAndMaybeFocusHandler cacheNode={cacheNode}>\n <ErrorBoundary\n errorComponent={error}\n errorStyles={errorStyles}\n errorScripts={errorScripts}\n >\n <LoadingBoundary\n name={debugNameToDisplay}\n // TODO: The loading module data for a segment is stored on the\n // parent, then applied to each of that parent segment's\n // parallel route slots. In the simple case where there's only\n // one parallel route (the `children` slot), this is no\n // different from if the loading module data were stored on the\n // child directly. But I'm not sure this actually makes sense\n // when there are multiple parallel routes. It's not a huge\n // issue because you always have the option to define a narrower\n // loading boundary for a particular slot. But this sort of\n // smells like an implementation accident to me.\n loading={parentLoadingData}\n >\n <HTTPAccessFallbackBoundary\n notFound={notFound}\n forbidden={forbidden}\n unauthorized={unauthorized}\n >\n <RedirectBoundary>\n <InnerLayoutRouter\n url={url}\n tree={tree}\n params={params}\n cacheNode={cacheNode}\n segmentPath={segmentPath}\n debugNameContext={childDebugNameContext}\n isActive={isActive && stateKey === activeStateKey}\n />\n {segmentBoundaryTriggerNode}\n </RedirectBoundary>\n </HTTPAccessFallbackBoundary>\n </LoadingBoundary>\n </ErrorBoundary>\n {segmentViewStateNode}\n </ScrollAndMaybeFocusHandler>\n )\n\n if (\n typeof window === 'undefined' &&\n process.env.__NEXT_CACHE_COMPONENTS &&\n typeof maybeValidationBoundaryId === 'string'\n ) {\n templateValue = (\n <RenderValidationBoundaryAtThisLevel id={maybeValidationBoundaryId}>\n {templateValue}\n </RenderValidationBoundaryAtThisLevel>\n )\n }\n\n let child = (\n <TemplateContext.Provider key={stateKey} value={templateValue}>\n {templateStyles}\n {templateScripts}\n {template}\n </TemplateContext.Provider>\n )\n\n if (process.env.NODE_ENV !== 'production') {\n const { SegmentStateProvider } =\n require('../../next-devtools/userspace/app/segment-explorer-node') as typeof import('../../next-devtools/userspace/app/segment-explorer-node')\n\n child = (\n <SegmentStateProvider key={stateKey}>\n {child}\n {segmentViewBoundaries}\n </SegmentStateProvider>\n )\n }\n\n if (process.env.__NEXT_CACHE_COMPONENTS) {\n child = (\n <Activity\n name={debugNameToDisplay}\n key={stateKey}\n mode={stateKey === activeStateKey ? 'visible' : 'hidden'}\n >\n {child}\n </Activity>\n )\n }\n\n children.push(child)\n\n bfcacheEntry = bfcacheEntry.next\n } while (bfcacheEntry !== null)\n\n return children\n}\n\nfunction getBoundaryDebugNameFromSegment(segment: Segment): string | undefined {\n if (segment === '/') {\n // Reached the root\n return '/'\n }\n if (typeof segment === 'string') {\n if (isVirtualLayout(segment)) {\n return undefined\n } else {\n return segment + '/'\n }\n }\n const paramCacheKey = segment[1]\n return paramCacheKey + '/'\n}\n\nfunction isVirtualLayout(segment: string): boolean {\n return (\n // This is inserted by the loader. Uses double-underscore convention\n // (like __PAGE__ and __DEFAULT__) to avoid collisions with\n // user-defined route groups.\n segment === '(__SLOT__)'\n )\n}\n"],"names":["React","Activity","Fragment","useContext","use","Suspense","useDeferredValue","useLayoutEffect","ReactDOM","LayoutRouterContext","GlobalLayoutRouterContext","TemplateContext","unresolvedThenable","ErrorBoundary","disableSmoothScrollDuringRouteTransition","RedirectBoundary","HTTPAccessFallbackBoundary","InstantValidationBoundaryContext","RenderValidationBoundaryAtThisLevel","createRouterCacheKey","useRouterBFCache","normalizeAppPath","NavigationPromisesContext","getParamValueFromCacheKey","isDeferredRsc","enableNewScrollHandler","process","env","__NEXT_APP_NEW_SCROLL_HANDLER","__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","findDOMNode","instance","window","internal_reactDOMfindDOMNode","rectProperties","shouldSkipElement","element","includes","getComputedStyle","position","rect","getBoundingClientRect","every","item","topOfElementInViewport","viewportHeight","rects","getClientRects","length","elementTop","Number","POSITIVE_INFINITY","i","top","getHashFragmentDomNode","hashFragment","document","body","getElementById","getElementsByName","InnerScrollAndFocusHandlerOld","Component","componentDidMount","handlePotentialScroll","componentDidUpdate","render","props","children","focusAndScrollRef","cacheNode","scrollRef","forceScroll","current","domNode","Element","HTMLElement","NODE_ENV","parentElement","localName","nextElementSibling","scrollIntoView","htmlElement","documentElement","clientHeight","scrollTop","dontForceLayout","onlyHashChange","focus","InnerScrollHandlerNew","childrenRef","useRef","activeElement","blur","undefined","ref","InnerScrollAndMaybeFocusHandler","ScrollAndMaybeFocusHandler","context","Error","InnerLayoutRouter","tree","segmentPath","debugNameContext","maybeCacheNode","params","url","isActive","parentNavPromises","resolvedPrefetchRsc","prefetchRsc","rsc","resolvedRsc","unwrappedRsc","navigationPromises","createNestedLayoutNavigationPromises","require","Provider","value","parentTree","parentCacheNode","parentSegmentPath","parentParams","parentLoadingData","LoadingBoundaryProvider","loading","parentContext","LoadingBoundary","name","loadingRsc","loadingStyles","loadingScripts","fallback","OuterLayoutRouter","parallelRouterKey","error","errorStyles","errorScripts","templateStyles","templateScripts","template","notFound","forbidden","unauthorized","segmentViewBoundaries","parentTreeSegment","concat","activeTree","maybeParentSlots","slots","maybeValidationBoundaryId","__NEXT_CACHE_COMPONENTS","activeSegment","activeCacheNode","activeStateKey","bfcacheEntry","stateKey","segment","segmentBoundaryTriggerNode","segmentViewStateNode","SegmentBoundaryTriggerNode","SegmentViewStateNode","pagePrefix","page","Array","isArray","paramName","paramCacheKey","paramType","paramValue","debugName","getBoundaryDebugNameFromSegment","childDebugNameContext","isVirtual","debugNameToDisplay","templateValue","errorComponent","id","child","SegmentStateProvider","mode","push","next","isVirtualLayout"],"mappings":"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","ignoreList":[0]} | ||
| {"version":3,"sources":["../../../../src/client/components/layout-router.tsx"],"sourcesContent":["'use client'\n\nimport type { CacheNode } from '../../shared/lib/app-router-types'\nimport type { LoadingModuleData } from '../../shared/lib/app-router-types'\nimport type {\n FlightRouterState,\n FlightSegmentPath,\n Segment,\n} from '../../shared/lib/app-router-types'\nimport type { ErrorComponent } from './error-boundary'\nimport type { FocusAndScrollRef } from './router-reducer/router-reducer-types'\n\nimport React, {\n Activity,\n Fragment,\n useContext,\n use,\n Suspense,\n useDeferredValue,\n useLayoutEffect,\n type FragmentInstance,\n type JSX,\n type ActivityProps,\n} from 'react'\nimport ReactDOM from 'react-dom'\nimport {\n LayoutRouterContext,\n GlobalLayoutRouterContext,\n TemplateContext,\n} from '../../shared/lib/app-router-context.shared-runtime'\nimport { unresolvedThenable } from './unresolved-thenable'\nimport { ErrorBoundary } from './error-boundary'\nimport { disableSmoothScrollDuringRouteTransition } from '../../shared/lib/router/utils/disable-smooth-scroll'\nimport { RedirectBoundary } from './redirect-boundary'\nimport { HTTPAccessFallbackBoundary } from './http-access-fallback/error-boundary'\nimport {\n InstantValidationBoundaryContext,\n RenderValidationBoundaryAtThisLevel,\n} from './instant-validation/boundary'\nimport { createRouterCacheKey } from './router-reducer/create-router-cache-key'\nimport {\n useRouterBFCache,\n type RouterBFCacheEntry,\n} from './bfcache-state-manager'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport {\n NavigationPromisesContext,\n type NavigationPromises,\n} from '../../shared/lib/hooks-client-context.shared-runtime'\nimport { getParamValueFromCacheKey } from '../route-params'\nimport type { Params } from '../../server/request/params'\nimport { isDeferredRsc } from './router-reducer/ppr-navigations'\n\nconst enableNewScrollHandler = process.env.__NEXT_APP_NEW_SCROLL_HANDLER\n\nconst __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = (\n ReactDOM as any\n).__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE\n\n// TODO-APP: Replace with new React API for finding dom nodes without a `ref` when available\n/**\n * Wraps ReactDOM.findDOMNode with additional logic to hide React Strict Mode warning\n */\nfunction findDOMNode(\n instance: React.ReactInstance | null | undefined\n): Element | Text | null {\n // Tree-shake for server bundle\n if (typeof window === 'undefined') return null\n\n // __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode is null during module init.\n // We need to lazily reference it.\n const internal_reactDOMfindDOMNode =\n __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode\n return internal_reactDOMfindDOMNode(instance)\n}\n\nconst rectProperties = [\n 'bottom',\n 'height',\n 'left',\n 'right',\n 'top',\n 'width',\n 'x',\n 'y',\n] as const\n/**\n * Check if a HTMLElement is hidden or fixed/sticky position\n */\nfunction shouldSkipElement(element: HTMLElement) {\n // we ignore fixed or sticky positioned elements since they'll likely pass the \"in-viewport\" check\n // and will result in a situation we bail on scroll because of something like a fixed nav,\n // even though the actual page content is offscreen\n if (['sticky', 'fixed'].includes(getComputedStyle(element).position)) {\n return true\n }\n\n // Uses `getBoundingClientRect` to check if the element is hidden instead of `offsetParent`\n // because `offsetParent` doesn't consider document/body\n const rect = element.getBoundingClientRect()\n return rectProperties.every((item) => rect[item] === 0)\n}\n\n/**\n * Check if the top corner of the HTMLElement is in the viewport.\n */\nfunction topOfElementInViewport(\n instance: HTMLElement | FragmentInstance,\n viewportHeight: number\n): boolean {\n const rects = instance.getClientRects()\n if (rects.length === 0) {\n // Just to be explicit.\n return false\n }\n let elementTop = Number.POSITIVE_INFINITY\n for (let i = 0; i < rects.length; i++) {\n const rect = rects[i]\n if (rect.top < elementTop) {\n elementTop = rect.top\n }\n }\n return elementTop >= 0 && elementTop <= viewportHeight\n}\n\n/**\n * Find the DOM node for a hash fragment.\n * If `top` the page has to scroll to the top of the page. This mirrors the browser's behavior.\n * If the hash fragment is an id, the page has to scroll to the element with that id.\n * If the hash fragment is a name, the page has to scroll to the first element with that name.\n */\nfunction getHashFragmentDomNode(hashFragment: string) {\n // If the hash fragment is `top` the page has to scroll to the top of the page.\n if (hashFragment === 'top') {\n return document.body\n }\n\n // If the hash fragment is an id, the page has to scroll to the element with that id.\n return (\n document.getElementById(hashFragment) ??\n // If the hash fragment is a name, the page has to scroll to the first element with that name.\n document.getElementsByName(hashFragment)[0]\n )\n}\ninterface ScrollAndMaybeFocusHandlerProps {\n focusAndScrollRef: FocusAndScrollRef\n children: React.ReactNode\n cacheNode: CacheNode\n}\nclass InnerScrollAndFocusHandlerOld extends React.Component<ScrollAndMaybeFocusHandlerProps> {\n handlePotentialScroll = () => {\n // Handle scroll and focus, it's only applied once.\n const { focusAndScrollRef, cacheNode } = this.props\n\n const scrollRef = focusAndScrollRef.forceScroll\n ? focusAndScrollRef.scrollRef\n : cacheNode.scrollRef\n if (scrollRef === null || !scrollRef.current) return\n\n let domNode:\n | ReturnType<typeof getHashFragmentDomNode>\n | ReturnType<typeof findDOMNode> = null\n const hashFragment = focusAndScrollRef.hashFragment\n\n if (hashFragment) {\n domNode = getHashFragmentDomNode(hashFragment)\n }\n\n // `findDOMNode` is tricky because it returns just the first child if the component is a fragment.\n // This already caused a bug where the first child was a <link/> in head.\n if (!domNode) {\n domNode = findDOMNode(this)\n }\n\n // If there is no DOM node this layout-router level is skipped. It'll be handled higher-up in the tree.\n if (!(domNode instanceof Element)) {\n return\n }\n\n // Verify if the element is a HTMLElement and if we want to consider it for scroll behavior.\n // If the element is skipped, try to select the next sibling and try again.\n while (!(domNode instanceof HTMLElement) || shouldSkipElement(domNode)) {\n if (process.env.NODE_ENV !== 'production') {\n if (domNode.parentElement?.localName === 'head') {\n // We enter this state when metadata was rendered as part of the page or via Next.js.\n // This is always a bug in Next.js and caused by React hoisting metadata.\n // Fixed with `experimental.appNewScrollHandler`\n }\n }\n\n // No siblings found that match the criteria are found, so handle scroll higher up in the tree instead.\n if (domNode.nextElementSibling === null) {\n return\n }\n domNode = domNode.nextElementSibling\n }\n\n // Mark as scrolled so no other segment scrolls for this navigation.\n scrollRef.current = false\n\n disableSmoothScrollDuringRouteTransition(\n () => {\n // In case of hash scroll, we only need to scroll the element into view\n if (hashFragment) {\n domNode.scrollIntoView()\n\n return\n }\n // Store the current viewport height because reading `clientHeight` causes a reflow,\n // and it won't change during this function.\n const htmlElement = document.documentElement\n const viewportHeight = htmlElement.clientHeight\n\n // If the element's top edge is already in the viewport, exit early.\n if (topOfElementInViewport(domNode, viewportHeight)) {\n return\n }\n\n // Otherwise, try scrolling go the top of the document to be backward compatible with pages\n // scrollIntoView() called on `<html/>` element scrolls horizontally on chrome and firefox (that shouldn't happen)\n // We could use it to scroll horizontally following RTL but that also seems to be broken - it will always scroll left\n // scrollLeft = 0 also seems to ignore RTL and manually checking for RTL is too much hassle so we will scroll just vertically\n htmlElement.scrollTop = 0\n\n // Scroll to domNode if domNode is not in viewport when scrolled to top of document\n if (!topOfElementInViewport(domNode, viewportHeight)) {\n // Scroll into view doesn't scroll horizontally by default when not needed\n domNode.scrollIntoView()\n }\n },\n {\n // We will force layout by querying domNode position\n dontForceLayout: true,\n onlyHashChange: focusAndScrollRef.onlyHashChange,\n }\n )\n\n // Mutate after scrolling so that it can be read by `disableSmoothScrollDuringRouteTransition`\n focusAndScrollRef.onlyHashChange = false\n focusAndScrollRef.hashFragment = null\n\n // Set focus on the element\n domNode.focus()\n }\n\n componentDidMount() {\n this.handlePotentialScroll()\n }\n\n componentDidUpdate() {\n this.handlePotentialScroll()\n }\n\n render() {\n return this.props.children\n }\n}\n\n/**\n * Fork of InnerScrollAndFocusHandlerOld using Fragment refs for scrolling.\n * No longer focuses the first host descendant.\n */\nfunction InnerScrollHandlerNew(props: ScrollAndMaybeFocusHandlerProps) {\n const childrenRef = React.useRef<FragmentInstance>(null)\n\n useLayoutEffect(\n () => {\n const { focusAndScrollRef, cacheNode } = props\n\n const scrollRef = focusAndScrollRef.forceScroll\n ? focusAndScrollRef.scrollRef\n : cacheNode.scrollRef\n if (scrollRef === null || !scrollRef.current) return\n\n let instance: FragmentInstance | HTMLElement | null = null\n const hashFragment = focusAndScrollRef.hashFragment\n\n if (hashFragment) {\n instance = getHashFragmentDomNode(hashFragment)\n }\n\n if (!instance) {\n instance = childrenRef.current\n }\n\n // If there is no DOM node this layout-router level is skipped. It'll be handled higher-up in the tree.\n if (instance === null) {\n return\n }\n\n // Mark as scrolled so no other segment scrolls for this navigation.\n scrollRef.current = false\n\n // This handler intentionally leaves focus untouched; resetting focus on\n // navigation is deferred.\n\n disableSmoothScrollDuringRouteTransition(\n () => {\n // In case of hash scroll, we only need to scroll the element into view\n if (hashFragment) {\n instance.scrollIntoView()\n\n return\n }\n // Store the current viewport height because reading `clientHeight` causes a reflow,\n // and it won't change during this function.\n const htmlElement = document.documentElement\n const viewportHeight = htmlElement.clientHeight\n\n // If the element's top edge is already in the viewport, exit early.\n if (topOfElementInViewport(instance, viewportHeight)) {\n return\n }\n\n // Otherwise, try scrolling go the top of the document to be backward compatible with pages\n // scrollIntoView() called on `<html/>` element scrolls horizontally on chrome and firefox (that shouldn't happen)\n // We could use it to scroll horizontally following RTL but that also seems to be broken - it will always scroll left\n // scrollLeft = 0 also seems to ignore RTL and manually checking for RTL is too much hassle so we will scroll just vertically\n htmlElement.scrollTop = 0\n\n // Scroll to domNode if domNode is not in viewport when scrolled to top of document\n if (!topOfElementInViewport(instance, viewportHeight)) {\n // Scroll into view doesn't scroll horizontally by default when not needed\n instance.scrollIntoView()\n }\n },\n {\n // We will force layout by querying domNode position\n dontForceLayout: true,\n onlyHashChange: focusAndScrollRef.onlyHashChange,\n }\n )\n\n // Mutate after scrolling so that it can be read by `disableSmoothScrollDuringRouteTransition`\n focusAndScrollRef.onlyHashChange = false\n focusAndScrollRef.hashFragment = null\n },\n // Used to run on every commit. We may be able to be smarter about this\n // but be prepared for lots of manual testing.\n undefined\n )\n\n return <Fragment ref={childrenRef}>{props.children}</Fragment>\n}\n\nconst InnerScrollAndMaybeFocusHandler = enableNewScrollHandler\n ? InnerScrollHandlerNew\n : InnerScrollAndFocusHandlerOld\n\nfunction ScrollAndMaybeFocusHandler({\n children,\n cacheNode,\n}: {\n children: React.ReactNode\n cacheNode: CacheNode\n}) {\n const context = useContext(GlobalLayoutRouterContext)\n if (!context) {\n throw new Error('invariant global layout router not mounted')\n }\n\n return (\n <InnerScrollAndMaybeFocusHandler\n focusAndScrollRef={context.focusAndScrollRef}\n cacheNode={cacheNode}\n >\n {children}\n </InnerScrollAndMaybeFocusHandler>\n )\n}\n\n/**\n * InnerLayoutRouter handles rendering the provided segment based on the cache.\n */\nfunction InnerLayoutRouter({\n tree,\n segmentPath,\n debugNameContext,\n cacheNode: maybeCacheNode,\n params,\n url,\n isActive,\n}: {\n tree: FlightRouterState\n segmentPath: FlightSegmentPath\n debugNameContext: string\n cacheNode: CacheNode | null\n params: Params\n url: string\n isActive: boolean\n}) {\n const context = useContext(GlobalLayoutRouterContext)\n const parentNavPromises = useContext(NavigationPromisesContext)\n\n if (!context) {\n throw new Error('invariant global layout router not mounted')\n }\n\n const cacheNode =\n maybeCacheNode !== null\n ? maybeCacheNode\n : // This segment is not in the cache. Suspend indefinitely.\n //\n // This should only be reachable for inactive/hidden segments, during\n // prerendering The active segment should always be consistent with the\n // CacheNode tree. Regardless, if we don't have a matching CacheNode, we\n // must suspend rather than render nothing, to prevent showing an\n // inconsistent route.\n\n (use(unresolvedThenable) as never)\n\n // `rsc` represents the renderable node for this segment.\n\n // If this segment has a `prefetchRsc`, it's the statically prefetched data.\n // We should use that on initial render instead of `rsc`. Then we'll switch\n // to `rsc` when the dynamic response streams in.\n //\n // If no prefetch data is available, then we go straight to rendering `rsc`.\n const resolvedPrefetchRsc =\n cacheNode.prefetchRsc !== null ? cacheNode.prefetchRsc : cacheNode.rsc\n\n // We use `useDeferredValue` to handle switching between the prefetched and\n // final values. The second argument is returned on initial render, then it\n // re-renders with the first argument.\n const rsc: any = useDeferredValue(cacheNode.rsc, resolvedPrefetchRsc)\n\n // `rsc` is either a React node or a promise for a React node, except we\n // special case `null` to represent that this segment's data is missing. If\n // it's a promise, we need to unwrap it so we can determine whether or not the\n // data is missing.\n let resolvedRsc: React.ReactNode\n if (isDeferredRsc(rsc)) {\n const unwrappedRsc = use(rsc)\n if (unwrappedRsc === null) {\n // If the promise was resolved to `null`, it means the data for this\n // segment was not returned by the server. Suspend indefinitely. When this\n // happens, the router is responsible for triggering a new state update to\n // un-suspend this segment.\n use(unresolvedThenable) as never\n }\n resolvedRsc = unwrappedRsc\n } else {\n // This is not a deferred RSC promise. Don't need to unwrap it.\n if (rsc === null) {\n use(unresolvedThenable) as never\n }\n resolvedRsc = rsc\n }\n\n // In dev, we create a NavigationPromisesContext containing the instrumented promises that provide\n // `useSelectedLayoutSegment` and `useSelectedLayoutSegments`.\n // Promises are cached outside of render to survive suspense retries.\n let navigationPromises: NavigationPromises | null = null\n if (process.env.NODE_ENV !== 'production') {\n const { createNestedLayoutNavigationPromises } =\n require('./navigation-devtools') as typeof import('./navigation-devtools')\n\n navigationPromises = createNestedLayoutNavigationPromises(\n tree,\n parentNavPromises\n )\n }\n\n let children = resolvedRsc\n\n if (navigationPromises) {\n children = (\n <NavigationPromisesContext.Provider value={navigationPromises}>\n {resolvedRsc}\n </NavigationPromisesContext.Provider>\n )\n }\n\n children = (\n // The layout router context narrows down tree and childNodes at each level.\n <LayoutRouterContext.Provider\n value={{\n parentTree: tree,\n parentCacheNode: cacheNode,\n parentSegmentPath: segmentPath,\n parentParams: params,\n // This is always set to null as we enter a child segment. It's\n // populated by LoadingBoundaryProvider the next time we reach a\n // loading boundary.\n parentLoadingData: null,\n debugNameContext: debugNameContext,\n\n // TODO-APP: overriding of url for parallel routes\n url: url,\n isActive: isActive,\n }}\n >\n {children}\n </LayoutRouterContext.Provider>\n )\n\n return children\n}\n\nexport function LoadingBoundaryProvider({\n loading,\n children,\n}: {\n loading: LoadingModuleData\n children: React.ReactNode\n}) {\n // Provides the data needed to render a loading.tsx boundary, via context.\n //\n // loading.tsx creates a Suspense boundary around each of a layout's child\n // slots. (Might be bit confusing to think about the data flow, but: if\n // loading.tsx and layout.tsx are in the same directory, they are assigned\n // to the same CacheNode.)\n //\n // This provider component does not render the Suspense boundary directly;\n // that's handled by LoadingBoundary.\n //\n // TODO: For simplicity, we should combine this provider with LoadingBoundary\n // and render the Suspense boundary directly. The only real benefit of doing\n // it separately is so that when there are multiple parallel routes, we only\n // send the boundary data once, rather than once per child. But that's a\n // negligible benefit and can be achieved via caching instead.\n const parentContext = use(LayoutRouterContext)\n if (parentContext === null) {\n return children\n }\n // All values except for parentLoadingData are the same as the parent context.\n return (\n <LayoutRouterContext.Provider\n value={{\n parentTree: parentContext.parentTree,\n parentCacheNode: parentContext.parentCacheNode,\n parentSegmentPath: parentContext.parentSegmentPath,\n parentParams: parentContext.parentParams,\n parentLoadingData: loading,\n debugNameContext: parentContext.debugNameContext,\n url: parentContext.url,\n isActive: parentContext.isActive,\n }}\n >\n {children}\n </LayoutRouterContext.Provider>\n )\n}\n\n/**\n * Renders suspense boundary with the provided \"loading\" property as the fallback.\n * If no loading property is provided it renders the children without a suspense boundary.\n */\nfunction LoadingBoundary({\n name,\n loading,\n children,\n}: {\n name: ActivityProps['name']\n loading: LoadingModuleData | null\n children: React.ReactNode\n}): JSX.Element {\n // TODO: For LoadingBoundary, and the other built-in boundary types, don't\n // wrap in an extra function component if no user-defined boundary is\n // provided. In other words, inline this conditional wrapping logic into\n // the parent component. More efficient and keeps unnecessary junk out of\n // the component stack.\n if (loading !== null) {\n const loadingRsc = loading[0]\n const loadingStyles = loading[1]\n const loadingScripts = loading[2]\n return (\n <Suspense\n name={name}\n fallback={\n <>\n {loadingStyles}\n {loadingScripts}\n {loadingRsc}\n </>\n }\n >\n {children}\n </Suspense>\n )\n }\n\n return <>{children}</>\n}\n\n/**\n * OuterLayoutRouter handles the current segment as well as <Offscreen> rendering of other segments.\n * It can be rendered next to each other with a different `parallelRouterKey`, allowing for Parallel routes.\n */\nexport default function OuterLayoutRouter({\n parallelRouterKey,\n error,\n errorStyles,\n errorScripts,\n templateStyles,\n templateScripts,\n template,\n notFound,\n forbidden,\n unauthorized,\n segmentViewBoundaries,\n}: {\n parallelRouterKey: string\n error: ErrorComponent | undefined\n errorStyles: React.ReactNode | undefined\n errorScripts: React.ReactNode | undefined\n templateStyles: React.ReactNode | undefined\n templateScripts: React.ReactNode | undefined\n template: React.ReactNode\n notFound: React.ReactNode | undefined\n forbidden: React.ReactNode | undefined\n unauthorized: React.ReactNode | undefined\n segmentViewBoundaries?: React.ReactNode\n}) {\n const context = useContext(LayoutRouterContext)\n if (!context) {\n throw new Error('invariant expected layout router to be mounted')\n }\n\n const {\n parentTree,\n parentCacheNode,\n parentSegmentPath,\n parentParams,\n parentLoadingData,\n url,\n isActive,\n debugNameContext,\n } = context\n\n // Get the CacheNode for this segment by reading it from the parent segment's\n // child map.\n const parentTreeSegment = parentTree[0]\n const segmentPath =\n parentSegmentPath === null\n ? // TODO: The root segment value is currently omitted from the segment\n // path. This has led to a bunch of special cases scattered throughout\n // the code. We should clean this up.\n [parallelRouterKey]\n : parentSegmentPath.concat([parentTreeSegment, parallelRouterKey])\n\n // The \"state\" key of a segment is the one passed to React — it represents the\n // identity of the UI tree. Whenever the state key changes, the tree is\n // recreated and the state is reset. In the App Router model, search params do\n // not cause state to be lost, so two segments with the same segment path but\n // different search params should have the same state key.\n //\n // The \"cache\" key of a segment, however, *does* include the search params, if\n // it's possible that the segment accessed the search params on the server.\n // (This only applies to page segments; layout segments cannot access search\n // params on the server.)\n const activeTree = parentTree[1][parallelRouterKey]\n const maybeParentSlots = parentCacheNode.slots\n if (activeTree === undefined || maybeParentSlots === null) {\n // Could not find a matching segment. The client tree is inconsistent with\n // the server tree. Suspend indefinitely; the router will have already\n // detected the inconsistency when handling the server response, and\n // triggered a refresh of the page to recover.\n use(unresolvedThenable) as never\n }\n\n let maybeValidationBoundaryId: string | null = null\n if (typeof window === 'undefined' && process.env.__NEXT_CACHE_COMPONENTS) {\n maybeValidationBoundaryId = use(InstantValidationBoundaryContext)\n }\n\n const activeSegment = activeTree[0]\n const activeCacheNode = maybeParentSlots![parallelRouterKey] ?? null\n const activeStateKey = createRouterCacheKey(activeSegment, true) // no search params\n\n // At each level of the route tree, not only do we render the currently\n // active segment — we also render the last N segments that were active at\n // this level inside a hidden <Activity> boundary, to preserve their state\n // if or when the user navigates to them again.\n //\n // bfcacheEntry is a linked list of FlightRouterStates.\n let bfcacheEntry: RouterBFCacheEntry | null = useRouterBFCache(\n activeTree,\n activeCacheNode,\n activeStateKey\n )\n let children: Array<React.ReactNode> = []\n do {\n const tree = bfcacheEntry.tree\n const cacheNode = bfcacheEntry.cacheNode\n const stateKey = bfcacheEntry.stateKey\n const segment = tree[0]\n\n /*\n - Error boundary\n - Only renders error boundary if error component is provided.\n - Rendered for each segment to ensure they have their own error state.\n - When gracefully degrade for bots, skip rendering error boundary.\n - Loading boundary\n - Only renders suspense boundary if loading components is provided.\n - Rendered for each segment to ensure they have their own loading state.\n - Passed to the router during rendering to ensure it can be immediately rendered when suspending on a Flight fetch.\n */\n\n let segmentBoundaryTriggerNode: React.ReactNode = null\n let segmentViewStateNode: React.ReactNode = null\n if (process.env.NODE_ENV !== 'production') {\n const { SegmentBoundaryTriggerNode, SegmentViewStateNode } =\n require('../../next-devtools/userspace/app/segment-explorer-node') as typeof import('../../next-devtools/userspace/app/segment-explorer-node')\n\n const pagePrefix = normalizeAppPath(url)\n segmentViewStateNode = (\n <SegmentViewStateNode key={pagePrefix} page={pagePrefix} />\n )\n\n segmentBoundaryTriggerNode = (\n <>\n <SegmentBoundaryTriggerNode />\n </>\n )\n }\n\n let params = parentParams\n if (Array.isArray(segment)) {\n // This segment contains a route param. Accumulate these as we traverse\n // down the router tree. The result represents the set of params that\n // the layout/page components are permitted to access below this point.\n const paramName = segment[0]\n const paramCacheKey = segment[1]\n const paramType = segment[2]\n const paramValue = getParamValueFromCacheKey(paramCacheKey, paramType)\n if (paramValue !== null) {\n params = {\n ...parentParams,\n [paramName]: paramValue,\n }\n }\n }\n\n const debugName = getBoundaryDebugNameFromSegment(segment)\n // `debugNameContext` represents the nearest non-\"virtual\" parent segment.\n // `getBoundaryDebugNameFromSegment` returns undefined for virtual segments.\n // So if `debugName` is undefined, the context is passed through unchanged.\n const childDebugNameContext = debugName ?? debugNameContext\n\n // In practical terms, clicking this name in the Suspense DevTools\n // should select the child slots of that layout.\n //\n // So the name we apply to the Activity boundary is actually based on\n // the nearest parent segments.\n //\n // We skip over \"virtual\" parents, i.e. ones inserted by Next.js that\n // don't correspond to application-defined code.\n const isVirtual = debugName === undefined\n const debugNameToDisplay = isVirtual ? undefined : debugNameContext\n\n let templateValue = (\n <ScrollAndMaybeFocusHandler cacheNode={cacheNode}>\n <ErrorBoundary\n errorComponent={error}\n errorStyles={errorStyles}\n errorScripts={errorScripts}\n >\n <LoadingBoundary\n name={debugNameToDisplay}\n // TODO: The loading module data for a segment is stored on the\n // parent, then applied to each of that parent segment's\n // parallel route slots. In the simple case where there's only\n // one parallel route (the `children` slot), this is no\n // different from if the loading module data were stored on the\n // child directly. But I'm not sure this actually makes sense\n // when there are multiple parallel routes. It's not a huge\n // issue because you always have the option to define a narrower\n // loading boundary for a particular slot. But this sort of\n // smells like an implementation accident to me.\n loading={parentLoadingData}\n >\n <HTTPAccessFallbackBoundary\n notFound={notFound}\n forbidden={forbidden}\n unauthorized={unauthorized}\n >\n <RedirectBoundary>\n <InnerLayoutRouter\n url={url}\n tree={tree}\n params={params}\n cacheNode={cacheNode}\n segmentPath={segmentPath}\n debugNameContext={childDebugNameContext}\n isActive={isActive && stateKey === activeStateKey}\n />\n {segmentBoundaryTriggerNode}\n </RedirectBoundary>\n </HTTPAccessFallbackBoundary>\n </LoadingBoundary>\n </ErrorBoundary>\n {segmentViewStateNode}\n </ScrollAndMaybeFocusHandler>\n )\n\n if (\n typeof window === 'undefined' &&\n process.env.__NEXT_CACHE_COMPONENTS &&\n typeof maybeValidationBoundaryId === 'string'\n ) {\n templateValue = (\n <RenderValidationBoundaryAtThisLevel id={maybeValidationBoundaryId}>\n {templateValue}\n </RenderValidationBoundaryAtThisLevel>\n )\n }\n\n let child = (\n <TemplateContext.Provider key={stateKey} value={templateValue}>\n {templateStyles}\n {templateScripts}\n {template}\n </TemplateContext.Provider>\n )\n\n if (process.env.NODE_ENV !== 'production') {\n const { SegmentStateProvider } =\n require('../../next-devtools/userspace/app/segment-explorer-node') as typeof import('../../next-devtools/userspace/app/segment-explorer-node')\n\n child = (\n <SegmentStateProvider key={stateKey}>\n {child}\n {segmentViewBoundaries}\n </SegmentStateProvider>\n )\n }\n\n if (process.env.__NEXT_CACHE_COMPONENTS) {\n child = (\n <Activity\n name={debugNameToDisplay}\n key={stateKey}\n mode={stateKey === activeStateKey ? 'visible' : 'hidden'}\n >\n {child}\n </Activity>\n )\n }\n\n children.push(child)\n\n bfcacheEntry = bfcacheEntry.next\n } while (bfcacheEntry !== null)\n\n return children\n}\n\nfunction getBoundaryDebugNameFromSegment(segment: Segment): string | undefined {\n if (segment === '/') {\n // Reached the root\n return '/'\n }\n if (typeof segment === 'string') {\n if (isVirtualLayout(segment)) {\n return undefined\n } else {\n return segment + '/'\n }\n }\n const paramCacheKey = segment[1]\n return paramCacheKey + '/'\n}\n\nfunction isVirtualLayout(segment: string): boolean {\n return (\n // This is inserted by the loader. Uses double-underscore convention\n // (like __PAGE__ and __DEFAULT__) to avoid collisions with\n // user-defined route groups.\n segment === '(__SLOT__)'\n )\n}\n"],"names":["React","Activity","Fragment","useContext","use","Suspense","useDeferredValue","useLayoutEffect","ReactDOM","LayoutRouterContext","GlobalLayoutRouterContext","TemplateContext","unresolvedThenable","ErrorBoundary","disableSmoothScrollDuringRouteTransition","RedirectBoundary","HTTPAccessFallbackBoundary","InstantValidationBoundaryContext","RenderValidationBoundaryAtThisLevel","createRouterCacheKey","useRouterBFCache","normalizeAppPath","NavigationPromisesContext","getParamValueFromCacheKey","isDeferredRsc","enableNewScrollHandler","process","env","__NEXT_APP_NEW_SCROLL_HANDLER","__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","findDOMNode","instance","window","internal_reactDOMfindDOMNode","rectProperties","shouldSkipElement","element","includes","getComputedStyle","position","rect","getBoundingClientRect","every","item","topOfElementInViewport","viewportHeight","rects","getClientRects","length","elementTop","Number","POSITIVE_INFINITY","i","top","getHashFragmentDomNode","hashFragment","document","body","getElementById","getElementsByName","InnerScrollAndFocusHandlerOld","Component","componentDidMount","handlePotentialScroll","componentDidUpdate","render","props","children","focusAndScrollRef","cacheNode","scrollRef","forceScroll","current","domNode","Element","HTMLElement","NODE_ENV","parentElement","localName","nextElementSibling","scrollIntoView","htmlElement","documentElement","clientHeight","scrollTop","dontForceLayout","onlyHashChange","focus","InnerScrollHandlerNew","childrenRef","useRef","undefined","ref","InnerScrollAndMaybeFocusHandler","ScrollAndMaybeFocusHandler","context","Error","InnerLayoutRouter","tree","segmentPath","debugNameContext","maybeCacheNode","params","url","isActive","parentNavPromises","resolvedPrefetchRsc","prefetchRsc","rsc","resolvedRsc","unwrappedRsc","navigationPromises","createNestedLayoutNavigationPromises","require","Provider","value","parentTree","parentCacheNode","parentSegmentPath","parentParams","parentLoadingData","LoadingBoundaryProvider","loading","parentContext","LoadingBoundary","name","loadingRsc","loadingStyles","loadingScripts","fallback","OuterLayoutRouter","parallelRouterKey","error","errorStyles","errorScripts","templateStyles","templateScripts","template","notFound","forbidden","unauthorized","segmentViewBoundaries","parentTreeSegment","concat","activeTree","maybeParentSlots","slots","maybeValidationBoundaryId","__NEXT_CACHE_COMPONENTS","activeSegment","activeCacheNode","activeStateKey","bfcacheEntry","stateKey","segment","segmentBoundaryTriggerNode","segmentViewStateNode","SegmentBoundaryTriggerNode","SegmentViewStateNode","pagePrefix","page","Array","isArray","paramName","paramCacheKey","paramType","paramValue","debugName","getBoundaryDebugNameFromSegment","childDebugNameContext","isVirtual","debugNameToDisplay","templateValue","errorComponent","id","child","SegmentStateProvider","mode","push","next","isVirtualLayout"],"mappings":"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","ignoreList":[0]} |
@@ -28,3 +28,3 @@ /* global location */ // imports polyfill from `@next/polyfill-module` after build. | ||
| import { isNextRouterError } from './components/is-next-router-error'; | ||
| export const version = "16.3.0-canary.102"; | ||
| export const version = "16.3.0-canary.103"; | ||
| export let router; | ||
@@ -31,0 +31,0 @@ export const emitter = mitt(); |
@@ -20,3 +20,3 @@ import { readFileSync, writeFileSync } from 'fs'; | ||
| const data = await res.json(); | ||
| const versionData = data.versions["16.3.0-canary.102"]; | ||
| const versionData = data.versions["16.3.0-canary.103"]; | ||
| return { | ||
@@ -54,3 +54,3 @@ os: versionData.os, | ||
| lockfileParsed.dependencies[pkg] = { | ||
| version: "16.3.0-canary.102", | ||
| version: "16.3.0-canary.103", | ||
| resolved: pkgData.tarball, | ||
@@ -63,3 +63,3 @@ integrity: pkgData.integrity, | ||
| lockfileParsed.packages[pkg] = { | ||
| version: "16.3.0-canary.102", | ||
| version: "16.3.0-canary.103", | ||
| resolved: pkgData.tarball, | ||
@@ -66,0 +66,0 @@ integrity: pkgData.integrity, |
@@ -369,2 +369,3 @@ import { VALID_LOADERS } from '../shared/lib/image-config'; | ||
| turbopackFileSystemCacheForBuild: z.boolean().optional(), | ||
| turbopackSeedCacheFromWorktree: z.boolean().optional(), | ||
| turbopackSourceMaps: z.boolean().optional(), | ||
@@ -371,0 +372,0 @@ turbopackInputSourceMaps: z.boolean().optional(), |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../../../src/server/config-schema.ts"],"sourcesContent":["import type { NextConfig } from './config'\nimport { VALID_LOADERS } from '../shared/lib/image-config'\n\nimport { z } from 'next/dist/compiled/zod'\nimport type zod from 'next/dist/compiled/zod'\n\nimport type { SizeLimit } from '../types'\nimport {\n LIGHTNINGCSS_FEATURE_NAMES,\n type ExportPathMap,\n type TurbopackLoaderItem,\n type TurbopackOptions,\n type TurbopackRuleConfigItem,\n type TurbopackRuleConfigCollection,\n type TurbopackRuleCondition,\n type TurbopackLoaderBuiltinCondition,\n} from './config-shared'\nimport type {\n Header,\n Rewrite,\n RouteHas,\n Redirect,\n} from '../lib/load-custom-routes'\nimport { SUPPORTED_TEST_RUNNERS_LIST } from '../cli/next-test'\n\n// A custom zod schema for the SizeLimit type\nconst zSizeLimit = z.custom<SizeLimit>((val) => {\n if (typeof val === 'number' || typeof val === 'string') {\n return true\n }\n return false\n})\n\nconst zExportMap: zod.ZodType<ExportPathMap> = z.record(\n z.string(),\n z.object({\n page: z.string(),\n query: z.any(), // NextParsedUrlQuery\n\n // private optional properties\n _fallbackRouteParams: z.array(z.any()).optional(),\n _isAppDir: z.boolean().optional(),\n _isDynamicError: z.boolean().optional(),\n _isRoutePPREnabled: z.boolean().optional(),\n _allowEmptyStaticShell: z.boolean().optional(),\n _isFallbackUpgradeable: z.boolean().optional(),\n })\n)\n\nconst zRouteHas: zod.ZodType<RouteHas> = z.union([\n z.object({\n type: z.enum(['header', 'query', 'cookie']),\n key: z.string(),\n value: z.string().optional(),\n }),\n z.object({\n type: z.literal('host'),\n key: z.undefined().optional(),\n value: z.string(),\n }),\n])\n\nconst zRewrite: zod.ZodType<Rewrite> = z.object({\n source: z.string(),\n destination: z.string(),\n basePath: z.literal(false).optional(),\n locale: z.literal(false).optional(),\n has: z.array(zRouteHas).optional(),\n missing: z.array(zRouteHas).optional(),\n internal: z.boolean().optional(),\n})\n\nconst zRedirect: zod.ZodType<Redirect> = z\n .object({\n source: z.string(),\n destination: z.string(),\n basePath: z.literal(false).optional(),\n locale: z.literal(false).optional(),\n has: z.array(zRouteHas).optional(),\n missing: z.array(zRouteHas).optional(),\n internal: z.boolean().optional(),\n })\n .and(\n z.union([\n z.object({\n statusCode: z.never().optional(),\n permanent: z.boolean(),\n }),\n z.object({\n statusCode: z.number(),\n permanent: z.never().optional(),\n }),\n ])\n )\n\nconst zHeader: zod.ZodType<Header> = z.object({\n source: z.string(),\n basePath: z.literal(false).optional(),\n locale: z.literal(false).optional(),\n headers: z.array(z.object({ key: z.string(), value: z.string() })),\n has: z.array(zRouteHas).optional(),\n missing: z.array(zRouteHas).optional(),\n\n internal: z.boolean().optional(),\n})\n\nconst zTurbopackLoaderItem: zod.ZodType<TurbopackLoaderItem> = z.union([\n z.string(),\n z.strictObject({\n loader: z.string(),\n // Any JSON value can be used as turbo loader options, so use z.any() here\n options: z.record(z.string(), z.any()).optional(),\n }),\n])\n\nconst zTurbopackLoaderBuiltinCondition: zod.ZodType<TurbopackLoaderBuiltinCondition> =\n z.union([\n z.literal('browser'),\n z.literal('foreign'),\n z.literal('development'),\n z.literal('production'),\n z.literal('node'),\n z.literal('edge-light'),\n ])\n\nconst zTurbopackCondition: zod.ZodType<TurbopackRuleCondition> = z.union([\n z.strictObject({ all: z.lazy(() => z.array(zTurbopackCondition)) }),\n z.strictObject({ any: z.lazy(() => z.array(zTurbopackCondition)) }),\n z.strictObject({ not: z.lazy(() => zTurbopackCondition) }),\n zTurbopackLoaderBuiltinCondition,\n z.strictObject({\n path: z.union([z.string(), z.instanceof(RegExp)]).optional(),\n content: z.instanceof(RegExp).optional(),\n query: z.union([z.string(), z.instanceof(RegExp)]).optional(),\n contentType: z.union([z.string(), z.instanceof(RegExp)]).optional(),\n }),\n])\n\nconst zTurbopackModuleType = z.enum([\n 'asset',\n 'ecmascript',\n 'typescript',\n 'css',\n 'css-module',\n 'wasm',\n 'raw',\n 'node',\n 'bytes',\n])\n\nconst zTurbopackRuleConfigItem: zod.ZodType<TurbopackRuleConfigItem> =\n z.strictObject({\n loaders: z.array(zTurbopackLoaderItem).optional(),\n as: z.string().optional(),\n condition: zTurbopackCondition.optional(),\n type: zTurbopackModuleType.optional(),\n })\n\nconst zTurbopackRuleConfigCollection: zod.ZodType<TurbopackRuleConfigCollection> =\n z.union([\n zTurbopackRuleConfigItem,\n z.array(z.union([zTurbopackLoaderItem, zTurbopackRuleConfigItem])),\n ])\n\nconst zTurbopackConfig: zod.ZodType<TurbopackOptions> = z.strictObject({\n rules: z.record(z.string(), zTurbopackRuleConfigCollection).optional(),\n resolveAlias: z\n .record(\n z.string(),\n z.union([\n z.string(),\n z.array(z.string()),\n z.record(z.string(), z.union([z.string(), z.array(z.string())])),\n ])\n )\n .optional(),\n resolveExtensions: z.array(z.string()).optional(),\n root: z.string().optional(),\n debugIds: z.boolean().optional(),\n chunkLoadingGlobal: z.string().optional(),\n ignoreIssue: z\n .array(\n z.object({\n path: z.union([z.string(), z.instanceof(RegExp)]),\n title: z.union([z.string(), z.instanceof(RegExp)]).optional(),\n description: z.union([z.string(), z.instanceof(RegExp)]).optional(),\n })\n )\n .optional(),\n})\n\nexport const experimentalSchema = {\n outputHashSalt: z.string().optional(),\n useSkewCookie: z.boolean().optional(),\n after: z.boolean().optional(),\n appNavFailHandling: z.boolean().optional(),\n appNewScrollHandler: z.boolean().optional(),\n coldCacheBadge: z.boolean().optional(),\n preloadEntriesOnStart: z.boolean().optional(),\n allowedRevalidateHeaderKeys: z.array(z.string()).optional(),\n staleTimes: z\n .object({\n dynamic: z.number().optional(),\n static: z.number().gte(30).optional(),\n })\n .optional(),\n cacheLife: z\n .record(\n z.object({\n stale: z.number().optional(),\n revalidate: z.number().optional(),\n expire: z.number().optional(),\n })\n )\n .optional(),\n cacheHandlers: z.record(z.string(), z.string().optional()).optional(),\n clientRouterFilter: z.boolean().optional(),\n clientRouterFilterRedirects: z.boolean().optional(),\n clientRouterFilterAllowedRate: z.number().optional(),\n cpus: z.number().optional(),\n memoryBasedWorkersCount: z.boolean().optional(),\n craCompat: z.boolean().optional(),\n caseSensitiveRoutes: z.boolean().optional(),\n clientParamParsingOrigins: z.array(z.string()).optional(),\n cachedNavigations: z.boolean().optional(),\n dynamicOnHover: z.boolean().optional(),\n useOffline: z.boolean().optional(),\n optimisticRouting: z.boolean().optional(),\n instrumentationClientRouterTransitionEvents: z.boolean().optional(),\n varyParams: z.boolean().optional(),\n prefetchInlining: z\n .union([\n z.boolean(),\n z.object({\n maxSize: z.number().optional(),\n maxBundleSize: z.number().optional(),\n }),\n ])\n .optional(),\n devMemoryThresholdRestart: z.boolean().optional(),\n disableOptimizedLoading: z.boolean().optional(),\n disablePostcssPresetEnv: z.boolean().optional(),\n cacheComponents: z.boolean().optional(),\n inlineCss: z.boolean().optional(),\n esmExternals: z.union([z.boolean(), z.literal('loose')]).optional(),\n serverActions: z\n .object({\n bodySizeLimit: zSizeLimit.optional(),\n allowedOrigins: z.array(z.string()).optional(),\n })\n .optional(),\n maxPostponedStateSize: zSizeLimit.optional(),\n // The original type was Record<string, any>\n extensionAlias: z.record(z.string(), z.any()).optional(),\n externalDir: z.boolean().optional(),\n externalMiddlewareRewritesResolve: z.boolean().optional(),\n externalProxyRewritesResolve: z.boolean().optional(),\n exposeTestingApiInProductionBuild: z.boolean().optional(),\n requestInsights: z.boolean().optional(),\n fallbackNodePolyfills: z.literal(false).optional(),\n fetchCacheKeyPrefix: z.string().optional(),\n forceSwcTransforms: z.boolean().optional(),\n fullySpecified: z.boolean().optional(),\n gzipSize: z.boolean().optional(),\n imgOptConcurrency: z.number().int().optional().nullable(),\n imgOptOperationCache: z.boolean().optional().nullable(),\n imgOptTimeoutInSeconds: z.number().int().optional(),\n imgOptMaxInputPixels: z.number().int().optional(),\n imgOptSequentialRead: z.boolean().optional().nullable(),\n isrFlushToDisk: z.boolean().optional(),\n largePageDataBytes: z.number().optional(),\n linkNoTouchStart: z.boolean().optional(),\n manualClientBasePath: z.boolean().optional(),\n middlewarePrefetch: z.enum(['strict', 'flexible']).optional(),\n proxyPrefetch: z.enum(['strict', 'flexible']).optional(),\n middlewareClientMaxBodySize: zSizeLimit.optional(),\n proxyClientMaxBodySize: zSizeLimit.optional(),\n multiZoneDraftMode: z.boolean().optional(),\n cssChunking: z\n .union([\n z.boolean(),\n z.literal('strict'),\n z.literal('loose'),\n z.literal('graph'),\n z.strictObject({ type: z.literal('strict') }),\n z.strictObject({ type: z.literal('loose') }),\n z.strictObject({\n type: z.literal('graph'),\n requestCost: z.number().nonnegative().finite().optional(),\n weightDistribution: z.number().nonnegative().finite().optional(),\n }),\n ])\n .optional(),\n nextScriptWorkers: z.boolean().optional(),\n // The critter option is unknown, use z.any() here\n optimizeCss: z.union([z.boolean(), z.any()]).optional(),\n optimisticClientCache: z.boolean().optional(),\n parallelServerCompiles: z.boolean().optional(),\n parallelServerBuildTraces: z.boolean().optional(),\n ppr: z\n .union([z.boolean(), z.literal('incremental')])\n .readonly()\n .optional(),\n taint: z.boolean().optional(),\n blockingSSR: z.boolean().optional(),\n prerenderEarlyExit: z.boolean().optional(),\n proxyTimeout: z.number().gte(0).optional(),\n rootParams: z.boolean().optional(),\n mcpServer: z.boolean().optional(),\n removeUncaughtErrorAndRejectionListeners: z.boolean().optional(),\n validateRSCRequestHeaders: z.boolean().optional(),\n scrollRestoration: z.boolean().optional(),\n sri: z\n .object({\n algorithm: z.enum(['sha256', 'sha384', 'sha512']).optional(),\n })\n .optional(),\n swcPlugins: z\n // The specific swc plugin's option is unknown, use z.any() here\n .array(z.tuple([z.string(), z.record(z.string(), z.any())]))\n .optional(),\n swcEnvOptions: z\n .object({\n mode: z.enum(['usage', 'entry']).optional(),\n coreJs: z.string().optional(),\n skip: z.array(z.string()).optional(),\n include: z.array(z.string()).optional(),\n exclude: z.array(z.string()).optional(),\n shippedProposals: z.boolean().optional(),\n forceAllTransforms: z.boolean().optional(),\n debug: z.boolean().optional(),\n loose: z.boolean().optional(),\n })\n .optional(),\n swcTraceProfiling: z.boolean().optional(),\n // NonNullable<webpack.Configuration['experiments']>['buildHttp']\n urlImports: z.any().optional(),\n workerThreads: z.boolean().optional(),\n webVitalsAttribution: z\n .array(\n z.union([\n z.literal('CLS'),\n z.literal('FCP'),\n z.literal('FID'),\n z.literal('INP'),\n z.literal('LCP'),\n z.literal('TTFB'),\n ])\n )\n .optional(),\n // This is partial set of mdx-rs transform options we support, aligned\n // with next_core::next_config::MdxRsOptions. Ensure both types are kept in sync.\n mdxRs: z\n .union([\n z.boolean(),\n z.object({\n development: z.boolean().optional(),\n jsxRuntime: z.string().optional(),\n jsxImportSource: z.string().optional(),\n providerImportSource: z.string().optional(),\n mdxType: z.enum(['gfm', 'commonmark']).optional(),\n }),\n ])\n .optional(),\n transitionIndicator: z.boolean().optional(),\n gestureTransition: z.boolean().optional(),\n typedRoutes: z.boolean().optional(),\n webpackBuildWorker: z.boolean().optional(),\n webpackMemoryOptimizations: z.boolean().optional(),\n turbopackMemoryEviction: z\n .union([z.literal(false), z.literal('full'), z.literal('auto')])\n .optional(),\n turbopackPluginRuntimeStrategy: z\n .enum(['workerThreads', 'childProcesses'])\n .optional(),\n turbopackMinify: z.boolean().optional(),\n turbopackFileSystemCacheForDev: z.boolean().optional(),\n turbopackFileSystemCacheForBuild: z.boolean().optional(),\n turbopackSourceMaps: z.boolean().optional(),\n turbopackInputSourceMaps: z.boolean().optional(),\n turbopackModuleFragments: z.boolean().optional(),\n turbopackRemoveUnusedImports: z.boolean().optional(),\n turbopackRemoveUnusedExports: z.boolean().optional(),\n turbopackScopeHoisting: z.boolean().optional(),\n turbopackGenerateComponentChunks: z.boolean().optional(),\n turbopackSharedRuntime: z.boolean().optional(),\n turbopackChunkingHeuristics: z\n .object({\n firstPageLoadPriority: z.number().min(0).max(1).optional(),\n priorityRoutes: z.array(z.instanceof(RegExp)).optional(),\n priorityBoost: z.number().min(1).optional(),\n requestCost: z.number().min(0).max(1_000_000).optional(),\n })\n .optional(),\n turbopackWorkerAssetPrefix: z.string().optional(),\n turbopackClientSideNestedAsyncChunking: z.boolean().optional(),\n turbopackServerSideNestedAsyncChunking: z.boolean().optional(),\n turbopackImportTypeBytes: z.boolean().optional(),\n turbopackUseBuiltinBabel: z.boolean().optional(),\n turbopackUseBuiltinSass: z.boolean().optional(),\n turbopackLocalPostcssConfig: z.boolean().optional(),\n turbopackModuleIds: z.enum(['named', 'deterministic']).optional(),\n turbopackInferModuleSideEffects: z.boolean().optional(),\n turbopackCjsTreeShaking: z.boolean().optional(),\n turbopackServerFastRefresh: z.boolean().optional(),\n optimizePackageImports: z.array(z.string()).optional(),\n optimizeServerReact: z.boolean().optional(),\n strictRouteTypes: z.boolean().optional(),\n useTypeScriptCli: z.boolean().optional(),\n clientTraceMetadata: z.array(z.string()).optional(),\n serverMinification: z.boolean().optional(),\n serverSourceMaps: z.boolean().optional(),\n useWasmBinary: z.boolean().optional(),\n useLightningcss: z.boolean().optional(),\n lightningCssFeatures: z\n .object({\n include: z.array(z.enum(LIGHTNINGCSS_FEATURE_NAMES)).optional(),\n exclude: z.array(z.enum(LIGHTNINGCSS_FEATURE_NAMES)).optional(),\n })\n .optional(),\n testProxy: z.boolean().optional(),\n defaultTestRunner: z.enum(SUPPORTED_TEST_RUNNERS_LIST).optional(),\n allowDevelopmentBuild: z.literal(true).optional(),\n\n reactDebugChannel: z.boolean().optional(),\n instantInsights: z\n .object({\n validationLevel: z\n .enum([\n 'warning',\n 'manual-warning',\n 'experimental-error',\n 'experimental-manual-error',\n ])\n .optional(),\n })\n .optional(),\n devValidationWorker: z.boolean().optional(),\n staticGenerationRetryCount: z.number().int().optional(),\n staticGenerationMaxConcurrency: z.number().int().optional(),\n staticGenerationMinPagesPerWorker: z.number().int().optional(),\n typedEnv: z.boolean().optional(),\n serverComponentsHmrCache: z.boolean().optional(),\n serverComponentsHmrCancellation: z.boolean().optional(),\n authInterrupts: z.boolean().optional(),\n useCache: z.boolean().optional(),\n durableUseCacheEntries: z.boolean().optional(),\n useCacheTimeout: z.number().positive().optional(),\n slowModuleDetection: z\n .object({\n buildTimeThresholdMs: z.number().int(),\n })\n .optional(),\n globalNotFound: z.boolean().optional(),\n turbopackRustReactCompiler: z.boolean().optional(),\n browserDebugInfoInTerminal: z\n .union([\n z.boolean(),\n z.enum(['error', 'warn', 'verbose']),\n z.object({\n level: z.enum(['error', 'warn', 'verbose']).optional(),\n depthLimit: z.number().int().positive().optional(),\n edgeLimit: z.number().int().positive().optional(),\n showSourceLocation: z.boolean().optional(),\n }),\n ])\n .optional(),\n lockDistDir: z.boolean().optional(),\n hideLogsAfterAbort: z.boolean().optional(),\n runtimeServerDeploymentId: z.boolean().optional(),\n supportsImmutableAssets: z.boolean().optional(),\n deferredEntries: z.array(z.string()).optional(),\n onBeforeDeferredEntries: z.function().returns(z.promise(z.void())).optional(),\n reportSystemEnvInlining: z.enum(['warn', 'error']).optional(),\n}\n\nexport const configSchema: zod.ZodType<NextConfig> = z.lazy(() =>\n z.strictObject({\n adapterPath: z.string().optional(),\n agentRules: z.boolean().optional(),\n allowedDevOrigins: z.array(z.string()).optional(),\n assetPrefix: z.string().optional(),\n basePath: z.string().optional(),\n bundlePagesRouterDependencies: z.boolean().optional(),\n cacheComponents: z.boolean().optional(),\n cacheHandler: z.string().min(1).optional(),\n cacheHandlers: z.record(z.string(), z.string().optional()).optional(),\n cacheLife: z\n .record(\n z.object({\n stale: z.number().optional(),\n revalidate: z.number().optional(),\n expire: z.number().optional(),\n })\n )\n .optional(),\n cacheMaxMemorySize: z.number().optional(),\n cleanDistDir: z.boolean().optional(),\n compiler: z\n .strictObject({\n emotion: z\n .union([\n z.boolean(),\n z.object({\n sourceMap: z.boolean().optional(),\n autoLabel: z\n .union([\n z.literal('always'),\n z.literal('dev-only'),\n z.literal('never'),\n ])\n .optional(),\n labelFormat: z.string().min(1).optional(),\n importMap: z\n .record(\n z.string(),\n z.record(\n z.string(),\n z.object({\n canonicalImport: z\n .tuple([z.string(), z.string()])\n .optional(),\n styledBaseImport: z\n .tuple([z.string(), z.string()])\n .optional(),\n })\n )\n )\n .optional(),\n }),\n ])\n .optional(),\n reactRemoveProperties: z\n .union([\n z.boolean().optional(),\n z.object({\n properties: z.array(z.string()).optional(),\n }),\n ])\n .optional(),\n relay: z\n .object({\n src: z.string(),\n artifactDirectory: z.string().optional(),\n language: z.enum(['javascript', 'typescript', 'flow']).optional(),\n eagerEsModules: z.boolean().optional(),\n })\n .optional(),\n removeConsole: z\n .union([\n z.boolean().optional(),\n z.object({\n exclude: z.array(z.string()).min(1).optional(),\n }),\n ])\n .optional(),\n styledComponents: z.union([\n z.boolean().optional(),\n z.object({\n displayName: z.boolean().optional(),\n topLevelImportPaths: z.array(z.string()).optional(),\n ssr: z.boolean().optional(),\n fileName: z.boolean().optional(),\n meaninglessFileNames: z.array(z.string()).optional(),\n minify: z.boolean().optional(),\n transpileTemplateLiterals: z.boolean().optional(),\n namespace: z.string().min(1).optional(),\n pure: z.boolean().optional(),\n cssProp: z.boolean().optional(),\n }),\n ]),\n styledJsx: z.union([\n z.boolean().optional(),\n z.object({\n useLightningcss: z.boolean().optional(),\n }),\n ]),\n define: z\n .record(z.string(), z.union([z.string(), z.number(), z.boolean()]))\n .optional(),\n defineServer: z\n .record(z.string(), z.union([z.string(), z.number(), z.boolean()]))\n .optional(),\n runAfterProductionCompile: z\n .function()\n .returns(z.promise(z.void()))\n .optional(),\n })\n .optional(),\n compress: z.boolean().optional(),\n configOrigin: z.string().optional(),\n crossOrigin: z\n .union([z.literal('anonymous'), z.literal('use-credentials')])\n .optional(),\n deploymentId: z.string().optional(),\n supportsImmutableAssets: z.boolean().optional(),\n outputHashSalt: z.string().optional(),\n devIndicators: z\n .union([\n z.object({\n position: z\n .union([\n z.literal('bottom-left'),\n z.literal('bottom-right'),\n z.literal('top-left'),\n z.literal('top-right'),\n ])\n .optional(),\n }),\n z.literal(false),\n ])\n .optional(),\n distDir: z.string().min(1).optional(),\n env: z.record(z.string(), z.union([z.string(), z.undefined()])).optional(),\n enablePrerenderSourceMaps: z.boolean().optional(),\n excludeDefaultMomentLocales: z.boolean().optional(),\n experimental: z.strictObject(experimentalSchema).optional(),\n exportPathMap: z\n .function()\n .args(\n zExportMap,\n z.object({\n dev: z.boolean(),\n dir: z.string(),\n outDir: z.string().nullable(),\n distDir: z.string(),\n buildId: z.string(),\n })\n )\n .returns(z.union([zExportMap, z.promise(zExportMap)]))\n .optional(),\n generateBuildId: z\n .function()\n .args()\n .returns(\n z.union([\n z.string(),\n z.null(),\n z.promise(z.union([z.string(), z.null()])),\n ])\n )\n .optional(),\n generateEtags: z.boolean().optional(),\n headers: z\n .function()\n .args()\n .returns(z.promise(z.array(zHeader)))\n .optional(),\n htmlLimitedBots: z.instanceof(RegExp).optional(),\n httpAgentOptions: z\n .strictObject({ keepAlive: z.boolean().optional() })\n .optional(),\n i18n: z\n .strictObject({\n defaultLocale: z.string().min(1),\n domains: z\n .array(\n z.strictObject({\n defaultLocale: z.string().min(1),\n domain: z.string().min(1),\n http: z.literal(true).optional(),\n locales: z.array(z.string().min(1)).optional(),\n })\n )\n .optional(),\n localeDetection: z.literal(false).optional(),\n locales: z.array(z.string().min(1)),\n })\n .nullable()\n .optional(),\n images: z\n .strictObject({\n localPatterns: z\n .array(\n z.strictObject({\n pathname: z.string().optional(),\n search: z.string().optional(),\n })\n )\n .max(25)\n .optional(),\n remotePatterns: z\n .array(\n z.union([\n z.instanceof(URL),\n z.strictObject({\n hostname: z.string(),\n pathname: z.string().optional(),\n port: z.string().max(5).optional(),\n protocol: z.enum(['http', 'https']).optional(),\n search: z.string().optional(),\n }),\n ])\n )\n .max(50)\n .optional(),\n unoptimized: z.boolean().optional(),\n customCacheHandler: z.boolean().optional(),\n contentSecurityPolicy: z.string().optional(),\n contentDispositionType: z.enum(['inline', 'attachment']).optional(),\n dangerouslyAllowSVG: z.boolean().optional(),\n dangerouslyAllowLocalIP: z.boolean().optional(),\n deviceSizes: z\n .array(z.number().int().gte(1).lte(10000))\n .max(25)\n .optional(),\n disableStaticImages: z.boolean().optional(),\n domains: z.array(z.string()).max(50).optional(),\n formats: z\n .array(z.enum(['image/avif', 'image/webp']))\n .max(4)\n .optional(),\n imageSizes: z\n .array(z.number().int().gte(1).lte(10000))\n .min(0)\n .max(25)\n .optional(),\n loader: z.enum(VALID_LOADERS).optional(),\n loaderFile: z.string().optional(),\n maximumDiskCacheSize: z.number().int().min(0).optional(),\n maximumRedirects: z.number().int().min(0).max(20).optional(),\n maximumResponseBody: z\n .number()\n .int()\n .min(1)\n .max(Number.MAX_SAFE_INTEGER)\n .optional(),\n minimumCacheTTL: z.number().int().gte(0).optional(),\n path: z.string().optional(),\n qualities: z\n .array(z.number().int().gte(1).lte(100))\n .min(1)\n .max(20)\n .optional(),\n })\n .optional(),\n logging: z\n .union([\n z.object({\n fetches: z\n .object({\n fullUrl: z.boolean().optional(),\n hmrRefreshes: z.boolean().optional(),\n })\n .optional(),\n incomingRequests: z\n .union([\n z.boolean(),\n z.object({\n ignore: z.array(z.instanceof(RegExp)),\n }),\n ])\n .optional(),\n serverFunctions: z.boolean().optional(),\n browserToTerminal: z\n .union([z.boolean(), z.enum(['error', 'warn'])])\n .optional(),\n }),\n z.literal(false),\n ])\n .optional(),\n modularizeImports: z\n .record(\n z.string(),\n z.object({\n transform: z.union([z.string(), z.record(z.string(), z.string())]),\n preventFullImport: z.boolean().optional(),\n skipDefaultConversion: z.boolean().optional(),\n })\n )\n .optional(),\n onDemandEntries: z\n .strictObject({\n maxInactiveAge: z.number().optional(),\n pagesBufferLength: z.number().optional(),\n })\n .optional(),\n output: z.enum(['standalone', 'export']).optional(),\n outputFileTracingRoot: z.string().optional(),\n outputFileTracingExcludes: z\n .record(z.string(), z.array(z.string()))\n .optional(),\n outputFileTracingIncludes: z\n .record(z.string(), z.array(z.string()))\n .optional(),\n pageExtensions: z.array(z.string()).min(1).optional(),\n instrumentationClientInject: z.array(z.string()).optional(),\n partialPrefetching: z\n .union([z.boolean(), z.literal('unstable_eager')])\n .optional(),\n poweredByHeader: z.boolean().optional(),\n productionBrowserSourceMaps: z.boolean().optional(),\n reactCompiler: z.union([\n z.boolean(),\n z\n .object({\n compilationMode: z.enum(['infer', 'annotation', 'all']).optional(),\n panicThreshold: z\n .enum(['none', 'critical_errors', 'all_errors'])\n .optional(),\n })\n .optional(),\n ]),\n reactProductionProfiling: z.boolean().optional(),\n reactStrictMode: z.boolean().nullable().optional(),\n reactMaxHeadersLength: z.number().nonnegative().int().optional(),\n redirects: z\n .function()\n .args()\n .returns(z.promise(z.array(zRedirect)))\n .optional(),\n rewrites: z\n .function()\n .args()\n .returns(\n z.promise(\n z.union([\n z.array(zRewrite),\n z.object({\n beforeFiles: z.array(zRewrite),\n afterFiles: z.array(zRewrite),\n fallback: z.array(zRewrite),\n }),\n ])\n )\n )\n .optional(),\n // sassOptions properties are unknown besides implementation, use z.any() here\n sassOptions: z\n .object({\n implementation: z.string().optional(),\n })\n .catchall(z.any())\n .optional(),\n serverExternalPackages: z.array(z.string()).optional(),\n skipMiddlewareUrlNormalize: z.boolean().optional(),\n skipProxyUrlNormalize: z.boolean().optional(),\n skipTrailingSlashRedirect: z.boolean().optional(),\n staticPageGenerationTimeout: z.number().optional(),\n expireTime: z.number().optional(),\n target: z.string().optional(),\n trailingSlash: z.boolean().optional(),\n transpilePackages: z.array(z.string()).optional(),\n turbopack: zTurbopackConfig.optional(),\n typescript: z\n .strictObject({\n ignoreBuildErrors: z.boolean().optional(),\n tsconfigPath: z.string().min(1).optional(),\n })\n .optional(),\n typedRoutes: z.boolean().optional(),\n useFileSystemPublicRoutes: z.boolean().optional(),\n // The webpack config type is unknown, use z.any() here\n webpack: z.any().nullable().optional(),\n watchOptions: z\n .strictObject({\n pollIntervalMs: z.number().positive().finite().optional(),\n })\n .optional(),\n })\n)\n"],"names":["VALID_LOADERS","z","LIGHTNINGCSS_FEATURE_NAMES","SUPPORTED_TEST_RUNNERS_LIST","zSizeLimit","custom","val","zExportMap","record","string","object","page","query","any","_fallbackRouteParams","array","optional","_isAppDir","boolean","_isDynamicError","_isRoutePPREnabled","_allowEmptyStaticShell","_isFallbackUpgradeable","zRouteHas","union","type","enum","key","value","literal","undefined","zRewrite","source","destination","basePath","locale","has","missing","internal","zRedirect","and","statusCode","never","permanent","number","zHeader","headers","zTurbopackLoaderItem","strictObject","loader","options","zTurbopackLoaderBuiltinCondition","zTurbopackCondition","all","lazy","not","path","instanceof","RegExp","content","contentType","zTurbopackModuleType","zTurbopackRuleConfigItem","loaders","as","condition","zTurbopackRuleConfigCollection","zTurbopackConfig","rules","resolveAlias","resolveExtensions","root","debugIds","chunkLoadingGlobal","ignoreIssue","title","description","experimentalSchema","outputHashSalt","useSkewCookie","after","appNavFailHandling","appNewScrollHandler","coldCacheBadge","preloadEntriesOnStart","allowedRevalidateHeaderKeys","staleTimes","dynamic","static","gte","cacheLife","stale","revalidate","expire","cacheHandlers","clientRouterFilter","clientRouterFilterRedirects","clientRouterFilterAllowedRate","cpus","memoryBasedWorkersCount","craCompat","caseSensitiveRoutes","clientParamParsingOrigins","cachedNavigations","dynamicOnHover","useOffline","optimisticRouting","instrumentationClientRouterTransitionEvents","varyParams","prefetchInlining","maxSize","maxBundleSize","devMemoryThresholdRestart","disableOptimizedLoading","disablePostcssPresetEnv","cacheComponents","inlineCss","esmExternals","serverActions","bodySizeLimit","allowedOrigins","maxPostponedStateSize","extensionAlias","externalDir","externalMiddlewareRewritesResolve","externalProxyRewritesResolve","exposeTestingApiInProductionBuild","requestInsights","fallbackNodePolyfills","fetchCacheKeyPrefix","forceSwcTransforms","fullySpecified","gzipSize","imgOptConcurrency","int","nullable","imgOptOperationCache","imgOptTimeoutInSeconds","imgOptMaxInputPixels","imgOptSequentialRead","isrFlushToDisk","largePageDataBytes","linkNoTouchStart","manualClientBasePath","middlewarePrefetch","proxyPrefetch","middlewareClientMaxBodySize","proxyClientMaxBodySize","multiZoneDraftMode","cssChunking","requestCost","nonnegative","finite","weightDistribution","nextScriptWorkers","optimizeCss","optimisticClientCache","parallelServerCompiles","parallelServerBuildTraces","ppr","readonly","taint","blockingSSR","prerenderEarlyExit","proxyTimeout","rootParams","mcpServer","removeUncaughtErrorAndRejectionListeners","validateRSCRequestHeaders","scrollRestoration","sri","algorithm","swcPlugins","tuple","swcEnvOptions","mode","coreJs","skip","include","exclude","shippedProposals","forceAllTransforms","debug","loose","swcTraceProfiling","urlImports","workerThreads","webVitalsAttribution","mdxRs","development","jsxRuntime","jsxImportSource","providerImportSource","mdxType","transitionIndicator","gestureTransition","typedRoutes","webpackBuildWorker","webpackMemoryOptimizations","turbopackMemoryEviction","turbopackPluginRuntimeStrategy","turbopackMinify","turbopackFileSystemCacheForDev","turbopackFileSystemCacheForBuild","turbopackSourceMaps","turbopackInputSourceMaps","turbopackModuleFragments","turbopackRemoveUnusedImports","turbopackRemoveUnusedExports","turbopackScopeHoisting","turbopackGenerateComponentChunks","turbopackSharedRuntime","turbopackChunkingHeuristics","firstPageLoadPriority","min","max","priorityRoutes","priorityBoost","turbopackWorkerAssetPrefix","turbopackClientSideNestedAsyncChunking","turbopackServerSideNestedAsyncChunking","turbopackImportTypeBytes","turbopackUseBuiltinBabel","turbopackUseBuiltinSass","turbopackLocalPostcssConfig","turbopackModuleIds","turbopackInferModuleSideEffects","turbopackCjsTreeShaking","turbopackServerFastRefresh","optimizePackageImports","optimizeServerReact","strictRouteTypes","useTypeScriptCli","clientTraceMetadata","serverMinification","serverSourceMaps","useWasmBinary","useLightningcss","lightningCssFeatures","testProxy","defaultTestRunner","allowDevelopmentBuild","reactDebugChannel","instantInsights","validationLevel","devValidationWorker","staticGenerationRetryCount","staticGenerationMaxConcurrency","staticGenerationMinPagesPerWorker","typedEnv","serverComponentsHmrCache","serverComponentsHmrCancellation","authInterrupts","useCache","durableUseCacheEntries","useCacheTimeout","positive","slowModuleDetection","buildTimeThresholdMs","globalNotFound","turbopackRustReactCompiler","browserDebugInfoInTerminal","level","depthLimit","edgeLimit","showSourceLocation","lockDistDir","hideLogsAfterAbort","runtimeServerDeploymentId","supportsImmutableAssets","deferredEntries","onBeforeDeferredEntries","function","returns","promise","void","reportSystemEnvInlining","configSchema","adapterPath","agentRules","allowedDevOrigins","assetPrefix","bundlePagesRouterDependencies","cacheHandler","cacheMaxMemorySize","cleanDistDir","compiler","emotion","sourceMap","autoLabel","labelFormat","importMap","canonicalImport","styledBaseImport","reactRemoveProperties","properties","relay","src","artifactDirectory","language","eagerEsModules","removeConsole","styledComponents","displayName","topLevelImportPaths","ssr","fileName","meaninglessFileNames","minify","transpileTemplateLiterals","namespace","pure","cssProp","styledJsx","define","defineServer","runAfterProductionCompile","compress","configOrigin","crossOrigin","deploymentId","devIndicators","position","distDir","env","enablePrerenderSourceMaps","excludeDefaultMomentLocales","experimental","exportPathMap","args","dev","dir","outDir","buildId","generateBuildId","null","generateEtags","htmlLimitedBots","httpAgentOptions","keepAlive","i18n","defaultLocale","domains","domain","http","locales","localeDetection","images","localPatterns","pathname","search","remotePatterns","URL","hostname","port","protocol","unoptimized","customCacheHandler","contentSecurityPolicy","contentDispositionType","dangerouslyAllowSVG","dangerouslyAllowLocalIP","deviceSizes","lte","disableStaticImages","formats","imageSizes","loaderFile","maximumDiskCacheSize","maximumRedirects","maximumResponseBody","Number","MAX_SAFE_INTEGER","minimumCacheTTL","qualities","logging","fetches","fullUrl","hmrRefreshes","incomingRequests","ignore","serverFunctions","browserToTerminal","modularizeImports","transform","preventFullImport","skipDefaultConversion","onDemandEntries","maxInactiveAge","pagesBufferLength","output","outputFileTracingRoot","outputFileTracingExcludes","outputFileTracingIncludes","pageExtensions","instrumentationClientInject","partialPrefetching","poweredByHeader","productionBrowserSourceMaps","reactCompiler","compilationMode","panicThreshold","reactProductionProfiling","reactStrictMode","reactMaxHeadersLength","redirects","rewrites","beforeFiles","afterFiles","fallback","sassOptions","implementation","catchall","serverExternalPackages","skipMiddlewareUrlNormalize","skipProxyUrlNormalize","skipTrailingSlashRedirect","staticPageGenerationTimeout","expireTime","target","trailingSlash","transpilePackages","turbopack","typescript","ignoreBuildErrors","tsconfigPath","useFileSystemPublicRoutes","webpack","watchOptions","pollIntervalMs"],"mappings":"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","ignoreList":[0]} | ||
| {"version":3,"sources":["../../../src/server/config-schema.ts"],"sourcesContent":["import type { NextConfig } from './config'\nimport { VALID_LOADERS } from '../shared/lib/image-config'\n\nimport { z } from 'next/dist/compiled/zod'\nimport type zod from 'next/dist/compiled/zod'\n\nimport type { SizeLimit } from '../types'\nimport {\n LIGHTNINGCSS_FEATURE_NAMES,\n type ExportPathMap,\n type TurbopackLoaderItem,\n type TurbopackOptions,\n type TurbopackRuleConfigItem,\n type TurbopackRuleConfigCollection,\n type TurbopackRuleCondition,\n type TurbopackLoaderBuiltinCondition,\n} from './config-shared'\nimport type {\n Header,\n Rewrite,\n RouteHas,\n Redirect,\n} from '../lib/load-custom-routes'\nimport { SUPPORTED_TEST_RUNNERS_LIST } from '../cli/next-test'\n\n// A custom zod schema for the SizeLimit type\nconst zSizeLimit = z.custom<SizeLimit>((val) => {\n if (typeof val === 'number' || typeof val === 'string') {\n return true\n }\n return false\n})\n\nconst zExportMap: zod.ZodType<ExportPathMap> = z.record(\n z.string(),\n z.object({\n page: z.string(),\n query: z.any(), // NextParsedUrlQuery\n\n // private optional properties\n _fallbackRouteParams: z.array(z.any()).optional(),\n _isAppDir: z.boolean().optional(),\n _isDynamicError: z.boolean().optional(),\n _isRoutePPREnabled: z.boolean().optional(),\n _allowEmptyStaticShell: z.boolean().optional(),\n _isFallbackUpgradeable: z.boolean().optional(),\n })\n)\n\nconst zRouteHas: zod.ZodType<RouteHas> = z.union([\n z.object({\n type: z.enum(['header', 'query', 'cookie']),\n key: z.string(),\n value: z.string().optional(),\n }),\n z.object({\n type: z.literal('host'),\n key: z.undefined().optional(),\n value: z.string(),\n }),\n])\n\nconst zRewrite: zod.ZodType<Rewrite> = z.object({\n source: z.string(),\n destination: z.string(),\n basePath: z.literal(false).optional(),\n locale: z.literal(false).optional(),\n has: z.array(zRouteHas).optional(),\n missing: z.array(zRouteHas).optional(),\n internal: z.boolean().optional(),\n})\n\nconst zRedirect: zod.ZodType<Redirect> = z\n .object({\n source: z.string(),\n destination: z.string(),\n basePath: z.literal(false).optional(),\n locale: z.literal(false).optional(),\n has: z.array(zRouteHas).optional(),\n missing: z.array(zRouteHas).optional(),\n internal: z.boolean().optional(),\n })\n .and(\n z.union([\n z.object({\n statusCode: z.never().optional(),\n permanent: z.boolean(),\n }),\n z.object({\n statusCode: z.number(),\n permanent: z.never().optional(),\n }),\n ])\n )\n\nconst zHeader: zod.ZodType<Header> = z.object({\n source: z.string(),\n basePath: z.literal(false).optional(),\n locale: z.literal(false).optional(),\n headers: z.array(z.object({ key: z.string(), value: z.string() })),\n has: z.array(zRouteHas).optional(),\n missing: z.array(zRouteHas).optional(),\n\n internal: z.boolean().optional(),\n})\n\nconst zTurbopackLoaderItem: zod.ZodType<TurbopackLoaderItem> = z.union([\n z.string(),\n z.strictObject({\n loader: z.string(),\n // Any JSON value can be used as turbo loader options, so use z.any() here\n options: z.record(z.string(), z.any()).optional(),\n }),\n])\n\nconst zTurbopackLoaderBuiltinCondition: zod.ZodType<TurbopackLoaderBuiltinCondition> =\n z.union([\n z.literal('browser'),\n z.literal('foreign'),\n z.literal('development'),\n z.literal('production'),\n z.literal('node'),\n z.literal('edge-light'),\n ])\n\nconst zTurbopackCondition: zod.ZodType<TurbopackRuleCondition> = z.union([\n z.strictObject({ all: z.lazy(() => z.array(zTurbopackCondition)) }),\n z.strictObject({ any: z.lazy(() => z.array(zTurbopackCondition)) }),\n z.strictObject({ not: z.lazy(() => zTurbopackCondition) }),\n zTurbopackLoaderBuiltinCondition,\n z.strictObject({\n path: z.union([z.string(), z.instanceof(RegExp)]).optional(),\n content: z.instanceof(RegExp).optional(),\n query: z.union([z.string(), z.instanceof(RegExp)]).optional(),\n contentType: z.union([z.string(), z.instanceof(RegExp)]).optional(),\n }),\n])\n\nconst zTurbopackModuleType = z.enum([\n 'asset',\n 'ecmascript',\n 'typescript',\n 'css',\n 'css-module',\n 'wasm',\n 'raw',\n 'node',\n 'bytes',\n])\n\nconst zTurbopackRuleConfigItem: zod.ZodType<TurbopackRuleConfigItem> =\n z.strictObject({\n loaders: z.array(zTurbopackLoaderItem).optional(),\n as: z.string().optional(),\n condition: zTurbopackCondition.optional(),\n type: zTurbopackModuleType.optional(),\n })\n\nconst zTurbopackRuleConfigCollection: zod.ZodType<TurbopackRuleConfigCollection> =\n z.union([\n zTurbopackRuleConfigItem,\n z.array(z.union([zTurbopackLoaderItem, zTurbopackRuleConfigItem])),\n ])\n\nconst zTurbopackConfig: zod.ZodType<TurbopackOptions> = z.strictObject({\n rules: z.record(z.string(), zTurbopackRuleConfigCollection).optional(),\n resolveAlias: z\n .record(\n z.string(),\n z.union([\n z.string(),\n z.array(z.string()),\n z.record(z.string(), z.union([z.string(), z.array(z.string())])),\n ])\n )\n .optional(),\n resolveExtensions: z.array(z.string()).optional(),\n root: z.string().optional(),\n debugIds: z.boolean().optional(),\n chunkLoadingGlobal: z.string().optional(),\n ignoreIssue: z\n .array(\n z.object({\n path: z.union([z.string(), z.instanceof(RegExp)]),\n title: z.union([z.string(), z.instanceof(RegExp)]).optional(),\n description: z.union([z.string(), z.instanceof(RegExp)]).optional(),\n })\n )\n .optional(),\n})\n\nexport const experimentalSchema = {\n outputHashSalt: z.string().optional(),\n useSkewCookie: z.boolean().optional(),\n after: z.boolean().optional(),\n appNavFailHandling: z.boolean().optional(),\n appNewScrollHandler: z.boolean().optional(),\n coldCacheBadge: z.boolean().optional(),\n preloadEntriesOnStart: z.boolean().optional(),\n allowedRevalidateHeaderKeys: z.array(z.string()).optional(),\n staleTimes: z\n .object({\n dynamic: z.number().optional(),\n static: z.number().gte(30).optional(),\n })\n .optional(),\n cacheLife: z\n .record(\n z.object({\n stale: z.number().optional(),\n revalidate: z.number().optional(),\n expire: z.number().optional(),\n })\n )\n .optional(),\n cacheHandlers: z.record(z.string(), z.string().optional()).optional(),\n clientRouterFilter: z.boolean().optional(),\n clientRouterFilterRedirects: z.boolean().optional(),\n clientRouterFilterAllowedRate: z.number().optional(),\n cpus: z.number().optional(),\n memoryBasedWorkersCount: z.boolean().optional(),\n craCompat: z.boolean().optional(),\n caseSensitiveRoutes: z.boolean().optional(),\n clientParamParsingOrigins: z.array(z.string()).optional(),\n cachedNavigations: z.boolean().optional(),\n dynamicOnHover: z.boolean().optional(),\n useOffline: z.boolean().optional(),\n optimisticRouting: z.boolean().optional(),\n instrumentationClientRouterTransitionEvents: z.boolean().optional(),\n varyParams: z.boolean().optional(),\n prefetchInlining: z\n .union([\n z.boolean(),\n z.object({\n maxSize: z.number().optional(),\n maxBundleSize: z.number().optional(),\n }),\n ])\n .optional(),\n devMemoryThresholdRestart: z.boolean().optional(),\n disableOptimizedLoading: z.boolean().optional(),\n disablePostcssPresetEnv: z.boolean().optional(),\n cacheComponents: z.boolean().optional(),\n inlineCss: z.boolean().optional(),\n esmExternals: z.union([z.boolean(), z.literal('loose')]).optional(),\n serverActions: z\n .object({\n bodySizeLimit: zSizeLimit.optional(),\n allowedOrigins: z.array(z.string()).optional(),\n })\n .optional(),\n maxPostponedStateSize: zSizeLimit.optional(),\n // The original type was Record<string, any>\n extensionAlias: z.record(z.string(), z.any()).optional(),\n externalDir: z.boolean().optional(),\n externalMiddlewareRewritesResolve: z.boolean().optional(),\n externalProxyRewritesResolve: z.boolean().optional(),\n exposeTestingApiInProductionBuild: z.boolean().optional(),\n requestInsights: z.boolean().optional(),\n fallbackNodePolyfills: z.literal(false).optional(),\n fetchCacheKeyPrefix: z.string().optional(),\n forceSwcTransforms: z.boolean().optional(),\n fullySpecified: z.boolean().optional(),\n gzipSize: z.boolean().optional(),\n imgOptConcurrency: z.number().int().optional().nullable(),\n imgOptOperationCache: z.boolean().optional().nullable(),\n imgOptTimeoutInSeconds: z.number().int().optional(),\n imgOptMaxInputPixels: z.number().int().optional(),\n imgOptSequentialRead: z.boolean().optional().nullable(),\n isrFlushToDisk: z.boolean().optional(),\n largePageDataBytes: z.number().optional(),\n linkNoTouchStart: z.boolean().optional(),\n manualClientBasePath: z.boolean().optional(),\n middlewarePrefetch: z.enum(['strict', 'flexible']).optional(),\n proxyPrefetch: z.enum(['strict', 'flexible']).optional(),\n middlewareClientMaxBodySize: zSizeLimit.optional(),\n proxyClientMaxBodySize: zSizeLimit.optional(),\n multiZoneDraftMode: z.boolean().optional(),\n cssChunking: z\n .union([\n z.boolean(),\n z.literal('strict'),\n z.literal('loose'),\n z.literal('graph'),\n z.strictObject({ type: z.literal('strict') }),\n z.strictObject({ type: z.literal('loose') }),\n z.strictObject({\n type: z.literal('graph'),\n requestCost: z.number().nonnegative().finite().optional(),\n weightDistribution: z.number().nonnegative().finite().optional(),\n }),\n ])\n .optional(),\n nextScriptWorkers: z.boolean().optional(),\n // The critter option is unknown, use z.any() here\n optimizeCss: z.union([z.boolean(), z.any()]).optional(),\n optimisticClientCache: z.boolean().optional(),\n parallelServerCompiles: z.boolean().optional(),\n parallelServerBuildTraces: z.boolean().optional(),\n ppr: z\n .union([z.boolean(), z.literal('incremental')])\n .readonly()\n .optional(),\n taint: z.boolean().optional(),\n blockingSSR: z.boolean().optional(),\n prerenderEarlyExit: z.boolean().optional(),\n proxyTimeout: z.number().gte(0).optional(),\n rootParams: z.boolean().optional(),\n mcpServer: z.boolean().optional(),\n removeUncaughtErrorAndRejectionListeners: z.boolean().optional(),\n validateRSCRequestHeaders: z.boolean().optional(),\n scrollRestoration: z.boolean().optional(),\n sri: z\n .object({\n algorithm: z.enum(['sha256', 'sha384', 'sha512']).optional(),\n })\n .optional(),\n swcPlugins: z\n // The specific swc plugin's option is unknown, use z.any() here\n .array(z.tuple([z.string(), z.record(z.string(), z.any())]))\n .optional(),\n swcEnvOptions: z\n .object({\n mode: z.enum(['usage', 'entry']).optional(),\n coreJs: z.string().optional(),\n skip: z.array(z.string()).optional(),\n include: z.array(z.string()).optional(),\n exclude: z.array(z.string()).optional(),\n shippedProposals: z.boolean().optional(),\n forceAllTransforms: z.boolean().optional(),\n debug: z.boolean().optional(),\n loose: z.boolean().optional(),\n })\n .optional(),\n swcTraceProfiling: z.boolean().optional(),\n // NonNullable<webpack.Configuration['experiments']>['buildHttp']\n urlImports: z.any().optional(),\n workerThreads: z.boolean().optional(),\n webVitalsAttribution: z\n .array(\n z.union([\n z.literal('CLS'),\n z.literal('FCP'),\n z.literal('FID'),\n z.literal('INP'),\n z.literal('LCP'),\n z.literal('TTFB'),\n ])\n )\n .optional(),\n // This is partial set of mdx-rs transform options we support, aligned\n // with next_core::next_config::MdxRsOptions. Ensure both types are kept in sync.\n mdxRs: z\n .union([\n z.boolean(),\n z.object({\n development: z.boolean().optional(),\n jsxRuntime: z.string().optional(),\n jsxImportSource: z.string().optional(),\n providerImportSource: z.string().optional(),\n mdxType: z.enum(['gfm', 'commonmark']).optional(),\n }),\n ])\n .optional(),\n transitionIndicator: z.boolean().optional(),\n gestureTransition: z.boolean().optional(),\n typedRoutes: z.boolean().optional(),\n webpackBuildWorker: z.boolean().optional(),\n webpackMemoryOptimizations: z.boolean().optional(),\n turbopackMemoryEviction: z\n .union([z.literal(false), z.literal('full'), z.literal('auto')])\n .optional(),\n turbopackPluginRuntimeStrategy: z\n .enum(['workerThreads', 'childProcesses'])\n .optional(),\n turbopackMinify: z.boolean().optional(),\n turbopackFileSystemCacheForDev: z.boolean().optional(),\n turbopackFileSystemCacheForBuild: z.boolean().optional(),\n turbopackSeedCacheFromWorktree: z.boolean().optional(),\n turbopackSourceMaps: z.boolean().optional(),\n turbopackInputSourceMaps: z.boolean().optional(),\n turbopackModuleFragments: z.boolean().optional(),\n turbopackRemoveUnusedImports: z.boolean().optional(),\n turbopackRemoveUnusedExports: z.boolean().optional(),\n turbopackScopeHoisting: z.boolean().optional(),\n turbopackGenerateComponentChunks: z.boolean().optional(),\n turbopackSharedRuntime: z.boolean().optional(),\n turbopackChunkingHeuristics: z\n .object({\n firstPageLoadPriority: z.number().min(0).max(1).optional(),\n priorityRoutes: z.array(z.instanceof(RegExp)).optional(),\n priorityBoost: z.number().min(1).optional(),\n requestCost: z.number().min(0).max(1_000_000).optional(),\n })\n .optional(),\n turbopackWorkerAssetPrefix: z.string().optional(),\n turbopackClientSideNestedAsyncChunking: z.boolean().optional(),\n turbopackServerSideNestedAsyncChunking: z.boolean().optional(),\n turbopackImportTypeBytes: z.boolean().optional(),\n turbopackUseBuiltinBabel: z.boolean().optional(),\n turbopackUseBuiltinSass: z.boolean().optional(),\n turbopackLocalPostcssConfig: z.boolean().optional(),\n turbopackModuleIds: z.enum(['named', 'deterministic']).optional(),\n turbopackInferModuleSideEffects: z.boolean().optional(),\n turbopackCjsTreeShaking: z.boolean().optional(),\n turbopackServerFastRefresh: z.boolean().optional(),\n optimizePackageImports: z.array(z.string()).optional(),\n optimizeServerReact: z.boolean().optional(),\n strictRouteTypes: z.boolean().optional(),\n useTypeScriptCli: z.boolean().optional(),\n clientTraceMetadata: z.array(z.string()).optional(),\n serverMinification: z.boolean().optional(),\n serverSourceMaps: z.boolean().optional(),\n useWasmBinary: z.boolean().optional(),\n useLightningcss: z.boolean().optional(),\n lightningCssFeatures: z\n .object({\n include: z.array(z.enum(LIGHTNINGCSS_FEATURE_NAMES)).optional(),\n exclude: z.array(z.enum(LIGHTNINGCSS_FEATURE_NAMES)).optional(),\n })\n .optional(),\n testProxy: z.boolean().optional(),\n defaultTestRunner: z.enum(SUPPORTED_TEST_RUNNERS_LIST).optional(),\n allowDevelopmentBuild: z.literal(true).optional(),\n\n reactDebugChannel: z.boolean().optional(),\n instantInsights: z\n .object({\n validationLevel: z\n .enum([\n 'warning',\n 'manual-warning',\n 'experimental-error',\n 'experimental-manual-error',\n ])\n .optional(),\n })\n .optional(),\n devValidationWorker: z.boolean().optional(),\n staticGenerationRetryCount: z.number().int().optional(),\n staticGenerationMaxConcurrency: z.number().int().optional(),\n staticGenerationMinPagesPerWorker: z.number().int().optional(),\n typedEnv: z.boolean().optional(),\n serverComponentsHmrCache: z.boolean().optional(),\n serverComponentsHmrCancellation: z.boolean().optional(),\n authInterrupts: z.boolean().optional(),\n useCache: z.boolean().optional(),\n durableUseCacheEntries: z.boolean().optional(),\n useCacheTimeout: z.number().positive().optional(),\n slowModuleDetection: z\n .object({\n buildTimeThresholdMs: z.number().int(),\n })\n .optional(),\n globalNotFound: z.boolean().optional(),\n turbopackRustReactCompiler: z.boolean().optional(),\n browserDebugInfoInTerminal: z\n .union([\n z.boolean(),\n z.enum(['error', 'warn', 'verbose']),\n z.object({\n level: z.enum(['error', 'warn', 'verbose']).optional(),\n depthLimit: z.number().int().positive().optional(),\n edgeLimit: z.number().int().positive().optional(),\n showSourceLocation: z.boolean().optional(),\n }),\n ])\n .optional(),\n lockDistDir: z.boolean().optional(),\n hideLogsAfterAbort: z.boolean().optional(),\n runtimeServerDeploymentId: z.boolean().optional(),\n supportsImmutableAssets: z.boolean().optional(),\n deferredEntries: z.array(z.string()).optional(),\n onBeforeDeferredEntries: z.function().returns(z.promise(z.void())).optional(),\n reportSystemEnvInlining: z.enum(['warn', 'error']).optional(),\n}\n\nexport const configSchema: zod.ZodType<NextConfig> = z.lazy(() =>\n z.strictObject({\n adapterPath: z.string().optional(),\n agentRules: z.boolean().optional(),\n allowedDevOrigins: z.array(z.string()).optional(),\n assetPrefix: z.string().optional(),\n basePath: z.string().optional(),\n bundlePagesRouterDependencies: z.boolean().optional(),\n cacheComponents: z.boolean().optional(),\n cacheHandler: z.string().min(1).optional(),\n cacheHandlers: z.record(z.string(), z.string().optional()).optional(),\n cacheLife: z\n .record(\n z.object({\n stale: z.number().optional(),\n revalidate: z.number().optional(),\n expire: z.number().optional(),\n })\n )\n .optional(),\n cacheMaxMemorySize: z.number().optional(),\n cleanDistDir: z.boolean().optional(),\n compiler: z\n .strictObject({\n emotion: z\n .union([\n z.boolean(),\n z.object({\n sourceMap: z.boolean().optional(),\n autoLabel: z\n .union([\n z.literal('always'),\n z.literal('dev-only'),\n z.literal('never'),\n ])\n .optional(),\n labelFormat: z.string().min(1).optional(),\n importMap: z\n .record(\n z.string(),\n z.record(\n z.string(),\n z.object({\n canonicalImport: z\n .tuple([z.string(), z.string()])\n .optional(),\n styledBaseImport: z\n .tuple([z.string(), z.string()])\n .optional(),\n })\n )\n )\n .optional(),\n }),\n ])\n .optional(),\n reactRemoveProperties: z\n .union([\n z.boolean().optional(),\n z.object({\n properties: z.array(z.string()).optional(),\n }),\n ])\n .optional(),\n relay: z\n .object({\n src: z.string(),\n artifactDirectory: z.string().optional(),\n language: z.enum(['javascript', 'typescript', 'flow']).optional(),\n eagerEsModules: z.boolean().optional(),\n })\n .optional(),\n removeConsole: z\n .union([\n z.boolean().optional(),\n z.object({\n exclude: z.array(z.string()).min(1).optional(),\n }),\n ])\n .optional(),\n styledComponents: z.union([\n z.boolean().optional(),\n z.object({\n displayName: z.boolean().optional(),\n topLevelImportPaths: z.array(z.string()).optional(),\n ssr: z.boolean().optional(),\n fileName: z.boolean().optional(),\n meaninglessFileNames: z.array(z.string()).optional(),\n minify: z.boolean().optional(),\n transpileTemplateLiterals: z.boolean().optional(),\n namespace: z.string().min(1).optional(),\n pure: z.boolean().optional(),\n cssProp: z.boolean().optional(),\n }),\n ]),\n styledJsx: z.union([\n z.boolean().optional(),\n z.object({\n useLightningcss: z.boolean().optional(),\n }),\n ]),\n define: z\n .record(z.string(), z.union([z.string(), z.number(), z.boolean()]))\n .optional(),\n defineServer: z\n .record(z.string(), z.union([z.string(), z.number(), z.boolean()]))\n .optional(),\n runAfterProductionCompile: z\n .function()\n .returns(z.promise(z.void()))\n .optional(),\n })\n .optional(),\n compress: z.boolean().optional(),\n configOrigin: z.string().optional(),\n crossOrigin: z\n .union([z.literal('anonymous'), z.literal('use-credentials')])\n .optional(),\n deploymentId: z.string().optional(),\n supportsImmutableAssets: z.boolean().optional(),\n outputHashSalt: z.string().optional(),\n devIndicators: z\n .union([\n z.object({\n position: z\n .union([\n z.literal('bottom-left'),\n z.literal('bottom-right'),\n z.literal('top-left'),\n z.literal('top-right'),\n ])\n .optional(),\n }),\n z.literal(false),\n ])\n .optional(),\n distDir: z.string().min(1).optional(),\n env: z.record(z.string(), z.union([z.string(), z.undefined()])).optional(),\n enablePrerenderSourceMaps: z.boolean().optional(),\n excludeDefaultMomentLocales: z.boolean().optional(),\n experimental: z.strictObject(experimentalSchema).optional(),\n exportPathMap: z\n .function()\n .args(\n zExportMap,\n z.object({\n dev: z.boolean(),\n dir: z.string(),\n outDir: z.string().nullable(),\n distDir: z.string(),\n buildId: z.string(),\n })\n )\n .returns(z.union([zExportMap, z.promise(zExportMap)]))\n .optional(),\n generateBuildId: z\n .function()\n .args()\n .returns(\n z.union([\n z.string(),\n z.null(),\n z.promise(z.union([z.string(), z.null()])),\n ])\n )\n .optional(),\n generateEtags: z.boolean().optional(),\n headers: z\n .function()\n .args()\n .returns(z.promise(z.array(zHeader)))\n .optional(),\n htmlLimitedBots: z.instanceof(RegExp).optional(),\n httpAgentOptions: z\n .strictObject({ keepAlive: z.boolean().optional() })\n .optional(),\n i18n: z\n .strictObject({\n defaultLocale: z.string().min(1),\n domains: z\n .array(\n z.strictObject({\n defaultLocale: z.string().min(1),\n domain: z.string().min(1),\n http: z.literal(true).optional(),\n locales: z.array(z.string().min(1)).optional(),\n })\n )\n .optional(),\n localeDetection: z.literal(false).optional(),\n locales: z.array(z.string().min(1)),\n })\n .nullable()\n .optional(),\n images: z\n .strictObject({\n localPatterns: z\n .array(\n z.strictObject({\n pathname: z.string().optional(),\n search: z.string().optional(),\n })\n )\n .max(25)\n .optional(),\n remotePatterns: z\n .array(\n z.union([\n z.instanceof(URL),\n z.strictObject({\n hostname: z.string(),\n pathname: z.string().optional(),\n port: z.string().max(5).optional(),\n protocol: z.enum(['http', 'https']).optional(),\n search: z.string().optional(),\n }),\n ])\n )\n .max(50)\n .optional(),\n unoptimized: z.boolean().optional(),\n customCacheHandler: z.boolean().optional(),\n contentSecurityPolicy: z.string().optional(),\n contentDispositionType: z.enum(['inline', 'attachment']).optional(),\n dangerouslyAllowSVG: z.boolean().optional(),\n dangerouslyAllowLocalIP: z.boolean().optional(),\n deviceSizes: z\n .array(z.number().int().gte(1).lte(10000))\n .max(25)\n .optional(),\n disableStaticImages: z.boolean().optional(),\n domains: z.array(z.string()).max(50).optional(),\n formats: z\n .array(z.enum(['image/avif', 'image/webp']))\n .max(4)\n .optional(),\n imageSizes: z\n .array(z.number().int().gte(1).lte(10000))\n .min(0)\n .max(25)\n .optional(),\n loader: z.enum(VALID_LOADERS).optional(),\n loaderFile: z.string().optional(),\n maximumDiskCacheSize: z.number().int().min(0).optional(),\n maximumRedirects: z.number().int().min(0).max(20).optional(),\n maximumResponseBody: z\n .number()\n .int()\n .min(1)\n .max(Number.MAX_SAFE_INTEGER)\n .optional(),\n minimumCacheTTL: z.number().int().gte(0).optional(),\n path: z.string().optional(),\n qualities: z\n .array(z.number().int().gte(1).lte(100))\n .min(1)\n .max(20)\n .optional(),\n })\n .optional(),\n logging: z\n .union([\n z.object({\n fetches: z\n .object({\n fullUrl: z.boolean().optional(),\n hmrRefreshes: z.boolean().optional(),\n })\n .optional(),\n incomingRequests: z\n .union([\n z.boolean(),\n z.object({\n ignore: z.array(z.instanceof(RegExp)),\n }),\n ])\n .optional(),\n serverFunctions: z.boolean().optional(),\n browserToTerminal: z\n .union([z.boolean(), z.enum(['error', 'warn'])])\n .optional(),\n }),\n z.literal(false),\n ])\n .optional(),\n modularizeImports: z\n .record(\n z.string(),\n z.object({\n transform: z.union([z.string(), z.record(z.string(), z.string())]),\n preventFullImport: z.boolean().optional(),\n skipDefaultConversion: z.boolean().optional(),\n })\n )\n .optional(),\n onDemandEntries: z\n .strictObject({\n maxInactiveAge: z.number().optional(),\n pagesBufferLength: z.number().optional(),\n })\n .optional(),\n output: z.enum(['standalone', 'export']).optional(),\n outputFileTracingRoot: z.string().optional(),\n outputFileTracingExcludes: z\n .record(z.string(), z.array(z.string()))\n .optional(),\n outputFileTracingIncludes: z\n .record(z.string(), z.array(z.string()))\n .optional(),\n pageExtensions: z.array(z.string()).min(1).optional(),\n instrumentationClientInject: z.array(z.string()).optional(),\n partialPrefetching: z\n .union([z.boolean(), z.literal('unstable_eager')])\n .optional(),\n poweredByHeader: z.boolean().optional(),\n productionBrowserSourceMaps: z.boolean().optional(),\n reactCompiler: z.union([\n z.boolean(),\n z\n .object({\n compilationMode: z.enum(['infer', 'annotation', 'all']).optional(),\n panicThreshold: z\n .enum(['none', 'critical_errors', 'all_errors'])\n .optional(),\n })\n .optional(),\n ]),\n reactProductionProfiling: z.boolean().optional(),\n reactStrictMode: z.boolean().nullable().optional(),\n reactMaxHeadersLength: z.number().nonnegative().int().optional(),\n redirects: z\n .function()\n .args()\n .returns(z.promise(z.array(zRedirect)))\n .optional(),\n rewrites: z\n .function()\n .args()\n .returns(\n z.promise(\n z.union([\n z.array(zRewrite),\n z.object({\n beforeFiles: z.array(zRewrite),\n afterFiles: z.array(zRewrite),\n fallback: z.array(zRewrite),\n }),\n ])\n )\n )\n .optional(),\n // sassOptions properties are unknown besides implementation, use z.any() here\n sassOptions: z\n .object({\n implementation: z.string().optional(),\n })\n .catchall(z.any())\n .optional(),\n serverExternalPackages: z.array(z.string()).optional(),\n skipMiddlewareUrlNormalize: z.boolean().optional(),\n skipProxyUrlNormalize: z.boolean().optional(),\n skipTrailingSlashRedirect: z.boolean().optional(),\n staticPageGenerationTimeout: z.number().optional(),\n expireTime: z.number().optional(),\n target: z.string().optional(),\n trailingSlash: z.boolean().optional(),\n transpilePackages: z.array(z.string()).optional(),\n turbopack: zTurbopackConfig.optional(),\n typescript: z\n .strictObject({\n ignoreBuildErrors: z.boolean().optional(),\n tsconfigPath: z.string().min(1).optional(),\n })\n .optional(),\n typedRoutes: z.boolean().optional(),\n useFileSystemPublicRoutes: z.boolean().optional(),\n // The webpack config type is unknown, use z.any() here\n webpack: z.any().nullable().optional(),\n watchOptions: z\n .strictObject({\n pollIntervalMs: z.number().positive().finite().optional(),\n })\n .optional(),\n })\n)\n"],"names":["VALID_LOADERS","z","LIGHTNINGCSS_FEATURE_NAMES","SUPPORTED_TEST_RUNNERS_LIST","zSizeLimit","custom","val","zExportMap","record","string","object","page","query","any","_fallbackRouteParams","array","optional","_isAppDir","boolean","_isDynamicError","_isRoutePPREnabled","_allowEmptyStaticShell","_isFallbackUpgradeable","zRouteHas","union","type","enum","key","value","literal","undefined","zRewrite","source","destination","basePath","locale","has","missing","internal","zRedirect","and","statusCode","never","permanent","number","zHeader","headers","zTurbopackLoaderItem","strictObject","loader","options","zTurbopackLoaderBuiltinCondition","zTurbopackCondition","all","lazy","not","path","instanceof","RegExp","content","contentType","zTurbopackModuleType","zTurbopackRuleConfigItem","loaders","as","condition","zTurbopackRuleConfigCollection","zTurbopackConfig","rules","resolveAlias","resolveExtensions","root","debugIds","chunkLoadingGlobal","ignoreIssue","title","description","experimentalSchema","outputHashSalt","useSkewCookie","after","appNavFailHandling","appNewScrollHandler","coldCacheBadge","preloadEntriesOnStart","allowedRevalidateHeaderKeys","staleTimes","dynamic","static","gte","cacheLife","stale","revalidate","expire","cacheHandlers","clientRouterFilter","clientRouterFilterRedirects","clientRouterFilterAllowedRate","cpus","memoryBasedWorkersCount","craCompat","caseSensitiveRoutes","clientParamParsingOrigins","cachedNavigations","dynamicOnHover","useOffline","optimisticRouting","instrumentationClientRouterTransitionEvents","varyParams","prefetchInlining","maxSize","maxBundleSize","devMemoryThresholdRestart","disableOptimizedLoading","disablePostcssPresetEnv","cacheComponents","inlineCss","esmExternals","serverActions","bodySizeLimit","allowedOrigins","maxPostponedStateSize","extensionAlias","externalDir","externalMiddlewareRewritesResolve","externalProxyRewritesResolve","exposeTestingApiInProductionBuild","requestInsights","fallbackNodePolyfills","fetchCacheKeyPrefix","forceSwcTransforms","fullySpecified","gzipSize","imgOptConcurrency","int","nullable","imgOptOperationCache","imgOptTimeoutInSeconds","imgOptMaxInputPixels","imgOptSequentialRead","isrFlushToDisk","largePageDataBytes","linkNoTouchStart","manualClientBasePath","middlewarePrefetch","proxyPrefetch","middlewareClientMaxBodySize","proxyClientMaxBodySize","multiZoneDraftMode","cssChunking","requestCost","nonnegative","finite","weightDistribution","nextScriptWorkers","optimizeCss","optimisticClientCache","parallelServerCompiles","parallelServerBuildTraces","ppr","readonly","taint","blockingSSR","prerenderEarlyExit","proxyTimeout","rootParams","mcpServer","removeUncaughtErrorAndRejectionListeners","validateRSCRequestHeaders","scrollRestoration","sri","algorithm","swcPlugins","tuple","swcEnvOptions","mode","coreJs","skip","include","exclude","shippedProposals","forceAllTransforms","debug","loose","swcTraceProfiling","urlImports","workerThreads","webVitalsAttribution","mdxRs","development","jsxRuntime","jsxImportSource","providerImportSource","mdxType","transitionIndicator","gestureTransition","typedRoutes","webpackBuildWorker","webpackMemoryOptimizations","turbopackMemoryEviction","turbopackPluginRuntimeStrategy","turbopackMinify","turbopackFileSystemCacheForDev","turbopackFileSystemCacheForBuild","turbopackSeedCacheFromWorktree","turbopackSourceMaps","turbopackInputSourceMaps","turbopackModuleFragments","turbopackRemoveUnusedImports","turbopackRemoveUnusedExports","turbopackScopeHoisting","turbopackGenerateComponentChunks","turbopackSharedRuntime","turbopackChunkingHeuristics","firstPageLoadPriority","min","max","priorityRoutes","priorityBoost","turbopackWorkerAssetPrefix","turbopackClientSideNestedAsyncChunking","turbopackServerSideNestedAsyncChunking","turbopackImportTypeBytes","turbopackUseBuiltinBabel","turbopackUseBuiltinSass","turbopackLocalPostcssConfig","turbopackModuleIds","turbopackInferModuleSideEffects","turbopackCjsTreeShaking","turbopackServerFastRefresh","optimizePackageImports","optimizeServerReact","strictRouteTypes","useTypeScriptCli","clientTraceMetadata","serverMinification","serverSourceMaps","useWasmBinary","useLightningcss","lightningCssFeatures","testProxy","defaultTestRunner","allowDevelopmentBuild","reactDebugChannel","instantInsights","validationLevel","devValidationWorker","staticGenerationRetryCount","staticGenerationMaxConcurrency","staticGenerationMinPagesPerWorker","typedEnv","serverComponentsHmrCache","serverComponentsHmrCancellation","authInterrupts","useCache","durableUseCacheEntries","useCacheTimeout","positive","slowModuleDetection","buildTimeThresholdMs","globalNotFound","turbopackRustReactCompiler","browserDebugInfoInTerminal","level","depthLimit","edgeLimit","showSourceLocation","lockDistDir","hideLogsAfterAbort","runtimeServerDeploymentId","supportsImmutableAssets","deferredEntries","onBeforeDeferredEntries","function","returns","promise","void","reportSystemEnvInlining","configSchema","adapterPath","agentRules","allowedDevOrigins","assetPrefix","bundlePagesRouterDependencies","cacheHandler","cacheMaxMemorySize","cleanDistDir","compiler","emotion","sourceMap","autoLabel","labelFormat","importMap","canonicalImport","styledBaseImport","reactRemoveProperties","properties","relay","src","artifactDirectory","language","eagerEsModules","removeConsole","styledComponents","displayName","topLevelImportPaths","ssr","fileName","meaninglessFileNames","minify","transpileTemplateLiterals","namespace","pure","cssProp","styledJsx","define","defineServer","runAfterProductionCompile","compress","configOrigin","crossOrigin","deploymentId","devIndicators","position","distDir","env","enablePrerenderSourceMaps","excludeDefaultMomentLocales","experimental","exportPathMap","args","dev","dir","outDir","buildId","generateBuildId","null","generateEtags","htmlLimitedBots","httpAgentOptions","keepAlive","i18n","defaultLocale","domains","domain","http","locales","localeDetection","images","localPatterns","pathname","search","remotePatterns","URL","hostname","port","protocol","unoptimized","customCacheHandler","contentSecurityPolicy","contentDispositionType","dangerouslyAllowSVG","dangerouslyAllowLocalIP","deviceSizes","lte","disableStaticImages","formats","imageSizes","loaderFile","maximumDiskCacheSize","maximumRedirects","maximumResponseBody","Number","MAX_SAFE_INTEGER","minimumCacheTTL","qualities","logging","fetches","fullUrl","hmrRefreshes","incomingRequests","ignore","serverFunctions","browserToTerminal","modularizeImports","transform","preventFullImport","skipDefaultConversion","onDemandEntries","maxInactiveAge","pagesBufferLength","output","outputFileTracingRoot","outputFileTracingExcludes","outputFileTracingIncludes","pageExtensions","instrumentationClientInject","partialPrefetching","poweredByHeader","productionBrowserSourceMaps","reactCompiler","compilationMode","panicThreshold","reactProductionProfiling","reactStrictMode","reactMaxHeadersLength","redirects","rewrites","beforeFiles","afterFiles","fallback","sassOptions","implementation","catchall","serverExternalPackages","skipMiddlewareUrlNormalize","skipProxyUrlNormalize","skipTrailingSlashRedirect","staticPageGenerationTimeout","expireTime","target","trailingSlash","transpilePackages","turbopack","typescript","ignoreBuildErrors","tsconfigPath","useFileSystemPublicRoutes","webpack","watchOptions","pollIntervalMs"],"mappings":"AACA,SAASA,aAAa,QAAQ,6BAA4B;AAE1D,SAASC,CAAC,QAAQ,yBAAwB;AAI1C,SACEC,0BAA0B,QAQrB,kBAAiB;AAOxB,SAASC,2BAA2B,QAAQ,mBAAkB;AAE9D,6CAA6C;AAC7C,MAAMC,aAAaH,EAAEI,MAAM,CAAY,CAACC;IACtC,IAAI,OAAOA,QAAQ,YAAY,OAAOA,QAAQ,UAAU;QACtD,OAAO;IACT;IACA,OAAO;AACT;AAEA,MAAMC,aAAyCN,EAAEO,MAAM,CACrDP,EAAEQ,MAAM,IACRR,EAAES,MAAM,CAAC;IACPC,MAAMV,EAAEQ,MAAM;IACdG,OAAOX,EAAEY,GAAG;IAEZ,8BAA8B;IAC9BC,sBAAsBb,EAAEc,KAAK,CAACd,EAAEY,GAAG,IAAIG,QAAQ;IAC/CC,WAAWhB,EAAEiB,OAAO,GAAGF,QAAQ;IAC/BG,iBAAiBlB,EAAEiB,OAAO,GAAGF,QAAQ;IACrCI,oBAAoBnB,EAAEiB,OAAO,GAAGF,QAAQ;IACxCK,wBAAwBpB,EAAEiB,OAAO,GAAGF,QAAQ;IAC5CM,wBAAwBrB,EAAEiB,OAAO,GAAGF,QAAQ;AAC9C;AAGF,MAAMO,YAAmCtB,EAAEuB,KAAK,CAAC;IAC/CvB,EAAES,MAAM,CAAC;QACPe,MAAMxB,EAAEyB,IAAI,CAAC;YAAC;YAAU;YAAS;SAAS;QAC1CC,KAAK1B,EAAEQ,MAAM;QACbmB,OAAO3B,EAAEQ,MAAM,GAAGO,QAAQ;IAC5B;IACAf,EAAES,MAAM,CAAC;QACPe,MAAMxB,EAAE4B,OAAO,CAAC;QAChBF,KAAK1B,EAAE6B,SAAS,GAAGd,QAAQ;QAC3BY,OAAO3B,EAAEQ,MAAM;IACjB;CACD;AAED,MAAMsB,WAAiC9B,EAAES,MAAM,CAAC;IAC9CsB,QAAQ/B,EAAEQ,MAAM;IAChBwB,aAAahC,EAAEQ,MAAM;IACrByB,UAAUjC,EAAE4B,OAAO,CAAC,OAAOb,QAAQ;IACnCmB,QAAQlC,EAAE4B,OAAO,CAAC,OAAOb,QAAQ;IACjCoB,KAAKnC,EAAEc,KAAK,CAACQ,WAAWP,QAAQ;IAChCqB,SAASpC,EAAEc,KAAK,CAACQ,WAAWP,QAAQ;IACpCsB,UAAUrC,EAAEiB,OAAO,GAAGF,QAAQ;AAChC;AAEA,MAAMuB,YAAmCtC,EACtCS,MAAM,CAAC;IACNsB,QAAQ/B,EAAEQ,MAAM;IAChBwB,aAAahC,EAAEQ,MAAM;IACrByB,UAAUjC,EAAE4B,OAAO,CAAC,OAAOb,QAAQ;IACnCmB,QAAQlC,EAAE4B,OAAO,CAAC,OAAOb,QAAQ;IACjCoB,KAAKnC,EAAEc,KAAK,CAACQ,WAAWP,QAAQ;IAChCqB,SAASpC,EAAEc,KAAK,CAACQ,WAAWP,QAAQ;IACpCsB,UAAUrC,EAAEiB,OAAO,GAAGF,QAAQ;AAChC,GACCwB,GAAG,CACFvC,EAAEuB,KAAK,CAAC;IACNvB,EAAES,MAAM,CAAC;QACP+B,YAAYxC,EAAEyC,KAAK,GAAG1B,QAAQ;QAC9B2B,WAAW1C,EAAEiB,OAAO;IACtB;IACAjB,EAAES,MAAM,CAAC;QACP+B,YAAYxC,EAAE2C,MAAM;QACpBD,WAAW1C,EAAEyC,KAAK,GAAG1B,QAAQ;IAC/B;CACD;AAGL,MAAM6B,UAA+B5C,EAAES,MAAM,CAAC;IAC5CsB,QAAQ/B,EAAEQ,MAAM;IAChByB,UAAUjC,EAAE4B,OAAO,CAAC,OAAOb,QAAQ;IACnCmB,QAAQlC,EAAE4B,OAAO,CAAC,OAAOb,QAAQ;IACjC8B,SAAS7C,EAAEc,KAAK,CAACd,EAAES,MAAM,CAAC;QAAEiB,KAAK1B,EAAEQ,MAAM;QAAImB,OAAO3B,EAAEQ,MAAM;IAAG;IAC/D2B,KAAKnC,EAAEc,KAAK,CAACQ,WAAWP,QAAQ;IAChCqB,SAASpC,EAAEc,KAAK,CAACQ,WAAWP,QAAQ;IAEpCsB,UAAUrC,EAAEiB,OAAO,GAAGF,QAAQ;AAChC;AAEA,MAAM+B,uBAAyD9C,EAAEuB,KAAK,CAAC;IACrEvB,EAAEQ,MAAM;IACRR,EAAE+C,YAAY,CAAC;QACbC,QAAQhD,EAAEQ,MAAM;QAChB,0EAA0E;QAC1EyC,SAASjD,EAAEO,MAAM,CAACP,EAAEQ,MAAM,IAAIR,EAAEY,GAAG,IAAIG,QAAQ;IACjD;CACD;AAED,MAAMmC,mCACJlD,EAAEuB,KAAK,CAAC;IACNvB,EAAE4B,OAAO,CAAC;IACV5B,EAAE4B,OAAO,CAAC;IACV5B,EAAE4B,OAAO,CAAC;IACV5B,EAAE4B,OAAO,CAAC;IACV5B,EAAE4B,OAAO,CAAC;IACV5B,EAAE4B,OAAO,CAAC;CACX;AAEH,MAAMuB,sBAA2DnD,EAAEuB,KAAK,CAAC;IACvEvB,EAAE+C,YAAY,CAAC;QAAEK,KAAKpD,EAAEqD,IAAI,CAAC,IAAMrD,EAAEc,KAAK,CAACqC;IAAsB;IACjEnD,EAAE+C,YAAY,CAAC;QAAEnC,KAAKZ,EAAEqD,IAAI,CAAC,IAAMrD,EAAEc,KAAK,CAACqC;IAAsB;IACjEnD,EAAE+C,YAAY,CAAC;QAAEO,KAAKtD,EAAEqD,IAAI,CAAC,IAAMF;IAAqB;IACxDD;IACAlD,EAAE+C,YAAY,CAAC;QACbQ,MAAMvD,EAAEuB,KAAK,CAAC;YAACvB,EAAEQ,MAAM;YAAIR,EAAEwD,UAAU,CAACC;SAAQ,EAAE1C,QAAQ;QAC1D2C,SAAS1D,EAAEwD,UAAU,CAACC,QAAQ1C,QAAQ;QACtCJ,OAAOX,EAAEuB,KAAK,CAAC;YAACvB,EAAEQ,MAAM;YAAIR,EAAEwD,UAAU,CAACC;SAAQ,EAAE1C,QAAQ;QAC3D4C,aAAa3D,EAAEuB,KAAK,CAAC;YAACvB,EAAEQ,MAAM;YAAIR,EAAEwD,UAAU,CAACC;SAAQ,EAAE1C,QAAQ;IACnE;CACD;AAED,MAAM6C,uBAAuB5D,EAAEyB,IAAI,CAAC;IAClC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED,MAAMoC,2BACJ7D,EAAE+C,YAAY,CAAC;IACbe,SAAS9D,EAAEc,KAAK,CAACgC,sBAAsB/B,QAAQ;IAC/CgD,IAAI/D,EAAEQ,MAAM,GAAGO,QAAQ;IACvBiD,WAAWb,oBAAoBpC,QAAQ;IACvCS,MAAMoC,qBAAqB7C,QAAQ;AACrC;AAEF,MAAMkD,iCACJjE,EAAEuB,KAAK,CAAC;IACNsC;IACA7D,EAAEc,KAAK,CAACd,EAAEuB,KAAK,CAAC;QAACuB;QAAsBe;KAAyB;CACjE;AAEH,MAAMK,mBAAkDlE,EAAE+C,YAAY,CAAC;IACrEoB,OAAOnE,EAAEO,MAAM,CAACP,EAAEQ,MAAM,IAAIyD,gCAAgClD,QAAQ;IACpEqD,cAAcpE,EACXO,MAAM,CACLP,EAAEQ,MAAM,IACRR,EAAEuB,KAAK,CAAC;QACNvB,EAAEQ,MAAM;QACRR,EAAEc,KAAK,CAACd,EAAEQ,MAAM;QAChBR,EAAEO,MAAM,CAACP,EAAEQ,MAAM,IAAIR,EAAEuB,KAAK,CAAC;YAACvB,EAAEQ,MAAM;YAAIR,EAAEc,KAAK,CAACd,EAAEQ,MAAM;SAAI;KAC/D,GAEFO,QAAQ;IACXsD,mBAAmBrE,EAAEc,KAAK,CAACd,EAAEQ,MAAM,IAAIO,QAAQ;IAC/CuD,MAAMtE,EAAEQ,MAAM,GAAGO,QAAQ;IACzBwD,UAAUvE,EAAEiB,OAAO,GAAGF,QAAQ;IAC9ByD,oBAAoBxE,EAAEQ,MAAM,GAAGO,QAAQ;IACvC0D,aAAazE,EACVc,KAAK,CACJd,EAAES,MAAM,CAAC;QACP8C,MAAMvD,EAAEuB,KAAK,CAAC;YAACvB,EAAEQ,MAAM;YAAIR,EAAEwD,UAAU,CAACC;SAAQ;QAChDiB,OAAO1E,EAAEuB,KAAK,CAAC;YAACvB,EAAEQ,MAAM;YAAIR,EAAEwD,UAAU,CAACC;SAAQ,EAAE1C,QAAQ;QAC3D4D,aAAa3E,EAAEuB,KAAK,CAAC;YAACvB,EAAEQ,MAAM;YAAIR,EAAEwD,UAAU,CAACC;SAAQ,EAAE1C,QAAQ;IACnE,IAEDA,QAAQ;AACb;AAEA,OAAO,MAAM6D,qBAAqB;IAChCC,gBAAgB7E,EAAEQ,MAAM,GAAGO,QAAQ;IACnC+D,eAAe9E,EAAEiB,OAAO,GAAGF,QAAQ;IACnCgE,OAAO/E,EAAEiB,OAAO,GAAGF,QAAQ;IAC3BiE,oBAAoBhF,EAAEiB,OAAO,GAAGF,QAAQ;IACxCkE,qBAAqBjF,EAAEiB,OAAO,GAAGF,QAAQ;IACzCmE,gBAAgBlF,EAAEiB,OAAO,GAAGF,QAAQ;IACpCoE,uBAAuBnF,EAAEiB,OAAO,GAAGF,QAAQ;IAC3CqE,6BAA6BpF,EAAEc,KAAK,CAACd,EAAEQ,MAAM,IAAIO,QAAQ;IACzDsE,YAAYrF,EACTS,MAAM,CAAC;QACN6E,SAAStF,EAAE2C,MAAM,GAAG5B,QAAQ;QAC5BwE,QAAQvF,EAAE2C,MAAM,GAAG6C,GAAG,CAAC,IAAIzE,QAAQ;IACrC,GACCA,QAAQ;IACX0E,WAAWzF,EACRO,MAAM,CACLP,EAAES,MAAM,CAAC;QACPiF,OAAO1F,EAAE2C,MAAM,GAAG5B,QAAQ;QAC1B4E,YAAY3F,EAAE2C,MAAM,GAAG5B,QAAQ;QAC/B6E,QAAQ5F,EAAE2C,MAAM,GAAG5B,QAAQ;IAC7B,IAEDA,QAAQ;IACX8E,eAAe7F,EAAEO,MAAM,CAACP,EAAEQ,MAAM,IAAIR,EAAEQ,MAAM,GAAGO,QAAQ,IAAIA,QAAQ;IACnE+E,oBAAoB9F,EAAEiB,OAAO,GAAGF,QAAQ;IACxCgF,6BAA6B/F,EAAEiB,OAAO,GAAGF,QAAQ;IACjDiF,+BAA+BhG,EAAE2C,MAAM,GAAG5B,QAAQ;IAClDkF,MAAMjG,EAAE2C,MAAM,GAAG5B,QAAQ;IACzBmF,yBAAyBlG,EAAEiB,OAAO,GAAGF,QAAQ;IAC7CoF,WAAWnG,EAAEiB,OAAO,GAAGF,QAAQ;IAC/BqF,qBAAqBpG,EAAEiB,OAAO,GAAGF,QAAQ;IACzCsF,2BAA2BrG,EAAEc,KAAK,CAACd,EAAEQ,MAAM,IAAIO,QAAQ;IACvDuF,mBAAmBtG,EAAEiB,OAAO,GAAGF,QAAQ;IACvCwF,gBAAgBvG,EAAEiB,OAAO,GAAGF,QAAQ;IACpCyF,YAAYxG,EAAEiB,OAAO,GAAGF,QAAQ;IAChC0F,mBAAmBzG,EAAEiB,OAAO,GAAGF,QAAQ;IACvC2F,6CAA6C1G,EAAEiB,OAAO,GAAGF,QAAQ;IACjE4F,YAAY3G,EAAEiB,OAAO,GAAGF,QAAQ;IAChC6F,kBAAkB5G,EACfuB,KAAK,CAAC;QACLvB,EAAEiB,OAAO;QACTjB,EAAES,MAAM,CAAC;YACPoG,SAAS7G,EAAE2C,MAAM,GAAG5B,QAAQ;YAC5B+F,eAAe9G,EAAE2C,MAAM,GAAG5B,QAAQ;QACpC;KACD,EACAA,QAAQ;IACXgG,2BAA2B/G,EAAEiB,OAAO,GAAGF,QAAQ;IAC/CiG,yBAAyBhH,EAAEiB,OAAO,GAAGF,QAAQ;IAC7CkG,yBAAyBjH,EAAEiB,OAAO,GAAGF,QAAQ;IAC7CmG,iBAAiBlH,EAAEiB,OAAO,GAAGF,QAAQ;IACrCoG,WAAWnH,EAAEiB,OAAO,GAAGF,QAAQ;IAC/BqG,cAAcpH,EAAEuB,KAAK,CAAC;QAACvB,EAAEiB,OAAO;QAAIjB,EAAE4B,OAAO,CAAC;KAAS,EAAEb,QAAQ;IACjEsG,eAAerH,EACZS,MAAM,CAAC;QACN6G,eAAenH,WAAWY,QAAQ;QAClCwG,gBAAgBvH,EAAEc,KAAK,CAACd,EAAEQ,MAAM,IAAIO,QAAQ;IAC9C,GACCA,QAAQ;IACXyG,uBAAuBrH,WAAWY,QAAQ;IAC1C,4CAA4C;IAC5C0G,gBAAgBzH,EAAEO,MAAM,CAACP,EAAEQ,MAAM,IAAIR,EAAEY,GAAG,IAAIG,QAAQ;IACtD2G,aAAa1H,EAAEiB,OAAO,GAAGF,QAAQ;IACjC4G,mCAAmC3H,EAAEiB,OAAO,GAAGF,QAAQ;IACvD6G,8BAA8B5H,EAAEiB,OAAO,GAAGF,QAAQ;IAClD8G,mCAAmC7H,EAAEiB,OAAO,GAAGF,QAAQ;IACvD+G,iBAAiB9H,EAAEiB,OAAO,GAAGF,QAAQ;IACrCgH,uBAAuB/H,EAAE4B,OAAO,CAAC,OAAOb,QAAQ;IAChDiH,qBAAqBhI,EAAEQ,MAAM,GAAGO,QAAQ;IACxCkH,oBAAoBjI,EAAEiB,OAAO,GAAGF,QAAQ;IACxCmH,gBAAgBlI,EAAEiB,OAAO,GAAGF,QAAQ;IACpCoH,UAAUnI,EAAEiB,OAAO,GAAGF,QAAQ;IAC9BqH,mBAAmBpI,EAAE2C,MAAM,GAAG0F,GAAG,GAAGtH,QAAQ,GAAGuH,QAAQ;IACvDC,sBAAsBvI,EAAEiB,OAAO,GAAGF,QAAQ,GAAGuH,QAAQ;IACrDE,wBAAwBxI,EAAE2C,MAAM,GAAG0F,GAAG,GAAGtH,QAAQ;IACjD0H,sBAAsBzI,EAAE2C,MAAM,GAAG0F,GAAG,GAAGtH,QAAQ;IAC/C2H,sBAAsB1I,EAAEiB,OAAO,GAAGF,QAAQ,GAAGuH,QAAQ;IACrDK,gBAAgB3I,EAAEiB,OAAO,GAAGF,QAAQ;IACpC6H,oBAAoB5I,EAAE2C,MAAM,GAAG5B,QAAQ;IACvC8H,kBAAkB7I,EAAEiB,OAAO,GAAGF,QAAQ;IACtC+H,sBAAsB9I,EAAEiB,OAAO,GAAGF,QAAQ;IAC1CgI,oBAAoB/I,EAAEyB,IAAI,CAAC;QAAC;QAAU;KAAW,EAAEV,QAAQ;IAC3DiI,eAAehJ,EAAEyB,IAAI,CAAC;QAAC;QAAU;KAAW,EAAEV,QAAQ;IACtDkI,6BAA6B9I,WAAWY,QAAQ;IAChDmI,wBAAwB/I,WAAWY,QAAQ;IAC3CoI,oBAAoBnJ,EAAEiB,OAAO,GAAGF,QAAQ;IACxCqI,aAAapJ,EACVuB,KAAK,CAAC;QACLvB,EAAEiB,OAAO;QACTjB,EAAE4B,OAAO,CAAC;QACV5B,EAAE4B,OAAO,CAAC;QACV5B,EAAE4B,OAAO,CAAC;QACV5B,EAAE+C,YAAY,CAAC;YAAEvB,MAAMxB,EAAE4B,OAAO,CAAC;QAAU;QAC3C5B,EAAE+C,YAAY,CAAC;YAAEvB,MAAMxB,EAAE4B,OAAO,CAAC;QAAS;QAC1C5B,EAAE+C,YAAY,CAAC;YACbvB,MAAMxB,EAAE4B,OAAO,CAAC;YAChByH,aAAarJ,EAAE2C,MAAM,GAAG2G,WAAW,GAAGC,MAAM,GAAGxI,QAAQ;YACvDyI,oBAAoBxJ,EAAE2C,MAAM,GAAG2G,WAAW,GAAGC,MAAM,GAAGxI,QAAQ;QAChE;KACD,EACAA,QAAQ;IACX0I,mBAAmBzJ,EAAEiB,OAAO,GAAGF,QAAQ;IACvC,kDAAkD;IAClD2I,aAAa1J,EAAEuB,KAAK,CAAC;QAACvB,EAAEiB,OAAO;QAAIjB,EAAEY,GAAG;KAAG,EAAEG,QAAQ;IACrD4I,uBAAuB3J,EAAEiB,OAAO,GAAGF,QAAQ;IAC3C6I,wBAAwB5J,EAAEiB,OAAO,GAAGF,QAAQ;IAC5C8I,2BAA2B7J,EAAEiB,OAAO,GAAGF,QAAQ;IAC/C+I,KAAK9J,EACFuB,KAAK,CAAC;QAACvB,EAAEiB,OAAO;QAAIjB,EAAE4B,OAAO,CAAC;KAAe,EAC7CmI,QAAQ,GACRhJ,QAAQ;IACXiJ,OAAOhK,EAAEiB,OAAO,GAAGF,QAAQ;IAC3BkJ,aAAajK,EAAEiB,OAAO,GAAGF,QAAQ;IACjCmJ,oBAAoBlK,EAAEiB,OAAO,GAAGF,QAAQ;IACxCoJ,cAAcnK,EAAE2C,MAAM,GAAG6C,GAAG,CAAC,GAAGzE,QAAQ;IACxCqJ,YAAYpK,EAAEiB,OAAO,GAAGF,QAAQ;IAChCsJ,WAAWrK,EAAEiB,OAAO,GAAGF,QAAQ;IAC/BuJ,0CAA0CtK,EAAEiB,OAAO,GAAGF,QAAQ;IAC9DwJ,2BAA2BvK,EAAEiB,OAAO,GAAGF,QAAQ;IAC/CyJ,mBAAmBxK,EAAEiB,OAAO,GAAGF,QAAQ;IACvC0J,KAAKzK,EACFS,MAAM,CAAC;QACNiK,WAAW1K,EAAEyB,IAAI,CAAC;YAAC;YAAU;YAAU;SAAS,EAAEV,QAAQ;IAC5D,GACCA,QAAQ;IACX4J,YAAY3K,CACV,gEAAgE;KAC/Dc,KAAK,CAACd,EAAE4K,KAAK,CAAC;QAAC5K,EAAEQ,MAAM;QAAIR,EAAEO,MAAM,CAACP,EAAEQ,MAAM,IAAIR,EAAEY,GAAG;KAAI,GACzDG,QAAQ;IACX8J,eAAe7K,EACZS,MAAM,CAAC;QACNqK,MAAM9K,EAAEyB,IAAI,CAAC;YAAC;YAAS;SAAQ,EAAEV,QAAQ;QACzCgK,QAAQ/K,EAAEQ,MAAM,GAAGO,QAAQ;QAC3BiK,MAAMhL,EAAEc,KAAK,CAACd,EAAEQ,MAAM,IAAIO,QAAQ;QAClCkK,SAASjL,EAAEc,KAAK,CAACd,EAAEQ,MAAM,IAAIO,QAAQ;QACrCmK,SAASlL,EAAEc,KAAK,CAACd,EAAEQ,MAAM,IAAIO,QAAQ;QACrCoK,kBAAkBnL,EAAEiB,OAAO,GAAGF,QAAQ;QACtCqK,oBAAoBpL,EAAEiB,OAAO,GAAGF,QAAQ;QACxCsK,OAAOrL,EAAEiB,OAAO,GAAGF,QAAQ;QAC3BuK,OAAOtL,EAAEiB,OAAO,GAAGF,QAAQ;IAC7B,GACCA,QAAQ;IACXwK,mBAAmBvL,EAAEiB,OAAO,GAAGF,QAAQ;IACvC,iEAAiE;IACjEyK,YAAYxL,EAAEY,GAAG,GAAGG,QAAQ;IAC5B0K,eAAezL,EAAEiB,OAAO,GAAGF,QAAQ;IACnC2K,sBAAsB1L,EACnBc,KAAK,CACJd,EAAEuB,KAAK,CAAC;QACNvB,EAAE4B,OAAO,CAAC;QACV5B,EAAE4B,OAAO,CAAC;QACV5B,EAAE4B,OAAO,CAAC;QACV5B,EAAE4B,OAAO,CAAC;QACV5B,EAAE4B,OAAO,CAAC;QACV5B,EAAE4B,OAAO,CAAC;KACX,GAEFb,QAAQ;IACX,sEAAsE;IACtE,iFAAiF;IACjF4K,OAAO3L,EACJuB,KAAK,CAAC;QACLvB,EAAEiB,OAAO;QACTjB,EAAES,MAAM,CAAC;YACPmL,aAAa5L,EAAEiB,OAAO,GAAGF,QAAQ;YACjC8K,YAAY7L,EAAEQ,MAAM,GAAGO,QAAQ;YAC/B+K,iBAAiB9L,EAAEQ,MAAM,GAAGO,QAAQ;YACpCgL,sBAAsB/L,EAAEQ,MAAM,GAAGO,QAAQ;YACzCiL,SAAShM,EAAEyB,IAAI,CAAC;gBAAC;gBAAO;aAAa,EAAEV,QAAQ;QACjD;KACD,EACAA,QAAQ;IACXkL,qBAAqBjM,EAAEiB,OAAO,GAAGF,QAAQ;IACzCmL,mBAAmBlM,EAAEiB,OAAO,GAAGF,QAAQ;IACvCoL,aAAanM,EAAEiB,OAAO,GAAGF,QAAQ;IACjCqL,oBAAoBpM,EAAEiB,OAAO,GAAGF,QAAQ;IACxCsL,4BAA4BrM,EAAEiB,OAAO,GAAGF,QAAQ;IAChDuL,yBAAyBtM,EACtBuB,KAAK,CAAC;QAACvB,EAAE4B,OAAO,CAAC;QAAQ5B,EAAE4B,OAAO,CAAC;QAAS5B,EAAE4B,OAAO,CAAC;KAAQ,EAC9Db,QAAQ;IACXwL,gCAAgCvM,EAC7ByB,IAAI,CAAC;QAAC;QAAiB;KAAiB,EACxCV,QAAQ;IACXyL,iBAAiBxM,EAAEiB,OAAO,GAAGF,QAAQ;IACrC0L,gCAAgCzM,EAAEiB,OAAO,GAAGF,QAAQ;IACpD2L,kCAAkC1M,EAAEiB,OAAO,GAAGF,QAAQ;IACtD4L,gCAAgC3M,EAAEiB,OAAO,GAAGF,QAAQ;IACpD6L,qBAAqB5M,EAAEiB,OAAO,GAAGF,QAAQ;IACzC8L,0BAA0B7M,EAAEiB,OAAO,GAAGF,QAAQ;IAC9C+L,0BAA0B9M,EAAEiB,OAAO,GAAGF,QAAQ;IAC9CgM,8BAA8B/M,EAAEiB,OAAO,GAAGF,QAAQ;IAClDiM,8BAA8BhN,EAAEiB,OAAO,GAAGF,QAAQ;IAClDkM,wBAAwBjN,EAAEiB,OAAO,GAAGF,QAAQ;IAC5CmM,kCAAkClN,EAAEiB,OAAO,GAAGF,QAAQ;IACtDoM,wBAAwBnN,EAAEiB,OAAO,GAAGF,QAAQ;IAC5CqM,6BAA6BpN,EAC1BS,MAAM,CAAC;QACN4M,uBAAuBrN,EAAE2C,MAAM,GAAG2K,GAAG,CAAC,GAAGC,GAAG,CAAC,GAAGxM,QAAQ;QACxDyM,gBAAgBxN,EAAEc,KAAK,CAACd,EAAEwD,UAAU,CAACC,SAAS1C,QAAQ;QACtD0M,eAAezN,EAAE2C,MAAM,GAAG2K,GAAG,CAAC,GAAGvM,QAAQ;QACzCsI,aAAarJ,EAAE2C,MAAM,GAAG2K,GAAG,CAAC,GAAGC,GAAG,CAAC,SAAWxM,QAAQ;IACxD,GACCA,QAAQ;IACX2M,4BAA4B1N,EAAEQ,MAAM,GAAGO,QAAQ;IAC/C4M,wCAAwC3N,EAAEiB,OAAO,GAAGF,QAAQ;IAC5D6M,wCAAwC5N,EAAEiB,OAAO,GAAGF,QAAQ;IAC5D8M,0BAA0B7N,EAAEiB,OAAO,GAAGF,QAAQ;IAC9C+M,0BAA0B9N,EAAEiB,OAAO,GAAGF,QAAQ;IAC9CgN,yBAAyB/N,EAAEiB,OAAO,GAAGF,QAAQ;IAC7CiN,6BAA6BhO,EAAEiB,OAAO,GAAGF,QAAQ;IACjDkN,oBAAoBjO,EAAEyB,IAAI,CAAC;QAAC;QAAS;KAAgB,EAAEV,QAAQ;IAC/DmN,iCAAiClO,EAAEiB,OAAO,GAAGF,QAAQ;IACrDoN,yBAAyBnO,EAAEiB,OAAO,GAAGF,QAAQ;IAC7CqN,4BAA4BpO,EAAEiB,OAAO,GAAGF,QAAQ;IAChDsN,wBAAwBrO,EAAEc,KAAK,CAACd,EAAEQ,MAAM,IAAIO,QAAQ;IACpDuN,qBAAqBtO,EAAEiB,OAAO,GAAGF,QAAQ;IACzCwN,kBAAkBvO,EAAEiB,OAAO,GAAGF,QAAQ;IACtCyN,kBAAkBxO,EAAEiB,OAAO,GAAGF,QAAQ;IACtC0N,qBAAqBzO,EAAEc,KAAK,CAACd,EAAEQ,MAAM,IAAIO,QAAQ;IACjD2N,oBAAoB1O,EAAEiB,OAAO,GAAGF,QAAQ;IACxC4N,kBAAkB3O,EAAEiB,OAAO,GAAGF,QAAQ;IACtC6N,eAAe5O,EAAEiB,OAAO,GAAGF,QAAQ;IACnC8N,iBAAiB7O,EAAEiB,OAAO,GAAGF,QAAQ;IACrC+N,sBAAsB9O,EACnBS,MAAM,CAAC;QACNwK,SAASjL,EAAEc,KAAK,CAACd,EAAEyB,IAAI,CAACxB,6BAA6Bc,QAAQ;QAC7DmK,SAASlL,EAAEc,KAAK,CAACd,EAAEyB,IAAI,CAACxB,6BAA6Bc,QAAQ;IAC/D,GACCA,QAAQ;IACXgO,WAAW/O,EAAEiB,OAAO,GAAGF,QAAQ;IAC/BiO,mBAAmBhP,EAAEyB,IAAI,CAACvB,6BAA6Ba,QAAQ;IAC/DkO,uBAAuBjP,EAAE4B,OAAO,CAAC,MAAMb,QAAQ;IAE/CmO,mBAAmBlP,EAAEiB,OAAO,GAAGF,QAAQ;IACvCoO,iBAAiBnP,EACdS,MAAM,CAAC;QACN2O,iBAAiBpP,EACdyB,IAAI,CAAC;YACJ;YACA;YACA;YACA;SACD,EACAV,QAAQ;IACb,GACCA,QAAQ;IACXsO,qBAAqBrP,EAAEiB,OAAO,GAAGF,QAAQ;IACzCuO,4BAA4BtP,EAAE2C,MAAM,GAAG0F,GAAG,GAAGtH,QAAQ;IACrDwO,gCAAgCvP,EAAE2C,MAAM,GAAG0F,GAAG,GAAGtH,QAAQ;IACzDyO,mCAAmCxP,EAAE2C,MAAM,GAAG0F,GAAG,GAAGtH,QAAQ;IAC5D0O,UAAUzP,EAAEiB,OAAO,GAAGF,QAAQ;IAC9B2O,0BAA0B1P,EAAEiB,OAAO,GAAGF,QAAQ;IAC9C4O,iCAAiC3P,EAAEiB,OAAO,GAAGF,QAAQ;IACrD6O,gBAAgB5P,EAAEiB,OAAO,GAAGF,QAAQ;IACpC8O,UAAU7P,EAAEiB,OAAO,GAAGF,QAAQ;IAC9B+O,wBAAwB9P,EAAEiB,OAAO,GAAGF,QAAQ;IAC5CgP,iBAAiB/P,EAAE2C,MAAM,GAAGqN,QAAQ,GAAGjP,QAAQ;IAC/CkP,qBAAqBjQ,EAClBS,MAAM,CAAC;QACNyP,sBAAsBlQ,EAAE2C,MAAM,GAAG0F,GAAG;IACtC,GACCtH,QAAQ;IACXoP,gBAAgBnQ,EAAEiB,OAAO,GAAGF,QAAQ;IACpCqP,4BAA4BpQ,EAAEiB,OAAO,GAAGF,QAAQ;IAChDsP,4BAA4BrQ,EACzBuB,KAAK,CAAC;QACLvB,EAAEiB,OAAO;QACTjB,EAAEyB,IAAI,CAAC;YAAC;YAAS;YAAQ;SAAU;QACnCzB,EAAES,MAAM,CAAC;YACP6P,OAAOtQ,EAAEyB,IAAI,CAAC;gBAAC;gBAAS;gBAAQ;aAAU,EAAEV,QAAQ;YACpDwP,YAAYvQ,EAAE2C,MAAM,GAAG0F,GAAG,GAAG2H,QAAQ,GAAGjP,QAAQ;YAChDyP,WAAWxQ,EAAE2C,MAAM,GAAG0F,GAAG,GAAG2H,QAAQ,GAAGjP,QAAQ;YAC/C0P,oBAAoBzQ,EAAEiB,OAAO,GAAGF,QAAQ;QAC1C;KACD,EACAA,QAAQ;IACX2P,aAAa1Q,EAAEiB,OAAO,GAAGF,QAAQ;IACjC4P,oBAAoB3Q,EAAEiB,OAAO,GAAGF,QAAQ;IACxC6P,2BAA2B5Q,EAAEiB,OAAO,GAAGF,QAAQ;IAC/C8P,yBAAyB7Q,EAAEiB,OAAO,GAAGF,QAAQ;IAC7C+P,iBAAiB9Q,EAAEc,KAAK,CAACd,EAAEQ,MAAM,IAAIO,QAAQ;IAC7CgQ,yBAAyB/Q,EAAEgR,QAAQ,GAAGC,OAAO,CAACjR,EAAEkR,OAAO,CAAClR,EAAEmR,IAAI,KAAKpQ,QAAQ;IAC3EqQ,yBAAyBpR,EAAEyB,IAAI,CAAC;QAAC;QAAQ;KAAQ,EAAEV,QAAQ;AAC7D,EAAC;AAED,OAAO,MAAMsQ,eAAwCrR,EAAEqD,IAAI,CAAC,IAC1DrD,EAAE+C,YAAY,CAAC;QACbuO,aAAatR,EAAEQ,MAAM,GAAGO,QAAQ;QAChCwQ,YAAYvR,EAAEiB,OAAO,GAAGF,QAAQ;QAChCyQ,mBAAmBxR,EAAEc,KAAK,CAACd,EAAEQ,MAAM,IAAIO,QAAQ;QAC/C0Q,aAAazR,EAAEQ,MAAM,GAAGO,QAAQ;QAChCkB,UAAUjC,EAAEQ,MAAM,GAAGO,QAAQ;QAC7B2Q,+BAA+B1R,EAAEiB,OAAO,GAAGF,QAAQ;QACnDmG,iBAAiBlH,EAAEiB,OAAO,GAAGF,QAAQ;QACrC4Q,cAAc3R,EAAEQ,MAAM,GAAG8M,GAAG,CAAC,GAAGvM,QAAQ;QACxC8E,eAAe7F,EAAEO,MAAM,CAACP,EAAEQ,MAAM,IAAIR,EAAEQ,MAAM,GAAGO,QAAQ,IAAIA,QAAQ;QACnE0E,WAAWzF,EACRO,MAAM,CACLP,EAAES,MAAM,CAAC;YACPiF,OAAO1F,EAAE2C,MAAM,GAAG5B,QAAQ;YAC1B4E,YAAY3F,EAAE2C,MAAM,GAAG5B,QAAQ;YAC/B6E,QAAQ5F,EAAE2C,MAAM,GAAG5B,QAAQ;QAC7B,IAEDA,QAAQ;QACX6Q,oBAAoB5R,EAAE2C,MAAM,GAAG5B,QAAQ;QACvC8Q,cAAc7R,EAAEiB,OAAO,GAAGF,QAAQ;QAClC+Q,UAAU9R,EACP+C,YAAY,CAAC;YACZgP,SAAS/R,EACNuB,KAAK,CAAC;gBACLvB,EAAEiB,OAAO;gBACTjB,EAAES,MAAM,CAAC;oBACPuR,WAAWhS,EAAEiB,OAAO,GAAGF,QAAQ;oBAC/BkR,WAAWjS,EACRuB,KAAK,CAAC;wBACLvB,EAAE4B,OAAO,CAAC;wBACV5B,EAAE4B,OAAO,CAAC;wBACV5B,EAAE4B,OAAO,CAAC;qBACX,EACAb,QAAQ;oBACXmR,aAAalS,EAAEQ,MAAM,GAAG8M,GAAG,CAAC,GAAGvM,QAAQ;oBACvCoR,WAAWnS,EACRO,MAAM,CACLP,EAAEQ,MAAM,IACRR,EAAEO,MAAM,CACNP,EAAEQ,MAAM,IACRR,EAAES,MAAM,CAAC;wBACP2R,iBAAiBpS,EACd4K,KAAK,CAAC;4BAAC5K,EAAEQ,MAAM;4BAAIR,EAAEQ,MAAM;yBAAG,EAC9BO,QAAQ;wBACXsR,kBAAkBrS,EACf4K,KAAK,CAAC;4BAAC5K,EAAEQ,MAAM;4BAAIR,EAAEQ,MAAM;yBAAG,EAC9BO,QAAQ;oBACb,KAGHA,QAAQ;gBACb;aACD,EACAA,QAAQ;YACXuR,uBAAuBtS,EACpBuB,KAAK,CAAC;gBACLvB,EAAEiB,OAAO,GAAGF,QAAQ;gBACpBf,EAAES,MAAM,CAAC;oBACP8R,YAAYvS,EAAEc,KAAK,CAACd,EAAEQ,MAAM,IAAIO,QAAQ;gBAC1C;aACD,EACAA,QAAQ;YACXyR,OAAOxS,EACJS,MAAM,CAAC;gBACNgS,KAAKzS,EAAEQ,MAAM;gBACbkS,mBAAmB1S,EAAEQ,MAAM,GAAGO,QAAQ;gBACtC4R,UAAU3S,EAAEyB,IAAI,CAAC;oBAAC;oBAAc;oBAAc;iBAAO,EAAEV,QAAQ;gBAC/D6R,gBAAgB5S,EAAEiB,OAAO,GAAGF,QAAQ;YACtC,GACCA,QAAQ;YACX8R,eAAe7S,EACZuB,KAAK,CAAC;gBACLvB,EAAEiB,OAAO,GAAGF,QAAQ;gBACpBf,EAAES,MAAM,CAAC;oBACPyK,SAASlL,EAAEc,KAAK,CAACd,EAAEQ,MAAM,IAAI8M,GAAG,CAAC,GAAGvM,QAAQ;gBAC9C;aACD,EACAA,QAAQ;YACX+R,kBAAkB9S,EAAEuB,KAAK,CAAC;gBACxBvB,EAAEiB,OAAO,GAAGF,QAAQ;gBACpBf,EAAES,MAAM,CAAC;oBACPsS,aAAa/S,EAAEiB,OAAO,GAAGF,QAAQ;oBACjCiS,qBAAqBhT,EAAEc,KAAK,CAACd,EAAEQ,MAAM,IAAIO,QAAQ;oBACjDkS,KAAKjT,EAAEiB,OAAO,GAAGF,QAAQ;oBACzBmS,UAAUlT,EAAEiB,OAAO,GAAGF,QAAQ;oBAC9BoS,sBAAsBnT,EAAEc,KAAK,CAACd,EAAEQ,MAAM,IAAIO,QAAQ;oBAClDqS,QAAQpT,EAAEiB,OAAO,GAAGF,QAAQ;oBAC5BsS,2BAA2BrT,EAAEiB,OAAO,GAAGF,QAAQ;oBAC/CuS,WAAWtT,EAAEQ,MAAM,GAAG8M,GAAG,CAAC,GAAGvM,QAAQ;oBACrCwS,MAAMvT,EAAEiB,OAAO,GAAGF,QAAQ;oBAC1ByS,SAASxT,EAAEiB,OAAO,GAAGF,QAAQ;gBAC/B;aACD;YACD0S,WAAWzT,EAAEuB,KAAK,CAAC;gBACjBvB,EAAEiB,OAAO,GAAGF,QAAQ;gBACpBf,EAAES,MAAM,CAAC;oBACPoO,iBAAiB7O,EAAEiB,OAAO,GAAGF,QAAQ;gBACvC;aACD;YACD2S,QAAQ1T,EACLO,MAAM,CAACP,EAAEQ,MAAM,IAAIR,EAAEuB,KAAK,CAAC;gBAACvB,EAAEQ,MAAM;gBAAIR,EAAE2C,MAAM;gBAAI3C,EAAEiB,OAAO;aAAG,GAChEF,QAAQ;YACX4S,cAAc3T,EACXO,MAAM,CAACP,EAAEQ,MAAM,IAAIR,EAAEuB,KAAK,CAAC;gBAACvB,EAAEQ,MAAM;gBAAIR,EAAE2C,MAAM;gBAAI3C,EAAEiB,OAAO;aAAG,GAChEF,QAAQ;YACX6S,2BAA2B5T,EACxBgR,QAAQ,GACRC,OAAO,CAACjR,EAAEkR,OAAO,CAAClR,EAAEmR,IAAI,KACxBpQ,QAAQ;QACb,GACCA,QAAQ;QACX8S,UAAU7T,EAAEiB,OAAO,GAAGF,QAAQ;QAC9B+S,cAAc9T,EAAEQ,MAAM,GAAGO,QAAQ;QACjCgT,aAAa/T,EACVuB,KAAK,CAAC;YAACvB,EAAE4B,OAAO,CAAC;YAAc5B,EAAE4B,OAAO,CAAC;SAAmB,EAC5Db,QAAQ;QACXiT,cAAchU,EAAEQ,MAAM,GAAGO,QAAQ;QACjC8P,yBAAyB7Q,EAAEiB,OAAO,GAAGF,QAAQ;QAC7C8D,gBAAgB7E,EAAEQ,MAAM,GAAGO,QAAQ;QACnCkT,eAAejU,EACZuB,KAAK,CAAC;YACLvB,EAAES,MAAM,CAAC;gBACPyT,UAAUlU,EACPuB,KAAK,CAAC;oBACLvB,EAAE4B,OAAO,CAAC;oBACV5B,EAAE4B,OAAO,CAAC;oBACV5B,EAAE4B,OAAO,CAAC;oBACV5B,EAAE4B,OAAO,CAAC;iBACX,EACAb,QAAQ;YACb;YACAf,EAAE4B,OAAO,CAAC;SACX,EACAb,QAAQ;QACXoT,SAASnU,EAAEQ,MAAM,GAAG8M,GAAG,CAAC,GAAGvM,QAAQ;QACnCqT,KAAKpU,EAAEO,MAAM,CAACP,EAAEQ,MAAM,IAAIR,EAAEuB,KAAK,CAAC;YAACvB,EAAEQ,MAAM;YAAIR,EAAE6B,SAAS;SAAG,GAAGd,QAAQ;QACxEsT,2BAA2BrU,EAAEiB,OAAO,GAAGF,QAAQ;QAC/CuT,6BAA6BtU,EAAEiB,OAAO,GAAGF,QAAQ;QACjDwT,cAAcvU,EAAE+C,YAAY,CAAC6B,oBAAoB7D,QAAQ;QACzDyT,eAAexU,EACZgR,QAAQ,GACRyD,IAAI,CACHnU,YACAN,EAAES,MAAM,CAAC;YACPiU,KAAK1U,EAAEiB,OAAO;YACd0T,KAAK3U,EAAEQ,MAAM;YACboU,QAAQ5U,EAAEQ,MAAM,GAAG8H,QAAQ;YAC3B6L,SAASnU,EAAEQ,MAAM;YACjBqU,SAAS7U,EAAEQ,MAAM;QACnB,IAEDyQ,OAAO,CAACjR,EAAEuB,KAAK,CAAC;YAACjB;YAAYN,EAAEkR,OAAO,CAAC5Q;SAAY,GACnDS,QAAQ;QACX+T,iBAAiB9U,EACdgR,QAAQ,GACRyD,IAAI,GACJxD,OAAO,CACNjR,EAAEuB,KAAK,CAAC;YACNvB,EAAEQ,MAAM;YACRR,EAAE+U,IAAI;YACN/U,EAAEkR,OAAO,CAAClR,EAAEuB,KAAK,CAAC;gBAACvB,EAAEQ,MAAM;gBAAIR,EAAE+U,IAAI;aAAG;SACzC,GAEFhU,QAAQ;QACXiU,eAAehV,EAAEiB,OAAO,GAAGF,QAAQ;QACnC8B,SAAS7C,EACNgR,QAAQ,GACRyD,IAAI,GACJxD,OAAO,CAACjR,EAAEkR,OAAO,CAAClR,EAAEc,KAAK,CAAC8B,WAC1B7B,QAAQ;QACXkU,iBAAiBjV,EAAEwD,UAAU,CAACC,QAAQ1C,QAAQ;QAC9CmU,kBAAkBlV,EACf+C,YAAY,CAAC;YAAEoS,WAAWnV,EAAEiB,OAAO,GAAGF,QAAQ;QAAG,GACjDA,QAAQ;QACXqU,MAAMpV,EACH+C,YAAY,CAAC;YACZsS,eAAerV,EAAEQ,MAAM,GAAG8M,GAAG,CAAC;YAC9BgI,SAAStV,EACNc,KAAK,CACJd,EAAE+C,YAAY,CAAC;gBACbsS,eAAerV,EAAEQ,MAAM,GAAG8M,GAAG,CAAC;gBAC9BiI,QAAQvV,EAAEQ,MAAM,GAAG8M,GAAG,CAAC;gBACvBkI,MAAMxV,EAAE4B,OAAO,CAAC,MAAMb,QAAQ;gBAC9B0U,SAASzV,EAAEc,KAAK,CAACd,EAAEQ,MAAM,GAAG8M,GAAG,CAAC,IAAIvM,QAAQ;YAC9C,IAEDA,QAAQ;YACX2U,iBAAiB1V,EAAE4B,OAAO,CAAC,OAAOb,QAAQ;YAC1C0U,SAASzV,EAAEc,KAAK,CAACd,EAAEQ,MAAM,GAAG8M,GAAG,CAAC;QAClC,GACChF,QAAQ,GACRvH,QAAQ;QACX4U,QAAQ3V,EACL+C,YAAY,CAAC;YACZ6S,eAAe5V,EACZc,KAAK,CACJd,EAAE+C,YAAY,CAAC;gBACb8S,UAAU7V,EAAEQ,MAAM,GAAGO,QAAQ;gBAC7B+U,QAAQ9V,EAAEQ,MAAM,GAAGO,QAAQ;YAC7B,IAEDwM,GAAG,CAAC,IACJxM,QAAQ;YACXgV,gBAAgB/V,EACbc,KAAK,CACJd,EAAEuB,KAAK,CAAC;gBACNvB,EAAEwD,UAAU,CAACwS;gBACbhW,EAAE+C,YAAY,CAAC;oBACbkT,UAAUjW,EAAEQ,MAAM;oBAClBqV,UAAU7V,EAAEQ,MAAM,GAAGO,QAAQ;oBAC7BmV,MAAMlW,EAAEQ,MAAM,GAAG+M,GAAG,CAAC,GAAGxM,QAAQ;oBAChCoV,UAAUnW,EAAEyB,IAAI,CAAC;wBAAC;wBAAQ;qBAAQ,EAAEV,QAAQ;oBAC5C+U,QAAQ9V,EAAEQ,MAAM,GAAGO,QAAQ;gBAC7B;aACD,GAEFwM,GAAG,CAAC,IACJxM,QAAQ;YACXqV,aAAapW,EAAEiB,OAAO,GAAGF,QAAQ;YACjCsV,oBAAoBrW,EAAEiB,OAAO,GAAGF,QAAQ;YACxCuV,uBAAuBtW,EAAEQ,MAAM,GAAGO,QAAQ;YAC1CwV,wBAAwBvW,EAAEyB,IAAI,CAAC;gBAAC;gBAAU;aAAa,EAAEV,QAAQ;YACjEyV,qBAAqBxW,EAAEiB,OAAO,GAAGF,QAAQ;YACzC0V,yBAAyBzW,EAAEiB,OAAO,GAAGF,QAAQ;YAC7C2V,aAAa1W,EACVc,KAAK,CAACd,EAAE2C,MAAM,GAAG0F,GAAG,GAAG7C,GAAG,CAAC,GAAGmR,GAAG,CAAC,QAClCpJ,GAAG,CAAC,IACJxM,QAAQ;YACX6V,qBAAqB5W,EAAEiB,OAAO,GAAGF,QAAQ;YACzCuU,SAAStV,EAAEc,KAAK,CAACd,EAAEQ,MAAM,IAAI+M,GAAG,CAAC,IAAIxM,QAAQ;YAC7C8V,SAAS7W,EACNc,KAAK,CAACd,EAAEyB,IAAI,CAAC;gBAAC;gBAAc;aAAa,GACzC8L,GAAG,CAAC,GACJxM,QAAQ;YACX+V,YAAY9W,EACTc,KAAK,CAACd,EAAE2C,MAAM,GAAG0F,GAAG,GAAG7C,GAAG,CAAC,GAAGmR,GAAG,CAAC,QAClCrJ,GAAG,CAAC,GACJC,GAAG,CAAC,IACJxM,QAAQ;YACXiC,QAAQhD,EAAEyB,IAAI,CAAC1B,eAAegB,QAAQ;YACtCgW,YAAY/W,EAAEQ,MAAM,GAAGO,QAAQ;YAC/BiW,sBAAsBhX,EAAE2C,MAAM,GAAG0F,GAAG,GAAGiF,GAAG,CAAC,GAAGvM,QAAQ;YACtDkW,kBAAkBjX,EAAE2C,MAAM,GAAG0F,GAAG,GAAGiF,GAAG,CAAC,GAAGC,GAAG,CAAC,IAAIxM,QAAQ;YAC1DmW,qBAAqBlX,EAClB2C,MAAM,GACN0F,GAAG,GACHiF,GAAG,CAAC,GACJC,GAAG,CAAC4J,OAAOC,gBAAgB,EAC3BrW,QAAQ;YACXsW,iBAAiBrX,EAAE2C,MAAM,GAAG0F,GAAG,GAAG7C,GAAG,CAAC,GAAGzE,QAAQ;YACjDwC,MAAMvD,EAAEQ,MAAM,GAAGO,QAAQ;YACzBuW,WAAWtX,EACRc,KAAK,CAACd,EAAE2C,MAAM,GAAG0F,GAAG,GAAG7C,GAAG,CAAC,GAAGmR,GAAG,CAAC,MAClCrJ,GAAG,CAAC,GACJC,GAAG,CAAC,IACJxM,QAAQ;QACb,GACCA,QAAQ;QACXwW,SAASvX,EACNuB,KAAK,CAAC;YACLvB,EAAES,MAAM,CAAC;gBACP+W,SAASxX,EACNS,MAAM,CAAC;oBACNgX,SAASzX,EAAEiB,OAAO,GAAGF,QAAQ;oBAC7B2W,cAAc1X,EAAEiB,OAAO,GAAGF,QAAQ;gBACpC,GACCA,QAAQ;gBACX4W,kBAAkB3X,EACfuB,KAAK,CAAC;oBACLvB,EAAEiB,OAAO;oBACTjB,EAAES,MAAM,CAAC;wBACPmX,QAAQ5X,EAAEc,KAAK,CAACd,EAAEwD,UAAU,CAACC;oBAC/B;iBACD,EACA1C,QAAQ;gBACX8W,iBAAiB7X,EAAEiB,OAAO,GAAGF,QAAQ;gBACrC+W,mBAAmB9X,EAChBuB,KAAK,CAAC;oBAACvB,EAAEiB,OAAO;oBAAIjB,EAAEyB,IAAI,CAAC;wBAAC;wBAAS;qBAAO;iBAAE,EAC9CV,QAAQ;YACb;YACAf,EAAE4B,OAAO,CAAC;SACX,EACAb,QAAQ;QACXgX,mBAAmB/X,EAChBO,MAAM,CACLP,EAAEQ,MAAM,IACRR,EAAES,MAAM,CAAC;YACPuX,WAAWhY,EAAEuB,KAAK,CAAC;gBAACvB,EAAEQ,MAAM;gBAAIR,EAAEO,MAAM,CAACP,EAAEQ,MAAM,IAAIR,EAAEQ,MAAM;aAAI;YACjEyX,mBAAmBjY,EAAEiB,OAAO,GAAGF,QAAQ;YACvCmX,uBAAuBlY,EAAEiB,OAAO,GAAGF,QAAQ;QAC7C,IAEDA,QAAQ;QACXoX,iBAAiBnY,EACd+C,YAAY,CAAC;YACZqV,gBAAgBpY,EAAE2C,MAAM,GAAG5B,QAAQ;YACnCsX,mBAAmBrY,EAAE2C,MAAM,GAAG5B,QAAQ;QACxC,GACCA,QAAQ;QACXuX,QAAQtY,EAAEyB,IAAI,CAAC;YAAC;YAAc;SAAS,EAAEV,QAAQ;QACjDwX,uBAAuBvY,EAAEQ,MAAM,GAAGO,QAAQ;QAC1CyX,2BAA2BxY,EACxBO,MAAM,CAACP,EAAEQ,MAAM,IAAIR,EAAEc,KAAK,CAACd,EAAEQ,MAAM,KACnCO,QAAQ;QACX0X,2BAA2BzY,EACxBO,MAAM,CAACP,EAAEQ,MAAM,IAAIR,EAAEc,KAAK,CAACd,EAAEQ,MAAM,KACnCO,QAAQ;QACX2X,gBAAgB1Y,EAAEc,KAAK,CAACd,EAAEQ,MAAM,IAAI8M,GAAG,CAAC,GAAGvM,QAAQ;QACnD4X,6BAA6B3Y,EAAEc,KAAK,CAACd,EAAEQ,MAAM,IAAIO,QAAQ;QACzD6X,oBAAoB5Y,EACjBuB,KAAK,CAAC;YAACvB,EAAEiB,OAAO;YAAIjB,EAAE4B,OAAO,CAAC;SAAkB,EAChDb,QAAQ;QACX8X,iBAAiB7Y,EAAEiB,OAAO,GAAGF,QAAQ;QACrC+X,6BAA6B9Y,EAAEiB,OAAO,GAAGF,QAAQ;QACjDgY,eAAe/Y,EAAEuB,KAAK,CAAC;YACrBvB,EAAEiB,OAAO;YACTjB,EACGS,MAAM,CAAC;gBACNuY,iBAAiBhZ,EAAEyB,IAAI,CAAC;oBAAC;oBAAS;oBAAc;iBAAM,EAAEV,QAAQ;gBAChEkY,gBAAgBjZ,EACbyB,IAAI,CAAC;oBAAC;oBAAQ;oBAAmB;iBAAa,EAC9CV,QAAQ;YACb,GACCA,QAAQ;SACZ;QACDmY,0BAA0BlZ,EAAEiB,OAAO,GAAGF,QAAQ;QAC9CoY,iBAAiBnZ,EAAEiB,OAAO,GAAGqH,QAAQ,GAAGvH,QAAQ;QAChDqY,uBAAuBpZ,EAAE2C,MAAM,GAAG2G,WAAW,GAAGjB,GAAG,GAAGtH,QAAQ;QAC9DsY,WAAWrZ,EACRgR,QAAQ,GACRyD,IAAI,GACJxD,OAAO,CAACjR,EAAEkR,OAAO,CAAClR,EAAEc,KAAK,CAACwB,aAC1BvB,QAAQ;QACXuY,UAAUtZ,EACPgR,QAAQ,GACRyD,IAAI,GACJxD,OAAO,CACNjR,EAAEkR,OAAO,CACPlR,EAAEuB,KAAK,CAAC;YACNvB,EAAEc,KAAK,CAACgB;YACR9B,EAAES,MAAM,CAAC;gBACP8Y,aAAavZ,EAAEc,KAAK,CAACgB;gBACrB0X,YAAYxZ,EAAEc,KAAK,CAACgB;gBACpB2X,UAAUzZ,EAAEc,KAAK,CAACgB;YACpB;SACD,IAGJf,QAAQ;QACX,8EAA8E;QAC9E2Y,aAAa1Z,EACVS,MAAM,CAAC;YACNkZ,gBAAgB3Z,EAAEQ,MAAM,GAAGO,QAAQ;QACrC,GACC6Y,QAAQ,CAAC5Z,EAAEY,GAAG,IACdG,QAAQ;QACX8Y,wBAAwB7Z,EAAEc,KAAK,CAACd,EAAEQ,MAAM,IAAIO,QAAQ;QACpD+Y,4BAA4B9Z,EAAEiB,OAAO,GAAGF,QAAQ;QAChDgZ,uBAAuB/Z,EAAEiB,OAAO,GAAGF,QAAQ;QAC3CiZ,2BAA2Bha,EAAEiB,OAAO,GAAGF,QAAQ;QAC/CkZ,6BAA6Bja,EAAE2C,MAAM,GAAG5B,QAAQ;QAChDmZ,YAAYla,EAAE2C,MAAM,GAAG5B,QAAQ;QAC/BoZ,QAAQna,EAAEQ,MAAM,GAAGO,QAAQ;QAC3BqZ,eAAepa,EAAEiB,OAAO,GAAGF,QAAQ;QACnCsZ,mBAAmBra,EAAEc,KAAK,CAACd,EAAEQ,MAAM,IAAIO,QAAQ;QAC/CuZ,WAAWpW,iBAAiBnD,QAAQ;QACpCwZ,YAAYva,EACT+C,YAAY,CAAC;YACZyX,mBAAmBxa,EAAEiB,OAAO,GAAGF,QAAQ;YACvC0Z,cAAcza,EAAEQ,MAAM,GAAG8M,GAAG,CAAC,GAAGvM,QAAQ;QAC1C,GACCA,QAAQ;QACXoL,aAAanM,EAAEiB,OAAO,GAAGF,QAAQ;QACjC2Z,2BAA2B1a,EAAEiB,OAAO,GAAGF,QAAQ;QAC/C,uDAAuD;QACvD4Z,SAAS3a,EAAEY,GAAG,GAAG0H,QAAQ,GAAGvH,QAAQ;QACpC6Z,cAAc5a,EACX+C,YAAY,CAAC;YACZ8X,gBAAgB7a,EAAE2C,MAAM,GAAGqN,QAAQ,GAAGzG,MAAM,GAAGxI,QAAQ;QACzD,GACCA,QAAQ;IACb,IACD","ignoreList":[0]} |
@@ -14,3 +14,3 @@ import { loadEnvConfig } from '@next/env'; | ||
| const versionSuffix = logBundler ? ` (${bundlerName(getBundlerFromEnv())})` : ''; | ||
| Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"16.3.0-canary.102"}`))}${versionSuffix}`); | ||
| Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"16.3.0-canary.103"}`))}${versionSuffix}`); | ||
| if (appUrl) { | ||
@@ -17,0 +17,0 @@ Log.bootstrap(`- Local: ${appUrl}`); |
@@ -112,3 +112,3 @@ // Start CPU profile if it wasn't already started. | ||
| let { port } = serverOptions; | ||
| process.title = `next-server (v${"16.3.0-canary.102"})`; | ||
| process.title = `next-server (v${"16.3.0-canary.103"})`; | ||
| let handlersReady = ()=>{}; | ||
@@ -115,0 +115,0 @@ let handlersError = ()=>{}; |
@@ -96,2 +96,12 @@ import { ReflectAdapter } from './reflect'; | ||
| /** | ||
| * @param headers | ||
| * @returns A fresh object identity backed by the original value | ||
| */ static fresh(headers) { | ||
| return new Proxy(headers, { | ||
| get (target, prop, receiver) { | ||
| return ReflectAdapter.get(target, prop, receiver); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * Merges a header value into a string. This stores multiple values as an | ||
@@ -98,0 +108,0 @@ * array, so we need to merge them into a string. |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../../../../../../src/server/web/spec-extension/adapters/headers.ts"],"sourcesContent":["import type { IncomingHttpHeaders } from 'http'\n\nimport { ReflectAdapter } from './reflect'\n\n/**\n * @internal\n */\nexport class ReadonlyHeadersError extends Error {\n constructor() {\n super(\n 'Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers'\n )\n }\n\n public static callable() {\n throw new ReadonlyHeadersError()\n }\n}\n\nexport type ReadonlyHeaders = Headers & {\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n append(...args: any[]): void\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n set(...args: any[]): void\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n delete(...args: any[]): void\n}\nexport class HeadersAdapter extends Headers {\n private readonly headers: IncomingHttpHeaders\n\n constructor(headers: IncomingHttpHeaders) {\n // We've already overridden the methods that would be called, so we're just\n // calling the super constructor to ensure that the instanceof check works.\n super()\n\n this.headers = new Proxy(headers, {\n get(target, prop, receiver) {\n // Because this is just an object, we expect that all \"get\" operations\n // are for properties. If it's a \"get\" for a symbol, we'll just return\n // the symbol.\n if (typeof prop === 'symbol') {\n return ReflectAdapter.get(target, prop, receiver)\n }\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return undefined.\n if (typeof original === 'undefined') return\n\n // If the original casing exists, return the value.\n return ReflectAdapter.get(target, original, receiver)\n },\n set(target, prop, value, receiver) {\n if (typeof prop === 'symbol') {\n return ReflectAdapter.set(target, prop, value, receiver)\n }\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, use the prop as the key.\n return ReflectAdapter.set(target, original ?? prop, value, receiver)\n },\n has(target, prop) {\n if (typeof prop === 'symbol') return ReflectAdapter.has(target, prop)\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return false.\n if (typeof original === 'undefined') return false\n\n // If the original casing exists, return true.\n return ReflectAdapter.has(target, original)\n },\n deleteProperty(target, prop) {\n if (typeof prop === 'symbol')\n return ReflectAdapter.deleteProperty(target, prop)\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return true.\n if (typeof original === 'undefined') return true\n\n // If the original casing exists, delete the property.\n return ReflectAdapter.deleteProperty(target, original)\n },\n })\n }\n\n /**\n * Seals a Headers instance to prevent modification by throwing an error when\n * any mutating method is called.\n */\n public static seal(headers: Headers): ReadonlyHeaders {\n return new Proxy<ReadonlyHeaders>(headers, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'append':\n case 'delete':\n case 'set':\n return ReadonlyHeadersError.callable\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n }\n\n /**\n * Merges a header value into a string. This stores multiple values as an\n * array, so we need to merge them into a string.\n *\n * @param value a header value\n * @returns a merged header value (a string)\n */\n private merge(value: string | string[]): string {\n if (Array.isArray(value)) return value.join(', ')\n\n return value\n }\n\n /**\n * Creates a Headers instance from a plain object or a Headers instance.\n *\n * @param headers a plain object or a Headers instance\n * @returns a headers instance\n */\n public static from(headers: IncomingHttpHeaders | Headers): Headers {\n if (headers instanceof Headers) return headers\n\n return new HeadersAdapter(headers)\n }\n\n public append(name: string, value: string): void {\n const existing = this.headers[name]\n if (typeof existing === 'string') {\n this.headers[name] = [existing, value]\n } else if (Array.isArray(existing)) {\n existing.push(value)\n } else {\n this.headers[name] = value\n }\n }\n\n public delete(name: string): void {\n delete this.headers[name]\n }\n\n public get(name: string): string | null {\n const value = this.headers[name]\n if (typeof value !== 'undefined') return this.merge(value)\n\n return null\n }\n\n public has(name: string): boolean {\n return typeof this.headers[name] !== 'undefined'\n }\n\n public set(name: string, value: string): void {\n this.headers[name] = value\n }\n\n public forEach(\n callbackfn: (value: string, name: string, parent: Headers) => void,\n thisArg?: any\n ): void {\n for (const [name, value] of this.entries()) {\n callbackfn.call(thisArg, value, name, this)\n }\n }\n\n public *entries(): HeadersIterator<[string, string]> {\n for (const key of Object.keys(this.headers)) {\n const name = key.toLowerCase()\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(name) as string\n\n yield [name, value] as [string, string]\n }\n }\n\n public *keys(): HeadersIterator<string> {\n for (const key of Object.keys(this.headers)) {\n const name = key.toLowerCase()\n yield name\n }\n }\n\n public *values(): HeadersIterator<string> {\n for (const key of Object.keys(this.headers)) {\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(key) as string\n\n yield value\n }\n }\n\n public [Symbol.iterator](): HeadersIterator<[string, string]> {\n return this.entries()\n }\n}\n"],"names":["ReflectAdapter","ReadonlyHeadersError","Error","constructor","callable","HeadersAdapter","Headers","headers","Proxy","get","target","prop","receiver","lowercased","toLowerCase","original","Object","keys","find","o","set","value","has","deleteProperty","seal","merge","Array","isArray","join","from","append","name","existing","push","delete","forEach","callbackfn","thisArg","entries","call","key","values","Symbol","iterator"],"mappings":"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","ignoreList":[0]} | ||
| {"version":3,"sources":["../../../../../../src/server/web/spec-extension/adapters/headers.ts"],"sourcesContent":["import type { IncomingHttpHeaders } from 'http'\n\nimport { ReflectAdapter } from './reflect'\n\n/**\n * @internal\n */\nexport class ReadonlyHeadersError extends Error {\n constructor() {\n super(\n 'Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers'\n )\n }\n\n public static callable() {\n throw new ReadonlyHeadersError()\n }\n}\n\nexport type ReadonlyHeaders = Headers & {\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n append(...args: any[]): void\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n set(...args: any[]): void\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n delete(...args: any[]): void\n}\nexport class HeadersAdapter extends Headers {\n private readonly headers: IncomingHttpHeaders\n\n constructor(headers: IncomingHttpHeaders) {\n // We've already overridden the methods that would be called, so we're just\n // calling the super constructor to ensure that the instanceof check works.\n super()\n\n this.headers = new Proxy(headers, {\n get(target, prop, receiver) {\n // Because this is just an object, we expect that all \"get\" operations\n // are for properties. If it's a \"get\" for a symbol, we'll just return\n // the symbol.\n if (typeof prop === 'symbol') {\n return ReflectAdapter.get(target, prop, receiver)\n }\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return undefined.\n if (typeof original === 'undefined') return\n\n // If the original casing exists, return the value.\n return ReflectAdapter.get(target, original, receiver)\n },\n set(target, prop, value, receiver) {\n if (typeof prop === 'symbol') {\n return ReflectAdapter.set(target, prop, value, receiver)\n }\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, use the prop as the key.\n return ReflectAdapter.set(target, original ?? prop, value, receiver)\n },\n has(target, prop) {\n if (typeof prop === 'symbol') return ReflectAdapter.has(target, prop)\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return false.\n if (typeof original === 'undefined') return false\n\n // If the original casing exists, return true.\n return ReflectAdapter.has(target, original)\n },\n deleteProperty(target, prop) {\n if (typeof prop === 'symbol')\n return ReflectAdapter.deleteProperty(target, prop)\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return true.\n if (typeof original === 'undefined') return true\n\n // If the original casing exists, delete the property.\n return ReflectAdapter.deleteProperty(target, original)\n },\n })\n }\n\n /**\n * Seals a Headers instance to prevent modification by throwing an error when\n * any mutating method is called.\n */\n public static seal(headers: Headers): ReadonlyHeaders {\n return new Proxy<ReadonlyHeaders>(headers, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'append':\n case 'delete':\n case 'set':\n return ReadonlyHeadersError.callable\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n }\n\n /**\n * @param headers\n * @returns A fresh object identity backed by the original value\n */\n public static fresh(headers: ReadonlyHeaders): ReadonlyHeaders {\n return new Proxy<ReadonlyHeaders>(headers, {\n get(target, prop, receiver) {\n return ReflectAdapter.get(target, prop, receiver)\n },\n })\n }\n\n /**\n * Merges a header value into a string. This stores multiple values as an\n * array, so we need to merge them into a string.\n *\n * @param value a header value\n * @returns a merged header value (a string)\n */\n private merge(value: string | string[]): string {\n if (Array.isArray(value)) return value.join(', ')\n\n return value\n }\n\n /**\n * Creates a Headers instance from a plain object or a Headers instance.\n *\n * @param headers a plain object or a Headers instance\n * @returns a headers instance\n */\n public static from(headers: IncomingHttpHeaders | Headers): Headers {\n if (headers instanceof Headers) return headers\n\n return new HeadersAdapter(headers)\n }\n\n public append(name: string, value: string): void {\n const existing = this.headers[name]\n if (typeof existing === 'string') {\n this.headers[name] = [existing, value]\n } else if (Array.isArray(existing)) {\n existing.push(value)\n } else {\n this.headers[name] = value\n }\n }\n\n public delete(name: string): void {\n delete this.headers[name]\n }\n\n public get(name: string): string | null {\n const value = this.headers[name]\n if (typeof value !== 'undefined') return this.merge(value)\n\n return null\n }\n\n public has(name: string): boolean {\n return typeof this.headers[name] !== 'undefined'\n }\n\n public set(name: string, value: string): void {\n this.headers[name] = value\n }\n\n public forEach(\n callbackfn: (value: string, name: string, parent: Headers) => void,\n thisArg?: any\n ): void {\n for (const [name, value] of this.entries()) {\n callbackfn.call(thisArg, value, name, this)\n }\n }\n\n public *entries(): HeadersIterator<[string, string]> {\n for (const key of Object.keys(this.headers)) {\n const name = key.toLowerCase()\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(name) as string\n\n yield [name, value] as [string, string]\n }\n }\n\n public *keys(): HeadersIterator<string> {\n for (const key of Object.keys(this.headers)) {\n const name = key.toLowerCase()\n yield name\n }\n }\n\n public *values(): HeadersIterator<string> {\n for (const key of Object.keys(this.headers)) {\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(key) as string\n\n yield value\n }\n }\n\n public [Symbol.iterator](): HeadersIterator<[string, string]> {\n return this.entries()\n }\n}\n"],"names":["ReflectAdapter","ReadonlyHeadersError","Error","constructor","callable","HeadersAdapter","Headers","headers","Proxy","get","target","prop","receiver","lowercased","toLowerCase","original","Object","keys","find","o","set","value","has","deleteProperty","seal","fresh","merge","Array","isArray","join","from","append","name","existing","push","delete","forEach","callbackfn","thisArg","entries","call","key","values","Symbol","iterator"],"mappings":"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","ignoreList":[0]} |
@@ -36,2 +36,12 @@ import { RequestCookies } from '../cookies'; | ||
| } | ||
| /** | ||
| * @param cookies | ||
| * @returns A fresh object identity backed by the original value | ||
| */ static fresh(cookies) { | ||
| return new Proxy(cookies, { | ||
| get (target, prop, receiver) { | ||
| return ReflectAdapter.get(target, prop, receiver); | ||
| } | ||
| }); | ||
| } | ||
| } | ||
@@ -38,0 +48,0 @@ const SYMBOL_MODIFY_COOKIE_VALUES = Symbol.for('next.mutated.cookies'); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../../../../../../src/server/web/spec-extension/adapters/request-cookies.ts"],"sourcesContent":["import { RequestCookies } from '../cookies'\n\nimport { ResponseCookies } from '../cookies'\nimport { ReflectAdapter } from './reflect'\nimport { workAsyncStorage } from '../../../app-render/work-async-storage.external'\nimport type { RequestStore } from '../../../app-render/work-unit-async-storage.external'\nimport { ActionDidRevalidateStaticAndDynamic } from '../../../../shared/lib/action-revalidation-kind'\n\n/**\n * @internal\n */\nexport class ReadonlyRequestCookiesError extends Error {\n constructor() {\n super(\n 'Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#options'\n )\n }\n\n public static callable() {\n throw new ReadonlyRequestCookiesError()\n }\n}\n\n// We use this to type some APIs but we don't construct instances directly\nexport type { ResponseCookies }\n\n// The `cookies()` API is a mix of request and response cookies. For `.get()` methods,\n// we want to return the request cookie if it exists. For mutative methods like `.set()`,\n// we want to return the response cookie.\nexport type ReadonlyRequestCookies = Omit<\n RequestCookies,\n 'set' | 'clear' | 'delete'\n> &\n Pick<ResponseCookies, 'set' | 'delete'>\n\nexport class RequestCookiesAdapter {\n public static seal(cookies: RequestCookies): ReadonlyRequestCookies {\n return new Proxy(cookies as any, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'clear':\n case 'delete':\n case 'set':\n return ReadonlyRequestCookiesError.callable\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n }\n}\n\nconst SYMBOL_MODIFY_COOKIE_VALUES = Symbol.for('next.mutated.cookies')\n\nexport function getModifiedCookieValues(\n cookies: ResponseCookies\n): ResponseCookie[] {\n const modified: ResponseCookie[] | undefined = (cookies as unknown as any)[\n SYMBOL_MODIFY_COOKIE_VALUES\n ]\n if (!modified || !Array.isArray(modified) || modified.length === 0) {\n return []\n }\n\n return modified\n}\n\ntype SetCookieArgs =\n | [key: string, value: string, cookie?: Partial<ResponseCookie>]\n | [options: ResponseCookie]\n\nexport function appendMutableCookies(\n headers: Headers,\n mutableCookies: ResponseCookies\n): boolean {\n const modifiedCookieValues = getModifiedCookieValues(mutableCookies)\n if (modifiedCookieValues.length === 0) {\n return false\n }\n\n // Return a new response that extends the response with\n // the modified cookies as fallbacks. `res` cookies\n // will still take precedence.\n const resCookies = new ResponseCookies(headers)\n const returnedCookies = resCookies.getAll()\n\n // Set the modified cookies as fallbacks.\n for (const cookie of modifiedCookieValues) {\n resCookies.set(cookie)\n }\n\n // Set the original cookies as the final values.\n for (const cookie of returnedCookies) {\n resCookies.set(cookie)\n }\n\n return true\n}\n\ntype ResponseCookie = NonNullable<\n ReturnType<InstanceType<typeof ResponseCookies>['get']>\n>\n\nexport class MutableRequestCookiesAdapter {\n public static wrap(\n cookies: RequestCookies,\n onUpdateCookies?: (cookies: string[]) => void\n ): ResponseCookies {\n const responseCookies = new ResponseCookies(new Headers())\n for (const cookie of cookies.getAll()) {\n responseCookies.set(cookie)\n }\n\n let modifiedValues: ResponseCookie[] = []\n const modifiedCookies = new Set<string>()\n const updateResponseCookies = () => {\n // TODO-APP: change method of getting workStore\n const workStore = workAsyncStorage.getStore()\n if (workStore) {\n workStore.pathWasRevalidated = ActionDidRevalidateStaticAndDynamic\n }\n\n const allCookies = responseCookies.getAll()\n modifiedValues = allCookies.filter((c) => modifiedCookies.has(c.name))\n if (onUpdateCookies) {\n const serializedCookies: string[] = []\n for (const cookie of modifiedValues) {\n const tempCookies = new ResponseCookies(new Headers())\n tempCookies.set(cookie)\n serializedCookies.push(tempCookies.toString())\n }\n\n onUpdateCookies(serializedCookies)\n }\n }\n\n const wrappedCookies = new Proxy(responseCookies, {\n get(target, prop, receiver) {\n switch (prop) {\n // A special symbol to get the modified cookie values\n case SYMBOL_MODIFY_COOKIE_VALUES:\n return modifiedValues\n\n // TODO: Throw error if trying to set a cookie after the response\n // headers have been set.\n case 'delete':\n return function (...args: [string] | [ResponseCookie]) {\n modifiedCookies.add(\n typeof args[0] === 'string' ? args[0] : args[0].name\n )\n try {\n target.delete(...args)\n return wrappedCookies\n } finally {\n updateResponseCookies()\n }\n }\n case 'set':\n return function (...args: SetCookieArgs) {\n modifiedCookies.add(\n typeof args[0] === 'string' ? args[0] : args[0].name\n )\n try {\n target.set(...args)\n return wrappedCookies\n } finally {\n updateResponseCookies()\n }\n }\n\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n\n return wrappedCookies\n }\n}\n\nexport function createCookiesWithMutableAccessCheck(\n requestStore: RequestStore\n): ResponseCookies {\n const wrappedCookies = new Proxy(requestStore.mutableCookies, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'delete':\n return function (...args: [string] | [ResponseCookie]) {\n ensureCookiesAreStillMutable(requestStore, 'cookies().delete')\n target.delete(...args)\n return wrappedCookies\n }\n case 'set':\n return function (...args: SetCookieArgs) {\n ensureCookiesAreStillMutable(requestStore, 'cookies().set')\n target.set(...args)\n return wrappedCookies\n }\n\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n return wrappedCookies\n}\n\nexport function areCookiesMutableInCurrentPhase(requestStore: RequestStore) {\n return requestStore.phase === 'action'\n}\n\n/** Ensure that cookies() starts throwing on mutation\n * if we changed phases and can no longer mutate.\n *\n * This can happen when going:\n * 'render' -> 'after'\n * 'action' -> 'render'\n * */\nfunction ensureCookiesAreStillMutable(\n requestStore: RequestStore,\n _callingExpression: string\n) {\n if (!areCookiesMutableInCurrentPhase(requestStore)) {\n // TODO: maybe we can give a more precise error message based on callingExpression?\n throw new ReadonlyRequestCookiesError()\n }\n}\n\nexport function responseCookiesToRequestCookies(\n responseCookies: ResponseCookies\n): RequestCookies {\n const requestCookies = new RequestCookies(new Headers())\n for (const cookie of responseCookies.getAll()) {\n requestCookies.set(cookie)\n }\n return requestCookies\n}\n"],"names":["RequestCookies","ResponseCookies","ReflectAdapter","workAsyncStorage","ActionDidRevalidateStaticAndDynamic","ReadonlyRequestCookiesError","Error","constructor","callable","RequestCookiesAdapter","seal","cookies","Proxy","get","target","prop","receiver","SYMBOL_MODIFY_COOKIE_VALUES","Symbol","for","getModifiedCookieValues","modified","Array","isArray","length","appendMutableCookies","headers","mutableCookies","modifiedCookieValues","resCookies","returnedCookies","getAll","cookie","set","MutableRequestCookiesAdapter","wrap","onUpdateCookies","responseCookies","Headers","modifiedValues","modifiedCookies","Set","updateResponseCookies","workStore","getStore","pathWasRevalidated","allCookies","filter","c","has","name","serializedCookies","tempCookies","push","toString","wrappedCookies","args","add","delete","createCookiesWithMutableAccessCheck","requestStore","ensureCookiesAreStillMutable","areCookiesMutableInCurrentPhase","phase","_callingExpression","responseCookiesToRequestCookies","requestCookies"],"mappings":"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","ignoreList":[0]} | ||
| {"version":3,"sources":["../../../../../../src/server/web/spec-extension/adapters/request-cookies.ts"],"sourcesContent":["import { RequestCookies } from '../cookies'\n\nimport { ResponseCookies } from '../cookies'\nimport { ReflectAdapter } from './reflect'\nimport { workAsyncStorage } from '../../../app-render/work-async-storage.external'\nimport type { RequestStore } from '../../../app-render/work-unit-async-storage.external'\nimport { ActionDidRevalidateStaticAndDynamic } from '../../../../shared/lib/action-revalidation-kind'\n\n/**\n * @internal\n */\nexport class ReadonlyRequestCookiesError extends Error {\n constructor() {\n super(\n 'Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#options'\n )\n }\n\n public static callable() {\n throw new ReadonlyRequestCookiesError()\n }\n}\n\n// We use this to type some APIs but we don't construct instances directly\nexport type { ResponseCookies }\n\n// The `cookies()` API is a mix of request and response cookies. For `.get()` methods,\n// we want to return the request cookie if it exists. For mutative methods like `.set()`,\n// we want to return the response cookie.\nexport type ReadonlyRequestCookies = Omit<\n RequestCookies,\n 'set' | 'clear' | 'delete'\n> &\n Pick<ResponseCookies, 'set' | 'delete'>\n\nexport class RequestCookiesAdapter {\n public static seal(cookies: RequestCookies): ReadonlyRequestCookies {\n return new Proxy(cookies as any, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'clear':\n case 'delete':\n case 'set':\n return ReadonlyRequestCookiesError.callable\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n }\n\n /**\n * @param cookies\n * @returns A fresh object identity backed by the original value\n */\n public static fresh(cookies: ReadonlyRequestCookies): ReadonlyRequestCookies {\n return new Proxy(cookies, {\n get(target, prop, receiver) {\n return ReflectAdapter.get(target, prop, receiver)\n },\n })\n }\n}\n\nconst SYMBOL_MODIFY_COOKIE_VALUES = Symbol.for('next.mutated.cookies')\n\nexport function getModifiedCookieValues(\n cookies: ResponseCookies\n): ResponseCookie[] {\n const modified: ResponseCookie[] | undefined = (cookies as unknown as any)[\n SYMBOL_MODIFY_COOKIE_VALUES\n ]\n if (!modified || !Array.isArray(modified) || modified.length === 0) {\n return []\n }\n\n return modified\n}\n\ntype SetCookieArgs =\n | [key: string, value: string, cookie?: Partial<ResponseCookie>]\n | [options: ResponseCookie]\n\nexport function appendMutableCookies(\n headers: Headers,\n mutableCookies: ResponseCookies\n): boolean {\n const modifiedCookieValues = getModifiedCookieValues(mutableCookies)\n if (modifiedCookieValues.length === 0) {\n return false\n }\n\n // Return a new response that extends the response with\n // the modified cookies as fallbacks. `res` cookies\n // will still take precedence.\n const resCookies = new ResponseCookies(headers)\n const returnedCookies = resCookies.getAll()\n\n // Set the modified cookies as fallbacks.\n for (const cookie of modifiedCookieValues) {\n resCookies.set(cookie)\n }\n\n // Set the original cookies as the final values.\n for (const cookie of returnedCookies) {\n resCookies.set(cookie)\n }\n\n return true\n}\n\ntype ResponseCookie = NonNullable<\n ReturnType<InstanceType<typeof ResponseCookies>['get']>\n>\n\nexport class MutableRequestCookiesAdapter {\n public static wrap(\n cookies: RequestCookies,\n onUpdateCookies?: (cookies: string[]) => void\n ): ResponseCookies {\n const responseCookies = new ResponseCookies(new Headers())\n for (const cookie of cookies.getAll()) {\n responseCookies.set(cookie)\n }\n\n let modifiedValues: ResponseCookie[] = []\n const modifiedCookies = new Set<string>()\n const updateResponseCookies = () => {\n // TODO-APP: change method of getting workStore\n const workStore = workAsyncStorage.getStore()\n if (workStore) {\n workStore.pathWasRevalidated = ActionDidRevalidateStaticAndDynamic\n }\n\n const allCookies = responseCookies.getAll()\n modifiedValues = allCookies.filter((c) => modifiedCookies.has(c.name))\n if (onUpdateCookies) {\n const serializedCookies: string[] = []\n for (const cookie of modifiedValues) {\n const tempCookies = new ResponseCookies(new Headers())\n tempCookies.set(cookie)\n serializedCookies.push(tempCookies.toString())\n }\n\n onUpdateCookies(serializedCookies)\n }\n }\n\n const wrappedCookies = new Proxy(responseCookies, {\n get(target, prop, receiver) {\n switch (prop) {\n // A special symbol to get the modified cookie values\n case SYMBOL_MODIFY_COOKIE_VALUES:\n return modifiedValues\n\n // TODO: Throw error if trying to set a cookie after the response\n // headers have been set.\n case 'delete':\n return function (...args: [string] | [ResponseCookie]) {\n modifiedCookies.add(\n typeof args[0] === 'string' ? args[0] : args[0].name\n )\n try {\n target.delete(...args)\n return wrappedCookies\n } finally {\n updateResponseCookies()\n }\n }\n case 'set':\n return function (...args: SetCookieArgs) {\n modifiedCookies.add(\n typeof args[0] === 'string' ? args[0] : args[0].name\n )\n try {\n target.set(...args)\n return wrappedCookies\n } finally {\n updateResponseCookies()\n }\n }\n\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n\n return wrappedCookies\n }\n}\n\nexport function createCookiesWithMutableAccessCheck(\n requestStore: RequestStore\n): ResponseCookies {\n const wrappedCookies = new Proxy(requestStore.mutableCookies, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'delete':\n return function (...args: [string] | [ResponseCookie]) {\n ensureCookiesAreStillMutable(requestStore, 'cookies().delete')\n target.delete(...args)\n return wrappedCookies\n }\n case 'set':\n return function (...args: SetCookieArgs) {\n ensureCookiesAreStillMutable(requestStore, 'cookies().set')\n target.set(...args)\n return wrappedCookies\n }\n\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n return wrappedCookies\n}\n\nexport function areCookiesMutableInCurrentPhase(requestStore: RequestStore) {\n return requestStore.phase === 'action'\n}\n\n/** Ensure that cookies() starts throwing on mutation\n * if we changed phases and can no longer mutate.\n *\n * This can happen when going:\n * 'render' -> 'after'\n * 'action' -> 'render'\n * */\nfunction ensureCookiesAreStillMutable(\n requestStore: RequestStore,\n _callingExpression: string\n) {\n if (!areCookiesMutableInCurrentPhase(requestStore)) {\n // TODO: maybe we can give a more precise error message based on callingExpression?\n throw new ReadonlyRequestCookiesError()\n }\n}\n\nexport function responseCookiesToRequestCookies(\n responseCookies: ResponseCookies\n): RequestCookies {\n const requestCookies = new RequestCookies(new Headers())\n for (const cookie of responseCookies.getAll()) {\n requestCookies.set(cookie)\n }\n return requestCookies\n}\n"],"names":["RequestCookies","ResponseCookies","ReflectAdapter","workAsyncStorage","ActionDidRevalidateStaticAndDynamic","ReadonlyRequestCookiesError","Error","constructor","callable","RequestCookiesAdapter","seal","cookies","Proxy","get","target","prop","receiver","fresh","SYMBOL_MODIFY_COOKIE_VALUES","Symbol","for","getModifiedCookieValues","modified","Array","isArray","length","appendMutableCookies","headers","mutableCookies","modifiedCookieValues","resCookies","returnedCookies","getAll","cookie","set","MutableRequestCookiesAdapter","wrap","onUpdateCookies","responseCookies","Headers","modifiedValues","modifiedCookies","Set","updateResponseCookies","workStore","getStore","pathWasRevalidated","allCookies","filter","c","has","name","serializedCookies","tempCookies","push","toString","wrappedCookies","args","add","delete","createCookiesWithMutableAccessCheck","requestStore","ensureCookiesAreStillMutable","areCookiesMutableInCurrentPhase","phase","_callingExpression","responseCookiesToRequestCookies","requestCookies"],"mappings":"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","ignoreList":[0]} |
| export function isStableBuild() { | ||
| return !"16.3.0-canary.102"?.includes('canary') && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV; | ||
| return !"16.3.0-canary.103"?.includes('canary') && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV; | ||
| } | ||
@@ -4,0 +4,0 @@ export class CanaryOnlyConfigError extends Error { |
@@ -75,3 +75,3 @@ "use strict"; | ||
| const data = await res.json(); | ||
| const versionData = data.versions["16.3.0-canary.102"]; | ||
| const versionData = data.versions["16.3.0-canary.103"]; | ||
| return { | ||
@@ -104,3 +104,3 @@ os: versionData.os, | ||
| lockfileParsed.dependencies[pkg] = { | ||
| version: "16.3.0-canary.102", | ||
| version: "16.3.0-canary.103", | ||
| resolved: pkgData.tarball, | ||
@@ -113,3 +113,3 @@ integrity: pkgData.integrity, | ||
| lockfileParsed.packages[pkg] = { | ||
| version: "16.3.0-canary.102", | ||
| version: "16.3.0-canary.103", | ||
| resolved: pkgData.tarball, | ||
@@ -116,0 +116,0 @@ integrity: pkgData.integrity, |
@@ -216,2 +216,3 @@ import type { NextConfig } from './config'; | ||
| turbopackFileSystemCacheForBuild: z.ZodOptional<z.ZodBoolean>; | ||
| turbopackSeedCacheFromWorktree: z.ZodOptional<z.ZodBoolean>; | ||
| turbopackSourceMaps: z.ZodOptional<z.ZodBoolean>; | ||
@@ -218,0 +219,0 @@ turbopackInputSourceMaps: z.ZodOptional<z.ZodBoolean>; |
@@ -391,2 +391,3 @@ "use strict"; | ||
| turbopackFileSystemCacheForBuild: _zod.z.boolean().optional(), | ||
| turbopackSeedCacheFromWorktree: _zod.z.boolean().optional(), | ||
| turbopackSourceMaps: _zod.z.boolean().optional(), | ||
@@ -393,0 +394,0 @@ turbopackInputSourceMaps: _zod.z.boolean().optional(), |
@@ -82,3 +82,3 @@ "use strict"; | ||
| const versionSuffix = logBundler ? ` (${(0, _bundler.bundlerName)((0, _bundler.getBundlerFromEnv)())})` : ''; | ||
| _log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"16.3.0-canary.102"}`))}${versionSuffix}`); | ||
| _log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"16.3.0-canary.103"}`))}${versionSuffix}`); | ||
| if (appUrl) { | ||
@@ -85,0 +85,0 @@ _log.bootstrap(`- Local: ${appUrl}`); |
@@ -180,3 +180,3 @@ // Start CPU profile if it wasn't already started. | ||
| let { port } = serverOptions; | ||
| process.title = `next-server (v${"16.3.0-canary.102"})`; | ||
| process.title = `next-server (v${"16.3.0-canary.103"})`; | ||
| let handlersReady = ()=>{}; | ||
@@ -183,0 +183,0 @@ let handlersError = ()=>{}; |
@@ -19,2 +19,7 @@ import type { IncomingHttpHeaders } from 'http'; | ||
| /** | ||
| * @param headers | ||
| * @returns A fresh object identity backed by the original value | ||
| */ | ||
| static fresh(headers: ReadonlyHeaders): ReadonlyHeaders; | ||
| /** | ||
| * Merges a header value into a string. This stores multiple values as an | ||
@@ -21,0 +26,0 @@ * array, so we need to merge them into a string. |
@@ -116,2 +116,12 @@ "use strict"; | ||
| /** | ||
| * @param headers | ||
| * @returns A fresh object identity backed by the original value | ||
| */ static fresh(headers) { | ||
| return new Proxy(headers, { | ||
| get (target, prop, receiver) { | ||
| return _reflect.ReflectAdapter.get(target, prop, receiver); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * Merges a header value into a string. This stores multiple values as an | ||
@@ -118,0 +128,0 @@ * array, so we need to merge them into a string. |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../../../../../src/server/web/spec-extension/adapters/headers.ts"],"sourcesContent":["import type { IncomingHttpHeaders } from 'http'\n\nimport { ReflectAdapter } from './reflect'\n\n/**\n * @internal\n */\nexport class ReadonlyHeadersError extends Error {\n constructor() {\n super(\n 'Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers'\n )\n }\n\n public static callable() {\n throw new ReadonlyHeadersError()\n }\n}\n\nexport type ReadonlyHeaders = Headers & {\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n append(...args: any[]): void\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n set(...args: any[]): void\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n delete(...args: any[]): void\n}\nexport class HeadersAdapter extends Headers {\n private readonly headers: IncomingHttpHeaders\n\n constructor(headers: IncomingHttpHeaders) {\n // We've already overridden the methods that would be called, so we're just\n // calling the super constructor to ensure that the instanceof check works.\n super()\n\n this.headers = new Proxy(headers, {\n get(target, prop, receiver) {\n // Because this is just an object, we expect that all \"get\" operations\n // are for properties. If it's a \"get\" for a symbol, we'll just return\n // the symbol.\n if (typeof prop === 'symbol') {\n return ReflectAdapter.get(target, prop, receiver)\n }\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return undefined.\n if (typeof original === 'undefined') return\n\n // If the original casing exists, return the value.\n return ReflectAdapter.get(target, original, receiver)\n },\n set(target, prop, value, receiver) {\n if (typeof prop === 'symbol') {\n return ReflectAdapter.set(target, prop, value, receiver)\n }\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, use the prop as the key.\n return ReflectAdapter.set(target, original ?? prop, value, receiver)\n },\n has(target, prop) {\n if (typeof prop === 'symbol') return ReflectAdapter.has(target, prop)\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return false.\n if (typeof original === 'undefined') return false\n\n // If the original casing exists, return true.\n return ReflectAdapter.has(target, original)\n },\n deleteProperty(target, prop) {\n if (typeof prop === 'symbol')\n return ReflectAdapter.deleteProperty(target, prop)\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return true.\n if (typeof original === 'undefined') return true\n\n // If the original casing exists, delete the property.\n return ReflectAdapter.deleteProperty(target, original)\n },\n })\n }\n\n /**\n * Seals a Headers instance to prevent modification by throwing an error when\n * any mutating method is called.\n */\n public static seal(headers: Headers): ReadonlyHeaders {\n return new Proxy<ReadonlyHeaders>(headers, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'append':\n case 'delete':\n case 'set':\n return ReadonlyHeadersError.callable\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n }\n\n /**\n * Merges a header value into a string. This stores multiple values as an\n * array, so we need to merge them into a string.\n *\n * @param value a header value\n * @returns a merged header value (a string)\n */\n private merge(value: string | string[]): string {\n if (Array.isArray(value)) return value.join(', ')\n\n return value\n }\n\n /**\n * Creates a Headers instance from a plain object or a Headers instance.\n *\n * @param headers a plain object or a Headers instance\n * @returns a headers instance\n */\n public static from(headers: IncomingHttpHeaders | Headers): Headers {\n if (headers instanceof Headers) return headers\n\n return new HeadersAdapter(headers)\n }\n\n public append(name: string, value: string): void {\n const existing = this.headers[name]\n if (typeof existing === 'string') {\n this.headers[name] = [existing, value]\n } else if (Array.isArray(existing)) {\n existing.push(value)\n } else {\n this.headers[name] = value\n }\n }\n\n public delete(name: string): void {\n delete this.headers[name]\n }\n\n public get(name: string): string | null {\n const value = this.headers[name]\n if (typeof value !== 'undefined') return this.merge(value)\n\n return null\n }\n\n public has(name: string): boolean {\n return typeof this.headers[name] !== 'undefined'\n }\n\n public set(name: string, value: string): void {\n this.headers[name] = value\n }\n\n public forEach(\n callbackfn: (value: string, name: string, parent: Headers) => void,\n thisArg?: any\n ): void {\n for (const [name, value] of this.entries()) {\n callbackfn.call(thisArg, value, name, this)\n }\n }\n\n public *entries(): HeadersIterator<[string, string]> {\n for (const key of Object.keys(this.headers)) {\n const name = key.toLowerCase()\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(name) as string\n\n yield [name, value] as [string, string]\n }\n }\n\n public *keys(): HeadersIterator<string> {\n for (const key of Object.keys(this.headers)) {\n const name = key.toLowerCase()\n yield name\n }\n }\n\n public *values(): HeadersIterator<string> {\n for (const key of Object.keys(this.headers)) {\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(key) as string\n\n yield value\n }\n }\n\n public [Symbol.iterator](): HeadersIterator<[string, string]> {\n return this.entries()\n }\n}\n"],"names":["HeadersAdapter","ReadonlyHeadersError","Error","constructor","callable","Headers","headers","Proxy","get","target","prop","receiver","ReflectAdapter","lowercased","toLowerCase","original","Object","keys","find","o","set","value","has","deleteProperty","seal","merge","Array","isArray","join","from","append","name","existing","push","delete","forEach","callbackfn","thisArg","entries","call","key","values","Symbol","iterator"],"mappings":";;;;;;;;;;;;;;;IA2BaA,cAAc;eAAdA;;IApBAC,oBAAoB;eAApBA;;;yBALkB;AAKxB,MAAMA,6BAA6BC;IACxCC,aAAc;QACZ,KAAK,CACH;QADF,qBAEC,CAFD,IAEC,EAFD,qBAAA;mBAAA;wBAAA;0BAAA;QAEA;IACF;IAEA,OAAcC,WAAW;QACvB,MAAM,IAAIH;IACZ;AACF;AAUO,MAAMD,uBAAuBK;IAGlCF,YAAYG,OAA4B,CAAE;QACxC,2EAA2E;QAC3E,2EAA2E;QAC3E,KAAK;QAEL,IAAI,CAACA,OAAO,GAAG,IAAIC,MAAMD,SAAS;YAChCE,KAAIC,MAAM,EAAEC,IAAI,EAAEC,QAAQ;gBACxB,sEAAsE;gBACtE,sEAAsE;gBACtE,cAAc;gBACd,IAAI,OAAOD,SAAS,UAAU;oBAC5B,OAAOE,uBAAc,CAACJ,GAAG,CAACC,QAAQC,MAAMC;gBAC1C;gBAEA,MAAME,aAAaH,KAAKI,WAAW;gBAEnC,wEAAwE;gBACxE,qEAAqE;gBACrE,kBAAkB;gBAClB,MAAMC,WAAWC,OAAOC,IAAI,CAACX,SAASY,IAAI,CACxC,CAACC,IAAMA,EAAEL,WAAW,OAAOD;gBAG7B,0DAA0D;gBAC1D,IAAI,OAAOE,aAAa,aAAa;gBAErC,mDAAmD;gBACnD,OAAOH,uBAAc,CAACJ,GAAG,CAACC,QAAQM,UAAUJ;YAC9C;YACAS,KAAIX,MAAM,EAAEC,IAAI,EAAEW,KAAK,EAAEV,QAAQ;gBAC/B,IAAI,OAAOD,SAAS,UAAU;oBAC5B,OAAOE,uBAAc,CAACQ,GAAG,CAACX,QAAQC,MAAMW,OAAOV;gBACjD;gBAEA,MAAME,aAAaH,KAAKI,WAAW;gBAEnC,wEAAwE;gBACxE,qEAAqE;gBACrE,kBAAkB;gBAClB,MAAMC,WAAWC,OAAOC,IAAI,CAACX,SAASY,IAAI,CACxC,CAACC,IAAMA,EAAEL,WAAW,OAAOD;gBAG7B,iEAAiE;gBACjE,OAAOD,uBAAc,CAACQ,GAAG,CAACX,QAAQM,YAAYL,MAAMW,OAAOV;YAC7D;YACAW,KAAIb,MAAM,EAAEC,IAAI;gBACd,IAAI,OAAOA,SAAS,UAAU,OAAOE,uBAAc,CAACU,GAAG,CAACb,QAAQC;gBAEhE,MAAMG,aAAaH,KAAKI,WAAW;gBAEnC,wEAAwE;gBACxE,qEAAqE;gBACrE,kBAAkB;gBAClB,MAAMC,WAAWC,OAAOC,IAAI,CAACX,SAASY,IAAI,CACxC,CAACC,IAAMA,EAAEL,WAAW,OAAOD;gBAG7B,sDAAsD;gBACtD,IAAI,OAAOE,aAAa,aAAa,OAAO;gBAE5C,8CAA8C;gBAC9C,OAAOH,uBAAc,CAACU,GAAG,CAACb,QAAQM;YACpC;YACAQ,gBAAed,MAAM,EAAEC,IAAI;gBACzB,IAAI,OAAOA,SAAS,UAClB,OAAOE,uBAAc,CAACW,cAAc,CAACd,QAAQC;gBAE/C,MAAMG,aAAaH,KAAKI,WAAW;gBAEnC,wEAAwE;gBACxE,qEAAqE;gBACrE,kBAAkB;gBAClB,MAAMC,WAAWC,OAAOC,IAAI,CAACX,SAASY,IAAI,CACxC,CAACC,IAAMA,EAAEL,WAAW,OAAOD;gBAG7B,qDAAqD;gBACrD,IAAI,OAAOE,aAAa,aAAa,OAAO;gBAE5C,sDAAsD;gBACtD,OAAOH,uBAAc,CAACW,cAAc,CAACd,QAAQM;YAC/C;QACF;IACF;IAEA;;;GAGC,GACD,OAAcS,KAAKlB,OAAgB,EAAmB;QACpD,OAAO,IAAIC,MAAuBD,SAAS;YACzCE,KAAIC,MAAM,EAAEC,IAAI,EAAEC,QAAQ;gBACxB,OAAQD;oBACN,KAAK;oBACL,KAAK;oBACL,KAAK;wBACH,OAAOT,qBAAqBG,QAAQ;oBACtC;wBACE,OAAOQ,uBAAc,CAACJ,GAAG,CAACC,QAAQC,MAAMC;gBAC5C;YACF;QACF;IACF;IAEA;;;;;;GAMC,GACD,AAAQc,MAAMJ,KAAwB,EAAU;QAC9C,IAAIK,MAAMC,OAAO,CAACN,QAAQ,OAAOA,MAAMO,IAAI,CAAC;QAE5C,OAAOP;IACT;IAEA;;;;;GAKC,GACD,OAAcQ,KAAKvB,OAAsC,EAAW;QAClE,IAAIA,mBAAmBD,SAAS,OAAOC;QAEvC,OAAO,IAAIN,eAAeM;IAC5B;IAEOwB,OAAOC,IAAY,EAAEV,KAAa,EAAQ;QAC/C,MAAMW,WAAW,IAAI,CAAC1B,OAAO,CAACyB,KAAK;QACnC,IAAI,OAAOC,aAAa,UAAU;YAChC,IAAI,CAAC1B,OAAO,CAACyB,KAAK,GAAG;gBAACC;gBAAUX;aAAM;QACxC,OAAO,IAAIK,MAAMC,OAAO,CAACK,WAAW;YAClCA,SAASC,IAAI,CAACZ;QAChB,OAAO;YACL,IAAI,CAACf,OAAO,CAACyB,KAAK,GAAGV;QACvB;IACF;IAEOa,OAAOH,IAAY,EAAQ;QAChC,OAAO,IAAI,CAACzB,OAAO,CAACyB,KAAK;IAC3B;IAEOvB,IAAIuB,IAAY,EAAiB;QACtC,MAAMV,QAAQ,IAAI,CAACf,OAAO,CAACyB,KAAK;QAChC,IAAI,OAAOV,UAAU,aAAa,OAAO,IAAI,CAACI,KAAK,CAACJ;QAEpD,OAAO;IACT;IAEOC,IAAIS,IAAY,EAAW;QAChC,OAAO,OAAO,IAAI,CAACzB,OAAO,CAACyB,KAAK,KAAK;IACvC;IAEOX,IAAIW,IAAY,EAAEV,KAAa,EAAQ;QAC5C,IAAI,CAACf,OAAO,CAACyB,KAAK,GAAGV;IACvB;IAEOc,QACLC,UAAkE,EAClEC,OAAa,EACP;QACN,KAAK,MAAM,CAACN,MAAMV,MAAM,IAAI,IAAI,CAACiB,OAAO,GAAI;YAC1CF,WAAWG,IAAI,CAACF,SAAShB,OAAOU,MAAM,IAAI;QAC5C;IACF;IAEA,CAAQO,UAA6C;QACnD,KAAK,MAAME,OAAOxB,OAAOC,IAAI,CAAC,IAAI,CAACX,OAAO,EAAG;YAC3C,MAAMyB,OAAOS,IAAI1B,WAAW;YAC5B,kEAAkE;YAClE,4BAA4B;YAC5B,MAAMO,QAAQ,IAAI,CAACb,GAAG,CAACuB;YAEvB,MAAM;gBAACA;gBAAMV;aAAM;QACrB;IACF;IAEA,CAAQJ,OAAgC;QACtC,KAAK,MAAMuB,OAAOxB,OAAOC,IAAI,CAAC,IAAI,CAACX,OAAO,EAAG;YAC3C,MAAMyB,OAAOS,IAAI1B,WAAW;YAC5B,MAAMiB;QACR;IACF;IAEA,CAAQU,SAAkC;QACxC,KAAK,MAAMD,OAAOxB,OAAOC,IAAI,CAAC,IAAI,CAACX,OAAO,EAAG;YAC3C,kEAAkE;YAClE,4BAA4B;YAC5B,MAAMe,QAAQ,IAAI,CAACb,GAAG,CAACgC;YAEvB,MAAMnB;QACR;IACF;IAEO,CAACqB,OAAOC,QAAQ,CAAC,GAAsC;QAC5D,OAAO,IAAI,CAACL,OAAO;IACrB;AACF","ignoreList":[0]} | ||
| {"version":3,"sources":["../../../../../src/server/web/spec-extension/adapters/headers.ts"],"sourcesContent":["import type { IncomingHttpHeaders } from 'http'\n\nimport { ReflectAdapter } from './reflect'\n\n/**\n * @internal\n */\nexport class ReadonlyHeadersError extends Error {\n constructor() {\n super(\n 'Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers'\n )\n }\n\n public static callable() {\n throw new ReadonlyHeadersError()\n }\n}\n\nexport type ReadonlyHeaders = Headers & {\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n append(...args: any[]): void\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n set(...args: any[]): void\n /** @deprecated Method unavailable on `ReadonlyHeaders`. Read more: https://nextjs.org/docs/app/api-reference/functions/headers */\n delete(...args: any[]): void\n}\nexport class HeadersAdapter extends Headers {\n private readonly headers: IncomingHttpHeaders\n\n constructor(headers: IncomingHttpHeaders) {\n // We've already overridden the methods that would be called, so we're just\n // calling the super constructor to ensure that the instanceof check works.\n super()\n\n this.headers = new Proxy(headers, {\n get(target, prop, receiver) {\n // Because this is just an object, we expect that all \"get\" operations\n // are for properties. If it's a \"get\" for a symbol, we'll just return\n // the symbol.\n if (typeof prop === 'symbol') {\n return ReflectAdapter.get(target, prop, receiver)\n }\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return undefined.\n if (typeof original === 'undefined') return\n\n // If the original casing exists, return the value.\n return ReflectAdapter.get(target, original, receiver)\n },\n set(target, prop, value, receiver) {\n if (typeof prop === 'symbol') {\n return ReflectAdapter.set(target, prop, value, receiver)\n }\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, use the prop as the key.\n return ReflectAdapter.set(target, original ?? prop, value, receiver)\n },\n has(target, prop) {\n if (typeof prop === 'symbol') return ReflectAdapter.has(target, prop)\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return false.\n if (typeof original === 'undefined') return false\n\n // If the original casing exists, return true.\n return ReflectAdapter.has(target, original)\n },\n deleteProperty(target, prop) {\n if (typeof prop === 'symbol')\n return ReflectAdapter.deleteProperty(target, prop)\n\n const lowercased = prop.toLowerCase()\n\n // Let's find the original casing of the key. This assumes that there is\n // no mixed case keys (e.g. \"Content-Type\" and \"content-type\") in the\n // headers object.\n const original = Object.keys(headers).find(\n (o) => o.toLowerCase() === lowercased\n )\n\n // If the original casing doesn't exist, return true.\n if (typeof original === 'undefined') return true\n\n // If the original casing exists, delete the property.\n return ReflectAdapter.deleteProperty(target, original)\n },\n })\n }\n\n /**\n * Seals a Headers instance to prevent modification by throwing an error when\n * any mutating method is called.\n */\n public static seal(headers: Headers): ReadonlyHeaders {\n return new Proxy<ReadonlyHeaders>(headers, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'append':\n case 'delete':\n case 'set':\n return ReadonlyHeadersError.callable\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n }\n\n /**\n * @param headers\n * @returns A fresh object identity backed by the original value\n */\n public static fresh(headers: ReadonlyHeaders): ReadonlyHeaders {\n return new Proxy<ReadonlyHeaders>(headers, {\n get(target, prop, receiver) {\n return ReflectAdapter.get(target, prop, receiver)\n },\n })\n }\n\n /**\n * Merges a header value into a string. This stores multiple values as an\n * array, so we need to merge them into a string.\n *\n * @param value a header value\n * @returns a merged header value (a string)\n */\n private merge(value: string | string[]): string {\n if (Array.isArray(value)) return value.join(', ')\n\n return value\n }\n\n /**\n * Creates a Headers instance from a plain object or a Headers instance.\n *\n * @param headers a plain object or a Headers instance\n * @returns a headers instance\n */\n public static from(headers: IncomingHttpHeaders | Headers): Headers {\n if (headers instanceof Headers) return headers\n\n return new HeadersAdapter(headers)\n }\n\n public append(name: string, value: string): void {\n const existing = this.headers[name]\n if (typeof existing === 'string') {\n this.headers[name] = [existing, value]\n } else if (Array.isArray(existing)) {\n existing.push(value)\n } else {\n this.headers[name] = value\n }\n }\n\n public delete(name: string): void {\n delete this.headers[name]\n }\n\n public get(name: string): string | null {\n const value = this.headers[name]\n if (typeof value !== 'undefined') return this.merge(value)\n\n return null\n }\n\n public has(name: string): boolean {\n return typeof this.headers[name] !== 'undefined'\n }\n\n public set(name: string, value: string): void {\n this.headers[name] = value\n }\n\n public forEach(\n callbackfn: (value: string, name: string, parent: Headers) => void,\n thisArg?: any\n ): void {\n for (const [name, value] of this.entries()) {\n callbackfn.call(thisArg, value, name, this)\n }\n }\n\n public *entries(): HeadersIterator<[string, string]> {\n for (const key of Object.keys(this.headers)) {\n const name = key.toLowerCase()\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(name) as string\n\n yield [name, value] as [string, string]\n }\n }\n\n public *keys(): HeadersIterator<string> {\n for (const key of Object.keys(this.headers)) {\n const name = key.toLowerCase()\n yield name\n }\n }\n\n public *values(): HeadersIterator<string> {\n for (const key of Object.keys(this.headers)) {\n // We assert here that this is a string because we got it from the\n // Object.keys() call above.\n const value = this.get(key) as string\n\n yield value\n }\n }\n\n public [Symbol.iterator](): HeadersIterator<[string, string]> {\n return this.entries()\n }\n}\n"],"names":["HeadersAdapter","ReadonlyHeadersError","Error","constructor","callable","Headers","headers","Proxy","get","target","prop","receiver","ReflectAdapter","lowercased","toLowerCase","original","Object","keys","find","o","set","value","has","deleteProperty","seal","fresh","merge","Array","isArray","join","from","append","name","existing","push","delete","forEach","callbackfn","thisArg","entries","call","key","values","Symbol","iterator"],"mappings":"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","ignoreList":[0]} |
@@ -8,2 +8,7 @@ import { RequestCookies } from '../cookies'; | ||
| static seal(cookies: RequestCookies): ReadonlyRequestCookies; | ||
| /** | ||
| * @param cookies | ||
| * @returns A fresh object identity backed by the original value | ||
| */ | ||
| static fresh(cookies: ReadonlyRequestCookies): ReadonlyRequestCookies; | ||
| } | ||
@@ -10,0 +15,0 @@ export declare function getModifiedCookieValues(cookies: ResponseCookies): ResponseCookie[]; |
@@ -79,2 +79,12 @@ "use strict"; | ||
| } | ||
| /** | ||
| * @param cookies | ||
| * @returns A fresh object identity backed by the original value | ||
| */ static fresh(cookies) { | ||
| return new Proxy(cookies, { | ||
| get (target, prop, receiver) { | ||
| return _reflect.ReflectAdapter.get(target, prop, receiver); | ||
| } | ||
| }); | ||
| } | ||
| } | ||
@@ -81,0 +91,0 @@ const SYMBOL_MODIFY_COOKIE_VALUES = Symbol.for('next.mutated.cookies'); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../../../../../src/server/web/spec-extension/adapters/request-cookies.ts"],"sourcesContent":["import { RequestCookies } from '../cookies'\n\nimport { ResponseCookies } from '../cookies'\nimport { ReflectAdapter } from './reflect'\nimport { workAsyncStorage } from '../../../app-render/work-async-storage.external'\nimport type { RequestStore } from '../../../app-render/work-unit-async-storage.external'\nimport { ActionDidRevalidateStaticAndDynamic } from '../../../../shared/lib/action-revalidation-kind'\n\n/**\n * @internal\n */\nexport class ReadonlyRequestCookiesError extends Error {\n constructor() {\n super(\n 'Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#options'\n )\n }\n\n public static callable() {\n throw new ReadonlyRequestCookiesError()\n }\n}\n\n// We use this to type some APIs but we don't construct instances directly\nexport type { ResponseCookies }\n\n// The `cookies()` API is a mix of request and response cookies. For `.get()` methods,\n// we want to return the request cookie if it exists. For mutative methods like `.set()`,\n// we want to return the response cookie.\nexport type ReadonlyRequestCookies = Omit<\n RequestCookies,\n 'set' | 'clear' | 'delete'\n> &\n Pick<ResponseCookies, 'set' | 'delete'>\n\nexport class RequestCookiesAdapter {\n public static seal(cookies: RequestCookies): ReadonlyRequestCookies {\n return new Proxy(cookies as any, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'clear':\n case 'delete':\n case 'set':\n return ReadonlyRequestCookiesError.callable\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n }\n}\n\nconst SYMBOL_MODIFY_COOKIE_VALUES = Symbol.for('next.mutated.cookies')\n\nexport function getModifiedCookieValues(\n cookies: ResponseCookies\n): ResponseCookie[] {\n const modified: ResponseCookie[] | undefined = (cookies as unknown as any)[\n SYMBOL_MODIFY_COOKIE_VALUES\n ]\n if (!modified || !Array.isArray(modified) || modified.length === 0) {\n return []\n }\n\n return modified\n}\n\ntype SetCookieArgs =\n | [key: string, value: string, cookie?: Partial<ResponseCookie>]\n | [options: ResponseCookie]\n\nexport function appendMutableCookies(\n headers: Headers,\n mutableCookies: ResponseCookies\n): boolean {\n const modifiedCookieValues = getModifiedCookieValues(mutableCookies)\n if (modifiedCookieValues.length === 0) {\n return false\n }\n\n // Return a new response that extends the response with\n // the modified cookies as fallbacks. `res` cookies\n // will still take precedence.\n const resCookies = new ResponseCookies(headers)\n const returnedCookies = resCookies.getAll()\n\n // Set the modified cookies as fallbacks.\n for (const cookie of modifiedCookieValues) {\n resCookies.set(cookie)\n }\n\n // Set the original cookies as the final values.\n for (const cookie of returnedCookies) {\n resCookies.set(cookie)\n }\n\n return true\n}\n\ntype ResponseCookie = NonNullable<\n ReturnType<InstanceType<typeof ResponseCookies>['get']>\n>\n\nexport class MutableRequestCookiesAdapter {\n public static wrap(\n cookies: RequestCookies,\n onUpdateCookies?: (cookies: string[]) => void\n ): ResponseCookies {\n const responseCookies = new ResponseCookies(new Headers())\n for (const cookie of cookies.getAll()) {\n responseCookies.set(cookie)\n }\n\n let modifiedValues: ResponseCookie[] = []\n const modifiedCookies = new Set<string>()\n const updateResponseCookies = () => {\n // TODO-APP: change method of getting workStore\n const workStore = workAsyncStorage.getStore()\n if (workStore) {\n workStore.pathWasRevalidated = ActionDidRevalidateStaticAndDynamic\n }\n\n const allCookies = responseCookies.getAll()\n modifiedValues = allCookies.filter((c) => modifiedCookies.has(c.name))\n if (onUpdateCookies) {\n const serializedCookies: string[] = []\n for (const cookie of modifiedValues) {\n const tempCookies = new ResponseCookies(new Headers())\n tempCookies.set(cookie)\n serializedCookies.push(tempCookies.toString())\n }\n\n onUpdateCookies(serializedCookies)\n }\n }\n\n const wrappedCookies = new Proxy(responseCookies, {\n get(target, prop, receiver) {\n switch (prop) {\n // A special symbol to get the modified cookie values\n case SYMBOL_MODIFY_COOKIE_VALUES:\n return modifiedValues\n\n // TODO: Throw error if trying to set a cookie after the response\n // headers have been set.\n case 'delete':\n return function (...args: [string] | [ResponseCookie]) {\n modifiedCookies.add(\n typeof args[0] === 'string' ? args[0] : args[0].name\n )\n try {\n target.delete(...args)\n return wrappedCookies\n } finally {\n updateResponseCookies()\n }\n }\n case 'set':\n return function (...args: SetCookieArgs) {\n modifiedCookies.add(\n typeof args[0] === 'string' ? args[0] : args[0].name\n )\n try {\n target.set(...args)\n return wrappedCookies\n } finally {\n updateResponseCookies()\n }\n }\n\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n\n return wrappedCookies\n }\n}\n\nexport function createCookiesWithMutableAccessCheck(\n requestStore: RequestStore\n): ResponseCookies {\n const wrappedCookies = new Proxy(requestStore.mutableCookies, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'delete':\n return function (...args: [string] | [ResponseCookie]) {\n ensureCookiesAreStillMutable(requestStore, 'cookies().delete')\n target.delete(...args)\n return wrappedCookies\n }\n case 'set':\n return function (...args: SetCookieArgs) {\n ensureCookiesAreStillMutable(requestStore, 'cookies().set')\n target.set(...args)\n return wrappedCookies\n }\n\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n return wrappedCookies\n}\n\nexport function areCookiesMutableInCurrentPhase(requestStore: RequestStore) {\n return requestStore.phase === 'action'\n}\n\n/** Ensure that cookies() starts throwing on mutation\n * if we changed phases and can no longer mutate.\n *\n * This can happen when going:\n * 'render' -> 'after'\n * 'action' -> 'render'\n * */\nfunction ensureCookiesAreStillMutable(\n requestStore: RequestStore,\n _callingExpression: string\n) {\n if (!areCookiesMutableInCurrentPhase(requestStore)) {\n // TODO: maybe we can give a more precise error message based on callingExpression?\n throw new ReadonlyRequestCookiesError()\n }\n}\n\nexport function responseCookiesToRequestCookies(\n responseCookies: ResponseCookies\n): RequestCookies {\n const requestCookies = new RequestCookies(new Headers())\n for (const cookie of responseCookies.getAll()) {\n requestCookies.set(cookie)\n }\n return requestCookies\n}\n"],"names":["MutableRequestCookiesAdapter","ReadonlyRequestCookiesError","RequestCookiesAdapter","appendMutableCookies","areCookiesMutableInCurrentPhase","createCookiesWithMutableAccessCheck","getModifiedCookieValues","responseCookiesToRequestCookies","Error","constructor","callable","seal","cookies","Proxy","get","target","prop","receiver","ReflectAdapter","SYMBOL_MODIFY_COOKIE_VALUES","Symbol","for","modified","Array","isArray","length","headers","mutableCookies","modifiedCookieValues","resCookies","ResponseCookies","returnedCookies","getAll","cookie","set","wrap","onUpdateCookies","responseCookies","Headers","modifiedValues","modifiedCookies","Set","updateResponseCookies","workStore","workAsyncStorage","getStore","pathWasRevalidated","ActionDidRevalidateStaticAndDynamic","allCookies","filter","c","has","name","serializedCookies","tempCookies","push","toString","wrappedCookies","args","add","delete","requestStore","ensureCookiesAreStillMutable","phase","_callingExpression","requestCookies","RequestCookies"],"mappings":"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","ignoreList":[0]} | ||
| {"version":3,"sources":["../../../../../src/server/web/spec-extension/adapters/request-cookies.ts"],"sourcesContent":["import { RequestCookies } from '../cookies'\n\nimport { ResponseCookies } from '../cookies'\nimport { ReflectAdapter } from './reflect'\nimport { workAsyncStorage } from '../../../app-render/work-async-storage.external'\nimport type { RequestStore } from '../../../app-render/work-unit-async-storage.external'\nimport { ActionDidRevalidateStaticAndDynamic } from '../../../../shared/lib/action-revalidation-kind'\n\n/**\n * @internal\n */\nexport class ReadonlyRequestCookiesError extends Error {\n constructor() {\n super(\n 'Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#options'\n )\n }\n\n public static callable() {\n throw new ReadonlyRequestCookiesError()\n }\n}\n\n// We use this to type some APIs but we don't construct instances directly\nexport type { ResponseCookies }\n\n// The `cookies()` API is a mix of request and response cookies. For `.get()` methods,\n// we want to return the request cookie if it exists. For mutative methods like `.set()`,\n// we want to return the response cookie.\nexport type ReadonlyRequestCookies = Omit<\n RequestCookies,\n 'set' | 'clear' | 'delete'\n> &\n Pick<ResponseCookies, 'set' | 'delete'>\n\nexport class RequestCookiesAdapter {\n public static seal(cookies: RequestCookies): ReadonlyRequestCookies {\n return new Proxy(cookies as any, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'clear':\n case 'delete':\n case 'set':\n return ReadonlyRequestCookiesError.callable\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n }\n\n /**\n * @param cookies\n * @returns A fresh object identity backed by the original value\n */\n public static fresh(cookies: ReadonlyRequestCookies): ReadonlyRequestCookies {\n return new Proxy(cookies, {\n get(target, prop, receiver) {\n return ReflectAdapter.get(target, prop, receiver)\n },\n })\n }\n}\n\nconst SYMBOL_MODIFY_COOKIE_VALUES = Symbol.for('next.mutated.cookies')\n\nexport function getModifiedCookieValues(\n cookies: ResponseCookies\n): ResponseCookie[] {\n const modified: ResponseCookie[] | undefined = (cookies as unknown as any)[\n SYMBOL_MODIFY_COOKIE_VALUES\n ]\n if (!modified || !Array.isArray(modified) || modified.length === 0) {\n return []\n }\n\n return modified\n}\n\ntype SetCookieArgs =\n | [key: string, value: string, cookie?: Partial<ResponseCookie>]\n | [options: ResponseCookie]\n\nexport function appendMutableCookies(\n headers: Headers,\n mutableCookies: ResponseCookies\n): boolean {\n const modifiedCookieValues = getModifiedCookieValues(mutableCookies)\n if (modifiedCookieValues.length === 0) {\n return false\n }\n\n // Return a new response that extends the response with\n // the modified cookies as fallbacks. `res` cookies\n // will still take precedence.\n const resCookies = new ResponseCookies(headers)\n const returnedCookies = resCookies.getAll()\n\n // Set the modified cookies as fallbacks.\n for (const cookie of modifiedCookieValues) {\n resCookies.set(cookie)\n }\n\n // Set the original cookies as the final values.\n for (const cookie of returnedCookies) {\n resCookies.set(cookie)\n }\n\n return true\n}\n\ntype ResponseCookie = NonNullable<\n ReturnType<InstanceType<typeof ResponseCookies>['get']>\n>\n\nexport class MutableRequestCookiesAdapter {\n public static wrap(\n cookies: RequestCookies,\n onUpdateCookies?: (cookies: string[]) => void\n ): ResponseCookies {\n const responseCookies = new ResponseCookies(new Headers())\n for (const cookie of cookies.getAll()) {\n responseCookies.set(cookie)\n }\n\n let modifiedValues: ResponseCookie[] = []\n const modifiedCookies = new Set<string>()\n const updateResponseCookies = () => {\n // TODO-APP: change method of getting workStore\n const workStore = workAsyncStorage.getStore()\n if (workStore) {\n workStore.pathWasRevalidated = ActionDidRevalidateStaticAndDynamic\n }\n\n const allCookies = responseCookies.getAll()\n modifiedValues = allCookies.filter((c) => modifiedCookies.has(c.name))\n if (onUpdateCookies) {\n const serializedCookies: string[] = []\n for (const cookie of modifiedValues) {\n const tempCookies = new ResponseCookies(new Headers())\n tempCookies.set(cookie)\n serializedCookies.push(tempCookies.toString())\n }\n\n onUpdateCookies(serializedCookies)\n }\n }\n\n const wrappedCookies = new Proxy(responseCookies, {\n get(target, prop, receiver) {\n switch (prop) {\n // A special symbol to get the modified cookie values\n case SYMBOL_MODIFY_COOKIE_VALUES:\n return modifiedValues\n\n // TODO: Throw error if trying to set a cookie after the response\n // headers have been set.\n case 'delete':\n return function (...args: [string] | [ResponseCookie]) {\n modifiedCookies.add(\n typeof args[0] === 'string' ? args[0] : args[0].name\n )\n try {\n target.delete(...args)\n return wrappedCookies\n } finally {\n updateResponseCookies()\n }\n }\n case 'set':\n return function (...args: SetCookieArgs) {\n modifiedCookies.add(\n typeof args[0] === 'string' ? args[0] : args[0].name\n )\n try {\n target.set(...args)\n return wrappedCookies\n } finally {\n updateResponseCookies()\n }\n }\n\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n\n return wrappedCookies\n }\n}\n\nexport function createCookiesWithMutableAccessCheck(\n requestStore: RequestStore\n): ResponseCookies {\n const wrappedCookies = new Proxy(requestStore.mutableCookies, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'delete':\n return function (...args: [string] | [ResponseCookie]) {\n ensureCookiesAreStillMutable(requestStore, 'cookies().delete')\n target.delete(...args)\n return wrappedCookies\n }\n case 'set':\n return function (...args: SetCookieArgs) {\n ensureCookiesAreStillMutable(requestStore, 'cookies().set')\n target.set(...args)\n return wrappedCookies\n }\n\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n return wrappedCookies\n}\n\nexport function areCookiesMutableInCurrentPhase(requestStore: RequestStore) {\n return requestStore.phase === 'action'\n}\n\n/** Ensure that cookies() starts throwing on mutation\n * if we changed phases and can no longer mutate.\n *\n * This can happen when going:\n * 'render' -> 'after'\n * 'action' -> 'render'\n * */\nfunction ensureCookiesAreStillMutable(\n requestStore: RequestStore,\n _callingExpression: string\n) {\n if (!areCookiesMutableInCurrentPhase(requestStore)) {\n // TODO: maybe we can give a more precise error message based on callingExpression?\n throw new ReadonlyRequestCookiesError()\n }\n}\n\nexport function responseCookiesToRequestCookies(\n responseCookies: ResponseCookies\n): RequestCookies {\n const requestCookies = new RequestCookies(new Headers())\n for (const cookie of responseCookies.getAll()) {\n requestCookies.set(cookie)\n }\n return requestCookies\n}\n"],"names":["MutableRequestCookiesAdapter","ReadonlyRequestCookiesError","RequestCookiesAdapter","appendMutableCookies","areCookiesMutableInCurrentPhase","createCookiesWithMutableAccessCheck","getModifiedCookieValues","responseCookiesToRequestCookies","Error","constructor","callable","seal","cookies","Proxy","get","target","prop","receiver","ReflectAdapter","fresh","SYMBOL_MODIFY_COOKIE_VALUES","Symbol","for","modified","Array","isArray","length","headers","mutableCookies","modifiedCookieValues","resCookies","ResponseCookies","returnedCookies","getAll","cookie","set","wrap","onUpdateCookies","responseCookies","Headers","modifiedValues","modifiedCookies","Set","updateResponseCookies","workStore","workAsyncStorage","getStore","pathWasRevalidated","ActionDidRevalidateStaticAndDynamic","allCookies","filter","c","has","name","serializedCookies","tempCookies","push","toString","wrappedCookies","args","add","delete","requestStore","ensureCookiesAreStillMutable","phase","_callingExpression","requestCookies","RequestCookies"],"mappings":"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","ignoreList":[0]} |
@@ -24,3 +24,3 @@ "use strict"; | ||
| function isStableBuild() { | ||
| return !"16.3.0-canary.102"?.includes('canary') && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV; | ||
| return !"16.3.0-canary.103"?.includes('canary') && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV; | ||
| } | ||
@@ -27,0 +27,0 @@ class CanaryOnlyConfigError extends Error { |
@@ -85,3 +85,3 @@ "use strict"; | ||
| ciName: _ciinfo.isCI && _ciinfo.name || null, | ||
| nextVersion: "16.3.0-canary.102", | ||
| nextVersion: "16.3.0-canary.103", | ||
| agentName: await (0, _agentname.getAgentName)() | ||
@@ -88,0 +88,0 @@ }; |
@@ -14,7 +14,7 @@ "use strict"; | ||
| // This should be an invariant, if it fails our build tooling is broken. | ||
| if (typeof "16.3.0-canary.102" !== 'string') { | ||
| if (typeof "16.3.0-canary.103" !== 'string') { | ||
| return []; | ||
| } | ||
| const payload = { | ||
| nextVersion: "16.3.0-canary.102", | ||
| nextVersion: "16.3.0-canary.103", | ||
| nodeVersion: process.version, | ||
@@ -21,0 +21,0 @@ cliCommand: event.cliCommand, |
@@ -41,3 +41,3 @@ "use strict"; | ||
| payload: { | ||
| nextVersion: "16.3.0-canary.102", | ||
| nextVersion: "16.3.0-canary.103", | ||
| glibcVersion, | ||
@@ -44,0 +44,0 @@ installedSwcPackages, |
@@ -15,3 +15,3 @@ "use strict"; | ||
| // This should be an invariant, if it fails our build tooling is broken. | ||
| if (typeof "16.3.0-canary.102" !== 'string') { | ||
| if (typeof "16.3.0-canary.103" !== 'string') { | ||
| return []; | ||
@@ -21,3 +21,3 @@ } | ||
| const payload = { | ||
| nextVersion: "16.3.0-canary.102", | ||
| nextVersion: "16.3.0-canary.103", | ||
| nodeVersion: process.version, | ||
@@ -24,0 +24,0 @@ cliCommand: event.cliCommand, |
+11
-11
| { | ||
| "name": "next", | ||
| "version": "16.3.0-canary.102", | ||
| "version": "16.3.0-canary.103", | ||
| "description": "The React Framework", | ||
@@ -84,7 +84,7 @@ "main": "./dist/server/next.js", | ||
| "dependencies": { | ||
| "@next/env": "16.3.0-canary.102", | ||
| "@next/env": "16.3.0-canary.103", | ||
| "@swc/helpers": "0.5.15", | ||
| "baseline-browser-mapping": "^2.9.19", | ||
| "caniuse-lite": "^1.0.30001579", | ||
| "postcss": "8.5.10", | ||
| "postcss": "8.5.23", | ||
| "styled-jsx": "5.1.6" | ||
@@ -116,10 +116,10 @@ }, | ||
| "sharp": "^0.35.3", | ||
| "@next/swc-darwin-arm64": "16.3.0-canary.102", | ||
| "@next/swc-darwin-x64": "16.3.0-canary.102", | ||
| "@next/swc-linux-arm64-gnu": "16.3.0-canary.102", | ||
| "@next/swc-linux-arm64-musl": "16.3.0-canary.102", | ||
| "@next/swc-linux-x64-gnu": "16.3.0-canary.102", | ||
| "@next/swc-linux-x64-musl": "16.3.0-canary.102", | ||
| "@next/swc-win32-arm64-msvc": "16.3.0-canary.102", | ||
| "@next/swc-win32-x64-msvc": "16.3.0-canary.102" | ||
| "@next/swc-darwin-arm64": "16.3.0-canary.103", | ||
| "@next/swc-darwin-x64": "16.3.0-canary.103", | ||
| "@next/swc-linux-arm64-gnu": "16.3.0-canary.103", | ||
| "@next/swc-linux-arm64-musl": "16.3.0-canary.103", | ||
| "@next/swc-linux-x64-gnu": "16.3.0-canary.103", | ||
| "@next/swc-linux-x64-musl": "16.3.0-canary.103", | ||
| "@next/swc-win32-arm64-msvc": "16.3.0-canary.103", | ||
| "@next/swc-win32-x64-msvc": "16.3.0-canary.103" | ||
| }, | ||
@@ -126,0 +126,0 @@ "keywords": [ |
| self.__BUILD_MANIFEST = { | ||
| "__rewrites": { | ||
| "afterFiles": [], | ||
| "beforeFiles": [], | ||
| "fallback": [] | ||
| }, | ||
| "sortedPages": [ | ||
| "/_app", | ||
| "/_error" | ||
| ] | ||
| };self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB() |
| self.__MIDDLEWARE_MATCHERS = [];self.__MIDDLEWARE_MATCHERS_CB && self.__MIDDLEWARE_MATCHERS_CB() |
| self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB() |
| --- | ||
| title: Implementing PPR in an Adapter | ||
| description: Implement Partial Prerendering support in an adapter using fallback output and cache hooks. | ||
| source: app/api-reference/adapters/implementing-ppr-in-an-adapter | ||
| --- | ||
| {/* DO NOT EDIT. The content of this doc is generated from the source above. To edit the content of this page, navigate to the source page in your editor. You can use the <PagesOnly>Content</PagesOnly> component to add content that is specific to the Pages Router. Any shared content should not be wrapped in a component. */} |
| --- | ||
| title: Runtime Integration | ||
| description: Understand how build-time adapters and runtime cache interfaces work together. | ||
| source: app/api-reference/adapters/runtime-integration | ||
| --- | ||
| {/* DO NOT EDIT. The content of this doc is generated from the source above. To edit the content of this page, navigate to the source page in your editor. You can use the <PagesOnly>Content</PagesOnly> component to add content that is specific to the Pages Router. Any shared content should not be wrapped in a component. */} |
| --- | ||
| title: Invoking Entrypoints | ||
| description: Invoke Node.js and Edge build entrypoints with adapter runtime context. | ||
| source: app/api-reference/adapters/invoking-entrypoints | ||
| --- | ||
| {/* DO NOT EDIT. The content of this doc is generated from the source above. To edit the content of this page, navigate to the source page in your editor. You can use the <PagesOnly>Content</PagesOnly> component to add content that is specific to the Pages Router. Any shared content should not be wrapped in a component. */} |
| --- | ||
| title: Output Types | ||
| description: Reference for all build output types exposed to adapters. | ||
| source: app/api-reference/adapters/output-types | ||
| --- | ||
| {/* DO NOT EDIT. The content of this doc is generated from the source above. To edit the content of this page, navigate to the source page in your editor. You can use the <PagesOnly>Content</PagesOnly> component to add content that is specific to the Pages Router. Any shared content should not be wrapped in a component. */} |
| --- | ||
| title: Routing Information | ||
| description: Reference for routing phases and route fields exposed in `onBuildComplete`. | ||
| source: app/api-reference/adapters/routing-information | ||
| --- | ||
| {/* DO NOT EDIT. The content of this doc is generated from the source above. To edit the content of this page, navigate to the source page in your editor. You can use the <PagesOnly>Content</PagesOnly> component to add content that is specific to the Pages Router. Any shared content should not be wrapped in a component. */} |
| --- | ||
| title: Use Cases | ||
| description: Common patterns and examples for deployment adapter implementations. | ||
| source: app/api-reference/adapters/use-cases | ||
| --- | ||
| {/* DO NOT EDIT. The content of this doc is generated from the source above. To edit the content of this page, navigate to the source page in your editor. You can use the <PagesOnly>Content</PagesOnly> component to add content that is specific to the Pages Router. Any shared content should not be wrapped in a component. */} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Potential vulnerability
Supply chain riskInitial human review suggests the presence of a vulnerability in this package. It is pending further analysis and confirmation.
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
Found 6 instances
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Potential vulnerability
Supply chain riskInitial human review suggests the presence of a vulnerability in this package. It is pending further analysis and confirmation.
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
Found 6 instances
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
183719199
0.05%8523
0.11%1308111
0.04%4541
0.09%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
Updated
Updated