vinext 0.1.7 → 0.2.0
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/README.md +51 -30
- package/dist/build/inject-pregenerated-paths.d.ts +4 -0
- package/dist/build/inject-pregenerated-paths.js +18 -0
- package/dist/build/layout-classification.js +1 -1
- package/dist/build/nitro-route-rules.js +1 -1
- package/dist/build/pages-client-assets-module.d.ts +11 -0
- package/dist/build/pages-client-assets-module.js +27 -0
- package/dist/build/prerender.d.ts +2 -1
- package/dist/build/prerender.js +13 -6
- package/dist/build/report.d.ts +13 -2
- package/dist/build/report.js +99 -2
- package/dist/build/run-prerender.d.ts +7 -0
- package/dist/build/run-prerender.js +10 -1
- package/dist/build/standalone.js +2 -0
- package/dist/cache/cache-adapters-virtual.js +3 -3
- package/dist/check.d.ts +18 -0
- package/dist/check.js +77 -19
- package/dist/cli-args.d.ts +1 -2
- package/dist/cli-args.js +1 -1
- package/dist/cli-dev-config.d.ts +12 -0
- package/dist/cli-dev-config.js +23 -0
- package/dist/cli.js +113 -97
- package/dist/{server → client}/dev-error-overlay-store.d.ts +1 -1
- package/dist/{server → client}/dev-error-overlay-store.js +1 -1
- package/dist/{server → client}/dev-error-overlay.d.ts +1 -1
- package/dist/{server → client}/dev-error-overlay.js +2 -2
- package/dist/client/navigation-runtime.d.ts +2 -0
- package/dist/client/navigation-runtime.js +3 -1
- package/dist/client/window-next.d.ts +2 -1
- package/dist/cloudflare/index.d.ts +2 -2
- package/dist/cloudflare/index.js +2 -2
- package/dist/config/config-matchers.js +14 -10
- package/dist/config/next-config.d.ts +6 -3
- package/dist/config/next-config.js +47 -1
- package/dist/config/prerender.d.ts +34 -0
- package/dist/config/prerender.js +55 -0
- package/dist/config/server-external-packages.d.ts +4 -0
- package/dist/config/server-external-packages.js +91 -0
- package/dist/entries/app-rsc-entry.d.ts +2 -1
- package/dist/entries/app-rsc-entry.js +89 -15
- package/dist/entries/app-rsc-manifest.js +10 -0
- package/dist/entries/pages-client-entry.d.ts +3 -0
- package/dist/entries/pages-client-entry.js +16 -1
- package/dist/entries/pages-server-entry.js +6 -2
- package/dist/image/image-adapters-virtual.d.ts +59 -0
- package/dist/image/image-adapters-virtual.js +59 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +211 -118
- package/dist/init-cloudflare.d.ts +43 -0
- package/dist/init-cloudflare.js +839 -0
- package/dist/init-platform.d.ts +40 -0
- package/dist/init-platform.js +195 -0
- package/dist/init.d.ts +16 -38
- package/dist/init.js +208 -97
- package/dist/node_modules/.pnpm/am-i-vibing@0.5.0/node_modules/am-i-vibing/dist/detector-1yx2Hoe0.js +294 -0
- package/dist/node_modules/.pnpm/process-ancestry@0.1.0/node_modules/process-ancestry/dist/index.js +94 -0
- package/dist/{cloudflare → packages/cloudflare}/src/cache/cdn-adapter.runtime.js +1 -1
- package/dist/{cloudflare → packages/cloudflare}/src/cache/kv-data-adapter.runtime.d.ts +2 -2
- package/dist/{cloudflare → packages/cloudflare}/src/cache/kv-data-adapter.runtime.js +1 -1
- package/dist/packages/cloudflare/src/deploy-config.js +150 -0
- package/dist/packages/cloudflare/src/deploy-help.js +55 -0
- package/dist/packages/cloudflare/src/deploy.js +276 -0
- package/dist/{cloudflare → packages/cloudflare/src}/tpr.d.ts +4 -41
- package/dist/{cloudflare → packages/cloudflare/src}/tpr.js +18 -15
- package/dist/plugins/ast-scope.d.ts +16 -0
- package/dist/plugins/ast-scope.js +62 -0
- package/dist/plugins/ast-utils.d.ts +27 -1
- package/dist/plugins/ast-utils.js +32 -1
- package/dist/plugins/css-module-imports.d.ts +14 -0
- package/dist/plugins/css-module-imports.js +59 -0
- package/dist/plugins/extensionless-dynamic-import.js +2 -2
- package/dist/plugins/ignore-dynamic-requests.d.ts +11 -0
- package/dist/plugins/ignore-dynamic-requests.js +530 -0
- package/dist/plugins/middleware-server-only.d.ts +8 -6
- package/dist/plugins/middleware-server-only.js +8 -7
- package/dist/plugins/optimize-imports.js +1 -1
- package/dist/plugins/typeof-window.d.ts +1 -1
- package/dist/plugins/typeof-window.js +28 -56
- package/dist/routing/app-route-graph.d.ts +29 -4
- package/dist/routing/app-route-graph.js +182 -40
- package/dist/routing/app-router.d.ts +5 -0
- package/dist/routing/app-router.js +5 -0
- package/dist/routing/file-matcher.d.ts +8 -0
- package/dist/routing/file-matcher.js +10 -1
- package/dist/routing/pages-router.js +2 -2
- package/dist/server/api-handler.js +9 -14
- package/dist/server/app-browser-action-result.d.ts +4 -1
- package/dist/server/app-browser-action-result.js +8 -1
- package/dist/server/app-browser-entry.js +194 -190
- package/dist/server/app-browser-history-controller.d.ts +2 -1
- package/dist/server/app-browser-history-controller.js +6 -2
- package/dist/server/app-browser-interception-context.d.ts +1 -0
- package/dist/server/app-browser-interception-context.js +4 -2
- package/dist/server/app-browser-navigation-controller.d.ts +2 -0
- package/dist/server/app-browser-navigation-controller.js +60 -31
- package/dist/server/app-browser-server-action-client.d.ts +32 -0
- package/dist/server/app-browser-server-action-client.js +127 -0
- package/dist/server/app-browser-state.d.ts +11 -1
- package/dist/server/app-browser-state.js +25 -8
- package/dist/server/app-browser-visible-commit.d.ts +6 -1
- package/dist/server/app-browser-visible-commit.js +43 -25
- package/dist/server/app-elements-wire.d.ts +9 -2
- package/dist/server/app-elements-wire.js +8 -1
- package/dist/server/app-elements.d.ts +2 -2
- package/dist/server/app-elements.js +4 -3
- package/dist/server/app-fallback-renderer.d.ts +5 -2
- package/dist/server/app-fallback-renderer.js +15 -7
- package/dist/server/app-hydration-cache-publication.d.ts +11 -0
- package/dist/server/app-hydration-cache-publication.js +43 -0
- package/dist/server/app-middleware.d.ts +4 -3
- package/dist/server/app-middleware.js +8 -3
- package/dist/server/app-optimistic-routing.js +11 -4
- package/dist/server/app-page-boundary-render.d.ts +3 -0
- package/dist/server/app-page-boundary-render.js +14 -3
- package/dist/server/app-page-cache-finalizer.d.ts +1 -0
- package/dist/server/app-page-cache-finalizer.js +10 -3
- package/dist/server/app-page-cache-render.d.ts +1 -0
- package/dist/server/app-page-cache-render.js +8 -4
- package/dist/server/app-page-cache.d.ts +1 -0
- package/dist/server/app-page-cache.js +5 -2
- package/dist/server/app-page-dispatch.d.ts +33 -4
- package/dist/server/app-page-dispatch.js +63 -90
- package/dist/server/app-page-element-builder.d.ts +9 -2
- package/dist/server/app-page-element-builder.js +114 -23
- package/dist/server/app-page-head.d.ts +16 -1
- package/dist/server/app-page-head.js +44 -22
- package/dist/server/app-page-params.d.ts +2 -1
- package/dist/server/app-page-params.js +8 -1
- package/dist/server/app-page-ppr-runtime.d.ts +7 -0
- package/dist/server/app-page-ppr-runtime.js +70 -0
- package/dist/server/app-page-probe.d.ts +1 -0
- package/dist/server/app-page-probe.js +6 -1
- package/dist/server/app-page-render-identity.d.ts +1 -0
- package/dist/server/app-page-render-identity.js +1 -1
- package/dist/server/app-page-render.d.ts +4 -1
- package/dist/server/app-page-render.js +26 -3
- package/dist/server/app-page-request.d.ts +22 -1
- package/dist/server/app-page-request.js +92 -15
- package/dist/server/app-page-route-wiring.d.ts +14 -2
- package/dist/server/app-page-route-wiring.js +61 -25
- package/dist/server/app-page-search-params-observation.d.ts +4 -2
- package/dist/server/app-page-search-params-observation.js +11 -7
- package/dist/server/app-page-segment-state.d.ts +2 -1
- package/dist/server/app-page-segment-state.js +3 -1
- package/dist/server/app-page-stream.d.ts +5 -0
- package/dist/server/app-page-stream.js +3 -1
- package/dist/server/app-ppr-fallback-shell-render.d.ts +4 -3
- package/dist/server/app-route-handler-dispatch.js +1 -0
- package/dist/server/app-route-handler-execution.js +7 -2
- package/dist/server/app-route-handler-response.js +1 -0
- package/dist/server/app-route-handler-runtime.js +1 -1
- package/dist/server/app-route-module-loader.d.ts +2 -0
- package/dist/server/app-route-module-loader.js +1 -0
- package/dist/server/app-router-entry.js +16 -8
- package/dist/server/app-rsc-errors.js +7 -1
- package/dist/server/app-rsc-handler.d.ts +3 -1
- package/dist/server/app-rsc-handler.js +67 -39
- package/dist/server/app-rsc-request-normalization.d.ts +3 -2
- package/dist/server/app-rsc-request-normalization.js +6 -3
- package/dist/server/app-rsc-route-matching.d.ts +7 -0
- package/dist/server/app-rsc-route-matching.js +36 -3
- package/dist/server/app-segment-config.d.ts +12 -0
- package/dist/server/app-segment-config.js +91 -5
- package/dist/server/app-server-action-execution.d.ts +5 -0
- package/dist/server/app-server-action-execution.js +94 -33
- package/dist/server/app-ssr-entry.d.ts +3 -0
- package/dist/server/app-ssr-entry.js +19 -8
- package/dist/server/app-ssr-stream.d.ts +7 -3
- package/dist/server/app-ssr-stream.js +10 -6
- package/dist/server/app-static-generation.d.ts +1 -0
- package/dist/server/app-static-generation.js +1 -0
- package/dist/server/app-visited-response-cache.d.ts +6 -0
- package/dist/server/app-visited-response-cache.js +3 -1
- package/dist/server/client-trace-metadata.js +26 -0
- package/dist/server/default-global-not-found-module.d.ts +14 -0
- package/dist/server/default-global-not-found-module.js +14 -0
- package/dist/server/dev-route-files.js +4 -0
- package/dist/server/dev-server.js +19 -18
- package/dist/server/dev-stack-sourcemap.d.ts +1 -1
- package/dist/server/dev-stack-sourcemap.js +1 -1
- package/dist/server/fetch-handler.d.ts +2 -0
- package/dist/server/fetch-handler.js +18 -0
- package/dist/server/headers.d.ts +5 -15
- package/dist/server/headers.js +4 -15
- package/dist/server/image-optimization.d.ts +51 -1
- package/dist/server/image-optimization.js +52 -2
- package/dist/server/implicit-tags.js +1 -1
- package/dist/server/isr-cache.d.ts +1 -1
- package/dist/server/isr-cache.js +2 -2
- package/dist/server/metadata-routes.d.ts +3 -1
- package/dist/server/metadata-routes.js +12 -2
- package/dist/server/middleware-runtime.js +6 -1
- package/dist/server/navigation-planner.d.ts +1 -0
- package/dist/server/navigation-planner.js +14 -3
- package/dist/server/pages-api-route.js +2 -2
- package/dist/server/pages-asset-tags.d.ts +4 -6
- package/dist/server/pages-asset-tags.js +12 -12
- package/dist/server/pages-client-assets.d.ts +12 -0
- package/dist/server/pages-client-assets.js +10 -0
- package/dist/server/pages-node-compat.d.ts +8 -1
- package/dist/server/pages-node-compat.js +32 -4
- package/dist/server/pages-page-data.d.ts +24 -1
- package/dist/server/pages-page-data.js +45 -24
- package/dist/server/pages-page-handler.d.ts +2 -1
- package/dist/server/pages-page-handler.js +19 -12
- package/dist/server/pages-page-response.d.ts +7 -0
- package/dist/server/pages-page-response.js +4 -1
- package/dist/server/pages-request-pipeline.d.ts +2 -0
- package/dist/server/pages-request-pipeline.js +25 -1
- package/dist/server/pages-router-entry.d.ts +30 -0
- package/dist/server/pages-router-entry.js +108 -0
- package/dist/server/prerender-manifest.d.ts +3 -1
- package/dist/server/prerender-route-params.js +1 -1
- package/dist/server/prod-server.d.ts +1 -1
- package/dist/server/prod-server.js +48 -26
- package/dist/server/request-pipeline.js +1 -0
- package/dist/server/seed-cache.js +4 -4
- package/dist/server/worker-utils.d.ts +2 -1
- package/dist/server/worker-utils.js +7 -1
- package/dist/shims/app-router-scroll-state.d.ts +1 -0
- package/dist/shims/app-router-scroll-state.js +1 -0
- package/dist/shims/app-router-scroll.js +2 -1
- package/dist/shims/cache.js +19 -15
- package/dist/shims/cdn-cache.js +1 -1
- package/dist/shims/dynamic-preload-chunks.js +2 -1
- package/dist/shims/error-boundary.d.ts +19 -1
- package/dist/shims/error-boundary.js +11 -1
- package/dist/shims/form.d.ts +3 -1
- package/dist/shims/form.js +37 -43
- package/dist/shims/headers.d.ts +9 -1
- package/dist/shims/headers.js +31 -6
- package/dist/shims/image.js +75 -14
- package/dist/shims/internal/app-route-detection.d.ts +2 -17
- package/dist/shims/internal/app-route-detection.js +4 -17
- package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +23 -0
- package/dist/shims/internal/hybrid-client-route-owner-direct.js +51 -0
- package/dist/shims/internal/hybrid-client-route-owner.d.ts +2 -15
- package/dist/shims/internal/hybrid-client-route-owner.js +9 -60
- package/dist/shims/internal/pages-data-fetch-dedup.d.ts +9 -5
- package/dist/shims/internal/pages-data-fetch-dedup.js +73 -14
- package/dist/shims/internal/pages-data-target.d.ts +10 -9
- package/dist/shims/internal/pages-data-target.js +91 -12
- package/dist/shims/internal/pages-router-components.d.ts +7 -0
- package/dist/shims/internal/pages-router-components.js +13 -0
- package/dist/shims/layout-segment-context.d.ts +4 -1
- package/dist/shims/layout-segment-context.js +18 -4
- package/dist/shims/link.js +70 -37
- package/dist/shims/metadata.d.ts +3 -2
- package/dist/shims/metadata.js +8 -4
- package/dist/shims/navigation.d.ts +5 -1
- package/dist/shims/navigation.js +45 -10
- package/dist/shims/navigation.react-server.js +1 -1
- package/dist/shims/root-params.d.ts +15 -1
- package/dist/shims/root-params.js +21 -1
- package/dist/shims/router.d.ts +5 -7
- package/dist/shims/router.js +374 -94
- package/dist/shims/server.js +3 -2
- package/dist/shims/slot.js +3 -6
- package/dist/typegen.js +6 -5
- package/dist/utils/client-runtime-metadata.d.ts +2 -18
- package/dist/utils/client-runtime-metadata.js +31 -22
- package/dist/utils/dev-stack-sourcemap-endpoint.d.ts +4 -0
- package/dist/{server → utils}/dev-stack-sourcemap-endpoint.js +1 -1
- package/dist/utils/domain-locale.d.ts +6 -3
- package/dist/{server → utils}/middleware-request-headers.d.ts +1 -1
- package/dist/{server → utils}/middleware-request-headers.js +2 -2
- package/dist/utils/path.d.ts +2 -1
- package/dist/utils/path.js +1 -1
- package/dist/utils/project.d.ts +52 -2
- package/dist/utils/project.js +230 -5
- package/dist/utils/protocol-headers.d.ts +17 -0
- package/dist/utils/protocol-headers.js +17 -0
- package/dist/utils/react-version.d.ts +4 -0
- package/dist/utils/react-version.js +44 -0
- package/package.json +53 -4
- package/dist/deploy.d.ts +0 -190
- package/dist/deploy.js +0 -1033
- package/dist/server/dev-stack-sourcemap-endpoint.d.ts +0 -4
- /package/dist/{cloudflare → packages/cloudflare}/src/utils/cache-control-metadata.js +0 -0
|
@@ -72,6 +72,7 @@ const CONFIG_FILES = [
|
|
|
72
72
|
"next.config.cjs"
|
|
73
73
|
];
|
|
74
74
|
const DEFAULT_EXPIRE_TIME = 31536e3;
|
|
75
|
+
const DEFAULT_TRANSPILED_PACKAGES = ["geist"];
|
|
75
76
|
/**
|
|
76
77
|
* Default cap for the App Router preload `Link` header length, matching the
|
|
77
78
|
* Next.js `defaultConfig.reactMaxHeadersLength`.
|
|
@@ -252,6 +253,31 @@ function findNextConfigPath(root) {
|
|
|
252
253
|
}
|
|
253
254
|
return null;
|
|
254
255
|
}
|
|
256
|
+
function hasConfigProperty(config, propertyPath) {
|
|
257
|
+
let current = config;
|
|
258
|
+
for (const property of propertyPath.split(".")) {
|
|
259
|
+
if (!isUnknownRecord(current) || current[property] === void 0) return false;
|
|
260
|
+
current = current[property];
|
|
261
|
+
}
|
|
262
|
+
return true;
|
|
263
|
+
}
|
|
264
|
+
const emittedConfigWarnings = /* @__PURE__ */ new Set();
|
|
265
|
+
function warnConfigOnce(message) {
|
|
266
|
+
if (emittedConfigWarnings.has(message)) return;
|
|
267
|
+
emittedConfigWarnings.add(message);
|
|
268
|
+
console.warn(message);
|
|
269
|
+
}
|
|
270
|
+
function warnDeprecatedConfigOptions(config, root) {
|
|
271
|
+
const configFileName = path.basename(findNextConfigPath(root) ?? "next.config.js");
|
|
272
|
+
const warnings = [
|
|
273
|
+
["experimental.middlewarePrefetch", `\`experimental.middlewarePrefetch\` is deprecated. Please use \`experimental.proxyPrefetch\` instead in ${configFileName}.`],
|
|
274
|
+
["experimental.middlewareClientMaxBodySize", `\`experimental.middlewareClientMaxBodySize\` is deprecated. Please use \`experimental.proxyClientMaxBodySize\` instead in ${configFileName}.`],
|
|
275
|
+
["experimental.externalMiddlewareRewritesResolve", `\`experimental.externalMiddlewareRewritesResolve\` is deprecated. Please use \`experimental.externalProxyRewritesResolve\` instead in ${configFileName}.`],
|
|
276
|
+
["skipMiddlewareUrlNormalize", `\`skipMiddlewareUrlNormalize\` is deprecated. Please use \`skipProxyUrlNormalize\` instead in ${configFileName}.`],
|
|
277
|
+
["experimental.instrumentationHook", `\`experimental.instrumentationHook\` is no longer needed, because \`instrumentation.js\` is available by default. You can remove it from ${configFileName}.`]
|
|
278
|
+
];
|
|
279
|
+
for (const [propertyPath, warning] of warnings) if (hasConfigProperty(config, propertyPath)) warnConfigOnce(warning);
|
|
280
|
+
}
|
|
255
281
|
async function resolveNextConfigInput(config, phase = PHASE_DEVELOPMENT_SERVER) {
|
|
256
282
|
return await resolveConfigValue(config, phase);
|
|
257
283
|
}
|
|
@@ -569,7 +595,10 @@ async function resolveNextConfig(config, root = process.cwd(), options = {}) {
|
|
|
569
595
|
allowedDevOrigins: [],
|
|
570
596
|
serverActionsAllowedOrigins: [],
|
|
571
597
|
optimizePackageImports: [],
|
|
598
|
+
transpilePackages: [],
|
|
599
|
+
turbopackTranspilePackages: [...DEFAULT_TRANSPILED_PACKAGES],
|
|
572
600
|
inlineCss: false,
|
|
601
|
+
globalNotFound: false,
|
|
573
602
|
serverActionsBodySizeLimit: 1 * 1024 * 1024,
|
|
574
603
|
serverActionsBodySizeLimitLabel: "1 MB",
|
|
575
604
|
expireTime: DEFAULT_EXPIRE_TIME,
|
|
@@ -601,6 +630,7 @@ async function resolveNextConfig(config, root = process.cwd(), options = {}) {
|
|
|
601
630
|
detectNextIntlConfig(root, resolved);
|
|
602
631
|
return resolved;
|
|
603
632
|
}
|
|
633
|
+
warnDeprecatedConfigOptions(config, root);
|
|
604
634
|
let redirects = [];
|
|
605
635
|
if (config.redirects) {
|
|
606
636
|
const result = await config.redirects();
|
|
@@ -652,6 +682,7 @@ async function resolveNextConfig(config, root = process.cwd(), options = {}) {
|
|
|
652
682
|
const rawOptimize = experimental?.optimizePackageImports;
|
|
653
683
|
const optimizePackageImports = Array.isArray(rawOptimize) ? rawOptimize.filter((x) => typeof x === "string") : [];
|
|
654
684
|
const inlineCss = experimental?.inlineCss === true;
|
|
685
|
+
const globalNotFound = experimental?.globalNotFound === true;
|
|
655
686
|
const prefetchInlining = experimental?.prefetchInlining === true || isUnknownRecord(experimental?.prefetchInlining);
|
|
656
687
|
const appShells = experimental?.appShells === true;
|
|
657
688
|
if (appShells) {
|
|
@@ -666,6 +697,8 @@ async function resolveNextConfig(config, root = process.cwd(), options = {}) {
|
|
|
666
697
|
const topLevelServerExternalPackages = Array.isArray(config.serverExternalPackages) ? readStringArray(config.serverExternalPackages) : void 0;
|
|
667
698
|
const legacyServerComponentsExternal = readStringArray(experimental?.serverComponentsExternalPackages);
|
|
668
699
|
const serverExternalPackages = topLevelServerExternalPackages ?? legacyServerComponentsExternal;
|
|
700
|
+
const transpilePackages = readStringArray(config.transpilePackages);
|
|
701
|
+
const turbopackTranspilePackages = [...transpilePackages, ...DEFAULT_TRANSPILED_PACKAGES];
|
|
669
702
|
if (experimental?.swcEnvOptions !== void 0) console.warn("[vinext] next.config option \"experimental.swcEnvOptions\" is not applicable and will be ignored (vinext uses Vite, not SWC). A Vite-compatible polyfill solution may be explored in the future.");
|
|
670
703
|
if (experimental?.rootParams !== void 0) console.warn("[vinext] `experimental.rootParams` is no longer needed, because `next/root-params` is available by default. You can remove it from next.config.(js|mjs|ts).");
|
|
671
704
|
const useLightningcss = experimental?.useLightningcss === true;
|
|
@@ -704,6 +737,16 @@ async function resolveNextConfig(config, root = process.cwd(), options = {}) {
|
|
|
704
737
|
fallback: applyLocaleToRoutes(rewrites.fallback, i18n, "rewrite", opts)
|
|
705
738
|
};
|
|
706
739
|
}
|
|
740
|
+
const images = config.images ? {
|
|
741
|
+
...config.images,
|
|
742
|
+
remotePatterns: config.images.remotePatterns?.map((pattern) => pattern instanceof URL ? {
|
|
743
|
+
protocol: pattern.protocol.slice(0, -1),
|
|
744
|
+
hostname: pattern.hostname,
|
|
745
|
+
port: pattern.port,
|
|
746
|
+
pathname: pattern.pathname,
|
|
747
|
+
search: pattern.search
|
|
748
|
+
} : { ...pattern })
|
|
749
|
+
} : void 0;
|
|
707
750
|
const resolved = {
|
|
708
751
|
env: config.env ?? {},
|
|
709
752
|
basePath: config.basePath ?? "",
|
|
@@ -721,14 +764,17 @@ async function resolveNextConfig(config, root = process.cwd(), options = {}) {
|
|
|
721
764
|
redirects,
|
|
722
765
|
rewrites,
|
|
723
766
|
headers,
|
|
724
|
-
images
|
|
767
|
+
images,
|
|
725
768
|
i18n,
|
|
726
769
|
mdx,
|
|
727
770
|
aliases,
|
|
728
771
|
allowedDevOrigins,
|
|
729
772
|
serverActionsAllowedOrigins,
|
|
730
773
|
optimizePackageImports,
|
|
774
|
+
transpilePackages,
|
|
775
|
+
turbopackTranspilePackages,
|
|
731
776
|
inlineCss,
|
|
777
|
+
globalNotFound,
|
|
732
778
|
serverActionsBodySizeLimit,
|
|
733
779
|
serverActionsBodySizeLimitLabel,
|
|
734
780
|
expireTime: typeof config.expireTime === "number" ? config.expireTime : DEFAULT_EXPIRE_TIME,
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { PluginOption } from "vite";
|
|
2
|
+
|
|
3
|
+
//#region src/config/prerender.d.ts
|
|
4
|
+
type VinextPrerenderConfig = true | {
|
|
5
|
+
/**
|
|
6
|
+
* Routes to pre-render after the production build.
|
|
7
|
+
*
|
|
8
|
+
* Currently only `"*"` is supported, which pre-renders every discovered
|
|
9
|
+
* App Router and Pages Router route that vinext can statically render.
|
|
10
|
+
*/
|
|
11
|
+
routes: "*";
|
|
12
|
+
};
|
|
13
|
+
type ResolvedVinextPrerenderConfig = {
|
|
14
|
+
routes: "*";
|
|
15
|
+
};
|
|
16
|
+
type VinextPrerenderDecisionReason = "flag" | "next-export" | "vinext-config";
|
|
17
|
+
type VinextPrerenderDecision = ResolvedVinextPrerenderConfig & {
|
|
18
|
+
reason: VinextPrerenderDecisionReason;
|
|
19
|
+
};
|
|
20
|
+
declare const VINEXT_PRERENDER_CONFIG_PLUGIN_PROPERTY = "__vinextPrerenderConfig";
|
|
21
|
+
type ViteConfigLoader = {
|
|
22
|
+
loadConfigFromFile: typeof import("vite").loadConfigFromFile;
|
|
23
|
+
};
|
|
24
|
+
declare function normalizeVinextPrerenderConfig(config: VinextPrerenderConfig | undefined): ResolvedVinextPrerenderConfig | null;
|
|
25
|
+
declare function findVinextPrerenderConfigInPlugins(plugins: PluginOption[] | undefined): ResolvedVinextPrerenderConfig | null;
|
|
26
|
+
declare function loadVinextPrerenderConfigFromViteConfig(vite: ViteConfigLoader, root: string): Promise<ResolvedVinextPrerenderConfig | null>;
|
|
27
|
+
declare function resolveVinextPrerenderDecision(options: {
|
|
28
|
+
prerenderAllFlag?: boolean;
|
|
29
|
+
vinextPrerenderConfig?: ResolvedVinextPrerenderConfig | null;
|
|
30
|
+
nextOutput?: string;
|
|
31
|
+
}): VinextPrerenderDecision | null;
|
|
32
|
+
declare function formatVinextPrerenderLabel(decision: VinextPrerenderDecision): string;
|
|
33
|
+
//#endregion
|
|
34
|
+
export { ResolvedVinextPrerenderConfig, VINEXT_PRERENDER_CONFIG_PLUGIN_PROPERTY, VinextPrerenderConfig, VinextPrerenderDecision, VinextPrerenderDecisionReason, findVinextPrerenderConfigInPlugins, formatVinextPrerenderLabel, loadVinextPrerenderConfigFromViteConfig, normalizeVinextPrerenderConfig, resolveVinextPrerenderDecision };
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { isUnknownRecord } from "../utils/record.js";
|
|
2
|
+
//#region src/config/prerender.ts
|
|
3
|
+
const VINEXT_PRERENDER_CONFIG_PLUGIN_PROPERTY = "__vinextPrerenderConfig";
|
|
4
|
+
function normalizeVinextPrerenderConfig(config) {
|
|
5
|
+
if (config === void 0) return null;
|
|
6
|
+
if (config === true) return { routes: "*" };
|
|
7
|
+
if (!isUnknownRecord(config)) throw new Error("[vinext] Invalid `prerender` config. Use `true` or `{ routes: \"*\" }`.");
|
|
8
|
+
if (config.routes === "*") return { routes: "*" };
|
|
9
|
+
throw new Error("[vinext] Unsupported `prerender.routes` config. Currently only `routes: \"*\"` is supported.");
|
|
10
|
+
}
|
|
11
|
+
function flattenPluginOptions(value, target) {
|
|
12
|
+
if (Array.isArray(value)) {
|
|
13
|
+
for (const item of value) flattenPluginOptions(item, target);
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
if (value) target.push(value);
|
|
17
|
+
}
|
|
18
|
+
function findVinextPrerenderConfigInPlugins(plugins) {
|
|
19
|
+
const flattened = [];
|
|
20
|
+
flattenPluginOptions(plugins, flattened);
|
|
21
|
+
for (const plugin of flattened) {
|
|
22
|
+
if (!isUnknownRecord(plugin)) continue;
|
|
23
|
+
const prerenderConfig = plugin[VINEXT_PRERENDER_CONFIG_PLUGIN_PROPERTY];
|
|
24
|
+
if (prerenderConfig) return prerenderConfig;
|
|
25
|
+
}
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
async function loadVinextPrerenderConfigFromViteConfig(vite, root) {
|
|
29
|
+
return findVinextPrerenderConfigInPlugins((await vite.loadConfigFromFile({
|
|
30
|
+
command: "build",
|
|
31
|
+
mode: "production"
|
|
32
|
+
}, void 0, root))?.config.plugins);
|
|
33
|
+
}
|
|
34
|
+
function resolveVinextPrerenderDecision(options) {
|
|
35
|
+
if (options.prerenderAllFlag) return {
|
|
36
|
+
routes: "*",
|
|
37
|
+
reason: "flag"
|
|
38
|
+
};
|
|
39
|
+
if (options.nextOutput === "export") return {
|
|
40
|
+
routes: "*",
|
|
41
|
+
reason: "next-export"
|
|
42
|
+
};
|
|
43
|
+
if (options.vinextPrerenderConfig?.routes === "*") return {
|
|
44
|
+
routes: "*",
|
|
45
|
+
reason: "vinext-config"
|
|
46
|
+
};
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
function formatVinextPrerenderLabel(decision) {
|
|
50
|
+
if (decision.reason === "next-export") return "Pre-rendering all routes (output: 'export')...";
|
|
51
|
+
if (decision.reason === "vinext-config") return "Pre-rendering all routes (vinext prerender config)...";
|
|
52
|
+
return "Pre-rendering all routes...";
|
|
53
|
+
}
|
|
54
|
+
//#endregion
|
|
55
|
+
export { VINEXT_PRERENDER_CONFIG_PLUGIN_PROPERTY, findVinextPrerenderConfigInPlugins, formatVinextPrerenderLabel, loadVinextPrerenderConfigFromViteConfig, normalizeVinextPrerenderConfig, resolveVinextPrerenderDecision };
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
//#region src/config/server-external-packages.ts
|
|
2
|
+
const DEFAULT_SERVER_EXTERNAL_PACKAGES = [
|
|
3
|
+
"@alinea/generated",
|
|
4
|
+
"@appsignal/nodejs",
|
|
5
|
+
"@aws-sdk/client-s3",
|
|
6
|
+
"@aws-sdk/s3-presigned-post",
|
|
7
|
+
"@blockfrost/blockfrost-js",
|
|
8
|
+
"@highlight-run/node",
|
|
9
|
+
"@huggingface/transformers",
|
|
10
|
+
"@jpg-store/lucid-cardano",
|
|
11
|
+
"@libsql/client",
|
|
12
|
+
"@mikro-orm/core",
|
|
13
|
+
"@mikro-orm/knex",
|
|
14
|
+
"@node-rs/argon2",
|
|
15
|
+
"@node-rs/bcrypt",
|
|
16
|
+
"@prisma/client",
|
|
17
|
+
"@react-pdf/renderer",
|
|
18
|
+
"@sentry/profiling-node",
|
|
19
|
+
"@sparticuz/chromium",
|
|
20
|
+
"@sparticuz/chromium-min",
|
|
21
|
+
"@statsig/statsig-node-core",
|
|
22
|
+
"@swc/core",
|
|
23
|
+
"@xenova/transformers",
|
|
24
|
+
"@zenstackhq/runtime",
|
|
25
|
+
"argon2",
|
|
26
|
+
"autoprefixer",
|
|
27
|
+
"aws-crt",
|
|
28
|
+
"bcrypt",
|
|
29
|
+
"better-sqlite3",
|
|
30
|
+
"canvas",
|
|
31
|
+
"chromadb-default-embed",
|
|
32
|
+
"config",
|
|
33
|
+
"cpu-features",
|
|
34
|
+
"cypress",
|
|
35
|
+
"dd-trace",
|
|
36
|
+
"eslint",
|
|
37
|
+
"express",
|
|
38
|
+
"firebase-admin",
|
|
39
|
+
"htmlrewriter",
|
|
40
|
+
"import-in-the-middle",
|
|
41
|
+
"isolated-vm",
|
|
42
|
+
"jest",
|
|
43
|
+
"jsdom",
|
|
44
|
+
"keyv",
|
|
45
|
+
"libsql",
|
|
46
|
+
"mdx-bundler",
|
|
47
|
+
"mongodb",
|
|
48
|
+
"mongoose",
|
|
49
|
+
"newrelic",
|
|
50
|
+
"next-mdx-remote",
|
|
51
|
+
"next-seo",
|
|
52
|
+
"node-cron",
|
|
53
|
+
"node-pty",
|
|
54
|
+
"node-web-audio-api",
|
|
55
|
+
"onnxruntime-node",
|
|
56
|
+
"oslo",
|
|
57
|
+
"pg",
|
|
58
|
+
"pino",
|
|
59
|
+
"pino-pretty",
|
|
60
|
+
"pino-roll",
|
|
61
|
+
"playwright",
|
|
62
|
+
"playwright-core",
|
|
63
|
+
"postcss",
|
|
64
|
+
"prettier",
|
|
65
|
+
"prisma",
|
|
66
|
+
"puppeteer",
|
|
67
|
+
"puppeteer-core",
|
|
68
|
+
"ravendb",
|
|
69
|
+
"require-in-the-middle",
|
|
70
|
+
"rimraf",
|
|
71
|
+
"sharp",
|
|
72
|
+
"shiki",
|
|
73
|
+
"sqlite3",
|
|
74
|
+
"thread-stream",
|
|
75
|
+
"ts-morph",
|
|
76
|
+
"ts-node",
|
|
77
|
+
"typescript",
|
|
78
|
+
"vscode-oniguruma",
|
|
79
|
+
"webpack",
|
|
80
|
+
"websocket",
|
|
81
|
+
"zeromq"
|
|
82
|
+
];
|
|
83
|
+
function mergeServerExternalPackages(userPackages = [], transpilePackages = []) {
|
|
84
|
+
const transpiled = new Set(transpilePackages);
|
|
85
|
+
const conflicts = userPackages.filter((name) => transpiled.has(name));
|
|
86
|
+
if (conflicts.length > 0) throw new Error(`The packages specified in the 'transpilePackages' conflict with the 'serverExternalPackages': ${conflicts.join(", ")}`);
|
|
87
|
+
const defaults = DEFAULT_SERVER_EXTERNAL_PACKAGES.filter((name) => !transpiled.has(name));
|
|
88
|
+
return [...new Set([...defaults, ...userPackages])];
|
|
89
|
+
}
|
|
90
|
+
//#endregion
|
|
91
|
+
export { mergeServerExternalPackages };
|
|
@@ -43,7 +43,8 @@ type AppRouterConfig = {
|
|
|
43
43
|
*/
|
|
44
44
|
reactMaxHeadersLength?: number; /** Maximum in-memory cache size in bytes. 0 disables the default memory cache. */
|
|
45
45
|
cacheMaxMemorySize?: number; /** Inline app CSS into production HTML (from experimental.inlineCss). */
|
|
46
|
-
inlineCss?: boolean; /**
|
|
46
|
+
inlineCss?: boolean; /** Enable standalone route-miss 404 handling (from experimental.globalNotFound). */
|
|
47
|
+
globalNotFound?: boolean; /** Enables Next.js Cache Components semantics for App Router document HTML. */
|
|
47
48
|
cacheComponents?: boolean; /** Whether the RSC build discovered any server references. Defaults to true. */
|
|
48
49
|
hasServerActions?: boolean; /** Internationalization routing config for middleware matcher locale handling. */
|
|
49
50
|
i18n?: NextI18nConfig | null;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { normalizePathSeparators } from "../utils/path.js";
|
|
2
2
|
import { resolveEntryPath } from "./runtime-entry-module.js";
|
|
3
3
|
import { isProxyFile } from "../server/middleware.js";
|
|
4
|
+
import { DEFAULT_DEVICE_SIZES, DEFAULT_IMAGE_SIZES } from "../server/image-optimization.js";
|
|
4
5
|
import { buildAppRscManifestCode } from "./app-rsc-manifest.js";
|
|
5
6
|
import { generateDevOriginCheckCode } from "../server/dev-origin-check.js";
|
|
6
7
|
import { randomUUID } from "node:crypto";
|
|
@@ -16,7 +17,7 @@ import { randomUUID } from "node:crypto";
|
|
|
16
17
|
*/
|
|
17
18
|
const DEFAULT_EXPIRE_TIME = 31536e3;
|
|
18
19
|
const DEFAULT_REACT_MAX_HEADERS_LENGTH = 6e3;
|
|
19
|
-
const middlewareRequestHeadersPath = resolveEntryPath("../
|
|
20
|
+
const middlewareRequestHeadersPath = resolveEntryPath("../utils/middleware-request-headers.js", import.meta.url);
|
|
20
21
|
const normalizePathModulePath = resolveEntryPath("../server/normalize-path.js", import.meta.url);
|
|
21
22
|
const appRouteHandlerDispatchPath = resolveEntryPath("../server/app-route-handler-dispatch.js", import.meta.url);
|
|
22
23
|
const appRouteHandlerResponsePath = resolveEntryPath("../server/app-route-handler-response.js", import.meta.url);
|
|
@@ -30,6 +31,8 @@ const appElementsPath = resolveEntryPath("../server/app-elements.js", import.met
|
|
|
30
31
|
const appPageRouteWiringPath = resolveEntryPath("../server/app-page-route-wiring.js", import.meta.url);
|
|
31
32
|
const appPageProbePath = resolveEntryPath("../server/app-page-probe.js", import.meta.url);
|
|
32
33
|
const appPageDispatchPath = resolveEntryPath("../server/app-page-dispatch.js", import.meta.url);
|
|
34
|
+
const appPagePprRuntimePath = resolveEntryPath("../server/app-page-ppr-runtime.js", import.meta.url);
|
|
35
|
+
const fileBasedMetadataPath = resolveEntryPath("../server/file-based-metadata.js", import.meta.url);
|
|
33
36
|
const appPageRequestPath = resolveEntryPath("../server/app-page-request.js", import.meta.url);
|
|
34
37
|
const appSegmentConfigPath = resolveEntryPath("../server/app-segment-config.js", import.meta.url);
|
|
35
38
|
const appRscRouteMatchingPath = resolveEntryPath("../server/app-rsc-route-matching.js", import.meta.url);
|
|
@@ -80,11 +83,19 @@ function generateRscEntry(appDir, routes, middlewarePath, metadataRoutes, global
|
|
|
80
83
|
const hasPagesDir = config?.hasPagesDir ?? false;
|
|
81
84
|
const publicFiles = config?.publicFiles ?? [];
|
|
82
85
|
const draftModeSecret = config?.draftModeSecret ?? randomUUID();
|
|
86
|
+
const imageAllowedWidths = [...config?.imageConfig?.deviceSizes ?? DEFAULT_DEVICE_SIZES, ...config?.imageConfig?.imageSizes ?? DEFAULT_IMAGE_SIZES];
|
|
87
|
+
const imageConfig = {
|
|
88
|
+
qualities: config?.imageConfig?.qualities,
|
|
89
|
+
dangerouslyAllowSVG: config?.imageConfig?.dangerouslyAllowSVG,
|
|
90
|
+
dangerouslyAllowLocalIP: config?.imageConfig?.dangerouslyAllowLocalIP,
|
|
91
|
+
contentDispositionType: config?.imageConfig?.contentDispositionType,
|
|
92
|
+
contentSecurityPolicy: config?.imageConfig?.contentSecurityPolicy
|
|
93
|
+
};
|
|
83
94
|
const { imports, routeEntries, metaRouteEntries, generateStaticParamsEntries, rootParamNameEntries, rootNotFoundVar, rootForbiddenVar, rootUnauthorizedVar, rootLayoutVars, globalErrorVar, globalNotFoundImportSpecifier } = buildAppRscManifestCode({
|
|
84
95
|
routes,
|
|
85
96
|
metadataRoutes,
|
|
86
97
|
globalErrorPath,
|
|
87
|
-
globalNotFoundPath: config?.globalNotFoundPath ?? null
|
|
98
|
+
globalNotFoundPath: config?.globalNotFound === true ? config.globalNotFoundPath ?? null : null
|
|
88
99
|
});
|
|
89
100
|
const loadPrerenderPagesRoutesCode = hasPagesDir ? `
|
|
90
101
|
async function __loadPrerenderPagesRoutes() {
|
|
@@ -121,6 +132,8 @@ ${instrumentationPath ? `import * as _instrumentation from ${JSON.stringify(norm
|
|
|
121
132
|
import { ensureInstrumentationRegistered as __ensureInstrumentationRegistered } from ${JSON.stringify(instrumentationRuntimePath)};` : ""}
|
|
122
133
|
import { createAppRscHandler } from "vinext/server/app-rsc-handler";
|
|
123
134
|
import { registerConfiguredCacheAdapters as __registerConfiguredCacheAdapters } from "virtual:vinext-cache-adapters";
|
|
135
|
+
import __pagesClientAssets from "virtual:vinext-pages-client-assets";
|
|
136
|
+
import { setPagesClientAssets as __setPagesClientAssets } from "vinext/server/pages-client-assets";
|
|
124
137
|
import { decodePathParams as __decodePathParams } from ${JSON.stringify(normalizePathModulePath)};
|
|
125
138
|
import { buildRequestHeadersFromMiddlewareResponse as __buildRequestHeadersFromMiddlewareResponse } from ${JSON.stringify(middlewareRequestHeadersPath)};
|
|
126
139
|
${hasPagesDir ? `import {
|
|
@@ -129,6 +142,11 @@ ${hasPagesDir ? `import {
|
|
|
129
142
|
const __loadAppRouteHandlerDispatch = () => import(${JSON.stringify(appRouteHandlerDispatchPath)});
|
|
130
143
|
${hasServerActions ? `const __loadAppServerActionExecution = () => import(${JSON.stringify(appServerActionExecutionPath)});` : ""}
|
|
131
144
|
${(metadataRoutes?.length ?? 0) > 0 ? `const __loadMetadataRouteResponse = () => import(${JSON.stringify(metadataRouteResponsePath)});` : ""}
|
|
145
|
+
${(metadataRoutes?.length ?? 0) > 0 ? `const __loadFileBasedMetadata = () => import(${JSON.stringify(fileBasedMetadataPath)});
|
|
146
|
+
async function __applyFileBasedMetadata(...args) {
|
|
147
|
+
const { applyFileBasedMetadata } = await __loadFileBasedMetadata();
|
|
148
|
+
return applyFileBasedMetadata(...args);
|
|
149
|
+
}` : ""}
|
|
132
150
|
import {
|
|
133
151
|
sanitizeErrorForClient as __sanitizeErrorForClient,
|
|
134
152
|
} from ${JSON.stringify(appRscErrorsPath)};
|
|
@@ -152,6 +170,10 @@ import { buildAppPageProbes as __buildAppPageProbes } from ${JSON.stringify(appP
|
|
|
152
170
|
import {
|
|
153
171
|
dispatchAppPage as __dispatchAppPage,
|
|
154
172
|
} from ${JSON.stringify(appPageDispatchPath)};
|
|
173
|
+
${cacheComponents ? `import {
|
|
174
|
+
appPagePprRuntime as __appPagePprRuntime,
|
|
175
|
+
createAppPprFallbackShells as __createAppPprFallbackShells,
|
|
176
|
+
} from ${JSON.stringify(appPagePprRuntimePath)};` : ""}
|
|
155
177
|
import {
|
|
156
178
|
resolveAppPageGenerateStaticParamsSources as __resolveAppPageGenerateStaticParamsSources,
|
|
157
179
|
} from ${JSON.stringify(appPageRequestPath)};
|
|
@@ -234,6 +256,11 @@ function __resolveRouteFetchCacheMode(route) {
|
|
|
234
256
|
return __resolveAppPageFetchCacheMode({
|
|
235
257
|
layouts: route.layouts,
|
|
236
258
|
page: route.page,
|
|
259
|
+
parallelSegments: Object.values(route.slots ?? {}).flatMap((slot) => [
|
|
260
|
+
slot.layout,
|
|
261
|
+
...(slot.configLayouts ?? []),
|
|
262
|
+
slot.page ?? slot.default,
|
|
263
|
+
]),
|
|
237
264
|
});
|
|
238
265
|
}
|
|
239
266
|
|
|
@@ -241,6 +268,11 @@ function __resolveRouteDynamicConfig(route) {
|
|
|
241
268
|
return __resolveAppPageSegmentConfig({
|
|
242
269
|
layouts: route.layouts,
|
|
243
270
|
page: route.page,
|
|
271
|
+
parallelSegments: Object.values(route.slots ?? {}).flatMap((slot) => [
|
|
272
|
+
slot.layout,
|
|
273
|
+
...(slot.configLayouts ?? []),
|
|
274
|
+
slot.page ?? slot.default,
|
|
275
|
+
]),
|
|
244
276
|
}).dynamicConfig ?? null;
|
|
245
277
|
}
|
|
246
278
|
|
|
@@ -248,6 +280,11 @@ function __resolveRouteRuntime(route) {
|
|
|
248
280
|
return __resolveAppPageSegmentConfig({
|
|
249
281
|
layouts: route.layouts,
|
|
250
282
|
page: route.page,
|
|
283
|
+
parallelSegments: Object.values(route.slots ?? {}).flatMap((slot) => [
|
|
284
|
+
slot.layout,
|
|
285
|
+
...(slot.configLayouts ?? []),
|
|
286
|
+
slot.page ?? slot.default,
|
|
287
|
+
]),
|
|
251
288
|
}).runtime ?? null;
|
|
252
289
|
}
|
|
253
290
|
|
|
@@ -317,6 +354,7 @@ const createRscOnErrorHandler = (request, pathname, routePath) =>
|
|
|
317
354
|
createAppRscOnErrorHandler(_reportRequestError, request, pathname, routePath);
|
|
318
355
|
|
|
319
356
|
const __fallbackRenderer = __createAppFallbackRenderer({
|
|
357
|
+
${(metadataRoutes?.length ?? 0) > 0 ? "applyFileBasedMetadata: __applyFileBasedMetadata," : ""}
|
|
320
358
|
basePath: __basePath,
|
|
321
359
|
trailingSlash: __trailingSlash,
|
|
322
360
|
rootBoundaries: {
|
|
@@ -327,6 +365,7 @@ const __fallbackRenderer = __createAppFallbackRenderer({
|
|
|
327
365
|
},
|
|
328
366
|
globalErrorModule: ${globalErrorVar ? globalErrorVar : "null"},
|
|
329
367
|
loadGlobalNotFoundModule: __loadGlobalNotFoundModule,
|
|
368
|
+
globalNotFoundEnabled: ${config?.globalNotFound === true},
|
|
330
369
|
metadataRoutes,
|
|
331
370
|
ssrLoader() {
|
|
332
371
|
return import.meta.viteRsc.loadModule("ssr", "index");
|
|
@@ -366,6 +405,7 @@ async function buildPageElements(route, params, routePath, pageRequest, layoutPa
|
|
|
366
405
|
// Hydrate lazy page/route-handler modules before any synchronous read.
|
|
367
406
|
await __ensureRouteLoaded(route);
|
|
368
407
|
return __buildPageElements({
|
|
408
|
+
${(metadataRoutes?.length ?? 0) > 0 ? "applyFileBasedMetadata: __applyFileBasedMetadata," : ""}
|
|
369
409
|
route,
|
|
370
410
|
params,
|
|
371
411
|
routePath,
|
|
@@ -387,7 +427,7 @@ const __i18nConfig = ${JSON.stringify(i18nConfig)};
|
|
|
387
427
|
const __configRedirects = ${JSON.stringify(redirects)};
|
|
388
428
|
const __configRewrites = ${JSON.stringify(rewrites)};
|
|
389
429
|
const __configHeaders = ${JSON.stringify(headers)};
|
|
390
|
-
const
|
|
430
|
+
const __runtimeImageConfig = ${JSON.stringify(config?.imageConfig)};
|
|
391
431
|
const __publicFiles = new Set(${JSON.stringify(publicFiles)});
|
|
392
432
|
const __allowedOrigins = ${JSON.stringify(allowedOrigins)};
|
|
393
433
|
const __expireTime = ${JSON.stringify(expireTime)};
|
|
@@ -398,10 +438,11 @@ const __reactMaxHeadersLength = ${JSON.stringify(reactMaxHeadersLength)};
|
|
|
398
438
|
// mirrors the embedded \`__basePath\` pattern (and Pages Router's
|
|
399
439
|
// \`vinextConfig\` export). Empty string when unset.
|
|
400
440
|
export const __assetPrefix = ${JSON.stringify(assetPrefix)};
|
|
441
|
+
export const __imageAllowedWidths = ${JSON.stringify(imageAllowedWidths)};
|
|
442
|
+
export const __imageConfig = ${JSON.stringify(imageConfig)};
|
|
401
443
|
export const __inlineCss = ${JSON.stringify(inlineCss)};
|
|
402
444
|
export const __hasPagesDir = ${JSON.stringify(hasPagesDir)};
|
|
403
445
|
export const getRenderedConcreteUrlPathsForRoute = __getRenderedConcreteUrlPathsForRoute;
|
|
404
|
-
const __cacheComponents = ${JSON.stringify(cacheComponents)};
|
|
405
446
|
|
|
406
447
|
export async function seedMemoryCacheFromPrerender(serverDir) {
|
|
407
448
|
const { seedMemoryCacheFromPrerender: __seedMemoryCacheFromPrerender } =
|
|
@@ -447,6 +488,7 @@ const rootParamNamesMap = {
|
|
|
447
488
|
${rootParamNameEntries.join("\n")}
|
|
448
489
|
};
|
|
449
490
|
|
|
491
|
+
__setPagesClientAssets(__pagesClientAssets);
|
|
450
492
|
export default createAppRscHandler({
|
|
451
493
|
basePath: __basePath,
|
|
452
494
|
buildId: process.env.__VINEXT_BUILD_ID ?? null,
|
|
@@ -456,10 +498,12 @@ export default createAppRscHandler({
|
|
|
456
498
|
},
|
|
457
499
|
registerCacheAdapters: __registerConfiguredCacheAdapters,
|
|
458
500
|
configHeaders: __configHeaders,
|
|
459
|
-
cacheComponents
|
|
501
|
+
${cacheComponents ? `createPprFallbackShells(route, params) {
|
|
502
|
+
return __createAppPprFallbackShells(route, params);
|
|
503
|
+
},` : ""}
|
|
460
504
|
configRedirects: __configRedirects,
|
|
461
505
|
configRewrites: __configRewrites,
|
|
462
|
-
imageConfig:
|
|
506
|
+
imageConfig: __runtimeImageConfig,
|
|
463
507
|
isDev: process.env.NODE_ENV !== "production",
|
|
464
508
|
draftModeSecret: __draftModeSecret,
|
|
465
509
|
dispatchMatchedPage({
|
|
@@ -491,13 +535,32 @@ export default createAppRscHandler({
|
|
|
491
535
|
const PageComponent = route.page?.default;
|
|
492
536
|
const __segmentConfig = __resolveAppPageSegmentConfig({
|
|
493
537
|
layouts: route.layouts,
|
|
538
|
+
layoutTreePositions: route.layoutTreePositions,
|
|
494
539
|
page: route.page,
|
|
495
|
-
|
|
540
|
+
parallelBranches: Object.values(route.slots ?? {}).map((slot) => ({
|
|
541
|
+
layout: slot.layout,
|
|
542
|
+
configLayouts: slot.configLayouts,
|
|
543
|
+
configLayoutTreePositions: slot.configLayoutTreePositions,
|
|
544
|
+
page: slot.page ?? slot.default,
|
|
545
|
+
routeSegments: slot.routeSegments,
|
|
546
|
+
})),
|
|
547
|
+
parallelPages: Object.values(route.slots ?? {}).map((slot) => slot.page ?? slot.default),
|
|
548
|
+
routeSegments: route.routeSegments,
|
|
496
549
|
});
|
|
497
550
|
const __generateStaticParams = __resolveAppPageGenerateStaticParamsSources({
|
|
498
551
|
layouts: route.layouts,
|
|
499
552
|
layoutTreePositions: route.layoutTreePositions,
|
|
500
553
|
page: route.page,
|
|
554
|
+
parallelBranches: Object.values(route.slots ?? {}).map((slot) => ({
|
|
555
|
+
layout: slot.layout,
|
|
556
|
+
configLayouts: slot.configLayouts,
|
|
557
|
+
configLayoutTreePositions: slot.configLayoutTreePositions,
|
|
558
|
+
page: slot.page ?? slot.default,
|
|
559
|
+
paramNames: slot.slotParamNames,
|
|
560
|
+
patternParts: slot.slotPatternParts,
|
|
561
|
+
routeSegments: slot.routeSegments,
|
|
562
|
+
})),
|
|
563
|
+
routePatternParts: route.patternParts,
|
|
501
564
|
routeSegments: route.routeSegments,
|
|
502
565
|
});
|
|
503
566
|
const _asyncRouteParams = makeThenableParams(params);
|
|
@@ -506,7 +569,7 @@ export default createAppRscHandler({
|
|
|
506
569
|
ensureRouteLoaded: __ensureRouteLoaded,
|
|
507
570
|
clientTraceMetadata: __clientTraceMetadata,
|
|
508
571
|
reactMaxHeadersLength: __reactMaxHeadersLength,
|
|
509
|
-
buildPageElement(targetRoute, targetParams, targetOpts, targetSearchParams, layoutParamAccess) {
|
|
572
|
+
buildPageElement(targetRoute, targetParams, targetOpts, targetSearchParams, layoutParamAccess, buildOptions) {
|
|
510
573
|
return buildPageElements(targetRoute, targetParams, cleanPathname, {
|
|
511
574
|
opts: targetOpts,
|
|
512
575
|
searchParams: targetSearchParams,
|
|
@@ -514,6 +577,8 @@ export default createAppRscHandler({
|
|
|
514
577
|
request,
|
|
515
578
|
mountedSlotsHeader,
|
|
516
579
|
renderMode,
|
|
580
|
+
observeMetadataSearchParamsAccess: buildOptions?.observeMetadataSearchParamsAccess === true,
|
|
581
|
+
observePageSearchParamsAccess: buildOptions?.observePageSearchParamsAccess === true,
|
|
517
582
|
}, layoutParamAccess, displayPathname);
|
|
518
583
|
},
|
|
519
584
|
clientReuseManifest,
|
|
@@ -570,6 +635,7 @@ export default createAppRscHandler({
|
|
|
570
635
|
params,
|
|
571
636
|
pprFallbackCacheShells,
|
|
572
637
|
pprFallbackShell,
|
|
638
|
+
pprRuntime: ${cacheComponents ? "__appPagePprRuntime" : "undefined"},
|
|
573
639
|
renderedConcreteUrlPaths,
|
|
574
640
|
skipStaticParamsValidation,
|
|
575
641
|
staticParamsValidationParams,
|
|
@@ -583,7 +649,7 @@ export default createAppRscHandler({
|
|
|
583
649
|
route,
|
|
584
650
|
});
|
|
585
651
|
},
|
|
586
|
-
async probePage() {
|
|
652
|
+
async probePage(probeSearchParams = searchParams) {
|
|
587
653
|
const __probeIntercept = findIntercept(cleanPathname, interceptionContext);
|
|
588
654
|
// The intercepting-route page module is lazy (page: null + __pageLoader).
|
|
589
655
|
// Resolve it before probing so buildAppPageProbes inspects the real page
|
|
@@ -598,21 +664,21 @@ export default createAppRscHandler({
|
|
|
598
664
|
route,
|
|
599
665
|
pageComponent: PageComponent,
|
|
600
666
|
asyncRouteParams: _asyncRouteParams,
|
|
601
|
-
searchParams,
|
|
667
|
+
searchParams: probeSearchParams,
|
|
602
668
|
intercept: __probeIntercept,
|
|
603
669
|
isRscRequest,
|
|
604
670
|
matchedParams: params,
|
|
605
671
|
makeThenableParams,
|
|
606
672
|
}));
|
|
607
673
|
},
|
|
608
|
-
renderErrorBoundaryPage(renderErr) {
|
|
674
|
+
renderErrorBoundaryPage(renderErr, errorOrigin) {
|
|
609
675
|
const __activeIntercept = findIntercept(cleanPathname, interceptionContext);
|
|
610
676
|
return __fallbackRenderer.renderErrorBoundary(route, renderErr, isRscRequest, request, params, scriptNonce, middlewareContext, {
|
|
611
677
|
isEdgeRuntime: __isEdgeRuntime(__segmentConfig.runtime),
|
|
612
678
|
sourcePageSegments: __activeIntercept?.slotKey === __SIBLING_PAGE_INTERCEPT_SLOT_KEY
|
|
613
679
|
? __activeIntercept.sourcePageSegments
|
|
614
680
|
: null,
|
|
615
|
-
});
|
|
681
|
+
}, errorOrigin);
|
|
616
682
|
},
|
|
617
683
|
renderHttpAccessFallbackPage(statusCode, opts, currentMiddlewareContext) {
|
|
618
684
|
const __activeIntercept = findIntercept(cleanPathname, interceptionContext);
|
|
@@ -762,7 +828,7 @@ export default createAppRscHandler({
|
|
|
762
828
|
const __actionMatch = matchRoute(cleanPathname);
|
|
763
829
|
if (__actionMatch) await __ensureRouteLoaded(__actionMatch.route);
|
|
764
830
|
const __actionIsEdgeRuntime = __actionMatch
|
|
765
|
-
? __isEdgeRuntime(
|
|
831
|
+
? __isEdgeRuntime(__resolveRouteRuntime(__actionMatch.route))
|
|
766
832
|
: false;
|
|
767
833
|
return __handleServerActionRscRequest({
|
|
768
834
|
actionId,
|
|
@@ -780,6 +846,8 @@ export default createAppRscHandler({
|
|
|
780
846
|
request: actionRequest,
|
|
781
847
|
mountedSlotsHeader: actionMountedSlotsHeader,
|
|
782
848
|
renderMode: actionRenderMode,
|
|
849
|
+
observeMetadataSearchParamsAccess,
|
|
850
|
+
observePageSearchParamsAccess,
|
|
783
851
|
}) {
|
|
784
852
|
return buildPageElements(actionRoute, actionParams, actionCleanPathname, {
|
|
785
853
|
opts: interceptOpts,
|
|
@@ -788,6 +856,8 @@ export default createAppRscHandler({
|
|
|
788
856
|
request: actionRequest,
|
|
789
857
|
mountedSlotsHeader: actionMountedSlotsHeader,
|
|
790
858
|
renderMode: actionRenderMode,
|
|
859
|
+
observeMetadataSearchParamsAccess: observeMetadataSearchParamsAccess === true,
|
|
860
|
+
observePageSearchParamsAccess: observePageSearchParamsAccess === true,
|
|
791
861
|
});
|
|
792
862
|
},
|
|
793
863
|
cleanPathname,
|
|
@@ -813,6 +883,7 @@ export default createAppRscHandler({
|
|
|
813
883
|
},
|
|
814
884
|
createTemporaryReferenceSet,
|
|
815
885
|
decodeReply,
|
|
886
|
+
draftModeSecret: __draftModeSecret,
|
|
816
887
|
findIntercept(pathnameToMatch) {
|
|
817
888
|
return findIntercept(pathnameToMatch, interceptionContext);
|
|
818
889
|
},
|
|
@@ -856,6 +927,8 @@ export default createAppRscHandler({
|
|
|
856
927
|
return {
|
|
857
928
|
interceptionContext,
|
|
858
929
|
interceptLayouts: intercept.interceptLayouts,
|
|
930
|
+
interceptLayoutSegments: intercept.interceptLayoutSegments,
|
|
931
|
+
interceptBranchSegments: intercept.interceptBranchSegments,
|
|
859
932
|
interceptSlotId: intercept.slotId,
|
|
860
933
|
interceptSlotKey: intercept.slotKey,
|
|
861
934
|
interceptSourceMatchedUrl: interceptionContext,
|
|
@@ -879,11 +952,12 @@ export default createAppRscHandler({
|
|
|
879
952
|
});
|
|
880
953
|
},` : ""}
|
|
881
954
|
matchRoute,
|
|
882
|
-
${middlewarePath ? `runMiddleware({ cleanPathname, context, isDataRequest, request }) {
|
|
955
|
+
${middlewarePath ? `runMiddleware({ cleanPathname, context, hadBasePath, isDataRequest, request }) {
|
|
883
956
|
return __applyAppMiddleware({
|
|
884
957
|
basePath: __basePath,
|
|
885
958
|
cleanPathname,
|
|
886
959
|
context,
|
|
960
|
+
hadBasePath,
|
|
887
961
|
filePath: ${JSON.stringify(middlewarePath ? normalizePathSeparators(middlewarePath) : "")},
|
|
888
962
|
i18nConfig: __i18nConfig,
|
|
889
963
|
isDataRequest,
|
|
@@ -895,7 +969,7 @@ export default createAppRscHandler({
|
|
|
895
969
|
},` : ""}
|
|
896
970
|
publicFiles: __publicFiles,
|
|
897
971
|
renderNotFound({ isRscRequest, matchedParams, middlewareContext, request, route, scriptNonce }) {
|
|
898
|
-
const __isEdge = route ? __isEdgeRuntime(
|
|
972
|
+
const __isEdge = route ? __isEdgeRuntime(__resolveRouteRuntime(route)) : false;
|
|
899
973
|
return __fallbackRenderer.renderNotFound(route, isRscRequest, request, matchedParams, scriptNonce, middlewareContext, { isEdgeRuntime: __isEdge });
|
|
900
974
|
},
|
|
901
975
|
${hasPagesDir ? `async renderPagesFallback({ allowRscDocumentFallback, appRouteMatch, isDataRequest, isRscRequest, matchKind, middlewareContext, pathname, pagesDataRequest, request, url }) {
|