next 16.1.1-canary.13 → 16.1.1-canary.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.build-commit +1 -1
- package/dist/bin/next +2 -2
- package/dist/build/index.js +3 -3
- package/dist/build/swc/index.js +1 -1
- package/dist/build/type-check.js +4 -3
- package/dist/build/type-check.js.map +1 -1
- package/dist/build/webpack-config.js +3 -3
- package/dist/bundle-analyzer/404.html +2 -2
- package/dist/bundle-analyzer/__next.__PAGE__.txt +1 -1
- package/dist/bundle-analyzer/__next._full.txt +1 -1
- package/dist/bundle-analyzer/__next._head.txt +1 -1
- package/dist/bundle-analyzer/__next._index.txt +1 -1
- package/dist/bundle-analyzer/__next._tree.txt +1 -1
- package/dist/bundle-analyzer/_not-found/__next._full.txt +1 -1
- package/dist/bundle-analyzer/_not-found/__next._head.txt +1 -1
- package/dist/bundle-analyzer/_not-found/__next._index.txt +1 -1
- package/dist/bundle-analyzer/_not-found/__next._not-found.__PAGE__.txt +1 -1
- package/dist/bundle-analyzer/_not-found/__next._not-found.txt +1 -1
- package/dist/bundle-analyzer/_not-found/__next._tree.txt +1 -1
- package/dist/bundle-analyzer/_not-found.html +2 -2
- package/dist/bundle-analyzer/_not-found.txt +1 -1
- package/dist/bundle-analyzer/index.html +2 -2
- package/dist/bundle-analyzer/index.txt +1 -1
- package/dist/cli/next-test.js +2 -1
- package/dist/cli/next-test.js.map +1 -1
- package/dist/cli/next-typegen.js +4 -2
- package/dist/cli/next-typegen.js.map +1 -1
- package/dist/client/app-bootstrap.js +1 -1
- package/dist/client/index.js +1 -1
- package/dist/compiled/next-server/pages-api.runtime.dev.js +1 -1
- package/dist/compiled/next-server/pages-api.runtime.dev.js.map +1 -1
- package/dist/compiled/next-server/pages.runtime.dev.js +1 -1
- package/dist/compiled/next-server/pages.runtime.dev.js.map +1 -1
- package/dist/esm/build/index.js +3 -3
- package/dist/esm/build/swc/index.js +1 -1
- package/dist/esm/build/type-check.js +4 -3
- package/dist/esm/build/type-check.js.map +1 -1
- package/dist/esm/build/webpack-config.js +3 -3
- package/dist/esm/client/app-bootstrap.js +1 -1
- package/dist/esm/client/index.js +1 -1
- package/dist/esm/lib/typescript/writeAppTypeDeclarations.js +18 -10
- package/dist/esm/lib/typescript/writeAppTypeDeclarations.js.map +1 -1
- package/dist/esm/lib/typescript/writeConfigurationDefaults.js +8 -7
- package/dist/esm/lib/typescript/writeConfigurationDefaults.js.map +1 -1
- package/dist/esm/lib/verify-typescript-setup.js +5 -4
- package/dist/esm/lib/verify-typescript-setup.js.map +1 -1
- package/dist/esm/server/dev/hot-reloader-turbopack.js +1 -1
- package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/esm/server/lib/app-info-log.js +1 -1
- package/dist/esm/server/lib/router-utils/route-types-utils.js +0 -20
- package/dist/esm/server/lib/router-utils/route-types-utils.js.map +1 -1
- package/dist/esm/server/lib/router-utils/setup-dev-bundler.js +3 -8
- package/dist/esm/server/lib/router-utils/setup-dev-bundler.js.map +1 -1
- package/dist/esm/server/lib/router-utils/typegen.js +7 -11
- package/dist/esm/server/lib/router-utils/typegen.js.map +1 -1
- package/dist/esm/server/lib/start-server.js +1 -1
- package/dist/esm/shared/lib/errors/canary-only-config-error.js +1 -1
- package/dist/lib/typescript/writeAppTypeDeclarations.d.ts +3 -3
- package/dist/lib/typescript/writeAppTypeDeclarations.js +18 -10
- package/dist/lib/typescript/writeAppTypeDeclarations.js.map +1 -1
- package/dist/lib/typescript/writeConfigurationDefaults.d.ts +1 -1
- package/dist/lib/typescript/writeConfigurationDefaults.js +8 -7
- package/dist/lib/typescript/writeConfigurationDefaults.js.map +1 -1
- package/dist/lib/verify-typescript-setup.d.ts +3 -3
- package/dist/lib/verify-typescript-setup.js +5 -4
- package/dist/lib/verify-typescript-setup.js.map +1 -1
- package/dist/server/dev/hot-reloader-turbopack.js +1 -1
- package/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/server/lib/app-info-log.js +1 -1
- package/dist/server/lib/router-utils/route-types-utils.d.ts +0 -9
- package/dist/server/lib/router-utils/route-types-utils.js +0 -17
- package/dist/server/lib/router-utils/route-types-utils.js.map +1 -1
- package/dist/server/lib/router-utils/setup-dev-bundler.js +2 -7
- package/dist/server/lib/router-utils/setup-dev-bundler.js.map +1 -1
- package/dist/server/lib/router-utils/typegen.js +7 -11
- package/dist/server/lib/router-utils/typegen.js.map +1 -1
- package/dist/server/lib/start-server.js +1 -1
- package/dist/shared/lib/errors/canary-only-config-error.js +1 -1
- package/dist/telemetry/anonymous-meta.js +1 -1
- package/dist/telemetry/events/session-stopped.js +2 -2
- package/dist/telemetry/events/version.js +2 -2
- package/package.json +15 -15
- /package/dist/bundle-analyzer/_next/static/{bo6zOIZ5tUP7aVRjeqElS → mqnk7CZQ-0CmHbCRF2ua6}/_buildManifest.js +0 -0
- /package/dist/bundle-analyzer/_next/static/{bo6zOIZ5tUP7aVRjeqElS → mqnk7CZQ-0CmHbCRF2ua6}/_clientMiddlewareManifest.json +0 -0
- /package/dist/bundle-analyzer/_next/static/{bo6zOIZ5tUP7aVRjeqElS → mqnk7CZQ-0CmHbCRF2ua6}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
1
|
+
<!DOCTYPE html><!--mqnk7CZQ_0CmHbCRF2ua6--><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/adecd0ef71a11c8f.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/3e0957f7eff8d345.js"/><script src="/_next/static/chunks/bf256f63a0329899.js" async=""></script><script src="/_next/static/chunks/a45bbe9740e76b08.js" async=""></script><script src="/_next/static/chunks/turbopack-00bd4f7eb3194bc7.js" async=""></script><script src="/_next/static/chunks/d4897d048d586310.js" async=""></script><script src="/_next/static/chunks/8d91f8a9573cc0bb.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>
|
|
2
2
|
(function() {
|
|
3
3
|
const theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
|
4
4
|
document.documentElement.classList.toggle('dark', theme === 'dark');
|
|
@@ -7,4 +7,4 @@
|
|
|
7
7
|
document.documentElement.classList.toggle('dark', e.matches);
|
|
8
8
|
});
|
|
9
9
|
})();
|
|
10
|
-
</script><script src="/_next/static/chunks/a6dad97d9634a72d.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/3e0957f7eff8d345.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[57952,[\"/_next/static/chunks/d4897d048d586310.js\"],\"default\"]\n3:I[62727,[\"/_next/static/chunks/d4897d048d586310.js\"],\"default\"]\n4:I[94789,[\"/_next/static/chunks/d4897d048d586310.js\"],\"ClientPageRoot\"]\n5:I[79331,[\"/_next/static/chunks/8d91f8a9573cc0bb.js\"],\"default\"]\n8:I[97372,[\"/_next/static/chunks/d4897d048d586310.js\"],\"OutletBoundary\"]\n9:\"$Sreact.suspense\"\nb:I[97372,[\"/_next/static/chunks/d4897d048d586310.js\"],\"ViewportBoundary\"]\nd:I[97372,[\"/_next/static/chunks/d4897d048d586310.js\"],\"MetadataBoundary\"]\nf:I[36062,[\"/_next/static/chunks/d4897d048d586310.js\"],\"default\"]\n:HL[\"/_next/static/chunks/adecd0ef71a11c8f.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"
|
|
10
|
+
</script><script src="/_next/static/chunks/a6dad97d9634a72d.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/3e0957f7eff8d345.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[57952,[\"/_next/static/chunks/d4897d048d586310.js\"],\"default\"]\n3:I[62727,[\"/_next/static/chunks/d4897d048d586310.js\"],\"default\"]\n4:I[94789,[\"/_next/static/chunks/d4897d048d586310.js\"],\"ClientPageRoot\"]\n5:I[79331,[\"/_next/static/chunks/8d91f8a9573cc0bb.js\"],\"default\"]\n8:I[97372,[\"/_next/static/chunks/d4897d048d586310.js\"],\"OutletBoundary\"]\n9:\"$Sreact.suspense\"\nb:I[97372,[\"/_next/static/chunks/d4897d048d586310.js\"],\"ViewportBoundary\"]\nd:I[97372,[\"/_next/static/chunks/d4897d048d586310.js\"],\"MetadataBoundary\"]\nf:I[36062,[\"/_next/static/chunks/d4897d048d586310.js\"],\"default\"]\n:HL[\"/_next/static/chunks/adecd0ef71a11c8f.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"mqnk7CZQ-0CmHbCRF2ua6\",\"c\":[\"\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/adecd0ef71a11c8f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"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/8d91f8a9573cc0bb.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@a\"}]}]]}],{},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lb\",null,{\"children\":\"$@c\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.Metadata\",\"children\":\"$@e\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",[]],\"S\":true}\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,"e:[[\"$\",\"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\"}]]\na:null\n"])</script></body></html>
|
|
@@ -9,7 +9,7 @@ b:I[97372,["/_next/static/chunks/d4897d048d586310.js"],"ViewportBoundary"]
|
|
|
9
9
|
d:I[97372,["/_next/static/chunks/d4897d048d586310.js"],"MetadataBoundary"]
|
|
10
10
|
f:I[36062,["/_next/static/chunks/d4897d048d586310.js"],"default"]
|
|
11
11
|
:HL["/_next/static/chunks/adecd0ef71a11c8f.css","style"]
|
|
12
|
-
0:{"P":null,"b":"
|
|
12
|
+
0:{"P":null,"b":"mqnk7CZQ-0CmHbCRF2ua6","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/adecd0ef71a11c8f.css","precedence":"next","crossOrigin":"$undefined","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/8d91f8a9573cc0bb.js","async":true,"nonce":"$undefined"}]],["$","$L8",null,{"children":["$","$9",null,{"name":"Next.MetadataOutlet","children":"$@a"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lb",null,{"children":"$@c"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$9",null,{"name":"Next.Metadata","children":"$@e"}]}]}],null]}],false]],"m":"$undefined","G":["$f",[]],"S":true}
|
|
13
13
|
6:{}
|
|
14
14
|
7:"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params"
|
|
15
15
|
c:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
package/dist/cli/next-test.js
CHANGED
|
@@ -126,9 +126,10 @@ async function runPlaywright(baseDir, nextConfig, testRunnerArgs) {
|
|
|
126
126
|
const { version: typeScriptVersion } = await (0, _verifytypescriptsetup.verifyTypeScriptSetup)({
|
|
127
127
|
dir: baseDir,
|
|
128
128
|
distDir: nextConfig.distDir,
|
|
129
|
-
|
|
129
|
+
strictRouteTypes: Boolean(nextConfig.experimental.strictRouteTypes),
|
|
130
130
|
typeCheckPreflight: false,
|
|
131
131
|
tsconfigPath: nextConfig.typescript.tsconfigPath,
|
|
132
|
+
typedRoutes: Boolean(nextConfig.typedRoutes),
|
|
132
133
|
disableStaticImages: nextConfig.images.disableStaticImages,
|
|
133
134
|
hasAppDir: !!appDir,
|
|
134
135
|
hasPagesDir: !!pagesDir,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/next-test.ts"],"sourcesContent":["import { writeFileSync } from 'fs'\nimport { getProjectDir } from '../lib/get-project-dir'\nimport { printAndExit } from '../server/lib/utils'\nimport loadConfig from '../server/config'\nimport { PHASE_PRODUCTION_BUILD } from '../shared/lib/constants'\nimport {\n hasNecessaryDependencies,\n type MissingDependency,\n} from '../lib/has-necessary-dependencies'\nimport { installDependencies } from '../lib/install-dependencies'\nimport type { NextConfigComplete } from '../server/config-shared'\nimport findUp from 'next/dist/compiled/find-up'\nimport { findPagesDir } from '../lib/find-pages-dir'\nimport { verifyTypeScriptSetup } from '../lib/verify-typescript-setup'\nimport path from 'path'\nimport spawn from 'next/dist/compiled/cross-spawn'\n\nexport interface NextTestOptions {\n testRunner?: string\n}\n\nexport const SUPPORTED_TEST_RUNNERS_LIST = ['playwright'] as const\nexport type SupportedTestRunners = (typeof SUPPORTED_TEST_RUNNERS_LIST)[number]\n\nconst requiredPackagesByTestRunner: {\n [k in SupportedTestRunners]: MissingDependency[]\n} = {\n playwright: [\n { file: 'playwright', pkg: '@playwright/test', exportsRestrict: false },\n ],\n}\n\nexport async function nextTest(\n directory?: string,\n testRunnerArgs: string[] = [],\n options: NextTestOptions = {}\n) {\n // The following mess is in order to support an existing Next.js CLI pattern of optionally, passing a project `directory` as the first argument to execute the command on.\n // This is problematic for `next test` because as a wrapper around a test runner's `test` command, it needs to pass through any additional arguments and options.\n // Thus, `directory` could either be a valid Next.js project directory (that the user intends to run `next test` on), or it is the first argument for the test runner.\n // Unfortunately, since many test runners support passing a path (to a test file or directory containing test files), we must check if `directory` is both a valid path and a valid Next.js project.\n\n let baseDir, nextConfig\n\n try {\n // if directory is `undefined` or a valid path this will succeed.\n baseDir = getProjectDir(directory, false)\n } catch (err) {\n // if that failed, then `directory` is not a valid path, so it must have meant to be the first item for `testRunnerArgs`\n // @ts-expect-error directory is a string here since `getProjectDir` will succeed if its undefined\n testRunnerArgs.unshift(directory)\n // intentionally set baseDir to the resolved '.' path\n baseDir = getProjectDir()\n }\n\n try {\n // but, `baseDir` might not be a Next.js project directory, it could be a path-like argument for the test runner (i.e. `playwright test test/foo.spec.js`)\n // if this succeeds, it means that `baseDir` is a Next.js project directory\n nextConfig = await loadConfig(PHASE_PRODUCTION_BUILD, baseDir)\n } catch (err) {\n // if it doesn't, then most likely `baseDir` is not a Next.js project directory\n // @ts-expect-error directory is a string here since `getProjectDir` will succeed if its undefined\n testRunnerArgs.unshift(directory)\n // intentionally set baseDir to the resolved '.' path\n baseDir = getProjectDir()\n nextConfig = await loadConfig(PHASE_PRODUCTION_BUILD, baseDir) // let this error bubble up if the `basePath` is still not a valid Next.js project\n }\n\n // set the test runner. priority is CLI option > next config > default 'playwright'\n const configuredTestRunner =\n options?.testRunner ?? // --test-runner='foo'\n nextConfig.experimental.defaultTestRunner ?? // { experimental: { defaultTestRunner: 'foo' }}\n 'playwright'\n\n if (!nextConfig.experimental.testProxy) {\n return printAndExit(\n `\\`next experimental-test\\` requires the \\`experimental.testProxy: true\\` configuration option.`\n )\n }\n\n // execute test runner specific function\n switch (configuredTestRunner) {\n case 'playwright':\n return runPlaywright(baseDir, nextConfig, testRunnerArgs)\n default:\n return printAndExit(\n `Test runner ${configuredTestRunner} is not supported.`\n )\n }\n}\n\nasync function checkRequiredDeps(\n baseDir: string,\n testRunner: SupportedTestRunners\n) {\n const deps = hasNecessaryDependencies(\n baseDir,\n requiredPackagesByTestRunner[testRunner]\n )\n if (deps.missing.length > 0) {\n await installDependencies(baseDir, deps.missing, true)\n\n const playwright = spawn(\n path.join(baseDir, 'node_modules', '.bin', 'playwright'),\n ['install'],\n {\n cwd: baseDir,\n shell: false,\n stdio: 'inherit',\n env: {\n ...process.env,\n },\n }\n )\n\n return new Promise((resolve, reject) => {\n playwright.on('close', (c) => resolve(c))\n playwright.on('error', (err) => reject(err))\n })\n }\n}\n\nasync function runPlaywright(\n baseDir: string,\n nextConfig: NextConfigComplete,\n testRunnerArgs: string[]\n) {\n await checkRequiredDeps(baseDir, 'playwright')\n\n const playwrightConfigFile = await findUp(\n ['playwright.config.js', 'playwright.config.ts'],\n {\n cwd: baseDir,\n }\n )\n\n if (!playwrightConfigFile) {\n const { pagesDir, appDir } = findPagesDir(baseDir)\n\n const { version: typeScriptVersion } = await verifyTypeScriptSetup({\n dir: baseDir,\n distDir: nextConfig.distDir,\n distDirRoot: nextConfig.distDirRoot,\n typeCheckPreflight: false,\n tsconfigPath: nextConfig.typescript.tsconfigPath,\n disableStaticImages: nextConfig.images.disableStaticImages,\n hasAppDir: !!appDir,\n hasPagesDir: !!pagesDir,\n isolatedDevBuild: nextConfig.experimental.isolatedDevBuild,\n appDir: appDir || undefined,\n pagesDir: pagesDir || undefined,\n })\n\n const isUsingTypeScript = !!typeScriptVersion\n\n const playwrightConfigFilename = isUsingTypeScript\n ? 'playwright.config.ts'\n : 'playwright.config.js'\n\n writeFileSync(\n path.join(baseDir, playwrightConfigFilename),\n defaultPlaywrightConfig(isUsingTypeScript)\n )\n\n return printAndExit(\n `Successfully generated ${playwrightConfigFilename}. Create your first test and then run \\`next experimental-test\\`.`,\n 0\n )\n } else {\n const playwright = spawn(\n path.join(baseDir, 'node_modules', '.bin', 'playwright'),\n ['test', ...testRunnerArgs],\n {\n cwd: baseDir,\n shell: false,\n stdio: 'inherit',\n env: {\n ...process.env,\n },\n }\n )\n return new Promise((resolve, reject) => {\n playwright.on('close', (c) => resolve(c))\n playwright.on('error', (err) => reject(err))\n })\n }\n}\n\nfunction defaultPlaywrightConfig(typescript: boolean) {\n const comment = `/*\n * Specify any additional Playwright config options here.\n * They will be merged with Next.js' default Playwright config.\n * You can access the default config by importing \\`defaultPlaywrightConfig\\` from \\`'next/experimental/testmode/playwright'\\`.\n */`\n return typescript\n ? `import { defineConfig } from 'next/experimental/testmode/playwright';\\n\\n${comment}\\nexport default defineConfig({});`\n : `const { defineConfig } = require('next/experimental/testmode/playwright');\\n\\n${comment}\\nmodule.exports = defineConfig({});`\n}\n"],"names":["SUPPORTED_TEST_RUNNERS_LIST","nextTest","requiredPackagesByTestRunner","playwright","file","pkg","exportsRestrict","directory","testRunnerArgs","options","baseDir","nextConfig","getProjectDir","err","unshift","loadConfig","PHASE_PRODUCTION_BUILD","configuredTestRunner","testRunner","experimental","defaultTestRunner","testProxy","printAndExit","runPlaywright","checkRequiredDeps","deps","hasNecessaryDependencies","missing","length","installDependencies","spawn","path","join","cwd","shell","stdio","env","process","Promise","resolve","reject","on","c","playwrightConfigFile","findUp","pagesDir","appDir","findPagesDir","version","typeScriptVersion","verifyTypeScriptSetup","dir","distDir","distDirRoot","typeCheckPreflight","tsconfigPath","typescript","disableStaticImages","images","hasAppDir","hasPagesDir","isolatedDevBuild","undefined","isUsingTypeScript","playwrightConfigFilename","writeFileSync","defaultPlaywrightConfig","comment"],"mappings":"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","ignoreList":[0]}
|
|
1
|
+
{"version":3,"sources":["../../src/cli/next-test.ts"],"sourcesContent":["import { writeFileSync } from 'fs'\nimport { getProjectDir } from '../lib/get-project-dir'\nimport { printAndExit } from '../server/lib/utils'\nimport loadConfig from '../server/config'\nimport { PHASE_PRODUCTION_BUILD } from '../shared/lib/constants'\nimport {\n hasNecessaryDependencies,\n type MissingDependency,\n} from '../lib/has-necessary-dependencies'\nimport { installDependencies } from '../lib/install-dependencies'\nimport type { NextConfigComplete } from '../server/config-shared'\nimport findUp from 'next/dist/compiled/find-up'\nimport { findPagesDir } from '../lib/find-pages-dir'\nimport { verifyTypeScriptSetup } from '../lib/verify-typescript-setup'\nimport path from 'path'\nimport spawn from 'next/dist/compiled/cross-spawn'\n\nexport interface NextTestOptions {\n testRunner?: string\n}\n\nexport const SUPPORTED_TEST_RUNNERS_LIST = ['playwright'] as const\nexport type SupportedTestRunners = (typeof SUPPORTED_TEST_RUNNERS_LIST)[number]\n\nconst requiredPackagesByTestRunner: {\n [k in SupportedTestRunners]: MissingDependency[]\n} = {\n playwright: [\n { file: 'playwright', pkg: '@playwright/test', exportsRestrict: false },\n ],\n}\n\nexport async function nextTest(\n directory?: string,\n testRunnerArgs: string[] = [],\n options: NextTestOptions = {}\n) {\n // The following mess is in order to support an existing Next.js CLI pattern of optionally, passing a project `directory` as the first argument to execute the command on.\n // This is problematic for `next test` because as a wrapper around a test runner's `test` command, it needs to pass through any additional arguments and options.\n // Thus, `directory` could either be a valid Next.js project directory (that the user intends to run `next test` on), or it is the first argument for the test runner.\n // Unfortunately, since many test runners support passing a path (to a test file or directory containing test files), we must check if `directory` is both a valid path and a valid Next.js project.\n\n let baseDir, nextConfig\n\n try {\n // if directory is `undefined` or a valid path this will succeed.\n baseDir = getProjectDir(directory, false)\n } catch (err) {\n // if that failed, then `directory` is not a valid path, so it must have meant to be the first item for `testRunnerArgs`\n // @ts-expect-error directory is a string here since `getProjectDir` will succeed if its undefined\n testRunnerArgs.unshift(directory)\n // intentionally set baseDir to the resolved '.' path\n baseDir = getProjectDir()\n }\n\n try {\n // but, `baseDir` might not be a Next.js project directory, it could be a path-like argument for the test runner (i.e. `playwright test test/foo.spec.js`)\n // if this succeeds, it means that `baseDir` is a Next.js project directory\n nextConfig = await loadConfig(PHASE_PRODUCTION_BUILD, baseDir)\n } catch (err) {\n // if it doesn't, then most likely `baseDir` is not a Next.js project directory\n // @ts-expect-error directory is a string here since `getProjectDir` will succeed if its undefined\n testRunnerArgs.unshift(directory)\n // intentionally set baseDir to the resolved '.' path\n baseDir = getProjectDir()\n nextConfig = await loadConfig(PHASE_PRODUCTION_BUILD, baseDir) // let this error bubble up if the `basePath` is still not a valid Next.js project\n }\n\n // set the test runner. priority is CLI option > next config > default 'playwright'\n const configuredTestRunner =\n options?.testRunner ?? // --test-runner='foo'\n nextConfig.experimental.defaultTestRunner ?? // { experimental: { defaultTestRunner: 'foo' }}\n 'playwright'\n\n if (!nextConfig.experimental.testProxy) {\n return printAndExit(\n `\\`next experimental-test\\` requires the \\`experimental.testProxy: true\\` configuration option.`\n )\n }\n\n // execute test runner specific function\n switch (configuredTestRunner) {\n case 'playwright':\n return runPlaywright(baseDir, nextConfig, testRunnerArgs)\n default:\n return printAndExit(\n `Test runner ${configuredTestRunner} is not supported.`\n )\n }\n}\n\nasync function checkRequiredDeps(\n baseDir: string,\n testRunner: SupportedTestRunners\n) {\n const deps = hasNecessaryDependencies(\n baseDir,\n requiredPackagesByTestRunner[testRunner]\n )\n if (deps.missing.length > 0) {\n await installDependencies(baseDir, deps.missing, true)\n\n const playwright = spawn(\n path.join(baseDir, 'node_modules', '.bin', 'playwright'),\n ['install'],\n {\n cwd: baseDir,\n shell: false,\n stdio: 'inherit',\n env: {\n ...process.env,\n },\n }\n )\n\n return new Promise((resolve, reject) => {\n playwright.on('close', (c) => resolve(c))\n playwright.on('error', (err) => reject(err))\n })\n }\n}\n\nasync function runPlaywright(\n baseDir: string,\n nextConfig: NextConfigComplete,\n testRunnerArgs: string[]\n) {\n await checkRequiredDeps(baseDir, 'playwright')\n\n const playwrightConfigFile = await findUp(\n ['playwright.config.js', 'playwright.config.ts'],\n {\n cwd: baseDir,\n }\n )\n\n if (!playwrightConfigFile) {\n const { pagesDir, appDir } = findPagesDir(baseDir)\n\n const { version: typeScriptVersion } = await verifyTypeScriptSetup({\n dir: baseDir,\n distDir: nextConfig.distDir,\n strictRouteTypes: Boolean(nextConfig.experimental.strictRouteTypes),\n typeCheckPreflight: false,\n tsconfigPath: nextConfig.typescript.tsconfigPath,\n typedRoutes: Boolean(nextConfig.typedRoutes),\n disableStaticImages: nextConfig.images.disableStaticImages,\n hasAppDir: !!appDir,\n hasPagesDir: !!pagesDir,\n isolatedDevBuild: nextConfig.experimental.isolatedDevBuild,\n appDir: appDir || undefined,\n pagesDir: pagesDir || undefined,\n })\n\n const isUsingTypeScript = !!typeScriptVersion\n\n const playwrightConfigFilename = isUsingTypeScript\n ? 'playwright.config.ts'\n : 'playwright.config.js'\n\n writeFileSync(\n path.join(baseDir, playwrightConfigFilename),\n defaultPlaywrightConfig(isUsingTypeScript)\n )\n\n return printAndExit(\n `Successfully generated ${playwrightConfigFilename}. Create your first test and then run \\`next experimental-test\\`.`,\n 0\n )\n } else {\n const playwright = spawn(\n path.join(baseDir, 'node_modules', '.bin', 'playwright'),\n ['test', ...testRunnerArgs],\n {\n cwd: baseDir,\n shell: false,\n stdio: 'inherit',\n env: {\n ...process.env,\n },\n }\n )\n return new Promise((resolve, reject) => {\n playwright.on('close', (c) => resolve(c))\n playwright.on('error', (err) => reject(err))\n })\n }\n}\n\nfunction defaultPlaywrightConfig(typescript: boolean) {\n const comment = `/*\n * Specify any additional Playwright config options here.\n * They will be merged with Next.js' default Playwright config.\n * You can access the default config by importing \\`defaultPlaywrightConfig\\` from \\`'next/experimental/testmode/playwright'\\`.\n */`\n return typescript\n ? `import { defineConfig } from 'next/experimental/testmode/playwright';\\n\\n${comment}\\nexport default defineConfig({});`\n : `const { defineConfig } = require('next/experimental/testmode/playwright');\\n\\n${comment}\\nmodule.exports = defineConfig({});`\n}\n"],"names":["SUPPORTED_TEST_RUNNERS_LIST","nextTest","requiredPackagesByTestRunner","playwright","file","pkg","exportsRestrict","directory","testRunnerArgs","options","baseDir","nextConfig","getProjectDir","err","unshift","loadConfig","PHASE_PRODUCTION_BUILD","configuredTestRunner","testRunner","experimental","defaultTestRunner","testProxy","printAndExit","runPlaywright","checkRequiredDeps","deps","hasNecessaryDependencies","missing","length","installDependencies","spawn","path","join","cwd","shell","stdio","env","process","Promise","resolve","reject","on","c","playwrightConfigFile","findUp","pagesDir","appDir","findPagesDir","version","typeScriptVersion","verifyTypeScriptSetup","dir","distDir","strictRouteTypes","Boolean","typeCheckPreflight","tsconfigPath","typescript","typedRoutes","disableStaticImages","images","hasAppDir","hasPagesDir","isolatedDevBuild","undefined","isUsingTypeScript","playwrightConfigFilename","writeFileSync","defaultPlaywrightConfig","comment"],"mappings":"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","ignoreList":[0]}
|
package/dist/cli/next-typegen.js
CHANGED
|
@@ -81,12 +81,14 @@ const nextTypegen = async (_options, directory)=>{
|
|
|
81
81
|
await (0, _installbindings.installBindings)((_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.useWasmBinary);
|
|
82
82
|
const distDir = (0, _path.join)(baseDir, nextConfig.distDir);
|
|
83
83
|
const { pagesDir, appDir } = (0, _findpagesdir.findPagesDir)(baseDir);
|
|
84
|
+
const strictRouteTypes = Boolean(nextConfig.experimental.strictRouteTypes);
|
|
84
85
|
await (0, _verifytypescriptsetup.verifyTypeScriptSetup)({
|
|
85
86
|
dir: baseDir,
|
|
86
87
|
distDir: nextConfig.distDir,
|
|
87
|
-
|
|
88
|
+
strictRouteTypes,
|
|
88
89
|
typeCheckPreflight: false,
|
|
89
90
|
tsconfigPath: nextConfig.typescript.tsconfigPath,
|
|
91
|
+
typedRoutes: Boolean(nextConfig.typedRoutes),
|
|
90
92
|
disableStaticImages: nextConfig.images.disableStaticImages,
|
|
91
93
|
hasAppDir: !!appDir,
|
|
92
94
|
hasPagesDir: !!pagesDir,
|
|
@@ -161,7 +163,7 @@ const nextTypegen = async (_options, directory)=>{
|
|
|
161
163
|
validatorFilePath
|
|
162
164
|
});
|
|
163
165
|
await (0, _routetypesutils.writeRouteTypesManifest)(routeTypesManifest, routeTypesFilePath, nextConfig);
|
|
164
|
-
await (0, _routetypesutils.writeValidatorFile)(routeTypesManifest, validatorFilePath,
|
|
166
|
+
await (0, _routetypesutils.writeValidatorFile)(routeTypesManifest, validatorFilePath, strictRouteTypes);
|
|
165
167
|
// Generate cache-life types if cacheLife config exists
|
|
166
168
|
const cacheLifeFilePath = (0, _path.join)(distDir, 'types', 'cache-life.d.ts');
|
|
167
169
|
(0, _cachelifetypeutils.writeCacheLifeTypes)(nextConfig.cacheLife, cacheLifeFilePath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/next-typegen.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { existsSync } from 'fs'\nimport path, { join } from 'path'\nimport { mkdir } from 'fs/promises'\n\nimport loadConfig from '../server/config'\nimport { printAndExit } from '../server/lib/utils'\nimport { PHASE_PRODUCTION_BUILD } from '../shared/lib/constants'\nimport { getProjectDir } from '../lib/get-project-dir'\nimport { findPagesDir } from '../lib/find-pages-dir'\nimport { verifyTypeScriptSetup } from '../lib/verify-typescript-setup'\nimport {\n createPagesMapping,\n collectAppFiles,\n collectPagesFiles,\n processPageRoutes,\n processAppRoutes,\n processLayoutRoutes,\n extractSlotsFromAppRoutes,\n extractSlotsFromDefaultFiles,\n combineSlots,\n type RouteInfo,\n type SlotInfo,\n} from '../build/entries'\nimport { PAGE_TYPES } from '../lib/page-types'\n\nimport {\n createRouteTypesManifest,\n writeRouteTypesManifest,\n writeValidatorFile,\n} from '../server/lib/router-utils/route-types-utils'\nimport { writeCacheLifeTypes } from '../server/lib/router-utils/cache-life-type-utils'\nimport { createValidFileMatcher } from '../server/lib/find-page-file'\nimport { installBindings } from '../build/swc/install-bindings'\n\nexport type NextTypegenOptions = {\n dir?: string\n}\n\nconst nextTypegen = async (\n _options: NextTypegenOptions,\n directory?: string\n) => {\n const baseDir = getProjectDir(directory)\n\n // Check if the provided directory exists\n if (!existsSync(baseDir)) {\n printAndExit(`> No such directory exists as the project root: ${baseDir}`)\n }\n\n const nextConfig = await loadConfig(PHASE_PRODUCTION_BUILD, baseDir)\n await installBindings(nextConfig.experimental?.useWasmBinary)\n const distDir = join(baseDir, nextConfig.distDir)\n const { pagesDir, appDir } = findPagesDir(baseDir)\n\n await verifyTypeScriptSetup({\n dir: baseDir,\n distDir: nextConfig.distDir,\n distDirRoot: nextConfig.distDirRoot,\n typeCheckPreflight: false,\n tsconfigPath: nextConfig.typescript.tsconfigPath,\n disableStaticImages: nextConfig.images.disableStaticImages,\n hasAppDir: !!appDir,\n hasPagesDir: !!pagesDir,\n isolatedDevBuild: nextConfig.experimental.isolatedDevBuild,\n appDir: appDir || undefined,\n pagesDir: pagesDir || undefined,\n })\n\n console.log('Generating route types...')\n\n const routeTypesFilePath = join(distDir, 'types', 'routes.d.ts')\n const validatorFilePath = join(distDir, 'types', 'validator.ts')\n await mkdir(join(distDir, 'types'), { recursive: true })\n\n let pageRoutes: RouteInfo[] = []\n let appRoutes: RouteInfo[] = []\n let appRouteHandlers: RouteInfo[] = []\n let layoutRoutes: RouteInfo[] = []\n let slots: SlotInfo[] = []\n\n let pageApiRoutes: RouteInfo[] = []\n\n let mappedPages: { [page: string]: string } = {}\n let mappedAppPages: { [page: string]: string } = {}\n let mappedAppLayouts: { [page: string]: string } = {}\n\n // Helper function to reduce createPagesMapping duplication\n const createMapping = (pagePaths: string[], pagesType: any) =>\n createPagesMapping({\n pagePaths,\n isDev: false,\n pagesType,\n pageExtensions: nextConfig.pageExtensions,\n pagesDir,\n appDir,\n appDirOnly: !!appDir && !pagesDir,\n })\n\n const validFileMatcher = createValidFileMatcher(\n nextConfig.pageExtensions,\n appDir\n )\n\n const isSrcDir = path\n .relative(baseDir, pagesDir || appDir || '')\n .startsWith('src')\n\n // Build pages routes\n if (pagesDir) {\n const pagePaths = await collectPagesFiles(pagesDir, validFileMatcher)\n\n mappedPages = await createMapping(pagePaths, PAGE_TYPES.PAGES)\n\n // Process pages routes\n const processedPages = processPageRoutes(mappedPages, baseDir, isSrcDir)\n pageRoutes = processedPages.pageRoutes\n pageApiRoutes = processedPages.pageApiRoutes\n }\n\n // Build app routes\n if (appDir) {\n // Collect app pages, layouts, and default files in a single directory traversal\n const { appPaths, layoutPaths, defaultPaths } = await collectAppFiles(\n appDir,\n validFileMatcher\n )\n\n mappedAppPages = await createMapping(appPaths, PAGE_TYPES.APP)\n mappedAppLayouts = await createMapping(layoutPaths, PAGE_TYPES.APP)\n const mappedDefaultFiles = await createMapping(defaultPaths, PAGE_TYPES.APP)\n\n // Process app routes and extract slots from both pages and default files\n const slotsFromPages = extractSlotsFromAppRoutes(mappedAppPages)\n const slotsFromDefaults = extractSlotsFromDefaultFiles(mappedDefaultFiles)\n\n // Combine slots and deduplicate using Set\n slots = combineSlots(slotsFromPages, slotsFromDefaults)\n\n const result = processAppRoutes(\n mappedAppPages,\n validFileMatcher,\n baseDir,\n isSrcDir\n )\n appRoutes = result.appRoutes\n appRouteHandlers = result.appRouteHandlers\n\n // Process layout routes\n layoutRoutes = processLayoutRoutes(mappedAppLayouts, baseDir, isSrcDir)\n }\n\n const routeTypesManifest = await createRouteTypesManifest({\n dir: baseDir,\n pageRoutes,\n appRoutes,\n appRouteHandlers,\n pageApiRoutes,\n layoutRoutes,\n slots,\n redirects: nextConfig.redirects,\n rewrites: nextConfig.rewrites,\n validatorFilePath,\n })\n\n await writeRouteTypesManifest(\n routeTypesManifest,\n routeTypesFilePath,\n nextConfig\n )\n\n await writeValidatorFile(\n routeTypesManifest,\n validatorFilePath,\n Boolean(nextConfig.experimental.strictRouteTypes)\n )\n\n // Generate cache-life types if cacheLife config exists\n const cacheLifeFilePath = join(distDir, 'types', 'cache-life.d.ts')\n writeCacheLifeTypes(nextConfig.cacheLife, cacheLifeFilePath)\n\n console.log('✓ Types generated successfully')\n}\n\nexport { nextTypegen }\n"],"names":["nextTypegen","_options","directory","nextConfig","baseDir","getProjectDir","existsSync","printAndExit","loadConfig","PHASE_PRODUCTION_BUILD","installBindings","experimental","useWasmBinary","distDir","join","pagesDir","appDir","findPagesDir","verifyTypeScriptSetup","dir","distDirRoot","typeCheckPreflight","tsconfigPath","typescript","disableStaticImages","images","hasAppDir","hasPagesDir","isolatedDevBuild","undefined","console","log","routeTypesFilePath","validatorFilePath","mkdir","recursive","pageRoutes","appRoutes","appRouteHandlers","layoutRoutes","slots","pageApiRoutes","mappedPages","mappedAppPages","mappedAppLayouts","createMapping","pagePaths","pagesType","createPagesMapping","isDev","pageExtensions","appDirOnly","validFileMatcher","createValidFileMatcher","isSrcDir","path","relative","startsWith","collectPagesFiles","PAGE_TYPES","PAGES","processedPages","processPageRoutes","appPaths","layoutPaths","defaultPaths","collectAppFiles","APP","mappedDefaultFiles","slotsFromPages","extractSlotsFromAppRoutes","slotsFromDefaults","extractSlotsFromDefaultFiles","combineSlots","result","processAppRoutes","processLayoutRoutes","routeTypesManifest","createRouteTypesManifest","redirects","rewrites","writeRouteTypesManifest","writeValidatorFile","Boolean","strictRouteTypes","cacheLifeFilePath","writeCacheLifeTypes","cacheLife"],"mappings":"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","ignoreList":[0]}
|
|
1
|
+
{"version":3,"sources":["../../src/cli/next-typegen.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { existsSync } from 'fs'\nimport path, { join } from 'path'\nimport { mkdir } from 'fs/promises'\n\nimport loadConfig from '../server/config'\nimport { printAndExit } from '../server/lib/utils'\nimport { PHASE_PRODUCTION_BUILD } from '../shared/lib/constants'\nimport { getProjectDir } from '../lib/get-project-dir'\nimport { findPagesDir } from '../lib/find-pages-dir'\nimport { verifyTypeScriptSetup } from '../lib/verify-typescript-setup'\nimport {\n createPagesMapping,\n collectAppFiles,\n collectPagesFiles,\n processPageRoutes,\n processAppRoutes,\n processLayoutRoutes,\n extractSlotsFromAppRoutes,\n extractSlotsFromDefaultFiles,\n combineSlots,\n type RouteInfo,\n type SlotInfo,\n} from '../build/entries'\nimport { PAGE_TYPES } from '../lib/page-types'\n\nimport {\n createRouteTypesManifest,\n writeRouteTypesManifest,\n writeValidatorFile,\n} from '../server/lib/router-utils/route-types-utils'\nimport { writeCacheLifeTypes } from '../server/lib/router-utils/cache-life-type-utils'\nimport { createValidFileMatcher } from '../server/lib/find-page-file'\nimport { installBindings } from '../build/swc/install-bindings'\n\nexport type NextTypegenOptions = {\n dir?: string\n}\n\nconst nextTypegen = async (\n _options: NextTypegenOptions,\n directory?: string\n) => {\n const baseDir = getProjectDir(directory)\n\n // Check if the provided directory exists\n if (!existsSync(baseDir)) {\n printAndExit(`> No such directory exists as the project root: ${baseDir}`)\n }\n\n const nextConfig = await loadConfig(PHASE_PRODUCTION_BUILD, baseDir)\n await installBindings(nextConfig.experimental?.useWasmBinary)\n const distDir = join(baseDir, nextConfig.distDir)\n const { pagesDir, appDir } = findPagesDir(baseDir)\n\n const strictRouteTypes = Boolean(nextConfig.experimental.strictRouteTypes)\n\n await verifyTypeScriptSetup({\n dir: baseDir,\n distDir: nextConfig.distDir,\n strictRouteTypes,\n typeCheckPreflight: false,\n tsconfigPath: nextConfig.typescript.tsconfigPath,\n typedRoutes: Boolean(nextConfig.typedRoutes),\n disableStaticImages: nextConfig.images.disableStaticImages,\n hasAppDir: !!appDir,\n hasPagesDir: !!pagesDir,\n isolatedDevBuild: nextConfig.experimental.isolatedDevBuild,\n appDir: appDir || undefined,\n pagesDir: pagesDir || undefined,\n })\n\n console.log('Generating route types...')\n\n const routeTypesFilePath = join(distDir, 'types', 'routes.d.ts')\n const validatorFilePath = join(distDir, 'types', 'validator.ts')\n await mkdir(join(distDir, 'types'), { recursive: true })\n\n let pageRoutes: RouteInfo[] = []\n let appRoutes: RouteInfo[] = []\n let appRouteHandlers: RouteInfo[] = []\n let layoutRoutes: RouteInfo[] = []\n let slots: SlotInfo[] = []\n\n let pageApiRoutes: RouteInfo[] = []\n\n let mappedPages: { [page: string]: string } = {}\n let mappedAppPages: { [page: string]: string } = {}\n let mappedAppLayouts: { [page: string]: string } = {}\n\n // Helper function to reduce createPagesMapping duplication\n const createMapping = (pagePaths: string[], pagesType: any) =>\n createPagesMapping({\n pagePaths,\n isDev: false,\n pagesType,\n pageExtensions: nextConfig.pageExtensions,\n pagesDir,\n appDir,\n appDirOnly: !!appDir && !pagesDir,\n })\n\n const validFileMatcher = createValidFileMatcher(\n nextConfig.pageExtensions,\n appDir\n )\n\n const isSrcDir = path\n .relative(baseDir, pagesDir || appDir || '')\n .startsWith('src')\n\n // Build pages routes\n if (pagesDir) {\n const pagePaths = await collectPagesFiles(pagesDir, validFileMatcher)\n\n mappedPages = await createMapping(pagePaths, PAGE_TYPES.PAGES)\n\n // Process pages routes\n const processedPages = processPageRoutes(mappedPages, baseDir, isSrcDir)\n pageRoutes = processedPages.pageRoutes\n pageApiRoutes = processedPages.pageApiRoutes\n }\n\n // Build app routes\n if (appDir) {\n // Collect app pages, layouts, and default files in a single directory traversal\n const { appPaths, layoutPaths, defaultPaths } = await collectAppFiles(\n appDir,\n validFileMatcher\n )\n\n mappedAppPages = await createMapping(appPaths, PAGE_TYPES.APP)\n mappedAppLayouts = await createMapping(layoutPaths, PAGE_TYPES.APP)\n const mappedDefaultFiles = await createMapping(defaultPaths, PAGE_TYPES.APP)\n\n // Process app routes and extract slots from both pages and default files\n const slotsFromPages = extractSlotsFromAppRoutes(mappedAppPages)\n const slotsFromDefaults = extractSlotsFromDefaultFiles(mappedDefaultFiles)\n\n // Combine slots and deduplicate using Set\n slots = combineSlots(slotsFromPages, slotsFromDefaults)\n\n const result = processAppRoutes(\n mappedAppPages,\n validFileMatcher,\n baseDir,\n isSrcDir\n )\n appRoutes = result.appRoutes\n appRouteHandlers = result.appRouteHandlers\n\n // Process layout routes\n layoutRoutes = processLayoutRoutes(mappedAppLayouts, baseDir, isSrcDir)\n }\n\n const routeTypesManifest = await createRouteTypesManifest({\n dir: baseDir,\n pageRoutes,\n appRoutes,\n appRouteHandlers,\n pageApiRoutes,\n layoutRoutes,\n slots,\n redirects: nextConfig.redirects,\n rewrites: nextConfig.rewrites,\n validatorFilePath,\n })\n\n await writeRouteTypesManifest(\n routeTypesManifest,\n routeTypesFilePath,\n nextConfig\n )\n\n await writeValidatorFile(\n routeTypesManifest,\n validatorFilePath,\n strictRouteTypes\n )\n\n // Generate cache-life types if cacheLife config exists\n const cacheLifeFilePath = join(distDir, 'types', 'cache-life.d.ts')\n writeCacheLifeTypes(nextConfig.cacheLife, cacheLifeFilePath)\n\n console.log('✓ Types generated successfully')\n}\n\nexport { nextTypegen }\n"],"names":["nextTypegen","_options","directory","nextConfig","baseDir","getProjectDir","existsSync","printAndExit","loadConfig","PHASE_PRODUCTION_BUILD","installBindings","experimental","useWasmBinary","distDir","join","pagesDir","appDir","findPagesDir","strictRouteTypes","Boolean","verifyTypeScriptSetup","dir","typeCheckPreflight","tsconfigPath","typescript","typedRoutes","disableStaticImages","images","hasAppDir","hasPagesDir","isolatedDevBuild","undefined","console","log","routeTypesFilePath","validatorFilePath","mkdir","recursive","pageRoutes","appRoutes","appRouteHandlers","layoutRoutes","slots","pageApiRoutes","mappedPages","mappedAppPages","mappedAppLayouts","createMapping","pagePaths","pagesType","createPagesMapping","isDev","pageExtensions","appDirOnly","validFileMatcher","createValidFileMatcher","isSrcDir","path","relative","startsWith","collectPagesFiles","PAGE_TYPES","PAGES","processedPages","processPageRoutes","appPaths","layoutPaths","defaultPaths","collectAppFiles","APP","mappedDefaultFiles","slotsFromPages","extractSlotsFromAppRoutes","slotsFromDefaults","extractSlotsFromDefaultFiles","combineSlots","result","processAppRoutes","processLayoutRoutes","routeTypesManifest","createRouteTypesManifest","redirects","rewrites","writeRouteTypesManifest","writeValidatorFile","cacheLifeFilePath","writeCacheLifeTypes","cacheLife"],"mappings":"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","ignoreList":[0]}
|
|
@@ -15,7 +15,7 @@ Object.defineProperty(exports, "appBootstrap", {
|
|
|
15
15
|
});
|
|
16
16
|
const _assetprefix = require("./asset-prefix");
|
|
17
17
|
const _setattributesfromprops = require("./set-attributes-from-props");
|
|
18
|
-
const version = "16.1.1-canary.
|
|
18
|
+
const version = "16.1.1-canary.14";
|
|
19
19
|
window.next = {
|
|
20
20
|
version,
|
|
21
21
|
appDir: true
|
package/dist/client/index.js
CHANGED
|
@@ -60,7 +60,7 @@ const _hooksclientcontextsharedruntime = require("../shared/lib/hooks-client-con
|
|
|
60
60
|
const _onrecoverableerror = require("./react-client-callbacks/on-recoverable-error");
|
|
61
61
|
const _tracer = /*#__PURE__*/ _interop_require_default._(require("./tracing/tracer"));
|
|
62
62
|
const _isnextroutererror = require("./components/is-next-router-error");
|
|
63
|
-
const version = "16.1.1-canary.
|
|
63
|
+
const version = "16.1.1-canary.14";
|
|
64
64
|
let router;
|
|
65
65
|
const emitter = (0, _mitt.default)();
|
|
66
66
|
const looseToArray = (input)=>[].slice.call(input);
|