@qzsy/vinext 0.1.7
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/LICENSE +21 -0
- package/README.md +773 -0
- package/dist/build/assets-ignore.d.ts +32 -0
- package/dist/build/assets-ignore.js +48 -0
- package/dist/build/clean-output.d.ts +13 -0
- package/dist/build/clean-output.js +34 -0
- package/dist/build/client-build-config.d.ts +171 -0
- package/dist/build/client-build-config.js +270 -0
- package/dist/build/css-url-assets.d.ts +29 -0
- package/dist/build/css-url-assets.js +213 -0
- package/dist/build/google-fonts/build-url.d.ts +9 -0
- package/dist/build/google-fonts/build-url.js +28 -0
- package/dist/build/google-fonts/fallback-metrics-data.js +14029 -0
- package/dist/build/google-fonts/fallback-metrics.d.ts +12 -0
- package/dist/build/google-fonts/fallback-metrics.js +44 -0
- package/dist/build/google-fonts/find-font-files-in-css.d.ts +16 -0
- package/dist/build/google-fonts/find-font-files-in-css.js +28 -0
- package/dist/build/google-fonts/font-data.js +24983 -0
- package/dist/build/google-fonts/font-metadata.d.ts +16 -0
- package/dist/build/google-fonts/font-metadata.js +5 -0
- package/dist/build/google-fonts/get-axes.d.ts +6 -0
- package/dist/build/google-fonts/get-axes.js +37 -0
- package/dist/build/google-fonts/sort-variants.d.ts +4 -0
- package/dist/build/google-fonts/sort-variants.js +12 -0
- package/dist/build/google-fonts/validate.d.ts +27 -0
- package/dist/build/google-fonts/validate.js +54 -0
- package/dist/build/inline-css.d.ts +6 -0
- package/dist/build/inline-css.js +48 -0
- package/dist/build/layout-classification-types.d.ts +61 -0
- package/dist/build/layout-classification-types.js +1 -0
- package/dist/build/layout-classification.d.ts +59 -0
- package/dist/build/layout-classification.js +98 -0
- package/dist/build/next-client-runtime-manifests.d.ts +14 -0
- package/dist/build/next-client-runtime-manifests.js +39 -0
- package/dist/build/nitro-route-rules.d.ts +49 -0
- package/dist/build/nitro-route-rules.js +79 -0
- package/dist/build/precompress.d.ts +27 -0
- package/dist/build/precompress.js +110 -0
- package/dist/build/prerender.d.ts +209 -0
- package/dist/build/prerender.js +932 -0
- package/dist/build/report.d.ts +132 -0
- package/dist/build/report.js +504 -0
- package/dist/build/route-classification-injector.d.ts +34 -0
- package/dist/build/route-classification-injector.js +59 -0
- package/dist/build/route-classification-manifest.d.ts +52 -0
- package/dist/build/route-classification-manifest.js +143 -0
- package/dist/build/run-prerender.d.ts +61 -0
- package/dist/build/run-prerender.js +224 -0
- package/dist/build/server-manifest.d.ts +18 -0
- package/dist/build/server-manifest.js +22 -0
- package/dist/build/ssr-manifest.d.ts +18 -0
- package/dist/build/ssr-manifest.js +69 -0
- package/dist/build/standalone.d.ts +31 -0
- package/dist/build/standalone.js +203 -0
- package/dist/build/static-export.d.ts +55 -0
- package/dist/build/static-export.js +60 -0
- package/dist/cache/cache-adapters-virtual.d.ts +50 -0
- package/dist/cache/cache-adapters-virtual.js +45 -0
- package/dist/cache.d.ts +2 -0
- package/dist/cache.js +2 -0
- package/dist/check.d.ts +87 -0
- package/dist/check.js +1037 -0
- package/dist/cli-args.d.ts +33 -0
- package/dist/cli-args.js +124 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +744 -0
- package/dist/client/app-nav-failure-handler.d.ts +8 -0
- package/dist/client/app-nav-failure-handler.js +44 -0
- package/dist/client/empty-module.d.ts +1 -0
- package/dist/client/empty-module.js +1 -0
- package/dist/client/instrumentation-client-inject.d.ts +33 -0
- package/dist/client/instrumentation-client-inject.js +55 -0
- package/dist/client/instrumentation-client-state.d.ts +9 -0
- package/dist/client/instrumentation-client-state.js +17 -0
- package/dist/client/instrumentation-client.d.ts +7 -0
- package/dist/client/instrumentation-client.js +6 -0
- package/dist/client/navigation-runtime.d.ts +70 -0
- package/dist/client/navigation-runtime.js +169 -0
- package/dist/client/pages-router-link-navigation.d.ts +61 -0
- package/dist/client/pages-router-link-navigation.js +42 -0
- package/dist/client/validate-module-path.d.ts +17 -0
- package/dist/client/validate-module-path.js +24 -0
- package/dist/client/vinext-next-data.d.ts +44 -0
- package/dist/client/vinext-next-data.js +50 -0
- package/dist/client/window-next.d.ts +168 -0
- package/dist/client/window-next.js +57 -0
- package/dist/cloudflare/index.d.ts +3 -0
- package/dist/cloudflare/index.js +3 -0
- package/dist/cloudflare/src/cache/cdn-adapter.runtime.js +102 -0
- package/dist/cloudflare/src/cache/kv-data-adapter.runtime.d.ts +126 -0
- package/dist/cloudflare/src/cache/kv-data-adapter.runtime.js +435 -0
- package/dist/cloudflare/src/utils/cache-control-metadata.js +20 -0
- package/dist/cloudflare/tpr.d.ts +82 -0
- package/dist/cloudflare/tpr.js +558 -0
- package/dist/config/config-matchers.d.ts +257 -0
- package/dist/config/config-matchers.js +1046 -0
- package/dist/config/dotenv.d.ts +56 -0
- package/dist/config/dotenv.js +88 -0
- package/dist/config/next-config.d.ts +540 -0
- package/dist/config/next-config.js +1050 -0
- package/dist/config/tsconfig-paths.d.ts +21 -0
- package/dist/config/tsconfig-paths.js +157 -0
- package/dist/deploy.d.ts +190 -0
- package/dist/deploy.js +1033 -0
- package/dist/entries/app-browser-entry.d.ts +29 -0
- package/dist/entries/app-browser-entry.js +83 -0
- package/dist/entries/app-rsc-entry.d.ts +81 -0
- package/dist/entries/app-rsc-entry.js +943 -0
- package/dist/entries/app-rsc-manifest.d.ts +53 -0
- package/dist/entries/app-rsc-manifest.js +294 -0
- package/dist/entries/app-ssr-entry.d.ts +15 -0
- package/dist/entries/app-ssr-entry.js +24 -0
- package/dist/entries/pages-client-entry.d.ts +11 -0
- package/dist/entries/pages-client-entry.js +204 -0
- package/dist/entries/pages-entry-helpers.d.ts +2 -0
- package/dist/entries/pages-entry-helpers.js +2 -0
- package/dist/entries/pages-server-entry.d.ts +11 -0
- package/dist/entries/pages-server-entry.js +398 -0
- package/dist/entries/runtime-entry-module.d.ts +25 -0
- package/dist/entries/runtime-entry-module.js +46 -0
- package/dist/index.d.ts +115 -0
- package/dist/index.js +2661 -0
- package/dist/init.d.ts +69 -0
- package/dist/init.js +253 -0
- package/dist/plugins/ast-utils.d.ts +20 -0
- package/dist/plugins/ast-utils.js +78 -0
- package/dist/plugins/async-hooks-stub.d.ts +18 -0
- package/dist/plugins/async-hooks-stub.js +40 -0
- package/dist/plugins/client-reference-dedup.d.ts +35 -0
- package/dist/plugins/client-reference-dedup.js +189 -0
- package/dist/plugins/css-data-url.d.ts +6 -0
- package/dist/plugins/css-data-url.js +83 -0
- package/dist/plugins/dynamic-preload-metadata.d.ts +13 -0
- package/dist/plugins/dynamic-preload-metadata.js +413 -0
- package/dist/plugins/extensionless-dynamic-import.d.ts +6 -0
- package/dist/plugins/extensionless-dynamic-import.js +155 -0
- package/dist/plugins/fonts.d.ts +95 -0
- package/dist/plugins/fonts.js +711 -0
- package/dist/plugins/import-meta-url.d.ts +16 -0
- package/dist/plugins/import-meta-url.js +353 -0
- package/dist/plugins/instrumentation-client.d.ts +6 -0
- package/dist/plugins/instrumentation-client.js +27 -0
- package/dist/plugins/middleware-export-validation.d.ts +5 -0
- package/dist/plugins/middleware-export-validation.js +36 -0
- package/dist/plugins/middleware-server-only.d.ts +53 -0
- package/dist/plugins/middleware-server-only.js +90 -0
- package/dist/plugins/og-asset-ownership.d.ts +27 -0
- package/dist/plugins/og-asset-ownership.js +285 -0
- package/dist/plugins/og-assets.d.ts +50 -0
- package/dist/plugins/og-assets.js +229 -0
- package/dist/plugins/optimize-imports.d.ts +42 -0
- package/dist/plugins/optimize-imports.js +587 -0
- package/dist/plugins/postcss.d.ts +26 -0
- package/dist/plugins/postcss.js +96 -0
- package/dist/plugins/remove-console.d.ts +21 -0
- package/dist/plugins/remove-console.js +177 -0
- package/dist/plugins/require-context.d.ts +6 -0
- package/dist/plugins/require-context.js +185 -0
- package/dist/plugins/rsc-client-reference-loaders.d.ts +6 -0
- package/dist/plugins/rsc-client-reference-loaders.js +46 -0
- package/dist/plugins/rsc-client-shim-excludes.d.ts +6 -0
- package/dist/plugins/rsc-client-shim-excludes.js +35 -0
- package/dist/plugins/sass.d.ts +62 -0
- package/dist/plugins/sass.js +268 -0
- package/dist/plugins/server-externals-manifest.d.ts +26 -0
- package/dist/plugins/server-externals-manifest.js +81 -0
- package/dist/plugins/strip-server-exports.d.ts +21 -0
- package/dist/plugins/strip-server-exports.js +519 -0
- package/dist/plugins/typeof-window.d.ts +14 -0
- package/dist/plugins/typeof-window.js +150 -0
- package/dist/plugins/wasm-module-import.d.ts +15 -0
- package/dist/plugins/wasm-module-import.js +50 -0
- package/dist/routing/app-route-graph.d.ts +336 -0
- package/dist/routing/app-route-graph.js +1518 -0
- package/dist/routing/app-router.d.ts +30 -0
- package/dist/routing/app-router.js +59 -0
- package/dist/routing/file-matcher.d.ts +60 -0
- package/dist/routing/file-matcher.js +147 -0
- package/dist/routing/pages-router.d.ts +48 -0
- package/dist/routing/pages-router.js +163 -0
- package/dist/routing/route-matching.d.ts +27 -0
- package/dist/routing/route-matching.js +42 -0
- package/dist/routing/route-pattern.d.ts +64 -0
- package/dist/routing/route-pattern.js +165 -0
- package/dist/routing/route-trie.d.ts +67 -0
- package/dist/routing/route-trie.js +143 -0
- package/dist/routing/route-validation.d.ts +10 -0
- package/dist/routing/route-validation.js +101 -0
- package/dist/routing/utils.d.ts +117 -0
- package/dist/routing/utils.js +242 -0
- package/dist/server/accept-encoding.d.ts +29 -0
- package/dist/server/accept-encoding.js +95 -0
- package/dist/server/api-handler.d.ts +17 -0
- package/dist/server/api-handler.js +276 -0
- package/dist/server/app-action-request.d.ts +4 -0
- package/dist/server/app-action-request.js +9 -0
- package/dist/server/app-bfcache-id.d.ts +5 -0
- package/dist/server/app-bfcache-id.js +5 -0
- package/dist/server/app-bfcache-identity.d.ts +36 -0
- package/dist/server/app-bfcache-identity.js +156 -0
- package/dist/server/app-browser-action-result.d.ts +64 -0
- package/dist/server/app-browser-action-result.js +111 -0
- package/dist/server/app-browser-client-reuse-manifest.d.ts +12 -0
- package/dist/server/app-browser-client-reuse-manifest.js +101 -0
- package/dist/server/app-browser-entry.d.ts +1 -0
- package/dist/server/app-browser-entry.js +1087 -0
- package/dist/server/app-browser-error.d.ts +13 -0
- package/dist/server/app-browser-error.js +52 -0
- package/dist/server/app-browser-history-controller.d.ts +104 -0
- package/dist/server/app-browser-history-controller.js +210 -0
- package/dist/server/app-browser-hydration.d.ts +32 -0
- package/dist/server/app-browser-hydration.js +29 -0
- package/dist/server/app-browser-interception-context.d.ts +24 -0
- package/dist/server/app-browser-interception-context.js +43 -0
- package/dist/server/app-browser-mpa-navigation.d.ts +16 -0
- package/dist/server/app-browser-mpa-navigation.js +42 -0
- package/dist/server/app-browser-navigation-controller.d.ts +109 -0
- package/dist/server/app-browser-navigation-controller.js +465 -0
- package/dist/server/app-browser-popstate.d.ts +26 -0
- package/dist/server/app-browser-popstate.js +44 -0
- package/dist/server/app-browser-rsc-redirect.d.ts +38 -0
- package/dist/server/app-browser-rsc-redirect.js +64 -0
- package/dist/server/app-browser-server-action-client.d.ts +32 -0
- package/dist/server/app-browser-server-action-client.js +128 -0
- package/dist/server/app-browser-server-action-navigation.d.ts +6 -0
- package/dist/server/app-browser-server-action-navigation.js +9 -0
- package/dist/server/app-browser-state.d.ts +140 -0
- package/dist/server/app-browser-state.js +315 -0
- package/dist/server/app-browser-stream.d.ts +28 -0
- package/dist/server/app-browser-stream.js +122 -0
- package/dist/server/app-browser-visible-commit.d.ts +78 -0
- package/dist/server/app-browser-visible-commit.js +241 -0
- package/dist/server/app-client-reference-preloader.d.ts +14 -0
- package/dist/server/app-client-reference-preloader.js +44 -0
- package/dist/server/app-elements-wire.d.ts +192 -0
- package/dist/server/app-elements-wire.js +443 -0
- package/dist/server/app-elements.d.ts +9 -0
- package/dist/server/app-elements.js +18 -0
- package/dist/server/app-fallback-renderer.d.ts +89 -0
- package/dist/server/app-fallback-renderer.js +136 -0
- package/dist/server/app-history-state.d.ts +85 -0
- package/dist/server/app-history-state.js +223 -0
- package/dist/server/app-hook-warning-suppression.d.ts +6 -0
- package/dist/server/app-hook-warning-suppression.js +10 -0
- package/dist/server/app-inline-css-client.d.ts +6 -0
- package/dist/server/app-inline-css-client.js +35 -0
- package/dist/server/app-interception-context-header.d.ts +32 -0
- package/dist/server/app-interception-context-header.js +42 -0
- package/dist/server/app-layout-param-observation.d.ts +43 -0
- package/dist/server/app-layout-param-observation.js +168 -0
- package/dist/server/app-middleware.d.ts +46 -0
- package/dist/server/app-middleware.js +168 -0
- package/dist/server/app-mounted-slots-header.d.ts +35 -0
- package/dist/server/app-mounted-slots-header.js +58 -0
- package/dist/server/app-optimistic-routing.d.ts +53 -0
- package/dist/server/app-optimistic-routing.js +227 -0
- package/dist/server/app-page-boundary-render.d.ts +85 -0
- package/dist/server/app-page-boundary-render.js +305 -0
- package/dist/server/app-page-boundary.d.ts +102 -0
- package/dist/server/app-page-boundary.js +120 -0
- package/dist/server/app-page-cache-finalizer.d.ts +62 -0
- package/dist/server/app-page-cache-finalizer.js +122 -0
- package/dist/server/app-page-cache-render.d.ts +53 -0
- package/dist/server/app-page-cache-render.js +91 -0
- package/dist/server/app-page-cache.d.ts +83 -0
- package/dist/server/app-page-cache.js +272 -0
- package/dist/server/app-page-dispatch.d.ts +223 -0
- package/dist/server/app-page-dispatch.js +610 -0
- package/dist/server/app-page-element-builder.d.ts +96 -0
- package/dist/server/app-page-element-builder.js +205 -0
- package/dist/server/app-page-execution.d.ts +138 -0
- package/dist/server/app-page-execution.js +328 -0
- package/dist/server/app-page-head.d.ts +65 -0
- package/dist/server/app-page-head.js +228 -0
- package/dist/server/app-page-method.d.ts +15 -0
- package/dist/server/app-page-method.js +25 -0
- package/dist/server/app-page-params.d.ts +8 -0
- package/dist/server/app-page-params.js +39 -0
- 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 +134 -0
- package/dist/server/app-page-probe.js +276 -0
- package/dist/server/app-page-render-identity.d.ts +21 -0
- package/dist/server/app-page-render-identity.js +40 -0
- package/dist/server/app-page-render-observation.d.ts +36 -0
- package/dist/server/app-page-render-observation.js +82 -0
- package/dist/server/app-page-render.d.ts +111 -0
- package/dist/server/app-page-render.js +602 -0
- package/dist/server/app-page-request.d.ts +137 -0
- package/dist/server/app-page-request.js +216 -0
- package/dist/server/app-page-response.d.ts +68 -0
- package/dist/server/app-page-response.js +120 -0
- package/dist/server/app-page-route-wiring.d.ts +151 -0
- package/dist/server/app-page-route-wiring.js +452 -0
- package/dist/server/app-page-search-params-observation.d.ts +10 -0
- package/dist/server/app-page-search-params-observation.js +20 -0
- package/dist/server/app-page-segment-state.d.ts +9 -0
- package/dist/server/app-page-segment-state.js +80 -0
- package/dist/server/app-page-stream.d.ts +151 -0
- package/dist/server/app-page-stream.js +143 -0
- package/dist/server/app-pages-bridge.d.ts +63 -0
- package/dist/server/app-pages-bridge.js +63 -0
- package/dist/server/app-post-middleware-context.d.ts +15 -0
- package/dist/server/app-post-middleware-context.js +26 -0
- package/dist/server/app-ppr-fallback-shell-render.d.ts +18 -0
- package/dist/server/app-ppr-fallback-shell-render.js +26 -0
- package/dist/server/app-ppr-fallback-shell.d.ts +33 -0
- package/dist/server/app-ppr-fallback-shell.js +89 -0
- package/dist/server/app-prerender-endpoints.d.ts +18 -0
- package/dist/server/app-prerender-endpoints.js +94 -0
- package/dist/server/app-prerender-static-params.d.ts +30 -0
- package/dist/server/app-prerender-static-params.js +81 -0
- package/dist/server/app-render-dependency.d.ts +14 -0
- package/dist/server/app-render-dependency.js +41 -0
- package/dist/server/app-request-context.d.ts +20 -0
- package/dist/server/app-request-context.js +29 -0
- package/dist/server/app-route-handler-cache.d.ts +46 -0
- package/dist/server/app-route-handler-cache.js +78 -0
- package/dist/server/app-route-handler-dispatch.d.ts +49 -0
- package/dist/server/app-route-handler-dispatch.js +163 -0
- package/dist/server/app-route-handler-execution.d.ts +86 -0
- package/dist/server/app-route-handler-execution.js +128 -0
- package/dist/server/app-route-handler-policy.d.ts +55 -0
- package/dist/server/app-route-handler-policy.js +58 -0
- package/dist/server/app-route-handler-response.d.ts +28 -0
- package/dist/server/app-route-handler-response.js +145 -0
- package/dist/server/app-route-handler-runtime.d.ts +39 -0
- package/dist/server/app-route-handler-runtime.js +250 -0
- package/dist/server/app-route-module-loader.d.ts +91 -0
- package/dist/server/app-route-module-loader.js +83 -0
- package/dist/server/app-router-entry.d.ts +13 -0
- package/dist/server/app-router-entry.js +49 -0
- package/dist/server/app-rsc-cache-busting.d.ts +64 -0
- package/dist/server/app-rsc-cache-busting.js +206 -0
- package/dist/server/app-rsc-embedded-chunks.d.ts +8 -0
- package/dist/server/app-rsc-embedded-chunks.js +32 -0
- package/dist/server/app-rsc-error-handler.d.ts +20 -0
- package/dist/server/app-rsc-error-handler.js +28 -0
- package/dist/server/app-rsc-errors.d.ts +40 -0
- package/dist/server/app-rsc-errors.js +60 -0
- package/dist/server/app-rsc-handler.d.ts +201 -0
- package/dist/server/app-rsc-handler.js +538 -0
- package/dist/server/app-rsc-render-mode.d.ts +11 -0
- package/dist/server/app-rsc-render-mode.js +25 -0
- package/dist/server/app-rsc-request-normalization.d.ts +48 -0
- package/dist/server/app-rsc-request-normalization.js +75 -0
- package/dist/server/app-rsc-response-finalizer.d.ts +37 -0
- package/dist/server/app-rsc-response-finalizer.js +54 -0
- package/dist/server/app-rsc-route-matching.d.ts +93 -0
- package/dist/server/app-rsc-route-matching.js +134 -0
- package/dist/server/app-segment-config.d.ts +46 -0
- package/dist/server/app-segment-config.js +113 -0
- package/dist/server/app-server-action-execution.d.ts +219 -0
- package/dist/server/app-server-action-execution.js +767 -0
- package/dist/server/app-ssr-entry.d.ts +52 -0
- package/dist/server/app-ssr-entry.js +295 -0
- package/dist/server/app-ssr-error-meta.d.ts +13 -0
- package/dist/server/app-ssr-error-meta.js +48 -0
- package/dist/server/app-ssr-router-instance.d.ts +6 -0
- package/dist/server/app-ssr-router-instance.js +24 -0
- package/dist/server/app-ssr-stream.d.ts +60 -0
- package/dist/server/app-ssr-stream.js +408 -0
- package/dist/server/app-static-generation.d.ts +15 -0
- package/dist/server/app-static-generation.js +19 -0
- package/dist/server/app-visited-response-cache.d.ts +23 -0
- package/dist/server/app-visited-response-cache.js +19 -0
- package/dist/server/artifact-compatibility.d.ts +54 -0
- package/dist/server/artifact-compatibility.js +91 -0
- package/dist/server/before-interactive-head.d.ts +17 -0
- package/dist/server/before-interactive-head.js +35 -0
- package/dist/server/cache-control.d.ts +37 -0
- package/dist/server/cache-control.js +56 -0
- package/dist/server/cache-headers.d.ts +6 -0
- package/dist/server/cache-headers.js +17 -0
- package/dist/server/cache-proof.d.ts +364 -0
- package/dist/server/cache-proof.js +794 -0
- package/dist/server/client-reuse-manifest.d.ts +104 -0
- package/dist/server/client-reuse-manifest.js +209 -0
- package/dist/server/client-trace-metadata.d.ts +30 -0
- package/dist/server/client-trace-metadata.js +81 -0
- package/dist/server/cookie-utils.d.ts +12 -0
- package/dist/server/cookie-utils.js +18 -0
- package/dist/server/csp.d.ts +10 -0
- package/dist/server/csp.js +41 -0
- package/dist/server/default-global-error-module.d.ts +19 -0
- package/dist/server/default-global-error-module.js +18 -0
- package/dist/server/default-not-found-module.d.ts +19 -0
- package/dist/server/default-not-found-module.js +18 -0
- package/dist/server/defer-until-stream-consumed.d.ts +7 -0
- package/dist/server/defer-until-stream-consumed.js +34 -0
- package/dist/server/dev-error-overlay-store.d.ts +39 -0
- package/dist/server/dev-error-overlay-store.js +86 -0
- package/dist/server/dev-error-overlay.d.ts +51 -0
- package/dist/server/dev-error-overlay.js +1341 -0
- package/dist/server/dev-initial-server-error.d.ts +9 -0
- package/dist/server/dev-initial-server-error.js +26 -0
- package/dist/server/dev-lockfile.d.ts +109 -0
- package/dist/server/dev-lockfile.js +179 -0
- package/dist/server/dev-module-runner.d.ts +30 -0
- package/dist/server/dev-module-runner.js +91 -0
- package/dist/server/dev-origin-check.d.ts +62 -0
- package/dist/server/dev-origin-check.js +156 -0
- package/dist/server/dev-route-files.d.ts +6 -0
- package/dist/server/dev-route-files.js +71 -0
- package/dist/server/dev-server.d.ts +58 -0
- package/dist/server/dev-server.js +1114 -0
- package/dist/server/dev-stack-sourcemap-endpoint.d.ts +4 -0
- package/dist/server/dev-stack-sourcemap-endpoint.js +4 -0
- package/dist/server/dev-stack-sourcemap.d.ts +43 -0
- package/dist/server/dev-stack-sourcemap.js +443 -0
- package/dist/server/document-initial-head.d.ts +6 -0
- package/dist/server/document-initial-head.js +33 -0
- package/dist/server/edge-api-runtime.d.ts +4 -0
- package/dist/server/edge-api-runtime.js +6 -0
- package/dist/server/file-based-metadata.d.ts +29 -0
- package/dist/server/file-based-metadata.js +401 -0
- package/dist/server/headers.d.ts +114 -0
- package/dist/server/headers.js +136 -0
- package/dist/server/html.d.ts +28 -0
- package/dist/server/html.js +41 -0
- package/dist/server/http-error-responses.d.ts +91 -0
- package/dist/server/http-error-responses.js +105 -0
- package/dist/server/hybrid-route-priority.d.ts +22 -0
- package/dist/server/hybrid-route-priority.js +33 -0
- package/dist/server/image-optimization.d.ts +130 -0
- package/dist/server/image-optimization.js +247 -0
- package/dist/server/implicit-tags.d.ts +6 -0
- package/dist/server/implicit-tags.js +44 -0
- package/dist/server/instrumentation-runtime.d.ts +49 -0
- package/dist/server/instrumentation-runtime.js +35 -0
- package/dist/server/instrumentation.d.ts +85 -0
- package/dist/server/instrumentation.js +130 -0
- package/dist/server/isr-cache.d.ts +127 -0
- package/dist/server/isr-cache.js +282 -0
- package/dist/server/isr-decision.d.ts +79 -0
- package/dist/server/isr-decision.js +70 -0
- package/dist/server/metadata-route-build-data.d.ts +24 -0
- package/dist/server/metadata-route-build-data.js +148 -0
- package/dist/server/metadata-route-response.d.ts +16 -0
- package/dist/server/metadata-route-response.js +205 -0
- package/dist/server/metadata-routes.d.ts +139 -0
- package/dist/server/metadata-routes.js +433 -0
- package/dist/server/middleware-matcher.d.ts +14 -0
- package/dist/server/middleware-matcher.js +111 -0
- package/dist/server/middleware-request-headers.d.ts +11 -0
- package/dist/server/middleware-request-headers.js +65 -0
- package/dist/server/middleware-response-headers.d.ts +12 -0
- package/dist/server/middleware-response-headers.js +42 -0
- package/dist/server/middleware-runtime.d.ts +67 -0
- package/dist/server/middleware-runtime.js +240 -0
- package/dist/server/middleware.d.ts +62 -0
- package/dist/server/middleware.js +114 -0
- package/dist/server/navigation-planner.d.ts +308 -0
- package/dist/server/navigation-planner.js +831 -0
- package/dist/server/navigation-trace.d.ts +68 -0
- package/dist/server/navigation-trace.js +71 -0
- package/dist/server/next-error-digest.d.ts +44 -0
- package/dist/server/next-error-digest.js +40 -0
- package/dist/server/normalize-path.d.ts +38 -0
- package/dist/server/normalize-path.js +70 -0
- package/dist/server/open-redirect.d.ts +12 -0
- package/dist/server/open-redirect.js +21 -0
- package/dist/server/operation-token.d.ts +40 -0
- package/dist/server/operation-token.js +85 -0
- package/dist/server/otel-tracer-extension.d.ts +45 -0
- package/dist/server/otel-tracer-extension.js +89 -0
- package/dist/server/pages-api-route.d.ts +83 -0
- package/dist/server/pages-api-route.js +75 -0
- package/dist/server/pages-asset-tags.d.ts +78 -0
- package/dist/server/pages-asset-tags.js +126 -0
- package/dist/server/pages-body-parser-config.d.ts +59 -0
- package/dist/server/pages-body-parser-config.js +77 -0
- package/dist/server/pages-data-route.d.ts +121 -0
- package/dist/server/pages-data-route.js +157 -0
- package/dist/server/pages-default-404.d.ts +30 -0
- package/dist/server/pages-default-404.js +38 -0
- package/dist/server/pages-dev-module-url.d.ts +4 -0
- package/dist/server/pages-dev-module-url.js +15 -0
- package/dist/server/pages-document-initial-props.d.ts +77 -0
- package/dist/server/pages-document-initial-props.js +109 -0
- package/dist/server/pages-get-initial-props.d.ts +67 -0
- package/dist/server/pages-get-initial-props.js +92 -0
- package/dist/server/pages-i18n.d.ts +106 -0
- package/dist/server/pages-i18n.js +183 -0
- package/dist/server/pages-media-type.d.ts +15 -0
- package/dist/server/pages-media-type.js +24 -0
- package/dist/server/pages-node-compat.d.ts +55 -0
- package/dist/server/pages-node-compat.js +235 -0
- package/dist/server/pages-page-data.d.ts +223 -0
- package/dist/server/pages-page-data.js +484 -0
- package/dist/server/pages-page-handler.d.ts +100 -0
- package/dist/server/pages-page-handler.js +403 -0
- package/dist/server/pages-page-method.d.ts +47 -0
- package/dist/server/pages-page-method.js +17 -0
- package/dist/server/pages-page-response.d.ts +138 -0
- package/dist/server/pages-page-response.js +285 -0
- package/dist/server/pages-readiness.d.ts +36 -0
- package/dist/server/pages-readiness.js +21 -0
- package/dist/server/pages-request-pipeline.d.ts +116 -0
- package/dist/server/pages-request-pipeline.js +311 -0
- package/dist/server/pages-revalidate.d.ts +15 -0
- package/dist/server/pages-revalidate.js +19 -0
- package/dist/server/pages-serializable-props.d.ts +24 -0
- package/dist/server/pages-serializable-props.js +67 -0
- package/dist/server/pregenerated-concrete-paths.d.ts +16 -0
- package/dist/server/pregenerated-concrete-paths.js +61 -0
- package/dist/server/prerender-manifest.d.ts +33 -0
- package/dist/server/prerender-manifest.js +54 -0
- package/dist/server/prerender-route-params.d.ts +23 -0
- package/dist/server/prerender-route-params.js +113 -0
- package/dist/server/prerender-work-unit-setup.d.ts +6 -0
- package/dist/server/prerender-work-unit-setup.js +28 -0
- package/dist/server/prod-server.d.ts +148 -0
- package/dist/server/prod-server.js +1136 -0
- package/dist/server/proxy-trust.d.ts +40 -0
- package/dist/server/proxy-trust.js +68 -0
- package/dist/server/request-log.d.ts +39 -0
- package/dist/server/request-log.js +56 -0
- package/dist/server/request-pipeline.d.ts +187 -0
- package/dist/server/request-pipeline.js +447 -0
- package/dist/server/rsc-stream-hints.d.ts +10 -0
- package/dist/server/rsc-stream-hints.js +41 -0
- package/dist/server/seed-cache.d.ts +29 -0
- package/dist/server/seed-cache.js +125 -0
- package/dist/server/server-action-not-found.d.ts +21 -0
- package/dist/server/server-action-not-found.js +62 -0
- package/dist/server/server-globals.d.ts +4 -0
- package/dist/server/server-globals.js +35 -0
- package/dist/server/skip-cache-proof.d.ts +61 -0
- package/dist/server/skip-cache-proof.js +168 -0
- package/dist/server/socket-error-backstop.d.ts +34 -0
- package/dist/server/socket-error-backstop.js +200 -0
- package/dist/server/static-file-cache.d.ts +56 -0
- package/dist/server/static-file-cache.js +231 -0
- package/dist/server/static-layout-client-reuse-proof.d.ts +15 -0
- package/dist/server/static-layout-client-reuse-proof.js +33 -0
- package/dist/server/streaming-metadata.d.ts +4 -0
- package/dist/server/streaming-metadata.js +8 -0
- package/dist/server/worker-utils.d.ts +7 -0
- package/dist/server/worker-utils.js +99 -0
- package/dist/shims/amp.d.ts +19 -0
- package/dist/shims/amp.js +23 -0
- package/dist/shims/app-router-scroll-state.d.ts +15 -0
- package/dist/shims/app-router-scroll-state.js +61 -0
- package/dist/shims/app-router-scroll.d.ts +29 -0
- package/dist/shims/app-router-scroll.js +141 -0
- package/dist/shims/app.d.ts +42 -0
- package/dist/shims/app.js +48 -0
- package/dist/shims/before-interactive-context.d.ts +40 -0
- package/dist/shims/before-interactive-context.js +8 -0
- package/dist/shims/cache-for-request.d.ts +57 -0
- package/dist/shims/cache-for-request.js +72 -0
- package/dist/shims/cache-handler.d.ts +106 -0
- package/dist/shims/cache-handler.js +176 -0
- package/dist/shims/cache-request-state.d.ts +47 -0
- package/dist/shims/cache-request-state.js +126 -0
- package/dist/shims/cache-runtime.d.ts +83 -0
- package/dist/shims/cache-runtime.js +452 -0
- package/dist/shims/cache.d.ts +145 -0
- package/dist/shims/cache.js +401 -0
- package/dist/shims/cdn-cache.d.ts +125 -0
- package/dist/shims/cdn-cache.js +100 -0
- package/dist/shims/client-hook-error.d.ts +13 -0
- package/dist/shims/client-hook-error.js +17 -0
- package/dist/shims/client-locale.d.ts +14 -0
- package/dist/shims/client-locale.js +11 -0
- package/dist/shims/client-only.d.ts +1 -0
- package/dist/shims/client-only.js +1 -0
- package/dist/shims/compat-router.d.ts +16 -0
- package/dist/shims/compat-router.js +25 -0
- package/dist/shims/config.d.ts +28 -0
- package/dist/shims/config.js +21 -0
- package/dist/shims/constants.d.ts +130 -0
- package/dist/shims/constants.js +167 -0
- package/dist/shims/default-global-error.d.ts +31 -0
- package/dist/shims/default-global-error.js +179 -0
- package/dist/shims/default-not-found.d.ts +11 -0
- package/dist/shims/default-not-found.js +59 -0
- package/dist/shims/document.d.ts +92 -0
- package/dist/shims/document.js +76 -0
- package/dist/shims/dynamic-preload-chunks.d.ts +8 -0
- package/dist/shims/dynamic-preload-chunks.js +79 -0
- package/dist/shims/dynamic.d.ts +35 -0
- package/dist/shims/dynamic.js +204 -0
- package/dist/shims/error-boundary-navigation.d.ts +7 -0
- package/dist/shims/error-boundary-navigation.js +44 -0
- package/dist/shims/error-boundary.d.ts +155 -0
- package/dist/shims/error-boundary.js +342 -0
- package/dist/shims/error.d.ts +31 -0
- package/dist/shims/error.js +123 -0
- package/dist/shims/error.react-server.d.ts +9 -0
- package/dist/shims/error.react-server.js +6 -0
- package/dist/shims/fetch-cache.d.ts +136 -0
- package/dist/shims/fetch-cache.js +766 -0
- package/dist/shims/font-google-base.d.ts +83 -0
- package/dist/shims/font-google-base.js +290 -0
- package/dist/shims/font-google.d.ts +2 -0
- package/dist/shims/font-google.js +2 -0
- package/dist/shims/font-local.d.ts +50 -0
- package/dist/shims/font-local.js +195 -0
- package/dist/shims/font-utils.d.ts +56 -0
- package/dist/shims/font-utils.js +107 -0
- package/dist/shims/form.d.ts +19 -0
- package/dist/shims/form.js +236 -0
- package/dist/shims/hash-scroll.d.ts +10 -0
- package/dist/shims/hash-scroll.js +47 -0
- package/dist/shims/head-state.d.ts +16 -0
- package/dist/shims/head-state.js +43 -0
- package/dist/shims/head.d.ts +73 -0
- package/dist/shims/head.js +340 -0
- package/dist/shims/headers.d.ts +253 -0
- package/dist/shims/headers.js +754 -0
- package/dist/shims/i18n-context.d.ts +22 -0
- package/dist/shims/i18n-context.js +42 -0
- package/dist/shims/i18n-state.d.ts +14 -0
- package/dist/shims/i18n-state.js +38 -0
- package/dist/shims/image-config.d.ts +45 -0
- package/dist/shims/image-config.js +85 -0
- package/dist/shims/image.d.ts +55 -0
- package/dist/shims/image.js +582 -0
- package/dist/shims/internal/als-registry.d.ts +14 -0
- package/dist/shims/internal/als-registry.js +80 -0
- package/dist/shims/internal/api-utils.d.ts +14 -0
- package/dist/shims/internal/api-utils.js +1 -0
- package/dist/shims/internal/app-page-props-cache-key.d.ts +5 -0
- package/dist/shims/internal/app-page-props-cache-key.js +16 -0
- package/dist/shims/internal/app-route-detection.d.ts +39 -0
- package/dist/shims/internal/app-route-detection.js +62 -0
- package/dist/shims/internal/app-router-context.d.ts +31 -0
- package/dist/shims/internal/app-router-context.js +28 -0
- package/dist/shims/internal/cookie-serialize.d.ts +45 -0
- package/dist/shims/internal/cookie-serialize.js +49 -0
- package/dist/shims/internal/cookies.d.ts +2 -0
- package/dist/shims/internal/cookies.js +2 -0
- package/dist/shims/internal/hybrid-client-route-owner.d.ts +31 -0
- package/dist/shims/internal/hybrid-client-route-owner.js +143 -0
- package/dist/shims/internal/interpolate-as.d.ts +25 -0
- package/dist/shims/internal/interpolate-as.js +196 -0
- package/dist/shims/internal/link-status-registry.d.ts +43 -0
- package/dist/shims/internal/link-status-registry.js +42 -0
- package/dist/shims/internal/make-hanging-promise.d.ts +15 -0
- package/dist/shims/internal/make-hanging-promise.js +44 -0
- package/dist/shims/internal/navigation-untracked.d.ts +35 -0
- package/dist/shims/internal/navigation-untracked.js +56 -0
- package/dist/shims/internal/pages-data-fetch-dedup.d.ts +54 -0
- package/dist/shims/internal/pages-data-fetch-dedup.js +121 -0
- package/dist/shims/internal/pages-data-target.d.ts +62 -0
- package/dist/shims/internal/pages-data-target.js +98 -0
- package/dist/shims/internal/pages-data-url.d.ts +41 -0
- package/dist/shims/internal/pages-data-url.js +71 -0
- package/dist/shims/internal/pages-router-accessor.d.ts +19 -0
- package/dist/shims/internal/pages-router-accessor.js +13 -0
- package/dist/shims/internal/route-pattern-for-warning.d.ts +27 -0
- package/dist/shims/internal/route-pattern-for-warning.js +40 -0
- package/dist/shims/internal/router-context.d.ts +7 -0
- package/dist/shims/internal/router-context.js +13 -0
- package/dist/shims/internal/utils.d.ts +52 -0
- package/dist/shims/internal/utils.js +27 -0
- package/dist/shims/internal/work-unit-async-storage.d.ts +30 -0
- package/dist/shims/internal/work-unit-async-storage.js +17 -0
- package/dist/shims/layout-segment-context.d.ts +24 -0
- package/dist/shims/layout-segment-context.js +39 -0
- package/dist/shims/legacy-image.d.ts +41 -0
- package/dist/shims/legacy-image.js +49 -0
- package/dist/shims/link-prefetch.d.ts +41 -0
- package/dist/shims/link-prefetch.js +43 -0
- package/dist/shims/link.d.ts +102 -0
- package/dist/shims/link.js +687 -0
- package/dist/shims/metadata.d.ts +285 -0
- package/dist/shims/metadata.js +820 -0
- package/dist/shims/navigation-context-state.d.ts +40 -0
- package/dist/shims/navigation-context-state.js +116 -0
- package/dist/shims/navigation-errors.d.ts +55 -0
- package/dist/shims/navigation-errors.js +110 -0
- package/dist/shims/navigation-server.d.ts +3 -0
- package/dist/shims/navigation-server.js +3 -0
- package/dist/shims/navigation-state.d.ts +25 -0
- package/dist/shims/navigation-state.js +66 -0
- package/dist/shims/navigation.d.ts +286 -0
- package/dist/shims/navigation.js +1206 -0
- package/dist/shims/navigation.react-server.d.ts +14 -0
- package/dist/shims/navigation.react-server.js +32 -0
- package/dist/shims/offline.d.ts +4 -0
- package/dist/shims/offline.js +15 -0
- package/dist/shims/og.d.ts +17 -0
- package/dist/shims/og.js +48 -0
- package/dist/shims/pages-router-runtime.d.ts +12 -0
- package/dist/shims/pages-router-runtime.js +24 -0
- package/dist/shims/ppr-fallback-shell.d.ts +33 -0
- package/dist/shims/ppr-fallback-shell.js +170 -0
- package/dist/shims/readonly-url-search-params.d.ts +13 -0
- package/dist/shims/readonly-url-search-params.js +26 -0
- package/dist/shims/request-context.d.ts +58 -0
- package/dist/shims/request-context.js +45 -0
- package/dist/shims/request-state-types.d.ts +12 -0
- package/dist/shims/request-state-types.js +1 -0
- package/dist/shims/root-params.d.ts +12 -0
- package/dist/shims/root-params.js +30 -0
- package/dist/shims/router-state.d.ts +32 -0
- package/dist/shims/router-state.js +39 -0
- package/dist/shims/router.d.ts +192 -0
- package/dist/shims/router.js +1786 -0
- package/dist/shims/script-nonce-context.d.ts +11 -0
- package/dist/shims/script-nonce-context.js +23 -0
- package/dist/shims/script.d.ts +43 -0
- package/dist/shims/script.js +370 -0
- package/dist/shims/server-only.d.ts +1 -0
- package/dist/shims/server-only.js +1 -0
- package/dist/shims/server.d.ts +323 -0
- package/dist/shims/server.js +729 -0
- package/dist/shims/slot.d.ts +45 -0
- package/dist/shims/slot.js +230 -0
- package/dist/shims/thenable-params.d.ts +11 -0
- package/dist/shims/thenable-params.js +176 -0
- package/dist/shims/unified-request-context.d.ts +68 -0
- package/dist/shims/unified-request-context.js +86 -0
- package/dist/shims/unrecognized-action-error.d.ts +34 -0
- package/dist/shims/unrecognized-action-error.js +39 -0
- package/dist/shims/url-safety.d.ts +34 -0
- package/dist/shims/url-safety.js +70 -0
- package/dist/shims/url-utils.d.ts +51 -0
- package/dist/shims/url-utils.js +156 -0
- package/dist/shims/use-merged-ref.d.ts +6 -0
- package/dist/shims/use-merged-ref.js +38 -0
- package/dist/shims/web-vitals.d.ts +8 -0
- package/dist/shims/web-vitals.js +22 -0
- package/dist/typegen.d.ts +9 -0
- package/dist/typegen.js +228 -0
- package/dist/utils/asset-prefix.d.ts +96 -0
- package/dist/utils/asset-prefix.js +122 -0
- package/dist/utils/base-path.d.ts +31 -0
- package/dist/utils/base-path.js +45 -0
- package/dist/utils/built-asset-url.d.ts +4 -0
- package/dist/utils/built-asset-url.js +11 -0
- package/dist/utils/cache-control-metadata.d.ts +4 -0
- package/dist/utils/cache-control-metadata.js +12 -0
- package/dist/utils/client-build-manifest.d.ts +21 -0
- package/dist/utils/client-build-manifest.js +87 -0
- package/dist/utils/client-entry-manifest.d.ts +11 -0
- package/dist/utils/client-entry-manifest.js +29 -0
- package/dist/utils/client-runtime-metadata.d.ts +45 -0
- package/dist/utils/client-runtime-metadata.js +63 -0
- package/dist/utils/commonjs-loader.d.ts +16 -0
- package/dist/utils/commonjs-loader.js +100 -0
- package/dist/utils/compare.d.ts +4 -0
- package/dist/utils/compare.js +8 -0
- package/dist/utils/deployment-id.d.ts +8 -0
- package/dist/utils/deployment-id.js +22 -0
- package/dist/utils/dev-error-recovery-event.d.ts +4 -0
- package/dist/utils/dev-error-recovery-event.js +4 -0
- package/dist/utils/domain-locale.d.ts +26 -0
- package/dist/utils/domain-locale.js +50 -0
- package/dist/utils/encode-cache-tag.d.ts +30 -0
- package/dist/utils/encode-cache-tag.js +36 -0
- package/dist/utils/error-cause.d.ts +4 -0
- package/dist/utils/error-cause.js +95 -0
- package/dist/utils/has-trailing-comma.d.ts +24 -0
- package/dist/utils/has-trailing-comma.js +62 -0
- package/dist/utils/hash.d.ts +24 -0
- package/dist/utils/hash.js +55 -0
- package/dist/utils/html-limited-bots.d.ts +21 -0
- package/dist/utils/html-limited-bots.js +35 -0
- package/dist/utils/lazy-chunks.d.ts +59 -0
- package/dist/utils/lazy-chunks.js +112 -0
- package/dist/utils/manifest-paths.d.ts +30 -0
- package/dist/utils/manifest-paths.js +66 -0
- package/dist/utils/mdx-scan.d.ts +9 -0
- package/dist/utils/mdx-scan.js +34 -0
- package/dist/utils/navigation-signal.d.ts +4 -0
- package/dist/utils/navigation-signal.js +12 -0
- package/dist/utils/number.d.ts +4 -0
- package/dist/utils/number.js +6 -0
- package/dist/utils/parse-cookie.d.ts +13 -0
- package/dist/utils/parse-cookie.js +52 -0
- package/dist/utils/path.d.ts +22 -0
- package/dist/utils/path.js +30 -0
- package/dist/utils/prerender-output-paths.d.ts +14 -0
- package/dist/utils/prerender-output-paths.js +22 -0
- package/dist/utils/project.d.ts +76 -0
- package/dist/utils/project.js +213 -0
- package/dist/utils/promise.d.ts +4 -0
- package/dist/utils/promise.js +6 -0
- package/dist/utils/public-routes.d.ts +4 -0
- package/dist/utils/public-routes.js +48 -0
- package/dist/utils/query.d.ts +49 -0
- package/dist/utils/query.js +122 -0
- package/dist/utils/record.d.ts +4 -0
- package/dist/utils/record.js +6 -0
- package/dist/utils/regex.d.ts +4 -0
- package/dist/utils/regex.js +6 -0
- package/dist/utils/safe-json-file.d.ts +17 -0
- package/dist/utils/safe-json-file.js +23 -0
- package/dist/utils/sorted-array.d.ts +8 -0
- package/dist/utils/sorted-array.js +20 -0
- package/dist/utils/text-stream.d.ts +28 -0
- package/dist/utils/text-stream.js +64 -0
- package/dist/utils/vinext-root.d.ts +23 -0
- package/dist/utils/vinext-root.js +29 -0
- package/dist/utils/virtual-module.d.ts +5 -0
- package/dist/utils/virtual-module.js +0 -0
- package/dist/utils/vite-version.d.ts +21 -0
- package/dist/utils/vite-version.js +42 -0
- package/package.json +145 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { addBasePathToPathname, hasBasePath, stripBasePath } from "../utils/base-path.js";
|
|
2
|
+
import { NEXTJS_DEPLOYMENT_ID_HEADER } from "./headers.js";
|
|
3
|
+
//#region src/server/pages-data-route.ts
|
|
4
|
+
/**
|
|
5
|
+
* Helpers for the Pages Router `/_next/data/{buildId}/{...page}.json` endpoint.
|
|
6
|
+
*
|
|
7
|
+
* Next.js uses this endpoint for client-side navigations in the Pages Router:
|
|
8
|
+
* `next/link` and `router.push()` fetch `pageProps` from this URL instead of
|
|
9
|
+
* doing a full HTML navigation. The server must:
|
|
10
|
+
* 1. Match the URL pattern and extract the page pathname (with the buildId
|
|
11
|
+
* and `.json` extension removed, locale prefix preserved).
|
|
12
|
+
* 2. Normalize the URL BEFORE middleware runs so middleware sees the page
|
|
13
|
+
* path (e.g. `/about`) rather than the raw `/_next/data/.../about.json`.
|
|
14
|
+
* 3. Invoke the same `getServerSideProps` / `getStaticProps` machinery as
|
|
15
|
+
* the HTML page and serialize the resulting props as a JSON envelope:
|
|
16
|
+
* `{ pageProps: ... }` with `Content-Type: application/json`.
|
|
17
|
+
*
|
|
18
|
+
* Ported from Next.js:
|
|
19
|
+
* - `packages/next/src/server/normalizers/request/next-data.ts` — prefix/suffix matcher.
|
|
20
|
+
* - `packages/next/src/server/base-server.ts` (`handleNextDataRequest`) — pipeline normalization.
|
|
21
|
+
* - `packages/next/src/server/render.tsx` — JSON envelope emission (`isNextDataRequest`).
|
|
22
|
+
*/
|
|
23
|
+
const NEXT_DATA_PREFIX = "/_next/data/";
|
|
24
|
+
const NEXT_DATA_SUFFIX = ".json";
|
|
25
|
+
/**
|
|
26
|
+
* Returns true if the pathname looks like a `_next/data` request, regardless
|
|
27
|
+
* of buildId. Used by the request pipeline to short-circuit before middleware
|
|
28
|
+
* even when the buildId is wrong (so we can still return a 404 JSON response).
|
|
29
|
+
*/
|
|
30
|
+
function isNextDataPathname(pathname) {
|
|
31
|
+
return pathname.startsWith(NEXT_DATA_PREFIX) && pathname.endsWith(NEXT_DATA_SUFFIX);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Parse `/_next/data/<buildId>/<...page>.json` and return the normalized page
|
|
35
|
+
* pathname. Returns `null` if the pathname does not match the pattern or if
|
|
36
|
+
* the buildId segment does not match the server's buildId.
|
|
37
|
+
*
|
|
38
|
+
* The returned `pagePathname` is the page route path Next.js would render for
|
|
39
|
+
* the equivalent HTML navigation — including any locale prefix, which is then
|
|
40
|
+
* stripped by `resolvePagesI18nRequest` downstream.
|
|
41
|
+
*
|
|
42
|
+
* `/_next/data/<buildId>/about.json` → `/about`
|
|
43
|
+
* `/_next/data/<buildId>/en/about.json` → `/en/about`
|
|
44
|
+
* `/_next/data/<buildId>/index.json` → `/`
|
|
45
|
+
* `/_next/data/<buildId>/en.json` → `/en`
|
|
46
|
+
* `/_next/data/<wrong-id>/about.json` → null
|
|
47
|
+
* `/_next/data/<buildId>/about` → null (missing .json suffix)
|
|
48
|
+
*/
|
|
49
|
+
function parseNextDataPathname(pathname, buildId) {
|
|
50
|
+
if (!buildId) return null;
|
|
51
|
+
if (!isNextDataPathname(pathname)) return null;
|
|
52
|
+
const expectedPrefix = `${NEXT_DATA_PREFIX}${buildId}/`;
|
|
53
|
+
if (!pathname.startsWith(expectedPrefix)) return null;
|
|
54
|
+
const rest = pathname.slice(expectedPrefix.length, -5);
|
|
55
|
+
if (rest.length === 0) return null;
|
|
56
|
+
if (rest === "index") return { pagePathname: "/" };
|
|
57
|
+
if (rest.endsWith("/index")) return { pagePathname: `/${rest.slice(0, -6)}` };
|
|
58
|
+
if (rest.startsWith("index/")) return { pagePathname: `/${rest.slice(6)}` };
|
|
59
|
+
return { pagePathname: `/${rest}` };
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Build the JSON envelope returned by `/_next/data/<buildId>/<page>.json`.
|
|
63
|
+
* Mirrors Next.js' `RenderResult(JSON.stringify(props))` path in
|
|
64
|
+
* `packages/next/src/server/render.tsx` (search for `isNextDataRequest`).
|
|
65
|
+
*
|
|
66
|
+
* The envelope is the outer `props` object the React tree would receive:
|
|
67
|
+
* { pageProps: {...}, /* optional locale data, redirect markers, etc. *\/ }
|
|
68
|
+
*/
|
|
69
|
+
function buildNextDataJsonResponse(pageProps, safeJsonStringify, init) {
|
|
70
|
+
return buildNextDataPropsJsonResponse({ pageProps }, safeJsonStringify, init);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Build a `_next/data` JSON response from the full Pages props object returned
|
|
74
|
+
* through `_app.getInitialProps`. Next.js serializes the same outer props
|
|
75
|
+
* object that would be passed to `<App />`, so custom app-level props remain
|
|
76
|
+
* siblings of `pageProps` in the data envelope.
|
|
77
|
+
*/
|
|
78
|
+
function buildNextDataPropsJsonResponse(props, safeJsonStringify, init) {
|
|
79
|
+
const body = safeJsonStringify(props);
|
|
80
|
+
return new Response(body, {
|
|
81
|
+
status: init?.status ?? 200,
|
|
82
|
+
statusText: init?.statusText,
|
|
83
|
+
headers: {
|
|
84
|
+
"Content-Type": "application/json",
|
|
85
|
+
...init?.headers
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Build the 404 response Next.js returns for an unknown `_next/data` page.
|
|
91
|
+
* Next.js renders this as a normal 404 page, but the body shape that clients
|
|
92
|
+
* see for a missing page-data endpoint is the literal string `"{ }"` for the
|
|
93
|
+
* body and a 404 status with `application/json` so client-side hard-navigation
|
|
94
|
+
* fallback fires (see `__N_SSP` handling in `router.ts`).
|
|
95
|
+
*
|
|
96
|
+
* We match Next.js' behavior: 404 status + JSON content type. The body is an
|
|
97
|
+
* empty JSON object so clients that blindly call `res.json()` do not throw
|
|
98
|
+
* before checking the status code.
|
|
99
|
+
*/
|
|
100
|
+
function buildNextDataNotFoundResponse() {
|
|
101
|
+
const headers = { "Content-Type": "application/json" };
|
|
102
|
+
const deploymentId = process.env.__VINEXT_DEPLOYMENT_ID || process.env.NEXT_DEPLOYMENT_ID;
|
|
103
|
+
if (deploymentId) headers[NEXTJS_DEPLOYMENT_ID_HEADER] = deploymentId;
|
|
104
|
+
return new Response("{}", {
|
|
105
|
+
status: 404,
|
|
106
|
+
headers
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Detect and normalize `/_next/data/<buildId>/<page>.json` requests in one
|
|
111
|
+
* place so the Pages Router pipeline and middleware shim do not need to know
|
|
112
|
+
* about the data-endpoint protocol.
|
|
113
|
+
*
|
|
114
|
+
* Returns:
|
|
115
|
+
* - `isDataReq: false, notFoundResponse: null` — not a data request.
|
|
116
|
+
* - `isDataReq: false, notFoundResponse: Response` — looks like a data URL but
|
|
117
|
+
* the buildId does not match; callers should return `notFoundResponse`
|
|
118
|
+
* immediately so stale clients fall back to a hard navigation.
|
|
119
|
+
* - `isDataReq: true` — valid data request; `request` is re-pointed at the
|
|
120
|
+
* normalized page path, `normalizedPathname` carries the bare page path, and
|
|
121
|
+
* `search` carries the original query string for callers that need to
|
|
122
|
+
* preserve it.
|
|
123
|
+
*
|
|
124
|
+
* Extracted from `entries/pages-server-entry.ts` so both `renderPage` and
|
|
125
|
+
* `runMiddleware` share a single implementation.
|
|
126
|
+
*/
|
|
127
|
+
function normalizePagesDataRequest(request, buildId, basePath = "") {
|
|
128
|
+
const reqUrl = new URL(request.url);
|
|
129
|
+
const hadBasePath = !!basePath && hasBasePath(reqUrl.pathname, basePath);
|
|
130
|
+
const dataPathname = basePath ? stripBasePath(reqUrl.pathname, basePath) : reqUrl.pathname;
|
|
131
|
+
if (!isNextDataPathname(dataPathname)) return {
|
|
132
|
+
isDataReq: false,
|
|
133
|
+
request,
|
|
134
|
+
normalizedPathname: null,
|
|
135
|
+
search: "",
|
|
136
|
+
notFoundResponse: null
|
|
137
|
+
};
|
|
138
|
+
const dataMatch = buildId ? parseNextDataPathname(dataPathname, buildId) : null;
|
|
139
|
+
if (!dataMatch) return {
|
|
140
|
+
isDataReq: false,
|
|
141
|
+
request,
|
|
142
|
+
normalizedPathname: null,
|
|
143
|
+
search: "",
|
|
144
|
+
notFoundResponse: buildNextDataNotFoundResponse()
|
|
145
|
+
};
|
|
146
|
+
const normalizedUrl = new URL(reqUrl);
|
|
147
|
+
normalizedUrl.pathname = hadBasePath ? addBasePathToPathname(dataMatch.pagePathname, basePath) : dataMatch.pagePathname;
|
|
148
|
+
return {
|
|
149
|
+
isDataReq: true,
|
|
150
|
+
request: new Request(normalizedUrl, request),
|
|
151
|
+
normalizedPathname: dataMatch.pagePathname,
|
|
152
|
+
search: reqUrl.search,
|
|
153
|
+
notFoundResponse: null
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
//#endregion
|
|
157
|
+
export { buildNextDataJsonResponse, buildNextDataNotFoundResponse, buildNextDataPropsJsonResponse, isNextDataPathname, normalizePagesDataRequest, parseNextDataPathname };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//#region src/server/pages-default-404.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Default 404 HTML body for the Pages Router.
|
|
4
|
+
*
|
|
5
|
+
* Used when a Pages Router request does not match any route (and the app has
|
|
6
|
+
* not supplied a custom `pages/404.tsx`). Mirrors the markup Next.js's
|
|
7
|
+
* `pages/_error.tsx` produces for a 404 response: a centered status / message
|
|
8
|
+
* pair plus minified theme CSS and dark-mode media query. The message string
|
|
9
|
+
* `"This page could not be found."` (note the trailing period) is the
|
|
10
|
+
* canonical body asserted by Next.js's deploy suite
|
|
11
|
+
* (`test/e2e/getserversideprops/test/index.test.ts`,
|
|
12
|
+
* `test/e2e/basepath/error-pages.test.ts`).
|
|
13
|
+
*
|
|
14
|
+
* Kept as a hand-rendered HTML literal rather than a React-rendered template
|
|
15
|
+
* because the Pages Router server entry is invoked from both Workers and the
|
|
16
|
+
* dev server before any React-renderer wiring is available for this path —
|
|
17
|
+
* matching the lightweight build-time strategy Next.js uses for its packaged
|
|
18
|
+
* `_error` static fallback. See:
|
|
19
|
+
* .nextjs-ref/packages/next/src/pages/_error.tsx
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Build the Next.js-compatible default 404 HTML response for the Pages Router.
|
|
23
|
+
* Content-type is `text/html; charset=utf-8`, matching Next.js's
|
|
24
|
+
* `pages-handler` 404 response.
|
|
25
|
+
*/
|
|
26
|
+
declare function buildDefaultPagesNotFoundResponse(): Response;
|
|
27
|
+
/** Exported for tests / callers that need the raw HTML body. */
|
|
28
|
+
declare const DEFAULT_PAGES_NOT_FOUND_HTML = "<!DOCTYPE html><html><head><meta charset=\"utf-8\"/><meta name=\"viewport\" content=\"width=device-width\"/><title>404: This page could not be found.</title><meta name=\"next-head-count\" content=\"2\"/><style data-next-hide-fouc=\"true\">body{display:none}</style><noscript data-next-hide-fouc=\"true\"><style>body{display:block}</style></noscript></head><body><div id=\"__next\"><div style=\"font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center\"><div style=\"line-height:48px\"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class=\"next-error-h1\" style=\"display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top\">404</h1><div style=\"display:inline-block\"><h2 style=\"font-size:14px;font-weight:400;line-height:28px\">This page could not be found.</h2></div></div></div></div></body></html>";
|
|
29
|
+
//#endregion
|
|
30
|
+
export { DEFAULT_PAGES_NOT_FOUND_HTML, buildDefaultPagesNotFoundResponse };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
//#region src/server/pages-default-404.ts
|
|
2
|
+
/**
|
|
3
|
+
* Default 404 HTML body for the Pages Router.
|
|
4
|
+
*
|
|
5
|
+
* Used when a Pages Router request does not match any route (and the app has
|
|
6
|
+
* not supplied a custom `pages/404.tsx`). Mirrors the markup Next.js's
|
|
7
|
+
* `pages/_error.tsx` produces for a 404 response: a centered status / message
|
|
8
|
+
* pair plus minified theme CSS and dark-mode media query. The message string
|
|
9
|
+
* `"This page could not be found."` (note the trailing period) is the
|
|
10
|
+
* canonical body asserted by Next.js's deploy suite
|
|
11
|
+
* (`test/e2e/getserversideprops/test/index.test.ts`,
|
|
12
|
+
* `test/e2e/basepath/error-pages.test.ts`).
|
|
13
|
+
*
|
|
14
|
+
* Kept as a hand-rendered HTML literal rather than a React-rendered template
|
|
15
|
+
* because the Pages Router server entry is invoked from both Workers and the
|
|
16
|
+
* dev server before any React-renderer wiring is available for this path —
|
|
17
|
+
* matching the lightweight build-time strategy Next.js uses for its packaged
|
|
18
|
+
* `_error` static fallback. See:
|
|
19
|
+
* .nextjs-ref/packages/next/src/pages/_error.tsx
|
|
20
|
+
*/
|
|
21
|
+
const STATUS = 404;
|
|
22
|
+
const MESSAGE = "This page could not be found.";
|
|
23
|
+
const HTML = `<!DOCTYPE html><html><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width"/><title>${STATUS}: ${MESSAGE}</title><meta name="next-head-count" content="2"/><style data-next-hide-fouc="true">body{display:none}</style><noscript data-next-hide-fouc="true"><style>body{display:block}</style></noscript></head><body><div id="__next"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">${STATUS}</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">${MESSAGE}</h2></div></div></div></div></body></html>`;
|
|
24
|
+
/**
|
|
25
|
+
* Build the Next.js-compatible default 404 HTML response for the Pages Router.
|
|
26
|
+
* Content-type is `text/html; charset=utf-8`, matching Next.js's
|
|
27
|
+
* `pages-handler` 404 response.
|
|
28
|
+
*/
|
|
29
|
+
function buildDefaultPagesNotFoundResponse() {
|
|
30
|
+
return new Response(HTML, {
|
|
31
|
+
status: STATUS,
|
|
32
|
+
headers: { "Content-Type": "text/html; charset=utf-8" }
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/** Exported for tests / callers that need the raw HTML body. */
|
|
36
|
+
const DEFAULT_PAGES_NOT_FOUND_HTML = HTML;
|
|
37
|
+
//#endregion
|
|
38
|
+
export { DEFAULT_PAGES_NOT_FOUND_HTML, buildDefaultPagesNotFoundResponse };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
//#region src/server/pages-dev-module-url.ts
|
|
3
|
+
function normalizeBase(base) {
|
|
4
|
+
if (!base || base === "/") return "/";
|
|
5
|
+
return `/${base.replace(/^\/+|\/+$/g, "")}/`;
|
|
6
|
+
}
|
|
7
|
+
function encodeModulePath(modulePath) {
|
|
8
|
+
return encodeURI(modulePath).replace(/%5B/gi, "[").replace(/%5D/gi, "]").replace(/\?/g, "%3F").replace(/#/g, "%23");
|
|
9
|
+
}
|
|
10
|
+
function createPagesDevModuleUrl(viteRoot, moduleFilePath, viteBase) {
|
|
11
|
+
const relativePath = (/^[A-Za-z]:[\\/]/.test(viteRoot) ? path.win32 : path).relative(viteRoot, moduleFilePath).replace(/\\/g, "/");
|
|
12
|
+
return normalizeBase(viteBase) + encodeModulePath(relativePath);
|
|
13
|
+
}
|
|
14
|
+
//#endregion
|
|
15
|
+
export { createPagesDevModuleUrl };
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import React, { ComponentType, ReactNode } from "react";
|
|
2
|
+
|
|
3
|
+
//#region src/server/pages-document-initial-props.d.ts
|
|
4
|
+
declare function loadUserDocumentInitialProps(DocumentComponent: ComponentType): Promise<Record<string, unknown> | null>;
|
|
5
|
+
/** Options accepted by a `ctx.renderPage()` call (Pages Router contract). */
|
|
6
|
+
type RenderPageEnhancers = {
|
|
7
|
+
enhanceApp?: (App: ComponentType<{
|
|
8
|
+
children?: ReactNode;
|
|
9
|
+
}>) => any;
|
|
10
|
+
enhanceComponent?: (Comp: ComponentType<unknown>) => any;
|
|
11
|
+
};
|
|
12
|
+
type DocumentRenderPageInput = {
|
|
13
|
+
/** The user `_document` component (may define `getInitialProps`). */DocumentComponent: ComponentType | null;
|
|
14
|
+
/**
|
|
15
|
+
* Build the page React tree with optional App/Component enhancers applied.
|
|
16
|
+
* Callers MUST NOT apply `withScriptNonce` themselves — this helper owns the
|
|
17
|
+
* nonce responsibility so the prod and dev paths stay symmetric.
|
|
18
|
+
*/
|
|
19
|
+
enhancePageElement?: ((opts: RenderPageEnhancers) => ReactNode) | undefined; /** Render a React tree to a UTF-8 byte stream (prod/dev specific). */
|
|
20
|
+
renderToReadableStream: (element: React.ReactElement) => Promise<ReadableStream<Uint8Array>>; /** Render the document `styles` element to an HTML string. */
|
|
21
|
+
renderStylesToString: (element: React.ReactElement) => Promise<string>; /** Per-request CSP nonce applied to the enhanced page tree, if any. */
|
|
22
|
+
scriptNonce?: string | undefined; /** Extra `DocumentContext` fields (pathname/query/asPath). */
|
|
23
|
+
context?: Record<string, unknown> | undefined;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Run a user `_document.getInitialProps()` with a `ctx.renderPage()` that
|
|
27
|
+
* applies optional `enhanceApp` / `enhanceComponent` wrappers around the page
|
|
28
|
+
* React tree, mirroring Next.js's Pages Router contract.
|
|
29
|
+
*
|
|
30
|
+
* Used by CSS-in-JS libraries (styled-components, emotion) to wrap the
|
|
31
|
+
* App/Component tree so styles can be collected during SSR. Shared between the
|
|
32
|
+
* prod (`pages-page-response.ts`) and dev (`dev-server.ts`) SSR pipelines so
|
|
33
|
+
* the `getInitialProps` + `renderPage` contract lives in one place.
|
|
34
|
+
*
|
|
35
|
+
* @see .nextjs-ref/packages/next/src/server/render.tsx (search `renderPage`)
|
|
36
|
+
*
|
|
37
|
+
* Result of attempting the renderPage contract:
|
|
38
|
+
* - `skipped` — `getInitialProps` was NOT invoked (no override, or no
|
|
39
|
+
* `enhancePageElement` wired up). Callers should run the
|
|
40
|
+
* normal `loadUserDocumentInitialProps` fast path, which may
|
|
41
|
+
* invoke `getInitialProps` itself.
|
|
42
|
+
* - `rendered` — `renderPage` produced the body. `bodyHtml` is the rendered
|
|
43
|
+
* page string, `stylesHTML` the rendered `styles`, `docProps`
|
|
44
|
+
* the remaining props to spread onto `<Document>`, and `head`
|
|
45
|
+
* the head nodes returned by `getInitialProps` (forward them to
|
|
46
|
+
* `setDocumentInitialHead()` — do NOT call
|
|
47
|
+
* `callDocumentGetInitialProps()` as well).
|
|
48
|
+
*/
|
|
49
|
+
type RunDocumentRenderPageResult = {
|
|
50
|
+
status: "skipped";
|
|
51
|
+
} | {
|
|
52
|
+
status: "rendered";
|
|
53
|
+
bodyHtml: string;
|
|
54
|
+
stylesHTML: string;
|
|
55
|
+
docProps: Record<string, unknown>;
|
|
56
|
+
head: ReactNode[];
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Run a user `_document.getInitialProps()` with a `ctx.renderPage()` that
|
|
60
|
+
* applies optional `enhanceApp` / `enhanceComponent` wrappers around the page
|
|
61
|
+
* React tree, mirroring Next.js's Pages Router contract.
|
|
62
|
+
*
|
|
63
|
+
* Used by CSS-in-JS libraries (styled-components, emotion) to wrap the
|
|
64
|
+
* App/Component tree so styles can be collected during SSR. Shared between the
|
|
65
|
+
* prod (`pages-page-response.ts`) and dev (`dev-server.ts`) SSR pipelines so
|
|
66
|
+
* the `getInitialProps` + `renderPage` contract lives in one place.
|
|
67
|
+
*
|
|
68
|
+
* `getInitialProps` is invoked at most once here. When this returns `rendered`,
|
|
69
|
+
* callers MUST treat that as the single invocation and must not call
|
|
70
|
+
* `loadUserDocumentInitialProps` again. Errors intentionally propagate to the
|
|
71
|
+
* Pages Router's normal error-page pipeline, matching Next.js.
|
|
72
|
+
*
|
|
73
|
+
* @see .nextjs-ref/packages/next/src/server/render.tsx (search `renderPage`)
|
|
74
|
+
*/
|
|
75
|
+
declare function runDocumentRenderPage(input: DocumentRenderPageInput): Promise<RunDocumentRenderPageResult>;
|
|
76
|
+
//#endregion
|
|
77
|
+
export { RenderPageEnhancers, loadUserDocumentInitialProps, runDocumentRenderPage };
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { withScriptNonce } from "../shims/script-nonce-context.js";
|
|
2
|
+
import Document from "../shims/document.js";
|
|
3
|
+
import { readStreamAsText } from "../utils/text-stream.js";
|
|
4
|
+
import React from "react";
|
|
5
|
+
//#region src/server/pages-document-initial-props.ts
|
|
6
|
+
/**
|
|
7
|
+
* Pages Router `_document.tsx` `getInitialProps` helper.
|
|
8
|
+
*
|
|
9
|
+
* Next.js's `pages/_document.tsx` may override
|
|
10
|
+
* `static async getInitialProps(ctx)` to inject extra props onto the
|
|
11
|
+
* Document element (the classic pattern is
|
|
12
|
+
* `await Document.getInitialProps(ctx)` + spread, see Next.js's
|
|
13
|
+
* `test/e2e/async-modules/pages/_document.jsx`). The SSR pipeline invokes
|
|
14
|
+
* that hook and then renders the Document with the resolved props:
|
|
15
|
+
*
|
|
16
|
+
* <Document {...htmlProps} {...docProps} />
|
|
17
|
+
*
|
|
18
|
+
* Reference:
|
|
19
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/server/render.tsx
|
|
20
|
+
* (search for `loadDocumentInitialProps` and `documentElement`).
|
|
21
|
+
*
|
|
22
|
+
* `runDocumentRenderPage()` supplies `renderPage`, `defaultGetInitialProps`,
|
|
23
|
+
* and the request pathname/query/asPath fields needed by the common upstream
|
|
24
|
+
* pattern:
|
|
25
|
+
*
|
|
26
|
+
* static async getInitialProps(ctx) {
|
|
27
|
+
* const initialProps = await Document.getInitialProps(ctx)
|
|
28
|
+
* return { ...initialProps, docValue }
|
|
29
|
+
* }
|
|
30
|
+
*
|
|
31
|
+
* The standalone `loadUserDocumentInitialProps()` compatibility path supplies
|
|
32
|
+
* an empty default render result because it is only used after the body has
|
|
33
|
+
* already been produced. Request-only fields such as req/res remain outside
|
|
34
|
+
* that compatibility helper.
|
|
35
|
+
*
|
|
36
|
+
* Returns `null` when the user did not override the base shim (the static
|
|
37
|
+
* `getInitialProps` reference still points at the shim's stub) so callers
|
|
38
|
+
* skip the spread and render the bare Document element on the fast path.
|
|
39
|
+
*
|
|
40
|
+
* Errors from a user `getInitialProps` propagate to the caller. Next.js's
|
|
41
|
+
* `loadGetInitialProps` does not catch — a throw becomes a 500 — and vinext
|
|
42
|
+
* matches that contract so user bugs surface as the loud failures Next.js
|
|
43
|
+
* apps already debug against.
|
|
44
|
+
*/
|
|
45
|
+
const BASE_GET_INITIAL_PROPS = Document.getInitialProps;
|
|
46
|
+
async function loadUserDocumentInitialProps(DocumentComponent) {
|
|
47
|
+
const getInitialProps = DocumentComponent.getInitialProps;
|
|
48
|
+
if (typeof getInitialProps !== "function") return null;
|
|
49
|
+
if (getInitialProps === BASE_GET_INITIAL_PROPS) return null;
|
|
50
|
+
const result = await getInitialProps({ defaultGetInitialProps: async () => ({ html: "" }) });
|
|
51
|
+
return result && typeof result === "object" ? result : null;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Run a user `_document.getInitialProps()` with a `ctx.renderPage()` that
|
|
55
|
+
* applies optional `enhanceApp` / `enhanceComponent` wrappers around the page
|
|
56
|
+
* React tree, mirroring Next.js's Pages Router contract.
|
|
57
|
+
*
|
|
58
|
+
* Used by CSS-in-JS libraries (styled-components, emotion) to wrap the
|
|
59
|
+
* App/Component tree so styles can be collected during SSR. Shared between the
|
|
60
|
+
* prod (`pages-page-response.ts`) and dev (`dev-server.ts`) SSR pipelines so
|
|
61
|
+
* the `getInitialProps` + `renderPage` contract lives in one place.
|
|
62
|
+
*
|
|
63
|
+
* `getInitialProps` is invoked at most once here. When this returns `rendered`,
|
|
64
|
+
* callers MUST treat that as the single invocation and must not call
|
|
65
|
+
* `loadUserDocumentInitialProps` again. Errors intentionally propagate to the
|
|
66
|
+
* Pages Router's normal error-page pipeline, matching Next.js.
|
|
67
|
+
*
|
|
68
|
+
* @see .nextjs-ref/packages/next/src/server/render.tsx (search `renderPage`)
|
|
69
|
+
*/
|
|
70
|
+
async function runDocumentRenderPage(input) {
|
|
71
|
+
const DocCtor = input.DocumentComponent;
|
|
72
|
+
if (!DocCtor || typeof DocCtor.getInitialProps !== "function") return { status: "skipped" };
|
|
73
|
+
if (DocCtor.getInitialProps === BASE_GET_INITIAL_PROPS) return { status: "skipped" };
|
|
74
|
+
if (!input.enhancePageElement) return { status: "skipped" };
|
|
75
|
+
const enhancePageElement = input.enhancePageElement;
|
|
76
|
+
const renderPage = async (opts = {}) => {
|
|
77
|
+
const wrapped = withScriptNonce(enhancePageElement(typeof opts === "function" ? { enhanceComponent: opts } : opts), input.scriptNonce);
|
|
78
|
+
return {
|
|
79
|
+
html: await readStreamAsText(await input.renderToReadableStream(wrapped)),
|
|
80
|
+
head: []
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
const docInitialProps = await DocCtor.getInitialProps({
|
|
84
|
+
renderPage,
|
|
85
|
+
defaultGetInitialProps: async (ctx) => {
|
|
86
|
+
const result = await ctx.renderPage({ enhanceApp: (App) => (props) => React.createElement(App, props) });
|
|
87
|
+
return {
|
|
88
|
+
html: result.html,
|
|
89
|
+
head: result.head ?? [],
|
|
90
|
+
styles: void 0
|
|
91
|
+
};
|
|
92
|
+
},
|
|
93
|
+
...input.context
|
|
94
|
+
});
|
|
95
|
+
const { html: _html, head: rawHead, styles: _styles, ...docProps } = docInitialProps ?? {};
|
|
96
|
+
const head = Array.isArray(rawHead) ? rawHead : [];
|
|
97
|
+
if (!docInitialProps || typeof docInitialProps.html !== "string") throw new Error(`"${DocCtor.displayName ?? DocCtor.name ?? "Document"}.getInitialProps()" should resolve to an object with a "html" prop set with a valid html string`);
|
|
98
|
+
let stylesHTML = "";
|
|
99
|
+
if (docInitialProps.styles != null) stylesHTML = await input.renderStylesToString(React.createElement(React.Fragment, null, docInitialProps.styles));
|
|
100
|
+
return {
|
|
101
|
+
status: "rendered",
|
|
102
|
+
bodyHtml: docInitialProps.html,
|
|
103
|
+
stylesHTML,
|
|
104
|
+
docProps,
|
|
105
|
+
head
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
//#endregion
|
|
109
|
+
export { loadUserDocumentInitialProps, runDocumentRenderPage };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
//#region src/server/pages-get-initial-props.d.ts
|
|
2
|
+
type PagesGetInitialPropsContext = {
|
|
3
|
+
req?: unknown;
|
|
4
|
+
res?: unknown;
|
|
5
|
+
err?: unknown;
|
|
6
|
+
pathname?: string;
|
|
7
|
+
query?: Record<string, unknown>;
|
|
8
|
+
asPath?: string;
|
|
9
|
+
locale?: string;
|
|
10
|
+
locales?: string[];
|
|
11
|
+
defaultLocale?: string;
|
|
12
|
+
} & Record<string, unknown>;
|
|
13
|
+
declare function hasPagesGetInitialProps(component: unknown): boolean;
|
|
14
|
+
declare function isResponseSent(res: unknown): boolean;
|
|
15
|
+
declare function loadPagesGetInitialProps(component: unknown, context: PagesGetInitialPropsContext): Promise<Record<string, unknown> | null>;
|
|
16
|
+
/**
|
|
17
|
+
* Decision returned by {@link loadDevAppInitialProps}.
|
|
18
|
+
*
|
|
19
|
+
* - `skip`: the custom `App` has no `getInitialProps`; the caller renders with
|
|
20
|
+
* its existing props unchanged.
|
|
21
|
+
* - `response-sent`: `_app.getInitialProps` ended the response itself (wrote
|
|
22
|
+
* headers / body); the caller must stop and not render.
|
|
23
|
+
* - `render`: the caller should render with the returned `pageProps` /
|
|
24
|
+
* `renderProps`.
|
|
25
|
+
*/
|
|
26
|
+
type DevAppInitialPropsResult = {
|
|
27
|
+
kind: "skip";
|
|
28
|
+
} | {
|
|
29
|
+
kind: "response-sent";
|
|
30
|
+
} | {
|
|
31
|
+
kind: "render";
|
|
32
|
+
pageProps: Record<string, unknown>;
|
|
33
|
+
renderProps: Record<string, unknown> & {
|
|
34
|
+
pageProps: unknown;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
type DevAppInitialPropsContext = {
|
|
38
|
+
appComponent: unknown;
|
|
39
|
+
/**
|
|
40
|
+
* Builds the `AppTree` element passed to `getInitialProps`. Injected so this
|
|
41
|
+
* module stays free of React; the dev SSR handler supplies the real
|
|
42
|
+
* `React.createElement` closure.
|
|
43
|
+
*/
|
|
44
|
+
appTree: (appTreeProps: Record<string, unknown>) => unknown;
|
|
45
|
+
component: unknown;
|
|
46
|
+
req: unknown;
|
|
47
|
+
res: unknown;
|
|
48
|
+
pathname: string;
|
|
49
|
+
query: Record<string, unknown>;
|
|
50
|
+
asPath: string;
|
|
51
|
+
locale?: string;
|
|
52
|
+
locales?: string[];
|
|
53
|
+
defaultLocale?: string;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Run the custom `App`'s `getInitialProps` for the dev SSR render path and
|
|
57
|
+
* return a decision the caller applies.
|
|
58
|
+
*
|
|
59
|
+
* This is the dev-server counterpart to the production page-data resolver's
|
|
60
|
+
* app-initial-props loading. It is invoked lazily — only when a request is
|
|
61
|
+
* actually going to render (cache miss / on-demand revalidation), never on an
|
|
62
|
+
* ISR cache HIT/STALE that serves cached HTML verbatim — so userland `App`
|
|
63
|
+
* data code does not run on the cache hot path.
|
|
64
|
+
*/
|
|
65
|
+
declare function loadDevAppInitialProps(ctx: DevAppInitialPropsContext): Promise<DevAppInitialPropsResult>;
|
|
66
|
+
//#endregion
|
|
67
|
+
export { DevAppInitialPropsContext, DevAppInitialPropsResult, hasPagesGetInitialProps, isResponseSent, loadDevAppInitialProps, loadPagesGetInitialProps };
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
//#region src/server/pages-get-initial-props.ts
|
|
2
|
+
function isObjectLike(value) {
|
|
3
|
+
return typeof value === "object" && value !== null || typeof value === "function";
|
|
4
|
+
}
|
|
5
|
+
function isPagesGetInitialProps(value) {
|
|
6
|
+
return typeof value === "function";
|
|
7
|
+
}
|
|
8
|
+
function getObjectProperty(target, property) {
|
|
9
|
+
if (!isObjectLike(target)) return void 0;
|
|
10
|
+
return Reflect.get(target, property);
|
|
11
|
+
}
|
|
12
|
+
function getDisplayName(component) {
|
|
13
|
+
const displayName = getObjectProperty(component, "displayName");
|
|
14
|
+
if (typeof displayName === "string" && displayName.length > 0) return displayName;
|
|
15
|
+
const name = getObjectProperty(component, "name");
|
|
16
|
+
if (typeof name === "string" && name.length > 0) return name;
|
|
17
|
+
return "Component";
|
|
18
|
+
}
|
|
19
|
+
function getInitialPropsFn(component) {
|
|
20
|
+
const getInitialProps = getObjectProperty(component, "getInitialProps");
|
|
21
|
+
return isPagesGetInitialProps(getInitialProps) ? getInitialProps : null;
|
|
22
|
+
}
|
|
23
|
+
function hasPagesGetInitialProps(component) {
|
|
24
|
+
return getInitialPropsFn(component) !== null;
|
|
25
|
+
}
|
|
26
|
+
function isResponseSent(res) {
|
|
27
|
+
return getObjectProperty(res, "headersSent") === true || getObjectProperty(res, "writableEnded") === true;
|
|
28
|
+
}
|
|
29
|
+
function isPropsObject(value) {
|
|
30
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
31
|
+
}
|
|
32
|
+
function describeInitialPropsValue(value) {
|
|
33
|
+
if (value === void 0) return "undefined";
|
|
34
|
+
if (value === null) return "null";
|
|
35
|
+
if (typeof value === "string") return value;
|
|
36
|
+
if (typeof value === "number" || typeof value === "boolean" || typeof value === "bigint") return `${value}`;
|
|
37
|
+
if (typeof value === "symbol") return value.description ? `Symbol(${value.description})` : "Symbol()";
|
|
38
|
+
if (typeof value === "function") return `[function ${getDisplayName(value)}]`;
|
|
39
|
+
return Object.prototype.toString.call(value);
|
|
40
|
+
}
|
|
41
|
+
async function loadPagesGetInitialProps(component, context) {
|
|
42
|
+
const getInitialProps = getInitialPropsFn(component);
|
|
43
|
+
if (!getInitialProps) return null;
|
|
44
|
+
const result = await Promise.resolve(getInitialProps.call(component, context));
|
|
45
|
+
if (isResponseSent(context.res)) return isPropsObject(result) ? result : {};
|
|
46
|
+
if (!isPropsObject(result)) throw new Error(`"${getDisplayName(component)}.getInitialProps()" should resolve to an object. But found "${describeInitialPropsValue(result)}" instead.`);
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Run the custom `App`'s `getInitialProps` for the dev SSR render path and
|
|
51
|
+
* return a decision the caller applies.
|
|
52
|
+
*
|
|
53
|
+
* This is the dev-server counterpart to the production page-data resolver's
|
|
54
|
+
* app-initial-props loading. It is invoked lazily — only when a request is
|
|
55
|
+
* actually going to render (cache miss / on-demand revalidation), never on an
|
|
56
|
+
* ISR cache HIT/STALE that serves cached HTML verbatim — so userland `App`
|
|
57
|
+
* data code does not run on the cache hot path.
|
|
58
|
+
*/
|
|
59
|
+
async function loadDevAppInitialProps(ctx) {
|
|
60
|
+
if (!hasPagesGetInitialProps(ctx.appComponent)) return { kind: "skip" };
|
|
61
|
+
const initialProps = await loadPagesGetInitialProps(ctx.appComponent, {
|
|
62
|
+
AppTree: ctx.appTree,
|
|
63
|
+
Component: ctx.component,
|
|
64
|
+
router: {
|
|
65
|
+
pathname: ctx.pathname,
|
|
66
|
+
query: ctx.query,
|
|
67
|
+
asPath: ctx.asPath
|
|
68
|
+
},
|
|
69
|
+
ctx: {
|
|
70
|
+
req: ctx.req,
|
|
71
|
+
res: ctx.res,
|
|
72
|
+
pathname: ctx.pathname,
|
|
73
|
+
query: ctx.query,
|
|
74
|
+
asPath: ctx.asPath,
|
|
75
|
+
locale: ctx.locale,
|
|
76
|
+
locales: ctx.locales,
|
|
77
|
+
defaultLocale: ctx.defaultLocale
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
if (isResponseSent(ctx.res)) return { kind: "response-sent" };
|
|
81
|
+
const initialPageProps = isPropsObject(initialProps) ? initialProps.pageProps : void 0;
|
|
82
|
+
return {
|
|
83
|
+
kind: "render",
|
|
84
|
+
pageProps: isPropsObject(initialPageProps) ? initialPageProps : {},
|
|
85
|
+
renderProps: isPropsObject(initialProps) ? {
|
|
86
|
+
...initialProps,
|
|
87
|
+
pageProps: initialPageProps
|
|
88
|
+
} : { pageProps: initialPageProps }
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
//#endregion
|
|
92
|
+
export { hasPagesGetInitialProps, isResponseSent, loadDevAppInitialProps, loadPagesGetInitialProps };
|