vinext 0.0.30 → 0.0.31
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 +12 -6
- package/dist/build/prerender.d.ts +188 -0
- package/dist/build/prerender.js +675 -0
- package/dist/build/prerender.js.map +1 -0
- package/dist/build/report.d.ts +45 -46
- package/dist/build/report.js +247 -276
- package/dist/build/report.js.map +1 -1
- package/dist/build/run-prerender.d.ts +62 -0
- package/dist/build/run-prerender.js +183 -0
- package/dist/build/run-prerender.js.map +1 -0
- package/dist/build/server-manifest.d.ts +19 -0
- package/dist/build/server-manifest.js +29 -0
- package/dist/build/server-manifest.js.map +1 -0
- package/dist/build/static-export.d.ts +51 -66
- package/dist/build/static-export.js +51 -545
- package/dist/build/static-export.js.map +1 -1
- package/dist/check.d.ts +26 -24
- package/dist/check.js +591 -571
- package/dist/check.js.map +1 -1
- package/dist/cli.d.ts +1 -15
- package/dist/cli.js +430 -491
- package/dist/cli.js.map +1 -1
- package/dist/client/entry.d.ts +1 -2
- package/dist/client/entry.js +49 -62
- package/dist/client/entry.js.map +1 -1
- package/dist/client/validate-module-path.d.ts +4 -1
- package/dist/client/validate-module-path.js +23 -28
- package/dist/client/validate-module-path.js.map +1 -1
- package/dist/client/vinext-next-data.d.ts +15 -20
- package/dist/client/vinext-next-data.js +0 -1
- package/dist/cloudflare/index.d.ts +3 -8
- package/dist/cloudflare/index.js +3 -8
- package/dist/cloudflare/kv-cache-handler.d.ts +95 -105
- package/dist/cloudflare/kv-cache-handler.js +354 -380
- package/dist/cloudflare/kv-cache-handler.js.map +1 -1
- package/dist/cloudflare/tpr.d.ts +36 -34
- package/dist/cloudflare/tpr.js +460 -603
- package/dist/cloudflare/tpr.js.map +1 -1
- package/dist/config/config-matchers.d.ts +31 -40
- package/dist/config/config-matchers.js +727 -936
- package/dist/config/config-matchers.js.map +1 -1
- package/dist/config/dotenv.d.ts +18 -11
- package/dist/config/dotenv.js +79 -84
- package/dist/config/dotenv.js.map +1 -1
- package/dist/config/next-config.d.ts +156 -146
- package/dist/config/next-config.js +374 -464
- package/dist/config/next-config.js.map +1 -1
- package/dist/deploy.d.ts +87 -96
- package/dist/deploy.js +490 -628
- package/dist/deploy.js.map +1 -1
- package/dist/entries/app-browser-entry.d.ts +4 -1
- package/dist/entries/app-browser-entry.js +12 -8
- package/dist/entries/app-browser-entry.js.map +1 -1
- package/dist/entries/app-rsc-entry.d.ts +33 -20
- package/dist/entries/app-rsc-entry.js +442 -211
- package/dist/entries/app-rsc-entry.js.map +1 -1
- package/dist/entries/app-ssr-entry.d.ts +9 -1
- package/dist/entries/app-ssr-entry.js +61 -28
- package/dist/entries/app-ssr-entry.js.map +1 -1
- package/dist/entries/pages-client-entry.d.ts +6 -2
- package/dist/entries/pages-client-entry.js +30 -33
- package/dist/entries/pages-client-entry.js.map +1 -1
- package/dist/entries/pages-entry-helpers.d.ts +5 -1
- package/dist/entries/pages-entry-helpers.js +17 -14
- package/dist/entries/pages-entry-helpers.js.map +1 -1
- package/dist/entries/pages-server-entry.d.ts +6 -2
- package/dist/entries/pages-server-entry.js +84 -113
- package/dist/entries/pages-server-entry.js.map +1 -1
- package/dist/index.d.ts +82 -62
- package/dist/index.js +2172 -3133
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +40 -37
- package/dist/init.js +201 -258
- package/dist/init.js.map +1 -1
- package/dist/plugins/async-hooks-stub.d.ts +7 -3
- package/dist/plugins/async-hooks-stub.js +39 -42
- package/dist/plugins/async-hooks-stub.js.map +1 -1
- package/dist/plugins/client-reference-dedup.d.ts +7 -3
- package/dist/plugins/client-reference-dedup.js +63 -88
- package/dist/plugins/client-reference-dedup.js.map +1 -1
- package/dist/routing/app-router.d.ts +100 -96
- package/dist/routing/app-router.js +560 -670
- package/dist/routing/app-router.js.map +1 -1
- package/dist/routing/file-matcher.d.ts +18 -15
- package/dist/routing/file-matcher.js +65 -65
- package/dist/routing/file-matcher.js.map +1 -1
- package/dist/routing/pages-router.d.ts +23 -24
- package/dist/routing/pages-router.js +147 -172
- package/dist/routing/pages-router.js.map +1 -1
- package/dist/routing/route-trie.d.ts +23 -20
- package/dist/routing/route-trie.js +131 -151
- package/dist/routing/route-trie.js.map +1 -1
- package/dist/routing/route-validation.d.ts +5 -2
- package/dist/routing/route-validation.js +98 -130
- package/dist/routing/route-validation.js.map +1 -1
- package/dist/routing/utils.d.ts +10 -7
- package/dist/routing/utils.js +75 -111
- package/dist/routing/utils.js.map +1 -1
- package/dist/server/api-handler.d.ts +8 -13
- package/dist/server/api-handler.js +161 -193
- package/dist/server/api-handler.js.map +1 -1
- package/dist/server/app-router-entry.d.ts +6 -16
- package/dist/server/app-router-entry.js +26 -54
- package/dist/server/app-router-entry.js.map +1 -1
- package/dist/server/dev-module-runner.d.ts +11 -64
- package/dist/server/dev-module-runner.js +89 -101
- package/dist/server/dev-module-runner.js.map +1 -1
- package/dist/server/dev-origin-check.d.ts +12 -10
- package/dist/server/dev-origin-check.js +98 -108
- package/dist/server/dev-origin-check.js.map +1 -1
- package/dist/server/dev-server.d.ts +17 -14
- package/dist/server/dev-server.js +542 -869
- package/dist/server/dev-server.js.map +1 -1
- package/dist/server/html.d.ts +4 -1
- package/dist/server/html.js +25 -26
- package/dist/server/html.js.map +1 -1
- package/dist/server/image-optimization.d.ts +31 -28
- package/dist/server/image-optimization.js +181 -210
- package/dist/server/image-optimization.js.map +1 -1
- package/dist/server/instrumentation.d.ts +25 -22
- package/dist/server/instrumentation.js +110 -122
- package/dist/server/instrumentation.js.map +1 -1
- package/dist/server/isr-cache.d.ts +16 -26
- package/dist/server/isr-cache.js +106 -128
- package/dist/server/isr-cache.js.map +1 -1
- package/dist/server/metadata-routes.d.ts +85 -88
- package/dist/server/metadata-routes.js +270 -317
- package/dist/server/metadata-routes.js.map +1 -1
- package/dist/server/middleware-codegen.d.ts +7 -4
- package/dist/server/middleware-codegen.js +61 -61
- package/dist/server/middleware-codegen.js.map +1 -1
- package/dist/server/middleware-request-headers.d.ts +8 -6
- package/dist/server/middleware-request-headers.js +47 -65
- package/dist/server/middleware-request-headers.js.map +1 -1
- package/dist/server/middleware.d.ts +31 -47
- package/dist/server/middleware.js +273 -404
- package/dist/server/middleware.js.map +1 -1
- package/dist/server/normalize-path.d.ts +4 -1
- package/dist/server/normalize-path.js +33 -47
- package/dist/server/normalize-path.js.map +1 -1
- package/dist/server/pages-i18n.d.ts +38 -30
- package/dist/server/pages-i18n.js +112 -139
- package/dist/server/pages-i18n.js.map +1 -1
- package/dist/server/prod-server.d.ts +19 -31
- package/dist/server/prod-server.js +714 -945
- package/dist/server/prod-server.js.map +1 -1
- package/dist/server/request-log.d.ts +18 -12
- package/dist/server/request-log.js +45 -52
- package/dist/server/request-log.js.map +1 -1
- package/dist/server/request-pipeline.d.ts +9 -17
- package/dist/server/request-pipeline.js +133 -184
- package/dist/server/request-pipeline.js.map +1 -1
- package/dist/server/worker-utils.d.ts +4 -1
- package/dist/server/worker-utils.js +31 -37
- package/dist/server/worker-utils.js.map +1 -1
- package/dist/shims/amp.d.ts +5 -2
- package/dist/shims/amp.js +19 -15
- package/dist/shims/amp.js.map +1 -1
- package/dist/shims/app.d.ts +8 -10
- package/dist/shims/app.js +0 -1
- package/dist/shims/cache-runtime.d.ts +20 -45
- package/dist/shims/cache-runtime.js +271 -422
- package/dist/shims/cache-runtime.js.map +1 -1
- package/dist/shims/cache.d.ts +130 -121
- package/dist/shims/cache.js +339 -427
- package/dist/shims/cache.js.map +1 -1
- package/dist/shims/client-only.d.ts +1 -18
- package/dist/shims/client-only.js +0 -17
- package/dist/shims/compat-router.d.ts +4 -1
- package/dist/shims/compat-router.js +23 -19
- package/dist/shims/compat-router.js.map +1 -1
- package/dist/shims/config.d.ts +7 -5
- package/dist/shims/config.js +16 -23
- package/dist/shims/config.js.map +1 -1
- package/dist/shims/constants.d.ts +119 -118
- package/dist/shims/constants.js +159 -164
- package/dist/shims/constants.js.map +1 -1
- package/dist/shims/document.d.ts +20 -16
- package/dist/shims/document.js +41 -22
- package/dist/shims/document.js.map +1 -1
- package/dist/shims/dynamic.d.ts +13 -22
- package/dist/shims/dynamic.js +122 -136
- package/dist/shims/dynamic.js.map +1 -1
- package/dist/shims/error-boundary.d.ts +22 -15
- package/dist/shims/error-boundary.js +81 -79
- package/dist/shims/error-boundary.js.map +1 -1
- package/dist/shims/error.d.ts +11 -12
- package/dist/shims/error.js +35 -39
- package/dist/shims/error.js.map +1 -1
- package/dist/shims/fetch-cache.d.ts +16 -14
- package/dist/shims/fetch-cache.js +437 -645
- package/dist/shims/fetch-cache.js.map +1 -1
- package/dist/shims/font-google-base.d.ts +28 -26
- package/dist/shims/font-google-base.js +238 -325
- package/dist/shims/font-google-base.js.map +1 -1
- package/dist/shims/font-google.d.ts +3 -3
- package/dist/shims/font-google.generated.d.ts +1928 -1924
- package/dist/shims/font-google.generated.js +1928 -2133
- package/dist/shims/font-google.generated.js.map +1 -1
- package/dist/shims/font-google.js +3 -3
- package/dist/shims/font-local.d.ts +28 -26
- package/dist/shims/font-local.js +204 -260
- package/dist/shims/font-local.js.map +1 -1
- package/dist/shims/form.d.ts +13 -27
- package/dist/shims/form.js +128 -180
- package/dist/shims/form.js.map +1 -1
- package/dist/shims/head-state.d.ts +8 -13
- package/dist/shims/head-state.js +25 -42
- package/dist/shims/head-state.js.map +1 -1
- package/dist/shims/head.d.ts +16 -20
- package/dist/shims/head.js +172 -250
- package/dist/shims/head.js.map +1 -1
- package/dist/shims/headers.d.ts +84 -78
- package/dist/shims/headers.js +447 -575
- package/dist/shims/headers.js.map +1 -1
- package/dist/shims/i18n-context.d.ts +16 -20
- package/dist/shims/i18n-context.js +35 -48
- package/dist/shims/i18n-context.js.map +1 -1
- package/dist/shims/i18n-state.d.ts +8 -14
- package/dist/shims/i18n-state.js +34 -42
- package/dist/shims/i18n-state.js.map +1 -1
- package/dist/shims/image-config.d.ts +11 -8
- package/dist/shims/image-config.js +50 -83
- package/dist/shims/image-config.js.map +1 -1
- package/dist/shims/image.d.ts +37 -46
- package/dist/shims/image.js +283 -308
- package/dist/shims/image.js.map +1 -1
- package/dist/shims/internal/api-utils.d.ts +7 -4
- package/dist/shims/internal/api-utils.js +0 -6
- package/dist/shims/internal/app-router-context.d.ts +22 -17
- package/dist/shims/internal/app-router-context.js +17 -13
- package/dist/shims/internal/app-router-context.js.map +1 -1
- package/dist/shims/internal/cookies.d.ts +2 -9
- package/dist/shims/internal/cookies.js +2 -9
- package/dist/shims/internal/parse-cookie-header.d.ts +4 -1
- package/dist/shims/internal/parse-cookie-header.js +29 -29
- package/dist/shims/internal/parse-cookie-header.js.map +1 -1
- package/dist/shims/internal/router-context.d.ts +6 -1
- package/dist/shims/internal/router-context.js +11 -7
- package/dist/shims/internal/router-context.js.map +1 -1
- package/dist/shims/internal/utils.d.ts +40 -37
- package/dist/shims/internal/utils.js +24 -30
- package/dist/shims/internal/utils.js.map +1 -1
- package/dist/shims/internal/work-unit-async-storage.d.ts +6 -10
- package/dist/shims/internal/work-unit-async-storage.js +14 -11
- package/dist/shims/internal/work-unit-async-storage.js.map +1 -1
- package/dist/shims/layout-segment-context.d.ts +11 -14
- package/dist/shims/layout-segment-context.js +24 -23
- package/dist/shims/layout-segment-context.js.map +1 -1
- package/dist/shims/legacy-image.d.ts +39 -46
- package/dist/shims/legacy-image.js +47 -42
- package/dist/shims/legacy-image.js.map +1 -1
- package/dist/shims/link.d.ts +32 -36
- package/dist/shims/link.js +255 -391
- package/dist/shims/link.js.map +1 -1
- package/dist/shims/metadata.d.ts +210 -202
- package/dist/shims/metadata.js +545 -546
- package/dist/shims/metadata.js.map +1 -1
- package/dist/shims/navigation-state.d.ts +10 -18
- package/dist/shims/navigation-state.js +66 -74
- package/dist/shims/navigation-state.js.map +1 -1
- package/dist/shims/navigation.d.ts +59 -63
- package/dist/shims/navigation.js +505 -704
- package/dist/shims/navigation.js.map +1 -1
- package/dist/shims/og.d.ts +2 -20
- package/dist/shims/og.js +2 -19
- package/dist/shims/readonly-url-search-params.d.ts +8 -5
- package/dist/shims/readonly-url-search-params.js +26 -22
- package/dist/shims/readonly-url-search-params.js.map +1 -1
- package/dist/shims/request-context.d.ts +8 -5
- package/dist/shims/request-context.js +50 -60
- package/dist/shims/request-context.js.map +1 -1
- package/dist/shims/request-state-types.d.ts +11 -11
- package/dist/shims/request-state-types.js +0 -1
- package/dist/shims/router-state.d.ts +13 -10
- package/dist/shims/router-state.js +34 -43
- package/dist/shims/router-state.js.map +1 -1
- package/dist/shims/router.d.ts +81 -85
- package/dist/shims/router.js +506 -628
- package/dist/shims/router.js.map +1 -1
- package/dist/shims/script.d.ts +39 -48
- package/dist/shims/script.js +107 -160
- package/dist/shims/script.js.map +1 -1
- package/dist/shims/server-only.d.ts +1 -19
- package/dist/shims/server-only.js +0 -18
- package/dist/shims/server.d.ts +175 -164
- package/dist/shims/server.js +462 -478
- package/dist/shims/server.js.map +1 -1
- package/dist/shims/unified-request-context.d.ts +20 -20
- package/dist/shims/unified-request-context.js +81 -99
- package/dist/shims/unified-request-context.js.map +1 -1
- package/dist/shims/url-safety.d.ts +4 -1
- package/dist/shims/url-safety.js +15 -11
- package/dist/shims/url-safety.js.map +1 -1
- package/dist/shims/url-utils.d.ts +8 -5
- package/dist/shims/url-utils.js +62 -93
- package/dist/shims/url-utils.js.map +1 -1
- package/dist/shims/web-vitals.d.ts +10 -8
- package/dist/shims/web-vitals.js +9 -15
- package/dist/shims/web-vitals.js.map +1 -1
- package/dist/utils/base-path.d.ts +5 -2
- package/dist/utils/base-path.js +21 -19
- package/dist/utils/base-path.js.map +1 -1
- package/dist/utils/domain-locale.d.ts +17 -9
- package/dist/utils/domain-locale.js +36 -56
- package/dist/utils/domain-locale.js.map +1 -1
- package/dist/utils/hash.d.ts +4 -1
- package/dist/utils/hash.js +19 -17
- package/dist/utils/hash.js.map +1 -1
- package/dist/utils/manifest-paths.d.ts +6 -3
- package/dist/utils/manifest-paths.js +15 -16
- package/dist/utils/manifest-paths.js.map +1 -1
- package/dist/utils/project.d.ts +13 -11
- package/dist/utils/project.js +169 -216
- package/dist/utils/project.js.map +1 -1
- package/dist/utils/query.d.ts +8 -6
- package/dist/utils/query.js +57 -67
- package/dist/utils/query.js.map +1 -1
- package/package.json +10 -9
- package/dist/build/report.d.ts.map +0 -1
- package/dist/build/static-export.d.ts.map +0 -1
- package/dist/check.d.ts.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/client/entry.d.ts.map +0 -1
- package/dist/client/validate-module-path.d.ts.map +0 -1
- package/dist/client/vinext-next-data.d.ts.map +0 -1
- package/dist/client/vinext-next-data.js.map +0 -1
- package/dist/cloudflare/index.d.ts.map +0 -1
- package/dist/cloudflare/index.js.map +0 -1
- package/dist/cloudflare/kv-cache-handler.d.ts.map +0 -1
- package/dist/cloudflare/tpr.d.ts.map +0 -1
- package/dist/config/config-matchers.d.ts.map +0 -1
- package/dist/config/dotenv.d.ts.map +0 -1
- package/dist/config/next-config.d.ts.map +0 -1
- package/dist/deploy.d.ts.map +0 -1
- package/dist/entries/app-browser-entry.d.ts.map +0 -1
- package/dist/entries/app-rsc-entry.d.ts.map +0 -1
- package/dist/entries/app-ssr-entry.d.ts.map +0 -1
- package/dist/entries/pages-client-entry.d.ts.map +0 -1
- package/dist/entries/pages-entry-helpers.d.ts.map +0 -1
- package/dist/entries/pages-server-entry.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/init.d.ts.map +0 -1
- package/dist/plugins/async-hooks-stub.d.ts.map +0 -1
- package/dist/plugins/client-reference-dedup.d.ts.map +0 -1
- package/dist/routing/app-router.d.ts.map +0 -1
- package/dist/routing/file-matcher.d.ts.map +0 -1
- package/dist/routing/pages-router.d.ts.map +0 -1
- package/dist/routing/route-trie.d.ts.map +0 -1
- package/dist/routing/route-validation.d.ts.map +0 -1
- package/dist/routing/utils.d.ts.map +0 -1
- package/dist/server/api-handler.d.ts.map +0 -1
- package/dist/server/app-router-entry.d.ts.map +0 -1
- package/dist/server/dev-module-runner.d.ts.map +0 -1
- package/dist/server/dev-origin-check.d.ts.map +0 -1
- package/dist/server/dev-server.d.ts.map +0 -1
- package/dist/server/html.d.ts.map +0 -1
- package/dist/server/image-optimization.d.ts.map +0 -1
- package/dist/server/instrumentation.d.ts.map +0 -1
- package/dist/server/isr-cache.d.ts.map +0 -1
- package/dist/server/metadata-routes.d.ts.map +0 -1
- package/dist/server/middleware-codegen.d.ts.map +0 -1
- package/dist/server/middleware-request-headers.d.ts.map +0 -1
- package/dist/server/middleware.d.ts.map +0 -1
- package/dist/server/normalize-path.d.ts.map +0 -1
- package/dist/server/pages-i18n.d.ts.map +0 -1
- package/dist/server/prod-server.d.ts.map +0 -1
- package/dist/server/request-log.d.ts.map +0 -1
- package/dist/server/request-pipeline.d.ts.map +0 -1
- package/dist/server/worker-utils.d.ts.map +0 -1
- package/dist/shims/amp.d.ts.map +0 -1
- package/dist/shims/app.d.ts.map +0 -1
- package/dist/shims/app.js.map +0 -1
- package/dist/shims/cache-runtime.d.ts.map +0 -1
- package/dist/shims/cache.d.ts.map +0 -1
- package/dist/shims/client-only.d.ts.map +0 -1
- package/dist/shims/client-only.js.map +0 -1
- package/dist/shims/compat-router.d.ts.map +0 -1
- package/dist/shims/config.d.ts.map +0 -1
- package/dist/shims/constants.d.ts.map +0 -1
- package/dist/shims/document.d.ts.map +0 -1
- package/dist/shims/dynamic.d.ts.map +0 -1
- package/dist/shims/error-boundary.d.ts.map +0 -1
- package/dist/shims/error.d.ts.map +0 -1
- package/dist/shims/fetch-cache.d.ts.map +0 -1
- package/dist/shims/font-google-base.d.ts.map +0 -1
- package/dist/shims/font-google.d.ts.map +0 -1
- package/dist/shims/font-google.generated.d.ts.map +0 -1
- package/dist/shims/font-google.js.map +0 -1
- package/dist/shims/font-local.d.ts.map +0 -1
- package/dist/shims/form.d.ts.map +0 -1
- package/dist/shims/head-state.d.ts.map +0 -1
- package/dist/shims/head.d.ts.map +0 -1
- package/dist/shims/headers.d.ts.map +0 -1
- package/dist/shims/i18n-context.d.ts.map +0 -1
- package/dist/shims/i18n-state.d.ts.map +0 -1
- package/dist/shims/image-config.d.ts.map +0 -1
- package/dist/shims/image.d.ts.map +0 -1
- package/dist/shims/internal/api-utils.d.ts.map +0 -1
- package/dist/shims/internal/api-utils.js.map +0 -1
- package/dist/shims/internal/app-router-context.d.ts.map +0 -1
- package/dist/shims/internal/cookies.d.ts.map +0 -1
- package/dist/shims/internal/cookies.js.map +0 -1
- package/dist/shims/internal/parse-cookie-header.d.ts.map +0 -1
- package/dist/shims/internal/router-context.d.ts.map +0 -1
- package/dist/shims/internal/utils.d.ts.map +0 -1
- package/dist/shims/internal/work-unit-async-storage.d.ts.map +0 -1
- package/dist/shims/layout-segment-context.d.ts.map +0 -1
- package/dist/shims/legacy-image.d.ts.map +0 -1
- package/dist/shims/link.d.ts.map +0 -1
- package/dist/shims/metadata.d.ts.map +0 -1
- package/dist/shims/navigation-state.d.ts.map +0 -1
- package/dist/shims/navigation.d.ts.map +0 -1
- package/dist/shims/og.d.ts.map +0 -1
- package/dist/shims/og.js.map +0 -1
- package/dist/shims/readonly-url-search-params.d.ts.map +0 -1
- package/dist/shims/request-context.d.ts.map +0 -1
- package/dist/shims/request-state-types.d.ts.map +0 -1
- package/dist/shims/request-state-types.js.map +0 -1
- package/dist/shims/router-state.d.ts.map +0 -1
- package/dist/shims/router.d.ts.map +0 -1
- package/dist/shims/script.d.ts.map +0 -1
- package/dist/shims/server-only.d.ts.map +0 -1
- package/dist/shims/server-only.js.map +0 -1
- package/dist/shims/server.d.ts.map +0 -1
- package/dist/shims/unified-request-context.d.ts.map +0 -1
- package/dist/shims/url-safety.d.ts.map +0 -1
- package/dist/shims/url-utils.d.ts.map +0 -1
- package/dist/shims/web-vitals.d.ts.map +0 -1
- package/dist/utils/base-path.d.ts.map +0 -1
- package/dist/utils/domain-locale.d.ts.map +0 -1
- package/dist/utils/hash.d.ts.map +0 -1
- package/dist/utils/manifest-paths.d.ts.map +0 -1
- package/dist/utils/project.d.ts.map +0 -1
- package/dist/utils/query.d.ts.map +0 -1
|
@@ -1,551 +1,57 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { escapeAttr } from "../shims/head.js";
|
|
4
|
-
import path from "node:path";
|
|
5
|
-
import fs from "node:fs";
|
|
6
|
-
import React from "react";
|
|
7
|
-
import { renderToReadableStream } from "react-dom/server.edge";
|
|
8
|
-
import { createValidFileMatcher } from "../routing/file-matcher.js";
|
|
9
|
-
function findFileWithExtensions(basePath, matcher) {
|
|
10
|
-
return matcher.dottedExtensions.some((ext) => fs.existsSync(basePath + ext));
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Render a React element to string using renderToReadableStream (Suspense support).
|
|
14
|
-
* Uses Web Streams API — works in Node.js 18+ and Cloudflare Workers.
|
|
15
|
-
*/
|
|
16
|
-
async function renderToStringAsync(element) {
|
|
17
|
-
const stream = await renderToReadableStream(element);
|
|
18
|
-
await stream.allReady;
|
|
19
|
-
return new Response(stream).text();
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Run static export for Pages Router.
|
|
23
|
-
*
|
|
24
|
-
* Creates a directory of static HTML files by rendering each route at build time.
|
|
25
|
-
*/
|
|
26
|
-
export async function staticExportPages(options) {
|
|
27
|
-
const { server, routes, apiRoutes, pagesDir, outDir, config } = options;
|
|
28
|
-
const fileMatcher = createValidFileMatcher(config.pageExtensions);
|
|
29
|
-
const result = {
|
|
30
|
-
pageCount: 0,
|
|
31
|
-
files: [],
|
|
32
|
-
warnings: [],
|
|
33
|
-
errors: [],
|
|
34
|
-
};
|
|
35
|
-
// Ensure output directory exists
|
|
36
|
-
fs.mkdirSync(outDir, { recursive: true });
|
|
37
|
-
// Warn about API routes
|
|
38
|
-
if (apiRoutes.length > 0) {
|
|
39
|
-
result.warnings.push(`${apiRoutes.length} API route(s) skipped — API routes are not supported with output: 'export'`);
|
|
40
|
-
}
|
|
41
|
-
// Gather all pages to render (expand dynamic routes via getStaticPaths)
|
|
42
|
-
const pagesToRender = [];
|
|
43
|
-
for (const route of routes) {
|
|
44
|
-
// Skip internal pages
|
|
45
|
-
const routeName = path.basename(route.filePath, path.extname(route.filePath));
|
|
46
|
-
if (routeName.startsWith("_"))
|
|
47
|
-
continue;
|
|
48
|
-
const pageModule = await server.ssrLoadModule(route.filePath);
|
|
49
|
-
// Validate: getServerSideProps is not allowed with static export
|
|
50
|
-
if (typeof pageModule.getServerSideProps === "function") {
|
|
51
|
-
result.errors.push({
|
|
52
|
-
route: route.pattern,
|
|
53
|
-
error: `Page uses getServerSideProps which is not supported with output: 'export'. Use getStaticProps instead.`,
|
|
54
|
-
});
|
|
55
|
-
continue;
|
|
56
|
-
}
|
|
57
|
-
if (route.isDynamic) {
|
|
58
|
-
// Dynamic route — must have getStaticPaths
|
|
59
|
-
if (typeof pageModule.getStaticPaths !== "function") {
|
|
60
|
-
result.errors.push({
|
|
61
|
-
route: route.pattern,
|
|
62
|
-
error: `Dynamic route requires getStaticPaths with output: 'export'`,
|
|
63
|
-
});
|
|
64
|
-
continue;
|
|
65
|
-
}
|
|
66
|
-
const pathsResult = await pageModule.getStaticPaths({
|
|
67
|
-
locales: [],
|
|
68
|
-
defaultLocale: "",
|
|
69
|
-
});
|
|
70
|
-
const fallback = pathsResult?.fallback ?? false;
|
|
71
|
-
if (fallback !== false) {
|
|
72
|
-
result.errors.push({
|
|
73
|
-
route: route.pattern,
|
|
74
|
-
error: `getStaticPaths must return fallback: false with output: 'export' (got: ${JSON.stringify(fallback)})`,
|
|
75
|
-
});
|
|
76
|
-
continue;
|
|
77
|
-
}
|
|
78
|
-
const paths = pathsResult?.paths ?? [];
|
|
79
|
-
for (const { params } of paths) {
|
|
80
|
-
// Build the URL path from the route pattern and params
|
|
81
|
-
const urlPath = buildUrlFromParams(route.pattern, params);
|
|
82
|
-
pagesToRender.push({ route, urlPath, params });
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
// Static route — render directly
|
|
87
|
-
pagesToRender.push({ route, urlPath: route.pattern, params: {} });
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
// Load shared components (_app, _document, head shim, dynamic shim)
|
|
91
|
-
let AppComponent = null;
|
|
92
|
-
const appPath = path.join(pagesDir, "_app");
|
|
93
|
-
if (findFileWithExtensions(appPath, fileMatcher)) {
|
|
94
|
-
try {
|
|
95
|
-
const appModule = await server.ssrLoadModule(appPath);
|
|
96
|
-
AppComponent = appModule.default ?? null;
|
|
97
|
-
}
|
|
98
|
-
catch {
|
|
99
|
-
// _app exists but failed to load
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
let DocumentComponent = null;
|
|
103
|
-
const docPath = path.join(pagesDir, "_document");
|
|
104
|
-
if (findFileWithExtensions(docPath, fileMatcher)) {
|
|
105
|
-
try {
|
|
106
|
-
const docModule = await server.ssrLoadModule(docPath);
|
|
107
|
-
DocumentComponent = docModule.default ?? null;
|
|
108
|
-
}
|
|
109
|
-
catch {
|
|
110
|
-
// _document exists but failed to load
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
const headShim = await server.ssrLoadModule("next/head");
|
|
114
|
-
const dynamicShim = await server.ssrLoadModule("next/dynamic");
|
|
115
|
-
const routerShim = await server.ssrLoadModule("next/router");
|
|
116
|
-
// Render each page
|
|
117
|
-
for (const { route, urlPath, params } of pagesToRender) {
|
|
118
|
-
try {
|
|
119
|
-
const html = await renderStaticPage({
|
|
120
|
-
server,
|
|
121
|
-
route,
|
|
122
|
-
urlPath,
|
|
123
|
-
params,
|
|
124
|
-
pagesDir,
|
|
125
|
-
config,
|
|
126
|
-
AppComponent,
|
|
127
|
-
DocumentComponent,
|
|
128
|
-
headShim,
|
|
129
|
-
dynamicShim,
|
|
130
|
-
routerShim,
|
|
131
|
-
});
|
|
132
|
-
const outputPath = getOutputPath(urlPath, config.trailingSlash);
|
|
133
|
-
const fullPath = path.join(outDir, outputPath);
|
|
134
|
-
fs.mkdirSync(path.dirname(fullPath), { recursive: true });
|
|
135
|
-
fs.writeFileSync(fullPath, html, "utf-8");
|
|
136
|
-
result.files.push(outputPath);
|
|
137
|
-
result.pageCount++;
|
|
138
|
-
}
|
|
139
|
-
catch (e) {
|
|
140
|
-
result.errors.push({
|
|
141
|
-
route: urlPath,
|
|
142
|
-
error: e.message,
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
// Render 404 page
|
|
147
|
-
try {
|
|
148
|
-
const html404 = await renderErrorPage({
|
|
149
|
-
server,
|
|
150
|
-
pagesDir,
|
|
151
|
-
statusCode: 404,
|
|
152
|
-
AppComponent,
|
|
153
|
-
DocumentComponent,
|
|
154
|
-
headShim,
|
|
155
|
-
fileMatcher,
|
|
156
|
-
});
|
|
157
|
-
if (html404) {
|
|
158
|
-
const fullPath = path.join(outDir, "404.html");
|
|
159
|
-
fs.writeFileSync(fullPath, html404, "utf-8");
|
|
160
|
-
result.files.push("404.html");
|
|
161
|
-
result.pageCount++;
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
catch {
|
|
165
|
-
// No custom 404, skip
|
|
166
|
-
}
|
|
167
|
-
return result;
|
|
168
|
-
}
|
|
169
|
-
async function renderStaticPage(options) {
|
|
170
|
-
const { server, route, urlPath, params, config: _config, AppComponent, DocumentComponent, headShim, dynamicShim, routerShim, } = options;
|
|
171
|
-
// Set SSR context for router shim
|
|
172
|
-
if (typeof routerShim.setSSRContext === "function") {
|
|
173
|
-
routerShim.setSSRContext({
|
|
174
|
-
pathname: patternToNextFormat(route.pattern),
|
|
175
|
-
query: params,
|
|
176
|
-
asPath: urlPath,
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
const pageModule = await server.ssrLoadModule(route.filePath);
|
|
180
|
-
const PageComponent = pageModule.default;
|
|
181
|
-
if (!PageComponent) {
|
|
182
|
-
throw new Error(`Page ${route.filePath} has no default export`);
|
|
183
|
-
}
|
|
184
|
-
// Collect page props
|
|
185
|
-
let pageProps = {};
|
|
186
|
-
if (typeof pageModule.getStaticProps === "function") {
|
|
187
|
-
const result = await pageModule.getStaticProps({ params });
|
|
188
|
-
if (result && "props" in result) {
|
|
189
|
-
pageProps = result.props;
|
|
190
|
-
}
|
|
191
|
-
if (result && "redirect" in result) {
|
|
192
|
-
// Static export can't handle redirects — write a meta redirect
|
|
193
|
-
const redirect = result.redirect;
|
|
194
|
-
return `<!DOCTYPE html><html><head><meta http-equiv="refresh" content="0;url=${escapeAttr(redirect.destination)}" /></head><body></body></html>`;
|
|
195
|
-
}
|
|
196
|
-
if (result && "notFound" in result && result.notFound) {
|
|
197
|
-
throw new Error(`Page ${urlPath} returned notFound: true`);
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
// Build element
|
|
201
|
-
const createElement = React.createElement;
|
|
202
|
-
let element;
|
|
203
|
-
if (AppComponent) {
|
|
204
|
-
element = createElement(AppComponent, {
|
|
205
|
-
Component: PageComponent,
|
|
206
|
-
pageProps,
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
|
-
else {
|
|
210
|
-
element = createElement(PageComponent, pageProps);
|
|
211
|
-
}
|
|
212
|
-
// Reset head collector and flush dynamic preloads
|
|
213
|
-
if (typeof headShim.resetSSRHead === "function") {
|
|
214
|
-
headShim.resetSSRHead();
|
|
215
|
-
}
|
|
216
|
-
if (typeof dynamicShim.flushPreloads === "function") {
|
|
217
|
-
await dynamicShim.flushPreloads();
|
|
218
|
-
}
|
|
219
|
-
// Render page body
|
|
220
|
-
const bodyHtml = await renderToStringAsync(element);
|
|
221
|
-
// Collect head tags
|
|
222
|
-
const ssrHeadHTML = typeof headShim.getSSRHeadHTML === "function" ? headShim.getSSRHeadHTML() : "";
|
|
223
|
-
// __NEXT_DATA__ for client hydration
|
|
224
|
-
const nextDataScript = `<script>window.__NEXT_DATA__ = ${safeJsonStringify({
|
|
225
|
-
props: { pageProps },
|
|
226
|
-
page: route.pattern,
|
|
227
|
-
query: params,
|
|
228
|
-
buildId: _config.buildId,
|
|
229
|
-
})}</script>`;
|
|
230
|
-
// Build HTML shell
|
|
231
|
-
let html;
|
|
232
|
-
if (DocumentComponent) {
|
|
233
|
-
const docElement = createElement(DocumentComponent);
|
|
234
|
-
// renderToReadableStream auto-prepends <!DOCTYPE html> when root is <html>
|
|
235
|
-
let docHtml = await renderToStringAsync(docElement);
|
|
236
|
-
docHtml = docHtml.replace("__NEXT_MAIN__", bodyHtml);
|
|
237
|
-
if (ssrHeadHTML) {
|
|
238
|
-
docHtml = docHtml.replace("</head>", ` ${ssrHeadHTML}\n</head>`);
|
|
239
|
-
}
|
|
240
|
-
docHtml = docHtml.replace("<!-- __NEXT_SCRIPTS__ -->", nextDataScript);
|
|
241
|
-
if (!docHtml.includes("__NEXT_DATA__")) {
|
|
242
|
-
docHtml = docHtml.replace("</body>", ` ${nextDataScript}\n</body>`);
|
|
243
|
-
}
|
|
244
|
-
html = docHtml;
|
|
245
|
-
}
|
|
246
|
-
else {
|
|
247
|
-
html = `<!DOCTYPE html>
|
|
248
|
-
<html>
|
|
249
|
-
<head>
|
|
250
|
-
<meta charset="utf-8" />
|
|
251
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
252
|
-
${ssrHeadHTML}
|
|
253
|
-
</head>
|
|
254
|
-
<body>
|
|
255
|
-
<div id="__next">${bodyHtml}</div>
|
|
256
|
-
${nextDataScript}
|
|
257
|
-
</body>
|
|
258
|
-
</html>`;
|
|
259
|
-
}
|
|
260
|
-
// Clear SSR context
|
|
261
|
-
if (typeof routerShim.setSSRContext === "function") {
|
|
262
|
-
routerShim.setSSRContext(null);
|
|
263
|
-
}
|
|
264
|
-
return html;
|
|
265
|
-
}
|
|
266
|
-
async function renderErrorPage(options) {
|
|
267
|
-
const { server, pagesDir, statusCode, AppComponent, DocumentComponent, headShim, fileMatcher } = options;
|
|
268
|
-
const candidates = statusCode === 404 ? ["404", "_error"] : statusCode === 500 ? ["500", "_error"] : ["_error"];
|
|
269
|
-
for (const candidate of candidates) {
|
|
270
|
-
const candidatePath = path.join(pagesDir, candidate);
|
|
271
|
-
if (!findFileWithExtensions(candidatePath, fileMatcher))
|
|
272
|
-
continue;
|
|
273
|
-
const errorModule = await server.ssrLoadModule(candidatePath);
|
|
274
|
-
const ErrorComponent = errorModule.default;
|
|
275
|
-
if (!ErrorComponent)
|
|
276
|
-
continue;
|
|
277
|
-
const createElement = React.createElement;
|
|
278
|
-
const errorProps = { statusCode };
|
|
279
|
-
let element;
|
|
280
|
-
if (AppComponent) {
|
|
281
|
-
element = createElement(AppComponent, {
|
|
282
|
-
Component: ErrorComponent,
|
|
283
|
-
pageProps: errorProps,
|
|
284
|
-
});
|
|
285
|
-
}
|
|
286
|
-
else {
|
|
287
|
-
element = createElement(ErrorComponent, errorProps);
|
|
288
|
-
}
|
|
289
|
-
if (typeof headShim.resetSSRHead === "function") {
|
|
290
|
-
headShim.resetSSRHead();
|
|
291
|
-
}
|
|
292
|
-
const bodyHtml = await renderToStringAsync(element);
|
|
293
|
-
let html;
|
|
294
|
-
if (DocumentComponent) {
|
|
295
|
-
const docElement = createElement(DocumentComponent);
|
|
296
|
-
let docHtml = await renderToStringAsync(docElement);
|
|
297
|
-
docHtml = docHtml.replace("__NEXT_MAIN__", bodyHtml);
|
|
298
|
-
docHtml = docHtml.replace("<!-- __NEXT_SCRIPTS__ -->", "");
|
|
299
|
-
html = docHtml;
|
|
300
|
-
}
|
|
301
|
-
else {
|
|
302
|
-
html = `<!DOCTYPE html>
|
|
303
|
-
<html>
|
|
304
|
-
<head>
|
|
305
|
-
<meta charset="utf-8" />
|
|
306
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
307
|
-
</head>
|
|
308
|
-
<body>
|
|
309
|
-
<div id="__next">${bodyHtml}</div>
|
|
310
|
-
</body>
|
|
311
|
-
</html>`;
|
|
312
|
-
}
|
|
313
|
-
return html;
|
|
314
|
-
}
|
|
315
|
-
return null;
|
|
316
|
-
}
|
|
1
|
+
import { prerenderApp, prerenderPages } from "./prerender.js";
|
|
2
|
+
//#region src/build/static-export.ts
|
|
317
3
|
/**
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
else if (part.startsWith(":")) {
|
|
338
|
-
// Dynamic segment: :id
|
|
339
|
-
const paramName = part.slice(1);
|
|
340
|
-
const value = params[paramName];
|
|
341
|
-
result.push(String(value));
|
|
342
|
-
}
|
|
343
|
-
else {
|
|
344
|
-
result.push(part);
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
return "/" + result.join("/");
|
|
4
|
+
* Convert a `PrerenderResult` into the legacy `StaticExportResult` shape.
|
|
5
|
+
*/
|
|
6
|
+
function toStaticExportResult(routes) {
|
|
7
|
+
const result = {
|
|
8
|
+
pageCount: 0,
|
|
9
|
+
files: [],
|
|
10
|
+
warnings: [],
|
|
11
|
+
errors: []
|
|
12
|
+
};
|
|
13
|
+
for (const r of routes) if (r.status === "rendered") {
|
|
14
|
+
result.pageCount++;
|
|
15
|
+
result.files.push(...r.outputFiles.filter((f) => f.endsWith(".html")));
|
|
16
|
+
} else if (r.status === "skipped") {
|
|
17
|
+
if (r.reason === "api") result.warnings.push(`API route ${r.route} skipped — API routes are not supported with output: 'export'`);
|
|
18
|
+
} else if (r.status === "error") result.errors.push({
|
|
19
|
+
route: r.route,
|
|
20
|
+
error: r.error
|
|
21
|
+
});
|
|
22
|
+
return result;
|
|
348
23
|
}
|
|
349
24
|
/**
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
25
|
+
* Run static export for Pages Router.
|
|
26
|
+
*
|
|
27
|
+
* Delegates to `prerenderPages()` in export mode.
|
|
28
|
+
*/
|
|
29
|
+
async function staticExportPages(options) {
|
|
30
|
+
return toStaticExportResult((await prerenderPages({
|
|
31
|
+
mode: "export",
|
|
32
|
+
pagesBundlePath: options.pagesBundlePath,
|
|
33
|
+
routes: options.routes,
|
|
34
|
+
apiRoutes: options.apiRoutes,
|
|
35
|
+
pagesDir: options.pagesDir,
|
|
36
|
+
outDir: options.outDir,
|
|
37
|
+
config: options.config
|
|
38
|
+
})).routes);
|
|
363
39
|
}
|
|
364
40
|
/**
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
// that has generateStaticParams
|
|
382
|
-
for (let i = 0; i < patternParts.length; i++) {
|
|
383
|
-
const part = patternParts[i];
|
|
384
|
-
if (!part.startsWith(":"))
|
|
385
|
-
continue;
|
|
386
|
-
// Check if this is not the last dynamic param (i.e., it's a parent segment)
|
|
387
|
-
const isLastDynamicPart = !patternParts.slice(i + 1).some((p) => p.startsWith(":"));
|
|
388
|
-
if (isLastDynamicPart)
|
|
389
|
-
break; // This is the child's own segment
|
|
390
|
-
// Build the prefix pattern up to this segment
|
|
391
|
-
const prefixPattern = "/" + patternParts.slice(0, i + 1).join("/");
|
|
392
|
-
// Find a route at this prefix that has generateStaticParams
|
|
393
|
-
const parentRoute = allRoutes.find((r) => r.pattern === prefixPattern);
|
|
394
|
-
if (parentRoute?.pagePath) {
|
|
395
|
-
try {
|
|
396
|
-
const parentModule = await server.ssrLoadModule(parentRoute.pagePath);
|
|
397
|
-
if (typeof parentModule.generateStaticParams === "function") {
|
|
398
|
-
const paramName = part.replace(/^:/, "").replace(/[+*]$/, "");
|
|
399
|
-
parentSegments.push({
|
|
400
|
-
params: [paramName],
|
|
401
|
-
generateStaticParams: parentModule.generateStaticParams,
|
|
402
|
-
});
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
catch {
|
|
406
|
-
// Skip — parent module couldn't be loaded
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
if (parentSegments.length === 0)
|
|
411
|
-
return [];
|
|
412
|
-
// Top-down resolution: call each parent's generateStaticParams in order,
|
|
413
|
-
// accumulating params
|
|
414
|
-
let currentParams = [{}];
|
|
415
|
-
for (const segment of parentSegments) {
|
|
416
|
-
const nextParams = [];
|
|
417
|
-
for (const parentParams of currentParams) {
|
|
418
|
-
const results = await segment.generateStaticParams({ params: parentParams });
|
|
419
|
-
if (Array.isArray(results)) {
|
|
420
|
-
for (const result of results) {
|
|
421
|
-
nextParams.push({ ...parentParams, ...result });
|
|
422
|
-
}
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
currentParams = nextParams;
|
|
426
|
-
}
|
|
427
|
-
return currentParams;
|
|
428
|
-
}
|
|
429
|
-
/**
|
|
430
|
-
* Run static export for App Router.
|
|
431
|
-
*
|
|
432
|
-
* Fetches each route from a running dev server and writes the HTML to disk.
|
|
433
|
-
* For dynamic routes, calls generateStaticParams() to expand all paths.
|
|
434
|
-
*/
|
|
435
|
-
export async function staticExportApp(options) {
|
|
436
|
-
const { baseUrl, routes, server, outDir, config } = options;
|
|
437
|
-
const result = {
|
|
438
|
-
pageCount: 0,
|
|
439
|
-
files: [],
|
|
440
|
-
warnings: [],
|
|
441
|
-
errors: [],
|
|
442
|
-
};
|
|
443
|
-
fs.mkdirSync(outDir, { recursive: true });
|
|
444
|
-
// Collect all URLs to render
|
|
445
|
-
const urlsToRender = [];
|
|
446
|
-
for (const route of routes) {
|
|
447
|
-
// Skip API route handlers — not supported in static export
|
|
448
|
-
if (route.routePath && !route.pagePath) {
|
|
449
|
-
result.warnings.push(`Route handler ${route.pattern} skipped — API routes are not supported with output: 'export'`);
|
|
450
|
-
continue;
|
|
451
|
-
}
|
|
452
|
-
if (!route.pagePath)
|
|
453
|
-
continue;
|
|
454
|
-
if (route.isDynamic) {
|
|
455
|
-
// Dynamic route — must have generateStaticParams
|
|
456
|
-
try {
|
|
457
|
-
const pageModule = await server.ssrLoadModule(route.pagePath);
|
|
458
|
-
if (typeof pageModule.generateStaticParams !== "function") {
|
|
459
|
-
result.errors.push({
|
|
460
|
-
route: route.pattern,
|
|
461
|
-
error: `Dynamic route requires generateStaticParams() with output: 'export'`,
|
|
462
|
-
});
|
|
463
|
-
continue;
|
|
464
|
-
}
|
|
465
|
-
// Resolve parent dynamic segments for top-down params passing.
|
|
466
|
-
// Find all other routes whose patterns are prefixes of this route's pattern
|
|
467
|
-
// and that have dynamic params, then collect their generateStaticParams.
|
|
468
|
-
const parentParamSets = await resolveParentParams(route, routes, server);
|
|
469
|
-
let paramSets;
|
|
470
|
-
if (parentParamSets.length > 0) {
|
|
471
|
-
// Top-down: call child's generateStaticParams for each parent param set
|
|
472
|
-
paramSets = [];
|
|
473
|
-
for (const parentParams of parentParamSets) {
|
|
474
|
-
const childResults = await pageModule.generateStaticParams({ params: parentParams });
|
|
475
|
-
if (Array.isArray(childResults)) {
|
|
476
|
-
for (const childParams of childResults) {
|
|
477
|
-
paramSets.push({ ...parentParams, ...childParams });
|
|
478
|
-
}
|
|
479
|
-
}
|
|
480
|
-
}
|
|
481
|
-
}
|
|
482
|
-
else {
|
|
483
|
-
// Bottom-up: no parent params, call with empty params
|
|
484
|
-
paramSets = await pageModule.generateStaticParams({ params: {} });
|
|
485
|
-
}
|
|
486
|
-
if (!Array.isArray(paramSets) || paramSets.length === 0) {
|
|
487
|
-
result.warnings.push(`generateStaticParams() for ${route.pattern} returned empty array — no pages generated`);
|
|
488
|
-
continue;
|
|
489
|
-
}
|
|
490
|
-
for (const params of paramSets) {
|
|
491
|
-
const urlPath = buildUrlFromParams(route.pattern, params);
|
|
492
|
-
urlsToRender.push(urlPath);
|
|
493
|
-
}
|
|
494
|
-
}
|
|
495
|
-
catch (e) {
|
|
496
|
-
result.errors.push({
|
|
497
|
-
route: route.pattern,
|
|
498
|
-
error: `Failed to call generateStaticParams(): ${e.message}`,
|
|
499
|
-
});
|
|
500
|
-
}
|
|
501
|
-
}
|
|
502
|
-
else {
|
|
503
|
-
// Static route
|
|
504
|
-
urlsToRender.push(route.pattern);
|
|
505
|
-
}
|
|
506
|
-
}
|
|
507
|
-
// Fetch each URL from the dev server and write HTML
|
|
508
|
-
for (const urlPath of urlsToRender) {
|
|
509
|
-
try {
|
|
510
|
-
const res = await fetch(`${baseUrl}${urlPath}`);
|
|
511
|
-
if (!res.ok) {
|
|
512
|
-
result.errors.push({
|
|
513
|
-
route: urlPath,
|
|
514
|
-
error: `Server returned ${res.status}`,
|
|
515
|
-
});
|
|
516
|
-
continue;
|
|
517
|
-
}
|
|
518
|
-
const html = await res.text();
|
|
519
|
-
const outputPath = getOutputPath(urlPath, config.trailingSlash);
|
|
520
|
-
const fullPath = path.join(outDir, outputPath);
|
|
521
|
-
fs.mkdirSync(path.dirname(fullPath), { recursive: true });
|
|
522
|
-
fs.writeFileSync(fullPath, html, "utf-8");
|
|
523
|
-
result.files.push(outputPath);
|
|
524
|
-
result.pageCount++;
|
|
525
|
-
}
|
|
526
|
-
catch (e) {
|
|
527
|
-
result.errors.push({
|
|
528
|
-
route: urlPath,
|
|
529
|
-
error: e.message,
|
|
530
|
-
});
|
|
531
|
-
}
|
|
532
|
-
}
|
|
533
|
-
// Render 404 page
|
|
534
|
-
try {
|
|
535
|
-
const res = await fetch(`${baseUrl}/__nonexistent_page_for_404__`);
|
|
536
|
-
if (res.status === 404) {
|
|
537
|
-
const html = await res.text();
|
|
538
|
-
if (html.length > 0) {
|
|
539
|
-
const fullPath = path.join(outDir, "404.html");
|
|
540
|
-
fs.writeFileSync(fullPath, html, "utf-8");
|
|
541
|
-
result.files.push("404.html");
|
|
542
|
-
result.pageCount++;
|
|
543
|
-
}
|
|
544
|
-
}
|
|
545
|
-
}
|
|
546
|
-
catch {
|
|
547
|
-
// No custom 404, skip
|
|
548
|
-
}
|
|
549
|
-
return result;
|
|
550
|
-
}
|
|
41
|
+
* Run static export for App Router.
|
|
42
|
+
*
|
|
43
|
+
* Delegates to `prerenderApp()` in export mode.
|
|
44
|
+
*/
|
|
45
|
+
async function staticExportApp(options) {
|
|
46
|
+
return toStaticExportResult((await prerenderApp({
|
|
47
|
+
mode: "export",
|
|
48
|
+
rscBundlePath: options.rscBundlePath,
|
|
49
|
+
routes: options.routes,
|
|
50
|
+
outDir: options.outDir,
|
|
51
|
+
config: options.config
|
|
52
|
+
})).routes);
|
|
53
|
+
}
|
|
54
|
+
//#endregion
|
|
55
|
+
export { staticExportApp, staticExportPages };
|
|
56
|
+
|
|
551
57
|
//# sourceMappingURL=static-export.js.map
|