@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,213 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
//#region src/utils/project.ts
|
|
4
|
+
/**
|
|
5
|
+
* Shared project utilities — used by both `vinext init` and `vinext deploy`.
|
|
6
|
+
*
|
|
7
|
+
* These functions detect and modify project configuration without touching
|
|
8
|
+
* any Next.js source files, config files, or tsconfig.json.
|
|
9
|
+
*/
|
|
10
|
+
/** Common CJS config files that may need renaming when adding "type": "module" */
|
|
11
|
+
const CJS_CONFIG_FILES = [
|
|
12
|
+
"postcss.config.js",
|
|
13
|
+
"tailwind.config.js",
|
|
14
|
+
".eslintrc.js",
|
|
15
|
+
"prettier.config.js",
|
|
16
|
+
"stylelint.config.js",
|
|
17
|
+
"commitlint.config.js",
|
|
18
|
+
"jest.config.js",
|
|
19
|
+
"babel.config.js",
|
|
20
|
+
".babelrc.js"
|
|
21
|
+
];
|
|
22
|
+
/**
|
|
23
|
+
* Ensure package.json has "type": "module".
|
|
24
|
+
* Returns true if it was added (i.e. it wasn't already there).
|
|
25
|
+
*/
|
|
26
|
+
function ensureESModule(root) {
|
|
27
|
+
const pkgPath = path.join(root, "package.json");
|
|
28
|
+
if (!fs.existsSync(pkgPath)) return false;
|
|
29
|
+
try {
|
|
30
|
+
const raw = fs.readFileSync(pkgPath, "utf-8");
|
|
31
|
+
const pkg = JSON.parse(raw);
|
|
32
|
+
if (pkg.type === "module") return false;
|
|
33
|
+
pkg.type = "module";
|
|
34
|
+
fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + "\n", "utf-8");
|
|
35
|
+
return true;
|
|
36
|
+
} catch {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Rename CJS config files (that use `module.exports`) to .cjs
|
|
42
|
+
* to avoid breakage when "type": "module" is added.
|
|
43
|
+
* Returns array of [oldName, newName] pairs that were renamed.
|
|
44
|
+
*/
|
|
45
|
+
function renameCJSConfigs(root) {
|
|
46
|
+
const renamed = [];
|
|
47
|
+
for (const fileName of CJS_CONFIG_FILES) {
|
|
48
|
+
const filePath = path.join(root, fileName);
|
|
49
|
+
if (!fs.existsSync(filePath)) continue;
|
|
50
|
+
try {
|
|
51
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
52
|
+
if (/\bmodule\.exports\b/.test(content) || /\brequire\s*\(/.test(content)) {
|
|
53
|
+
const newName = fileName.replace(/\.js$/, ".cjs");
|
|
54
|
+
const newPath = path.join(root, newName);
|
|
55
|
+
fs.renameSync(filePath, newPath);
|
|
56
|
+
renamed.push([fileName, newName]);
|
|
57
|
+
}
|
|
58
|
+
} catch {}
|
|
59
|
+
}
|
|
60
|
+
return renamed;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Ensure the project is configured for ESM before Vite loads vite.config.ts.
|
|
64
|
+
*
|
|
65
|
+
* This mirrors what `vinext init` does, but is applied lazily at dev/build
|
|
66
|
+
* time for projects that were set up before `vinext init` added the step.
|
|
67
|
+
*
|
|
68
|
+
* Side effects: may rename `.js` CJS config files to `.cjs` and add
|
|
69
|
+
* `"type": "module"` to package.json.
|
|
70
|
+
*
|
|
71
|
+
* @returns Object describing what was changed, or null if nothing was done.
|
|
72
|
+
*/
|
|
73
|
+
function ensureViteConfigCompatibility(root) {
|
|
74
|
+
if (!hasViteConfig(root)) return null;
|
|
75
|
+
const pkgPath = path.join(root, "package.json");
|
|
76
|
+
if (!fs.existsSync(pkgPath)) return null;
|
|
77
|
+
let pkg;
|
|
78
|
+
try {
|
|
79
|
+
pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
|
|
80
|
+
} catch {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
if (pkg.type === "module") return null;
|
|
84
|
+
if (pkg.type !== void 0) return null;
|
|
85
|
+
const renamed = renameCJSConfigs(root);
|
|
86
|
+
let addedTypeModule = false;
|
|
87
|
+
try {
|
|
88
|
+
pkg.type = "module";
|
|
89
|
+
fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + "\n", "utf-8");
|
|
90
|
+
addedTypeModule = true;
|
|
91
|
+
} catch {}
|
|
92
|
+
return {
|
|
93
|
+
renamed,
|
|
94
|
+
addedTypeModule
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Walk from `start` up to the filesystem root, calling `check` on each
|
|
99
|
+
* directory. Returns the first non-null value returned by `check`, or null.
|
|
100
|
+
*
|
|
101
|
+
* This is the shared primitive used by both lock-file detection and
|
|
102
|
+
* node_modules resolution to support monorepo layouts where the relevant
|
|
103
|
+
* files live at the workspace root rather than inside each app package.
|
|
104
|
+
*/
|
|
105
|
+
function walkUpUntil(start, check) {
|
|
106
|
+
let dir = path.resolve(start);
|
|
107
|
+
const { root: fsRoot } = path.parse(dir);
|
|
108
|
+
while (true) {
|
|
109
|
+
const result = check(dir);
|
|
110
|
+
if (result !== null) return result;
|
|
111
|
+
if (dir === fsRoot) return null;
|
|
112
|
+
dir = path.dirname(dir);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
function parsePackageManagerName(value) {
|
|
116
|
+
if (!value) return null;
|
|
117
|
+
const fromPkg = value.trim().toLowerCase().split("@")[0];
|
|
118
|
+
if (fromPkg === "pnpm" || fromPkg === "yarn" || fromPkg === "bun" || fromPkg === "npm") return fromPkg;
|
|
119
|
+
const fromUA = value.trim().toLowerCase().split(" ")[0]?.split("/")[0];
|
|
120
|
+
if (fromUA === "pnpm" || fromUA === "yarn" || fromUA === "bun" || fromUA === "npm") return fromUA;
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
function detectPackageManagerFromPackageJson(root) {
|
|
124
|
+
const pkgPath = path.join(root, "package.json");
|
|
125
|
+
if (!fs.existsSync(pkgPath)) return null;
|
|
126
|
+
try {
|
|
127
|
+
return parsePackageManagerName(JSON.parse(fs.readFileSync(pkgPath, "utf-8")).packageManager);
|
|
128
|
+
} catch {
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Check a single directory for lock files, returning the package manager name.
|
|
134
|
+
* Used by walkUpUntil to walk ancestor directories in monorepos.
|
|
135
|
+
*/
|
|
136
|
+
function checkLockFiles(dir) {
|
|
137
|
+
if (fs.existsSync(path.join(dir, "pnpm-lock.yaml"))) return "pnpm";
|
|
138
|
+
if (fs.existsSync(path.join(dir, "yarn.lock"))) return "yarn";
|
|
139
|
+
if (fs.existsSync(path.join(dir, "bun.lock")) || fs.existsSync(path.join(dir, "bun.lockb"))) return "bun";
|
|
140
|
+
if (fs.existsSync(path.join(dir, "package-lock.json")) || fs.existsSync(path.join(dir, "npm-shrinkwrap.json"))) return "npm";
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Detect which package manager name is used.
|
|
145
|
+
* Priority:
|
|
146
|
+
* 1) lock files (walks up parent directories for monorepo support)
|
|
147
|
+
* 2) package.json#packageManager
|
|
148
|
+
* 3) invoking CLI user agent (npm_config_user_agent)
|
|
149
|
+
* 4) npm fallback
|
|
150
|
+
*/
|
|
151
|
+
function detectPackageManagerName(root, env = process.env) {
|
|
152
|
+
const fromLockFile = walkUpUntil(root, checkLockFiles);
|
|
153
|
+
if (fromLockFile) return fromLockFile;
|
|
154
|
+
const fromPkg = detectPackageManagerFromPackageJson(root);
|
|
155
|
+
if (fromPkg) return fromPkg;
|
|
156
|
+
const fromUA = parsePackageManagerName(env.npm_config_user_agent);
|
|
157
|
+
if (fromUA) return fromUA;
|
|
158
|
+
return "npm";
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Detect which package manager install command to use.
|
|
162
|
+
* Returns the dev-install command string (e.g. "pnpm add -D").
|
|
163
|
+
*/
|
|
164
|
+
function detectPackageManager(root) {
|
|
165
|
+
const pm = detectPackageManagerName(root);
|
|
166
|
+
if (pm === "npm") return "npm install -D";
|
|
167
|
+
return `${pm} add -D`;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Walk from `start` up to the filesystem root looking for a path inside
|
|
171
|
+
* node_modules. Returns the first absolute path found, or null.
|
|
172
|
+
*
|
|
173
|
+
* Handles monorepos where packages are hoisted to the workspace root's
|
|
174
|
+
* node_modules rather than installed in each app's own node_modules.
|
|
175
|
+
*
|
|
176
|
+
* @param start - Directory to begin the search (usually the project root)
|
|
177
|
+
* @param subPath - Path relative to a node_modules dir, e.g. ".bin/wrangler"
|
|
178
|
+
* or "@cloudflare/vite-plugin"
|
|
179
|
+
*/
|
|
180
|
+
function findInNodeModules(start, subPath) {
|
|
181
|
+
return walkUpUntil(start, (dir) => {
|
|
182
|
+
const candidate = path.join(dir, "node_modules", subPath);
|
|
183
|
+
return fs.existsSync(candidate) ? candidate : null;
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Check if a vite.config file exists in the project root.
|
|
188
|
+
*/
|
|
189
|
+
function hasViteConfig(root) {
|
|
190
|
+
return fs.existsSync(path.join(root, "vite.config.ts")) || fs.existsSync(path.join(root, "vite.config.js")) || fs.existsSync(path.join(root, "vite.config.mjs"));
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Return the first candidate directory (resolved against `root`) that exists,
|
|
194
|
+
* or null. Used to locate conventional `app`/`pages` directories that may live
|
|
195
|
+
* at the root or under `src/`.
|
|
196
|
+
*/
|
|
197
|
+
function findDir(root, ...candidates) {
|
|
198
|
+
for (const candidate of candidates) {
|
|
199
|
+
const full = path.join(root, candidate);
|
|
200
|
+
try {
|
|
201
|
+
if (fs.statSync(full).isDirectory()) return full;
|
|
202
|
+
} catch {}
|
|
203
|
+
}
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Check if the project uses App Router (has an app/ directory).
|
|
208
|
+
*/
|
|
209
|
+
function hasAppDir(root) {
|
|
210
|
+
return findDir(root, "app", path.join("src", "app")) !== null;
|
|
211
|
+
}
|
|
212
|
+
//#endregion
|
|
213
|
+
export { detectPackageManager, detectPackageManagerName, ensureESModule, ensureViteConfigCompatibility, findDir, findInNodeModules, hasAppDir, hasViteConfig, renameCJSConfigs };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
//#region src/utils/public-routes.ts
|
|
4
|
+
function scanPublicFileRoutes(root) {
|
|
5
|
+
const publicDir = path.join(root, "public");
|
|
6
|
+
const routes = [];
|
|
7
|
+
const visitedDirs = /* @__PURE__ */ new Set();
|
|
8
|
+
function walk(dir) {
|
|
9
|
+
let realDir;
|
|
10
|
+
try {
|
|
11
|
+
realDir = fs.realpathSync(dir);
|
|
12
|
+
} catch {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (visitedDirs.has(realDir)) return;
|
|
16
|
+
visitedDirs.add(realDir);
|
|
17
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
18
|
+
for (const entry of entries) {
|
|
19
|
+
const fullPath = path.join(dir, entry.name);
|
|
20
|
+
if (entry.isDirectory()) {
|
|
21
|
+
walk(fullPath);
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
if (entry.isSymbolicLink()) {
|
|
25
|
+
let stat;
|
|
26
|
+
try {
|
|
27
|
+
stat = fs.statSync(fullPath);
|
|
28
|
+
} catch {
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
if (stat.isDirectory()) {
|
|
32
|
+
walk(fullPath);
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if (!stat.isFile()) continue;
|
|
36
|
+
} else if (!entry.isFile()) continue;
|
|
37
|
+
const relativePath = path.relative(publicDir, fullPath).split(path.sep).join("/");
|
|
38
|
+
routes.push("/" + relativePath);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (fs.existsSync(publicDir)) try {
|
|
42
|
+
walk(publicDir);
|
|
43
|
+
} catch {}
|
|
44
|
+
routes.sort();
|
|
45
|
+
return routes;
|
|
46
|
+
}
|
|
47
|
+
//#endregion
|
|
48
|
+
export { scanPublicFileRoutes };
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
//#region src/utils/query.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Add a query parameter value to an object, promoting to array for duplicate keys.
|
|
4
|
+
* Matches Next.js behavior: ?a=1&a=2 → { a: ['1', '2'] }
|
|
5
|
+
*/
|
|
6
|
+
type UrlQueryValue = string | number | boolean | null | undefined;
|
|
7
|
+
type UrlQuery = Record<string, UrlQueryValue | readonly UrlQueryValue[]>;
|
|
8
|
+
declare function addQueryParam(obj: Record<string, string | string[]>, key: string, value: string): void;
|
|
9
|
+
/**
|
|
10
|
+
* Merge pathname-derived dynamic route params into a query object.
|
|
11
|
+
*
|
|
12
|
+
* Route params must win over same-name URL search params so `/posts/123?id=456`
|
|
13
|
+
* still exposes `id: "123"` to Pages Router APIs.
|
|
14
|
+
*/
|
|
15
|
+
declare function mergeRouteParamsIntoQuery(query: Record<string, string | string[]>, params: Record<string, string | string[]>): Record<string, string | string[]>;
|
|
16
|
+
/**
|
|
17
|
+
* Parse a URL's query string into a Record, with multi-value keys promoted to arrays.
|
|
18
|
+
*
|
|
19
|
+
* Per RFC 3986 only the first `?` separates path from query; any further `?`
|
|
20
|
+
* characters are part of the query string itself (e.g. `/linker?href=/about?hello=world`
|
|
21
|
+
* has the query `href=/about?hello=world`). Using `indexOf("?")` instead of
|
|
22
|
+
* `split("?")[1]` preserves the rest of the query so values like `<Link href>`
|
|
23
|
+
* targets keep their own query strings intact.
|
|
24
|
+
*/
|
|
25
|
+
declare function parseQueryString(url: string): Record<string, string | string[]>;
|
|
26
|
+
declare function urlQueryToSearchParams(query: UrlQuery): URLSearchParams;
|
|
27
|
+
/**
|
|
28
|
+
* Merge the original request URL's query parameters into a rewrite-target URL.
|
|
29
|
+
*
|
|
30
|
+
* Matches Next.js behavior: original query params are preserved on rewrites,
|
|
31
|
+
* but the rewrite-target URL wins on key conflicts. Ported from Next.js
|
|
32
|
+
* `Object.assign(parsedUrl.query, rewrittenParsedUrl.query)` in
|
|
33
|
+
* route-modules/route-module.ts.
|
|
34
|
+
*
|
|
35
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/server/route-modules/route-module.ts
|
|
36
|
+
*
|
|
37
|
+
* The fragment from `rewriteUrl` is preserved (origin/pathname always come
|
|
38
|
+
* from the rewrite target). Absolute rewrite URLs are returned unchanged when
|
|
39
|
+
* the origin differs from the original — external rewrites are proxied
|
|
40
|
+
* elsewhere and shouldn't have local query params smuggled in.
|
|
41
|
+
*/
|
|
42
|
+
declare function mergeRewriteQuery(originalUrl: string, rewriteUrl: string): string;
|
|
43
|
+
/**
|
|
44
|
+
* Append query parameters to a URL while preserving any existing query string
|
|
45
|
+
* and fragment identifier.
|
|
46
|
+
*/
|
|
47
|
+
declare function appendSearchParamsToUrl(url: string, params: Iterable<[string, string]>): string;
|
|
48
|
+
//#endregion
|
|
49
|
+
export { UrlQuery, addQueryParam, appendSearchParamsToUrl, mergeRewriteQuery, mergeRouteParamsIntoQuery, parseQueryString, urlQueryToSearchParams };
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
//#region src/utils/query.ts
|
|
2
|
+
function setOwnQueryValue(obj, key, value) {
|
|
3
|
+
Object.defineProperty(obj, key, {
|
|
4
|
+
value,
|
|
5
|
+
enumerable: true,
|
|
6
|
+
writable: true,
|
|
7
|
+
configurable: true
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
function addQueryParam(obj, key, value) {
|
|
11
|
+
if (Object.hasOwn(obj, key)) {
|
|
12
|
+
const current = obj[key];
|
|
13
|
+
setOwnQueryValue(obj, key, Array.isArray(current) ? current.concat(value) : [current, value]);
|
|
14
|
+
} else setOwnQueryValue(obj, key, value);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Merge pathname-derived dynamic route params into a query object.
|
|
18
|
+
*
|
|
19
|
+
* Route params must win over same-name URL search params so `/posts/123?id=456`
|
|
20
|
+
* still exposes `id: "123"` to Pages Router APIs.
|
|
21
|
+
*/
|
|
22
|
+
function mergeRouteParamsIntoQuery(query, params) {
|
|
23
|
+
const merged = { ...query };
|
|
24
|
+
for (const [key, value] of Object.entries(params)) setOwnQueryValue(merged, key, Array.isArray(value) ? [...value] : value);
|
|
25
|
+
return merged;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Parse a URL's query string into a Record, with multi-value keys promoted to arrays.
|
|
29
|
+
*
|
|
30
|
+
* Per RFC 3986 only the first `?` separates path from query; any further `?`
|
|
31
|
+
* characters are part of the query string itself (e.g. `/linker?href=/about?hello=world`
|
|
32
|
+
* has the query `href=/about?hello=world`). Using `indexOf("?")` instead of
|
|
33
|
+
* `split("?")[1]` preserves the rest of the query so values like `<Link href>`
|
|
34
|
+
* targets keep their own query strings intact.
|
|
35
|
+
*/
|
|
36
|
+
function parseQueryString(url) {
|
|
37
|
+
const queryIndex = url.indexOf("?");
|
|
38
|
+
if (queryIndex === -1) return {};
|
|
39
|
+
const hashIndex = url.indexOf("#", queryIndex + 1);
|
|
40
|
+
const qs = hashIndex === -1 ? url.slice(queryIndex + 1) : url.slice(queryIndex + 1, hashIndex);
|
|
41
|
+
if (!qs) return {};
|
|
42
|
+
const params = new URLSearchParams(qs);
|
|
43
|
+
const query = {};
|
|
44
|
+
for (const [key, value] of params) addQueryParam(query, key, value);
|
|
45
|
+
return query;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Convert a Next.js-style query object into URLSearchParams while preserving
|
|
49
|
+
* repeated keys for array values.
|
|
50
|
+
*
|
|
51
|
+
* Ported from Next.js `urlQueryToSearchParams()`:
|
|
52
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/shared/lib/router/utils/querystring.ts
|
|
53
|
+
*/
|
|
54
|
+
function stringifyUrlQueryParam(param) {
|
|
55
|
+
if (typeof param === "string") return param;
|
|
56
|
+
if (typeof param === "number" && !isNaN(param) || typeof param === "boolean") return String(param);
|
|
57
|
+
return "";
|
|
58
|
+
}
|
|
59
|
+
function urlQueryToSearchParams(query) {
|
|
60
|
+
const params = new URLSearchParams();
|
|
61
|
+
for (const [key, value] of Object.entries(query)) {
|
|
62
|
+
if (Array.isArray(value)) {
|
|
63
|
+
for (const item of value) params.append(key, stringifyUrlQueryParam(item));
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
params.set(key, stringifyUrlQueryParam(value));
|
|
67
|
+
}
|
|
68
|
+
return params;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Merge the original request URL's query parameters into a rewrite-target URL.
|
|
72
|
+
*
|
|
73
|
+
* Matches Next.js behavior: original query params are preserved on rewrites,
|
|
74
|
+
* but the rewrite-target URL wins on key conflicts. Ported from Next.js
|
|
75
|
+
* `Object.assign(parsedUrl.query, rewrittenParsedUrl.query)` in
|
|
76
|
+
* route-modules/route-module.ts.
|
|
77
|
+
*
|
|
78
|
+
* https://github.com/vercel/next.js/blob/canary/packages/next/src/server/route-modules/route-module.ts
|
|
79
|
+
*
|
|
80
|
+
* The fragment from `rewriteUrl` is preserved (origin/pathname always come
|
|
81
|
+
* from the rewrite target). Absolute rewrite URLs are returned unchanged when
|
|
82
|
+
* the origin differs from the original — external rewrites are proxied
|
|
83
|
+
* elsewhere and shouldn't have local query params smuggled in.
|
|
84
|
+
*/
|
|
85
|
+
function mergeRewriteQuery(originalUrl, rewriteUrl) {
|
|
86
|
+
const originalSearchIndex = originalUrl.indexOf("?");
|
|
87
|
+
if (originalSearchIndex === -1) return rewriteUrl;
|
|
88
|
+
const originalQuery = originalUrl.slice(originalSearchIndex + 1).split("#")[0];
|
|
89
|
+
if (!originalQuery) return rewriteUrl;
|
|
90
|
+
const hashIndex = rewriteUrl.indexOf("#");
|
|
91
|
+
const beforeHash = hashIndex === -1 ? rewriteUrl : rewriteUrl.slice(0, hashIndex);
|
|
92
|
+
const hash = hashIndex === -1 ? "" : rewriteUrl.slice(hashIndex);
|
|
93
|
+
const queryIndex = beforeHash.indexOf("?");
|
|
94
|
+
const base = queryIndex === -1 ? beforeHash : beforeHash.slice(0, queryIndex);
|
|
95
|
+
const rewriteQuery = queryIndex === -1 ? "" : beforeHash.slice(queryIndex + 1);
|
|
96
|
+
const merged = new URLSearchParams(originalQuery);
|
|
97
|
+
const rewriteParams = new URLSearchParams(rewriteQuery);
|
|
98
|
+
const rewriteKeys = /* @__PURE__ */ new Set();
|
|
99
|
+
for (const key of rewriteParams.keys()) rewriteKeys.add(key);
|
|
100
|
+
for (const key of rewriteKeys) merged.delete(key);
|
|
101
|
+
for (const [key, value] of rewriteParams) merged.append(key, value);
|
|
102
|
+
const search = merged.toString();
|
|
103
|
+
return `${base}${search ? `?${search}` : ""}${hash}`;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Append query parameters to a URL while preserving any existing query string
|
|
107
|
+
* and fragment identifier.
|
|
108
|
+
*/
|
|
109
|
+
function appendSearchParamsToUrl(url, params) {
|
|
110
|
+
const hashIndex = url.indexOf("#");
|
|
111
|
+
const beforeHash = hashIndex === -1 ? url : url.slice(0, hashIndex);
|
|
112
|
+
const hash = hashIndex === -1 ? "" : url.slice(hashIndex);
|
|
113
|
+
const queryIndex = beforeHash.indexOf("?");
|
|
114
|
+
const base = queryIndex === -1 ? beforeHash : beforeHash.slice(0, queryIndex);
|
|
115
|
+
const existingQuery = queryIndex === -1 ? "" : beforeHash.slice(queryIndex + 1);
|
|
116
|
+
const merged = new URLSearchParams(existingQuery);
|
|
117
|
+
for (const [key, value] of params) merged.append(key, value);
|
|
118
|
+
const search = merged.toString();
|
|
119
|
+
return `${base}${search ? `?${search}` : ""}${hash}`;
|
|
120
|
+
}
|
|
121
|
+
//#endregion
|
|
122
|
+
export { addQueryParam, appendSearchParamsToUrl, mergeRewriteQuery, mergeRouteParamsIntoQuery, parseQueryString, urlQueryToSearchParams };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/utils/safe-json-file.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Read and parse a JSON file, returning `null` if the file is missing,
|
|
4
|
+
* unreadable, or contains invalid JSON.
|
|
5
|
+
*
|
|
6
|
+
* Pass `onError` to log/observe failures while still receiving `null`. The
|
|
7
|
+
* callback is invoked for any thrown error from `readFileSync` or
|
|
8
|
+
* `JSON.parse` (e.g. `ENOENT`, syntax errors).
|
|
9
|
+
*
|
|
10
|
+
* Callers that need a default value other than `null` should map the result:
|
|
11
|
+
* `readJsonFile<string[]>(p) ?? []`
|
|
12
|
+
*/
|
|
13
|
+
declare function readJsonFile<T>(filePath: string, options?: {
|
|
14
|
+
onError?: (err: unknown) => void;
|
|
15
|
+
}): T | null;
|
|
16
|
+
//#endregion
|
|
17
|
+
export { readJsonFile };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
//#region src/utils/safe-json-file.ts
|
|
3
|
+
/**
|
|
4
|
+
* Read and parse a JSON file, returning `null` if the file is missing,
|
|
5
|
+
* unreadable, or contains invalid JSON.
|
|
6
|
+
*
|
|
7
|
+
* Pass `onError` to log/observe failures while still receiving `null`. The
|
|
8
|
+
* callback is invoked for any thrown error from `readFileSync` or
|
|
9
|
+
* `JSON.parse` (e.g. `ENOENT`, syntax errors).
|
|
10
|
+
*
|
|
11
|
+
* Callers that need a default value other than `null` should map the result:
|
|
12
|
+
* `readJsonFile<string[]>(p) ?? []`
|
|
13
|
+
*/
|
|
14
|
+
function readJsonFile(filePath, options) {
|
|
15
|
+
try {
|
|
16
|
+
return JSON.parse(fs.readFileSync(filePath, "utf-8"));
|
|
17
|
+
} catch (err) {
|
|
18
|
+
options?.onError?.(err);
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { readJsonFile };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
//#region src/utils/sorted-array.d.ts
|
|
2
|
+
type SortedStringPosition = Readonly<{
|
|
3
|
+
found: boolean;
|
|
4
|
+
index: number;
|
|
5
|
+
}>;
|
|
6
|
+
declare function findSortedStringPosition(values: readonly string[], candidate: string): SortedStringPosition;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { findSortedStringPosition };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/utils/sorted-array.ts
|
|
2
|
+
function findSortedStringPosition(values, candidate) {
|
|
3
|
+
let lower = 0;
|
|
4
|
+
let upper = values.length;
|
|
5
|
+
while (lower < upper) {
|
|
6
|
+
const middle = lower + Math.floor((upper - lower) / 2);
|
|
7
|
+
if (values[middle] === candidate) return {
|
|
8
|
+
found: true,
|
|
9
|
+
index: middle
|
|
10
|
+
};
|
|
11
|
+
if (values[middle] < candidate) lower = middle + 1;
|
|
12
|
+
else upper = middle;
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
found: false,
|
|
16
|
+
index: lower
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { findSortedStringPosition };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
//#region src/utils/text-stream.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Helpers for the repeated `new TextDecoder()` + `ReadableStream` chunk-loop
|
|
4
|
+
* pattern used across the server. Each helper handles the streaming-decode
|
|
5
|
+
* boundary correctly (final empty `decoder.decode()` flush so any incomplete
|
|
6
|
+
* trailing UTF-8 sequence is reported).
|
|
7
|
+
*
|
|
8
|
+
* Sites with additional load-bearing behaviour (line-buffered transforms,
|
|
9
|
+
* raw-byte accumulators, mixed string/Uint8Array streams, cache-key body
|
|
10
|
+
* canonicalisation) intentionally still inline their own decoder.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Drain a UTF-8 byte stream and return the full decoded text. The stream
|
|
14
|
+
* reader is released on both success and failure.
|
|
15
|
+
*/
|
|
16
|
+
declare function readStreamAsText(stream: ReadableStream<Uint8Array>): Promise<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Drain a UTF-8 byte stream up to `maxBytes` of *raw* input, returning the
|
|
19
|
+
* decoded text. If the raw size limit is exceeded, cancellation is signalled
|
|
20
|
+
* and `onLimitExceeded` is invoked; it MUST throw — its return type is
|
|
21
|
+
* `never` to enforce that. Each caller passes its own error type.
|
|
22
|
+
*
|
|
23
|
+
* The size check is on raw bytes (pre-decode) to bound memory before
|
|
24
|
+
* paying the decoder cost.
|
|
25
|
+
*/
|
|
26
|
+
declare function readStreamAsTextWithLimit(stream: ReadableStream<Uint8Array>, maxBytes: number, onLimitExceeded: () => never): Promise<string>;
|
|
27
|
+
//#endregion
|
|
28
|
+
export { readStreamAsText, readStreamAsTextWithLimit };
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
//#region src/utils/text-stream.ts
|
|
2
|
+
/**
|
|
3
|
+
* Helpers for the repeated `new TextDecoder()` + `ReadableStream` chunk-loop
|
|
4
|
+
* pattern used across the server. Each helper handles the streaming-decode
|
|
5
|
+
* boundary correctly (final empty `decoder.decode()` flush so any incomplete
|
|
6
|
+
* trailing UTF-8 sequence is reported).
|
|
7
|
+
*
|
|
8
|
+
* Sites with additional load-bearing behaviour (line-buffered transforms,
|
|
9
|
+
* raw-byte accumulators, mixed string/Uint8Array streams, cache-key body
|
|
10
|
+
* canonicalisation) intentionally still inline their own decoder.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Drain a UTF-8 byte stream and return the full decoded text. The stream
|
|
14
|
+
* reader is released on both success and failure.
|
|
15
|
+
*/
|
|
16
|
+
async function readStreamAsText(stream) {
|
|
17
|
+
const reader = stream.getReader();
|
|
18
|
+
const decoder = new TextDecoder();
|
|
19
|
+
const chunks = [];
|
|
20
|
+
try {
|
|
21
|
+
for (;;) {
|
|
22
|
+
const { done, value } = await reader.read();
|
|
23
|
+
if (done) break;
|
|
24
|
+
chunks.push(decoder.decode(value, { stream: true }));
|
|
25
|
+
}
|
|
26
|
+
chunks.push(decoder.decode());
|
|
27
|
+
return chunks.join("");
|
|
28
|
+
} finally {
|
|
29
|
+
reader.releaseLock();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Drain a UTF-8 byte stream up to `maxBytes` of *raw* input, returning the
|
|
34
|
+
* decoded text. If the raw size limit is exceeded, cancellation is signalled
|
|
35
|
+
* and `onLimitExceeded` is invoked; it MUST throw — its return type is
|
|
36
|
+
* `never` to enforce that. Each caller passes its own error type.
|
|
37
|
+
*
|
|
38
|
+
* The size check is on raw bytes (pre-decode) to bound memory before
|
|
39
|
+
* paying the decoder cost.
|
|
40
|
+
*/
|
|
41
|
+
async function readStreamAsTextWithLimit(stream, maxBytes, onLimitExceeded) {
|
|
42
|
+
const reader = stream.getReader();
|
|
43
|
+
const decoder = new TextDecoder();
|
|
44
|
+
const chunks = [];
|
|
45
|
+
let totalSize = 0;
|
|
46
|
+
try {
|
|
47
|
+
for (;;) {
|
|
48
|
+
const result = await reader.read();
|
|
49
|
+
if (result.done) break;
|
|
50
|
+
totalSize += result.value.byteLength;
|
|
51
|
+
if (totalSize > maxBytes) {
|
|
52
|
+
reader.cancel();
|
|
53
|
+
onLimitExceeded();
|
|
54
|
+
}
|
|
55
|
+
chunks.push(decoder.decode(result.value, { stream: true }));
|
|
56
|
+
}
|
|
57
|
+
chunks.push(decoder.decode());
|
|
58
|
+
return chunks.join("");
|
|
59
|
+
} finally {
|
|
60
|
+
reader.releaseLock();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//#endregion
|
|
64
|
+
export { readStreamAsText, readStreamAsTextWithLimit };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region src/utils/vinext-root.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Resolve the root directory of the vinext package at runtime.
|
|
4
|
+
*
|
|
5
|
+
* Both the CLI pre-flight check (`cli.ts`) and the standalone output emitter
|
|
6
|
+
* (`build/standalone.ts`) need to locate vinext's package root so they can
|
|
7
|
+
* verify that `dist/` exists and copy vinext's runtime files into standalone
|
|
8
|
+
* output. Centralising the logic here ensures the two callers stay in sync.
|
|
9
|
+
*
|
|
10
|
+
* The resolution works for both the compiled output layout and for running
|
|
11
|
+
* directly from source:
|
|
12
|
+
*
|
|
13
|
+
* - Compiled layout: this file lives at `dist/utils/vinext-root.js`
|
|
14
|
+
* → two levels up (`../..`) is the package root.
|
|
15
|
+
* - Source layout: this file lives at `src/utils/vinext-root.ts`
|
|
16
|
+
* → two levels up (`../..`) is the package root.
|
|
17
|
+
*
|
|
18
|
+
* If an explicit root is provided (e.g. from a test fixture), it is returned
|
|
19
|
+
* as-is after resolving to an absolute path.
|
|
20
|
+
*/
|
|
21
|
+
declare function resolveVinextPackageRoot(explicitRoot?: string): string;
|
|
22
|
+
//#endregion
|
|
23
|
+
export { resolveVinextPackageRoot };
|