vinext 0.0.51 → 0.0.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build/precompress.d.ts +7 -7
- package/dist/build/precompress.js +18 -17
- package/dist/build/precompress.js.map +1 -1
- package/dist/build/prerender.d.ts +3 -14
- package/dist/build/prerender.js +40 -40
- package/dist/build/prerender.js.map +1 -1
- package/dist/check.js +4 -0
- package/dist/check.js.map +1 -1
- package/dist/cli-args.d.ts +1 -0
- package/dist/cli-args.js +5 -0
- package/dist/cli-args.js.map +1 -1
- package/dist/cli.js +39 -0
- package/dist/cli.js.map +1 -1
- package/dist/client/navigation-runtime.d.ts +47 -0
- package/dist/client/navigation-runtime.js +156 -0
- package/dist/client/navigation-runtime.js.map +1 -0
- package/dist/client/pages-router-link-navigation.d.ts +26 -0
- package/dist/client/pages-router-link-navigation.js +14 -0
- package/dist/client/pages-router-link-navigation.js.map +1 -0
- package/dist/client/vinext-next-data.d.ts +12 -2
- package/dist/client/vinext-next-data.js +50 -1
- package/dist/client/vinext-next-data.js.map +1 -0
- package/dist/cloudflare/kv-cache-handler.js +2 -1
- package/dist/cloudflare/kv-cache-handler.js.map +1 -1
- package/dist/config/config-matchers.d.ts +63 -16
- package/dist/config/config-matchers.js +143 -8
- package/dist/config/config-matchers.js.map +1 -1
- package/dist/config/next-config.d.ts +20 -2
- package/dist/config/next-config.js +11 -1
- package/dist/config/next-config.js.map +1 -1
- package/dist/deploy.js +101 -39
- package/dist/deploy.js.map +1 -1
- package/dist/entries/app-browser-entry.js +9 -3
- package/dist/entries/app-browser-entry.js.map +1 -1
- package/dist/entries/app-rsc-entry.js +53 -13
- package/dist/entries/app-rsc-entry.js.map +1 -1
- package/dist/entries/app-rsc-manifest.d.ts +1 -0
- package/dist/entries/app-rsc-manifest.js +53 -6
- package/dist/entries/app-rsc-manifest.js.map +1 -1
- package/dist/entries/app-ssr-entry.d.ts +3 -3
- package/dist/entries/app-ssr-entry.js +4 -4
- package/dist/entries/app-ssr-entry.js.map +1 -1
- package/dist/entries/pages-client-entry.js +18 -2
- package/dist/entries/pages-client-entry.js.map +1 -1
- package/dist/entries/pages-server-entry.js +58 -8
- package/dist/entries/pages-server-entry.js.map +1 -1
- package/dist/entries/runtime-entry-module.d.ts +2 -1
- package/dist/entries/runtime-entry-module.js +9 -3
- package/dist/entries/runtime-entry-module.js.map +1 -1
- package/dist/index.js +132 -40
- package/dist/index.js.map +1 -1
- package/dist/plugins/css-data-url.d.ts +7 -0
- package/dist/plugins/css-data-url.js +81 -0
- package/dist/plugins/css-data-url.js.map +1 -0
- package/dist/plugins/fonts.js +5 -3
- package/dist/plugins/fonts.js.map +1 -1
- package/dist/plugins/middleware-server-only.d.ts +54 -0
- package/dist/plugins/middleware-server-only.js +91 -0
- package/dist/plugins/middleware-server-only.js.map +1 -0
- package/dist/plugins/optimize-imports.js +4 -4
- package/dist/plugins/optimize-imports.js.map +1 -1
- package/dist/plugins/strip-server-exports.js +5 -8
- package/dist/plugins/strip-server-exports.js.map +1 -1
- package/dist/routing/app-route-graph.d.ts +20 -1
- package/dist/routing/app-route-graph.js +58 -6
- package/dist/routing/app-route-graph.js.map +1 -1
- package/dist/routing/app-router.d.ts +2 -2
- package/dist/routing/app-router.js +2 -2
- package/dist/routing/app-router.js.map +1 -1
- package/dist/routing/utils.d.ts +2 -1
- package/dist/routing/utils.js +4 -1
- package/dist/routing/utils.js.map +1 -1
- package/dist/server/api-handler.js +139 -37
- package/dist/server/api-handler.js.map +1 -1
- package/dist/server/app-browser-entry.js +293 -149
- package/dist/server/app-browser-entry.js.map +1 -1
- package/dist/server/app-browser-interception-context.d.ts +24 -0
- package/dist/server/app-browser-interception-context.js +32 -0
- package/dist/server/app-browser-interception-context.js.map +1 -0
- package/dist/server/app-browser-navigation-controller.d.ts +3 -1
- package/dist/server/app-browser-navigation-controller.js +5 -1
- package/dist/server/app-browser-navigation-controller.js.map +1 -1
- package/dist/server/app-browser-rsc-redirect.d.ts +2 -1
- package/dist/server/app-browser-rsc-redirect.js +2 -2
- package/dist/server/app-browser-rsc-redirect.js.map +1 -1
- package/dist/server/app-browser-state.d.ts +18 -1
- package/dist/server/app-browser-state.js +19 -1
- package/dist/server/app-browser-state.js.map +1 -1
- package/dist/server/app-browser-stream.d.ts +5 -14
- package/dist/server/app-browser-stream.js +13 -7
- package/dist/server/app-browser-stream.js.map +1 -1
- package/dist/server/app-browser-visible-commit.d.ts +2 -1
- package/dist/server/app-browser-visible-commit.js +1 -0
- package/dist/server/app-browser-visible-commit.js.map +1 -1
- package/dist/server/app-elements-wire.d.ts +10 -5
- package/dist/server/app-elements-wire.js +84 -2
- package/dist/server/app-elements-wire.js.map +1 -1
- package/dist/server/app-elements.d.ts +3 -2
- package/dist/server/app-elements.js +3 -2
- package/dist/server/app-elements.js.map +1 -1
- package/dist/server/app-fallback-renderer.js +5 -3
- package/dist/server/app-fallback-renderer.js.map +1 -1
- package/dist/server/app-middleware.d.ts +13 -0
- package/dist/server/app-middleware.js +3 -1
- package/dist/server/app-middleware.js.map +1 -1
- package/dist/server/app-optimistic-routing.d.ts +54 -0
- package/dist/server/app-optimistic-routing.js +200 -0
- package/dist/server/app-optimistic-routing.js.map +1 -0
- package/dist/server/app-page-cache.d.ts +13 -1
- package/dist/server/app-page-cache.js +61 -6
- package/dist/server/app-page-cache.js.map +1 -1
- package/dist/server/app-page-dispatch.d.ts +2 -0
- package/dist/server/app-page-dispatch.js +28 -1
- package/dist/server/app-page-dispatch.js.map +1 -1
- package/dist/server/app-page-element-builder.js +2 -1
- package/dist/server/app-page-element-builder.js.map +1 -1
- package/dist/server/app-page-execution.d.ts +28 -1
- package/dist/server/app-page-execution.js +89 -4
- package/dist/server/app-page-execution.js.map +1 -1
- package/dist/server/app-page-head.js +21 -2
- package/dist/server/app-page-head.js.map +1 -1
- package/dist/server/app-page-probe.js +1 -1
- package/dist/server/app-page-render.d.ts +2 -0
- package/dist/server/app-page-render.js +2 -1
- package/dist/server/app-page-render.js.map +1 -1
- package/dist/server/app-page-response.js +4 -3
- package/dist/server/app-page-response.js.map +1 -1
- package/dist/server/app-page-route-wiring.js +17 -10
- package/dist/server/app-page-route-wiring.js.map +1 -1
- package/dist/server/app-page-stream.d.ts +3 -0
- package/dist/server/app-page-stream.js +1 -0
- package/dist/server/app-page-stream.js.map +1 -1
- package/dist/server/app-prerender-static-params.d.ts +2 -1
- package/dist/server/app-prerender-static-params.js +44 -8
- package/dist/server/app-prerender-static-params.js.map +1 -1
- package/dist/server/app-route-handler-cache.d.ts +2 -2
- package/dist/server/app-route-handler-cache.js +3 -2
- package/dist/server/app-route-handler-cache.js.map +1 -1
- package/dist/server/app-route-handler-dispatch.d.ts +6 -1
- package/dist/server/app-route-handler-dispatch.js +1 -1
- package/dist/server/app-route-handler-dispatch.js.map +1 -1
- package/dist/server/app-route-handler-execution.d.ts +17 -2
- package/dist/server/app-route-handler-execution.js.map +1 -1
- package/dist/server/app-route-handler-response.js +5 -4
- package/dist/server/app-route-handler-response.js.map +1 -1
- package/dist/server/app-router-entry.js +6 -2
- package/dist/server/app-router-entry.js.map +1 -1
- package/dist/server/app-rsc-handler.d.ts +9 -1
- package/dist/server/app-rsc-handler.js +32 -14
- package/dist/server/app-rsc-handler.js.map +1 -1
- package/dist/server/app-rsc-render-mode.d.ts +4 -3
- package/dist/server/app-rsc-render-mode.js +7 -1
- package/dist/server/app-rsc-render-mode.js.map +1 -1
- package/dist/server/app-rsc-request-normalization.d.ts +4 -1
- package/dist/server/app-rsc-request-normalization.js +4 -1
- package/dist/server/app-rsc-request-normalization.js.map +1 -1
- package/dist/server/app-rsc-response-finalizer.d.ts +8 -1
- package/dist/server/app-rsc-response-finalizer.js +10 -3
- package/dist/server/app-rsc-response-finalizer.js.map +1 -1
- package/dist/server/app-rsc-route-matching.js +2 -2
- package/dist/server/app-rsc-route-matching.js.map +1 -1
- package/dist/server/app-server-action-execution.js +1 -1
- package/dist/server/app-ssr-entry.d.ts +2 -0
- package/dist/server/app-ssr-entry.js +56 -55
- package/dist/server/app-ssr-entry.js.map +1 -1
- package/dist/server/app-ssr-stream.d.ts +6 -1
- package/dist/server/app-ssr-stream.js +17 -3
- package/dist/server/app-ssr-stream.js.map +1 -1
- package/dist/server/artifact-compatibility.d.ts +1 -1
- package/dist/server/artifact-compatibility.js.map +1 -1
- package/dist/server/cache-headers.d.ts +7 -0
- package/dist/server/cache-headers.js +19 -0
- package/dist/server/cache-headers.js.map +1 -0
- package/dist/server/cache-proof.d.ts +49 -3
- package/dist/server/cache-proof.js +78 -22
- package/dist/server/cache-proof.js.map +1 -1
- package/dist/server/client-reuse-manifest.d.ts +99 -0
- package/dist/server/client-reuse-manifest.js +212 -0
- package/dist/server/client-reuse-manifest.js.map +1 -0
- package/dist/server/default-global-error-module.d.ts +20 -0
- package/dist/server/default-global-error-module.js +20 -0
- package/dist/server/default-global-error-module.js.map +1 -0
- package/dist/server/dev-server.d.ts +9 -1
- package/dist/server/dev-server.js +76 -29
- package/dist/server/dev-server.js.map +1 -1
- package/dist/server/edge-api-runtime.d.ts +5 -0
- package/dist/server/edge-api-runtime.js +8 -0
- package/dist/server/edge-api-runtime.js.map +1 -0
- package/dist/server/headers.d.ts +18 -1
- package/dist/server/headers.js +18 -1
- package/dist/server/headers.js.map +1 -1
- package/dist/server/http-error-responses.d.ts +16 -1
- package/dist/server/http-error-responses.js +21 -1
- package/dist/server/http-error-responses.js.map +1 -1
- package/dist/server/isr-cache.d.ts +6 -2
- package/dist/server/isr-cache.js +20 -4
- package/dist/server/isr-cache.js.map +1 -1
- package/dist/server/middleware-runtime.d.ts +15 -0
- package/dist/server/middleware-runtime.js +59 -7
- package/dist/server/middleware-runtime.js.map +1 -1
- package/dist/server/middleware.d.ts +1 -1
- package/dist/server/middleware.js +4 -2
- package/dist/server/middleware.js.map +1 -1
- package/dist/server/navigation-planner.d.ts +9 -3
- package/dist/server/navigation-planner.js +98 -25
- package/dist/server/navigation-planner.js.map +1 -1
- package/dist/server/navigation-trace.d.ts +2 -1
- package/dist/server/navigation-trace.js +1 -0
- package/dist/server/navigation-trace.js.map +1 -1
- package/dist/server/pages-api-route.d.ts +27 -1
- package/dist/server/pages-api-route.js +24 -3
- package/dist/server/pages-api-route.js.map +1 -1
- package/dist/server/pages-data-route.d.ts +77 -0
- package/dist/server/pages-data-route.js +97 -0
- package/dist/server/pages-data-route.js.map +1 -0
- package/dist/server/pages-i18n.d.ts +51 -1
- package/dist/server/pages-i18n.js +61 -1
- package/dist/server/pages-i18n.js.map +1 -1
- package/dist/server/pages-page-data.d.ts +29 -2
- package/dist/server/pages-page-data.js +31 -17
- package/dist/server/pages-page-data.js.map +1 -1
- package/dist/server/pages-page-response.d.ts +11 -1
- package/dist/server/pages-page-response.js +5 -3
- package/dist/server/pages-page-response.js.map +1 -1
- package/dist/server/prod-server.d.ts +13 -15
- package/dist/server/prod-server.js +109 -56
- package/dist/server/prod-server.js.map +1 -1
- package/dist/server/request-pipeline.d.ts +11 -2
- package/dist/server/request-pipeline.js +28 -11
- package/dist/server/request-pipeline.js.map +1 -1
- package/dist/server/seed-cache.d.ts +12 -31
- package/dist/server/seed-cache.js +22 -35
- package/dist/server/seed-cache.js.map +1 -1
- package/dist/server/server-action-not-found.js +8 -3
- package/dist/server/server-action-not-found.js.map +1 -1
- package/dist/server/skip-cache-proof.d.ts +41 -0
- package/dist/server/skip-cache-proof.js +101 -0
- package/dist/server/skip-cache-proof.js.map +1 -0
- package/dist/server/static-file-cache.d.ts +1 -1
- package/dist/server/static-file-cache.js +7 -6
- package/dist/server/static-file-cache.js.map +1 -1
- package/dist/shims/client-locale.d.ts +15 -0
- package/dist/shims/client-locale.js +13 -0
- package/dist/shims/client-locale.js.map +1 -0
- package/dist/shims/default-global-error.d.ts +32 -0
- package/dist/shims/default-global-error.js +181 -0
- package/dist/shims/default-global-error.js.map +1 -0
- package/dist/shims/document.d.ts +59 -3
- package/dist/shims/document.js +36 -5
- package/dist/shims/document.js.map +1 -1
- package/dist/shims/error-boundary.d.ts +2 -2
- package/dist/shims/form.js +13 -6
- package/dist/shims/form.js.map +1 -1
- package/dist/shims/link.d.ts +21 -3
- package/dist/shims/link.js +131 -22
- package/dist/shims/link.js.map +1 -1
- package/dist/shims/metadata.js +4 -4
- package/dist/shims/metadata.js.map +1 -1
- package/dist/shims/navigation.d.ts +8 -2
- package/dist/shims/navigation.js +36 -15
- package/dist/shims/navigation.js.map +1 -1
- package/dist/shims/og.d.ts +18 -2
- package/dist/shims/og.js +49 -1
- package/dist/shims/og.js.map +1 -0
- package/dist/shims/request-state-types.d.ts +1 -1
- package/dist/shims/root-params.d.ts +3 -1
- package/dist/shims/root-params.js +11 -3
- package/dist/shims/root-params.js.map +1 -1
- package/dist/shims/router-state.d.ts +1 -0
- package/dist/shims/router-state.js.map +1 -1
- package/dist/shims/router.d.ts +12 -5
- package/dist/shims/router.js +172 -22
- package/dist/shims/router.js.map +1 -1
- package/dist/shims/server.d.ts +21 -4
- package/dist/shims/server.js +29 -9
- package/dist/shims/server.js.map +1 -1
- package/dist/shims/slot.js +5 -1
- package/dist/shims/slot.js.map +1 -1
- package/dist/shims/unified-request-context.d.ts +1 -1
- package/dist/shims/url-safety.d.ts +23 -1
- package/dist/shims/url-safety.js +29 -2
- package/dist/shims/url-safety.js.map +1 -1
- package/dist/typegen.d.ts +10 -0
- package/dist/typegen.js +242 -0
- package/dist/typegen.js.map +1 -0
- package/dist/utils/asset-prefix.d.ts +33 -5
- package/dist/utils/asset-prefix.js +39 -6
- package/dist/utils/asset-prefix.js.map +1 -1
- package/dist/utils/cache-control-metadata.d.ts +2 -1
- package/dist/utils/cache-control-metadata.js +1 -3
- package/dist/utils/cache-control-metadata.js.map +1 -1
- package/dist/utils/domain-locale.d.ts +2 -1
- package/dist/utils/domain-locale.js +9 -1
- package/dist/utils/domain-locale.js.map +1 -1
- package/dist/utils/lazy-chunks.d.ts +1 -1
- package/dist/utils/lazy-chunks.js +1 -1
- package/dist/utils/lazy-chunks.js.map +1 -1
- package/dist/utils/prerender-output-paths.d.ts +15 -0
- package/dist/utils/prerender-output-paths.js +24 -0
- package/dist/utils/prerender-output-paths.js.map +1 -0
- package/dist/utils/query.d.ts +17 -1
- package/dist/utils/query.js +36 -1
- package/dist/utils/query.js.map +1 -1
- package/dist/utils/record.d.ts +5 -0
- package/dist/utils/record.js +8 -0
- package/dist/utils/record.js.map +1 -0
- package/package.json +11 -3
package/dist/index.js
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
import { detectPackageManager } from "./utils/project.js";
|
|
2
2
|
import { normalizePathnameForRouteMatchStrict } from "./routing/utils.js";
|
|
3
3
|
import { createValidFileMatcher } from "./routing/file-matcher.js";
|
|
4
|
-
import { hasBasePath
|
|
4
|
+
import { hasBasePath } from "./utils/base-path.js";
|
|
5
5
|
import { apiRouter, invalidateRouteCache, matchRoute, pagesRouter } from "./routing/pages-router.js";
|
|
6
6
|
import { INTERNAL_HEADERS, VINEXT_MW_CTX_HEADER, VINEXT_TIMING_HEADER } from "./server/headers.js";
|
|
7
7
|
import { buildRequestHeadersFromMiddlewareResponse } from "./server/middleware-request-headers.js";
|
|
8
8
|
import { normalizePath as normalizePath$1 } from "./server/normalize-path.js";
|
|
9
9
|
import { isExternalUrl, matchHeaders, matchRedirect, matchRewrite, proxyExternalRequest, requestContextFromRequest, sanitizeDestination } from "./config/config-matchers.js";
|
|
10
|
-
import { filterInternalHeaders, isOpenRedirectShaped } from "./server/request-pipeline.js";
|
|
10
|
+
import { filterInternalHeaders, isOpenRedirectShaped, normalizeTrailingSlash } from "./server/request-pipeline.js";
|
|
11
|
+
import { mergeRewriteQuery } from "./utils/query.js";
|
|
11
12
|
import { findMiddlewareFile, runMiddleware } from "./server/middleware.js";
|
|
12
13
|
import { generateServerEntry } from "./entries/pages-server-entry.js";
|
|
13
14
|
import { generateClientEntry } from "./entries/pages-client-entry.js";
|
|
14
15
|
import { appRouteGraph, appRouter, invalidateAppRouteCache } from "./routing/app-router.js";
|
|
15
16
|
import { findInstrumentationClientFile, findInstrumentationFile, runInstrumentation } from "./server/instrumentation.js";
|
|
16
17
|
import { logRequest, now } from "./server/request-log.js";
|
|
18
|
+
import { normalizeDefaultLocalePathname, stripI18nLocaleForApiRoute } from "./server/pages-i18n.js";
|
|
17
19
|
import { createSSRHandler } from "./server/dev-server.js";
|
|
18
20
|
import { handleApiRoute } from "./server/api-handler.js";
|
|
19
21
|
import { installSocketErrorBackstop } from "./server/socket-error-backstop.js";
|
|
@@ -27,17 +29,21 @@ import { generateBrowserEntry } from "./entries/app-browser-entry.js";
|
|
|
27
29
|
import { collectRouteClassificationManifest } from "./build/route-classification-manifest.js";
|
|
28
30
|
import { planRouteClassificationInjection } from "./build/route-classification-injector.js";
|
|
29
31
|
import { PHASE_DEVELOPMENT_SERVER, PHASE_PRODUCTION_BUILD } from "./shims/constants.js";
|
|
32
|
+
import { ASSET_PREFIX_URL_DIR, resolveAssetUrlPrefix, resolveAssetsDir } from "./utils/asset-prefix.js";
|
|
30
33
|
import { RESOLVED_VIRTUAL_GOOGLE_FONTS, VIRTUAL_GOOGLE_FONTS, createGoogleFontsPlugin, createLocalFontsPlugin, generateGoogleFontsVirtualModule, parseStaticObjectLiteral } from "./plugins/fonts.js";
|
|
31
34
|
import { findNextConfigPath, loadNextConfig, resolveNextConfig, resolveNextConfigInput } from "./config/next-config.js";
|
|
35
|
+
import { isNextDataPathname, parseNextDataPathname } from "./server/pages-data-route.js";
|
|
32
36
|
import { precompressAssets } from "./build/precompress.js";
|
|
33
37
|
import { manifestFileWithBase, manifestFilesWithBase } from "./utils/manifest-paths.js";
|
|
34
|
-
import { ASSET_PREFIX_URL_DIR, resolveAssetUrlPrefix, resolveAssetsDir } from "./utils/asset-prefix.js";
|
|
35
38
|
import { asyncHooksStubPlugin } from "./plugins/async-hooks-stub.js";
|
|
36
39
|
import { clientReferenceDedupPlugin } from "./plugins/client-reference-dedup.js";
|
|
40
|
+
import { dataUrlCssPlugin } from "./plugins/css-data-url.js";
|
|
37
41
|
import { createRscClientReferenceLoadersPlugin } from "./plugins/rsc-client-reference-loaders.js";
|
|
38
42
|
import { createInstrumentationClientTransformPlugin } from "./plugins/instrumentation-client.js";
|
|
43
|
+
import { createMiddlewareServerOnlyPlugin } from "./plugins/middleware-server-only.js";
|
|
39
44
|
import { createOptimizeImportsPlugin } from "./plugins/optimize-imports.js";
|
|
40
45
|
import { createOgInlineFetchAssetsPlugin, ogAssetsPlugin } from "./plugins/og-assets.js";
|
|
46
|
+
import { generateRouteTypes } from "./typegen.js";
|
|
41
47
|
import { SSR_EXTERNAL_REACT_ENTRIES, VINEXT_OPTIMIZE_DEPS_EXCLUDE, mergeOptimizeDepsExclude } from "./plugins/rsc-client-shim-excludes.js";
|
|
42
48
|
import { createServerExternalsManifestPlugin } from "./plugins/server-externals-manifest.js";
|
|
43
49
|
import { computeLazyChunks } from "./utils/lazy-chunks.js";
|
|
@@ -76,12 +82,24 @@ function resolveOptionalDependency(projectRoot, specifier) {
|
|
|
76
82
|
return null;
|
|
77
83
|
}
|
|
78
84
|
function resolveShimModulePath(shimsDir, moduleName) {
|
|
79
|
-
for (const ext of [
|
|
85
|
+
for (const ext of [
|
|
86
|
+
".ts",
|
|
87
|
+
".tsx",
|
|
88
|
+
".js"
|
|
89
|
+
]) {
|
|
80
90
|
const candidate = path.join(shimsDir, `${moduleName}${ext}`);
|
|
81
91
|
if (fs.existsSync(candidate)) return candidate;
|
|
82
92
|
}
|
|
83
93
|
return path.join(shimsDir, `${moduleName}.js`);
|
|
84
94
|
}
|
|
95
|
+
function isVercelOgImport(id) {
|
|
96
|
+
return id === "@vercel/og" || id === "@vercel/og.js";
|
|
97
|
+
}
|
|
98
|
+
function isVinextOgShimImporter(importer) {
|
|
99
|
+
if (!importer) return false;
|
|
100
|
+
const normalizedImporter = (importer.startsWith("\0") ? importer.slice(1) : importer).split("?")[0].replace(/\\/g, "/");
|
|
101
|
+
return normalizedImporter.endsWith("/shims/og.tsx") || normalizedImporter.endsWith("/shims/og.js") || normalizedImporter.endsWith("/dist/shims/og.js");
|
|
102
|
+
}
|
|
85
103
|
function toRelativeFileEntry(root, absPath) {
|
|
86
104
|
return path.relative(root, absPath).split(path.sep).join("/");
|
|
87
105
|
}
|
|
@@ -366,6 +384,14 @@ function vinext(options = {}) {
|
|
|
366
384
|
async function generateClientEntry$1() {
|
|
367
385
|
return generateClientEntry(pagesDir, nextConfig, fileMatcher);
|
|
368
386
|
}
|
|
387
|
+
async function writeRouteTypes() {
|
|
388
|
+
if (!hasAppDir) return;
|
|
389
|
+
await generateRouteTypes({
|
|
390
|
+
root,
|
|
391
|
+
appDir,
|
|
392
|
+
pageExtensions: nextConfig.pageExtensions
|
|
393
|
+
});
|
|
394
|
+
}
|
|
369
395
|
const autoRsc = options.rsc !== false;
|
|
370
396
|
const earlyBaseDir = options.appDir ?? process.cwd();
|
|
371
397
|
const earlyAppDirExists = !options.disableAppRouter && (fs.existsSync(path.join(earlyBaseDir, "app")) || fs.existsSync(path.join(earlyBaseDir, "src", "app")));
|
|
@@ -455,6 +481,12 @@ function vinext(options = {}) {
|
|
|
455
481
|
};
|
|
456
482
|
}
|
|
457
483
|
}] : [],
|
|
484
|
+
createMiddlewareServerOnlyPlugin({
|
|
485
|
+
getMiddlewarePath: () => middlewarePath,
|
|
486
|
+
getCanonicalMiddlewarePath: () => middlewarePath ? tryRealpathSync(middlewarePath) ?? middlewarePath : null,
|
|
487
|
+
serverOnlyShimPath: resolveShimModulePath(shimsDir, "server-only")
|
|
488
|
+
}),
|
|
489
|
+
dataUrlCssPlugin(),
|
|
458
490
|
{
|
|
459
491
|
name: "vinext:config",
|
|
460
492
|
enforce: "pre",
|
|
@@ -504,6 +536,7 @@ function vinext(options = {}) {
|
|
|
504
536
|
instrumentationPath = findInstrumentationFile(root, fileMatcher);
|
|
505
537
|
instrumentationClientPath = findInstrumentationClientFile(root, fileMatcher);
|
|
506
538
|
middlewarePath = findMiddlewareFile(root, fileMatcher);
|
|
539
|
+
if (env?.command === "build") await writeRouteTypes();
|
|
507
540
|
const defines = getNextPublicEnvDefines();
|
|
508
541
|
if (!config.define || typeof config.define !== "object" || !("process.env.NODE_ENV" in config.define)) defines["process.env.NODE_ENV"] = JSON.stringify(resolvedNodeEnv);
|
|
509
542
|
for (const [key, value] of Object.entries(nextConfig.env)) {
|
|
@@ -545,6 +578,7 @@ function vinext(options = {}) {
|
|
|
545
578
|
defines["process.env.__VINEXT_RSC_COMPATIBILITY_ID"] = JSON.stringify(rscCompatibilityId);
|
|
546
579
|
defines["process.env.__VINEXT_DEPLOYMENT_ID"] = JSON.stringify(nextConfig.deploymentId ?? "");
|
|
547
580
|
defines["process.env.__NEXT_VERSION"] = JSON.stringify(getVinextVersion());
|
|
581
|
+
defines["process.env.__NEXT_APP_SHELLS"] = JSON.stringify(false);
|
|
548
582
|
nextShimMap = Object.fromEntries(Object.entries({
|
|
549
583
|
"next/link": path.join(shimsDir, "link"),
|
|
550
584
|
"next/head": path.join(shimsDir, "head"),
|
|
@@ -627,7 +661,7 @@ function vinext(options = {}) {
|
|
|
627
661
|
"firefox114",
|
|
628
662
|
"safari15"
|
|
629
663
|
],
|
|
630
|
-
|
|
664
|
+
assetsDir: resolveAssetsDir(nextConfig.assetPrefix ?? ""),
|
|
631
665
|
...withBuildBundlerOptions(viteMajorVersion, {
|
|
632
666
|
onwarn: (() => {
|
|
633
667
|
const userOnwarn = getBuildBundlerOptions(config.build)?.onwarn;
|
|
@@ -841,9 +875,10 @@ function vinext(options = {}) {
|
|
|
841
875
|
}));
|
|
842
876
|
},
|
|
843
877
|
resolveId: {
|
|
844
|
-
filter: { id: /(?:next\/|virtual:vinext
|
|
845
|
-
handler(id) {
|
|
878
|
+
filter: { id: /(?:next\/|virtual:vinext-|^@vercel\/og(?:\.js)?$)/ },
|
|
879
|
+
handler(id, importer) {
|
|
846
880
|
const cleanId = id.startsWith("\0") ? id.slice(1) : id;
|
|
881
|
+
if (isVercelOgImport(cleanId) && !isVinextOgShimImporter(importer)) return resolveShimModulePath(_shimsDir, "og");
|
|
847
882
|
if (cleanId === VIRTUAL_SERVER_ENTRY) return RESOLVED_SERVER_ENTRY;
|
|
848
883
|
if (cleanId === VIRTUAL_CLIENT_ENTRY) return RESOLVED_CLIENT_ENTRY;
|
|
849
884
|
if (cleanId.endsWith("/" + VIRTUAL_SERVER_ENTRY) || cleanId.endsWith("\\" + VIRTUAL_SERVER_ENTRY)) return RESOLVED_SERVER_ENTRY;
|
|
@@ -1030,16 +1065,46 @@ function vinext(options = {}) {
|
|
|
1030
1065
|
invalidateRscEntryModule();
|
|
1031
1066
|
invalidateRootParamsModule();
|
|
1032
1067
|
}
|
|
1068
|
+
let appRouteTypeGeneration = null;
|
|
1069
|
+
let appRouteTypeGenerationPending = false;
|
|
1070
|
+
function warnRouteTypeGenerationFailure(error) {
|
|
1071
|
+
server.config.logger.warn(`[vinext] Failed to regenerate route types: ${error instanceof Error ? error.message : String(error)}`);
|
|
1072
|
+
}
|
|
1073
|
+
async function drainAppRouteTypeGeneration() {
|
|
1074
|
+
while (appRouteTypeGenerationPending) {
|
|
1075
|
+
appRouteTypeGenerationPending = false;
|
|
1076
|
+
try {
|
|
1077
|
+
await writeRouteTypes();
|
|
1078
|
+
} catch (error) {
|
|
1079
|
+
warnRouteTypeGenerationFailure(error);
|
|
1080
|
+
}
|
|
1081
|
+
}
|
|
1082
|
+
}
|
|
1083
|
+
function regenerateAppRouteTypes() {
|
|
1084
|
+
appRouteTypeGenerationPending = true;
|
|
1085
|
+
if (appRouteTypeGeneration) return;
|
|
1086
|
+
appRouteTypeGeneration = drainAppRouteTypeGeneration().finally(() => {
|
|
1087
|
+
appRouteTypeGeneration = null;
|
|
1088
|
+
if (appRouteTypeGenerationPending) regenerateAppRouteTypes();
|
|
1089
|
+
});
|
|
1090
|
+
}
|
|
1091
|
+
regenerateAppRouteTypes();
|
|
1033
1092
|
server.httpServer?.on("connection", (socket) => {
|
|
1034
1093
|
socket.on("error", () => {});
|
|
1035
1094
|
});
|
|
1036
1095
|
server.watcher.on("add", (filePath) => {
|
|
1037
1096
|
if (hasPagesDir && filePath.startsWith(pagesDir) && pageExtensions.test(filePath)) invalidateRouteCache(pagesDir);
|
|
1038
|
-
if (hasAppDir && shouldInvalidateAppRouteFile(appDir, filePath, fileMatcher))
|
|
1097
|
+
if (hasAppDir && shouldInvalidateAppRouteFile(appDir, filePath, fileMatcher)) {
|
|
1098
|
+
invalidateAppRoutingModules();
|
|
1099
|
+
regenerateAppRouteTypes();
|
|
1100
|
+
}
|
|
1039
1101
|
});
|
|
1040
1102
|
server.watcher.on("unlink", (filePath) => {
|
|
1041
1103
|
if (hasPagesDir && filePath.startsWith(pagesDir) && pageExtensions.test(filePath)) invalidateRouteCache(pagesDir);
|
|
1042
|
-
if (hasAppDir && shouldInvalidateAppRouteFile(appDir, filePath, fileMatcher))
|
|
1104
|
+
if (hasAppDir && shouldInvalidateAppRouteFile(appDir, filePath, fileMatcher)) {
|
|
1105
|
+
invalidateAppRoutingModules();
|
|
1106
|
+
regenerateAppRouteTypes();
|
|
1107
|
+
}
|
|
1043
1108
|
});
|
|
1044
1109
|
server.middlewares.use((req, res, next) => {
|
|
1045
1110
|
const blockReason = validateDevRequest({
|
|
@@ -1153,7 +1218,6 @@ function vinext(options = {}) {
|
|
|
1153
1218
|
if (rawPathname.endsWith("/index.html")) url = url.replace("/index.html", "/");
|
|
1154
1219
|
else if (rawPathname.endsWith(".html")) url = url.replace(/\.html(?=\?|$)/, "");
|
|
1155
1220
|
let pathname = url.split("?")[0];
|
|
1156
|
-
if (pathname.includes(".") && !pathname.endsWith(".html")) return next();
|
|
1157
1221
|
if (isOpenRedirectShaped(pathname)) {
|
|
1158
1222
|
res.writeHead(404);
|
|
1159
1223
|
res.end("This page could not be found");
|
|
@@ -1173,30 +1237,45 @@ function vinext(options = {}) {
|
|
|
1173
1237
|
url = stripped + (url.includes("?") ? url.slice(url.indexOf("?")) : "");
|
|
1174
1238
|
pathname = stripped;
|
|
1175
1239
|
}
|
|
1176
|
-
if (nextConfig
|
|
1177
|
-
const
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
const
|
|
1181
|
-
res.writeHead(
|
|
1240
|
+
if (nextConfig) {
|
|
1241
|
+
const qs = url.includes("?") ? url.slice(url.indexOf("?")) : "";
|
|
1242
|
+
const trailingSlashRedirect = normalizeTrailingSlash(pathname, bp, nextConfig.trailingSlash, qs);
|
|
1243
|
+
if (trailingSlashRedirect) {
|
|
1244
|
+
const location = trailingSlashRedirect.headers.get("Location");
|
|
1245
|
+
res.writeHead(trailingSlashRedirect.status, location ? { Location: location } : void 0);
|
|
1182
1246
|
res.end();
|
|
1183
1247
|
return;
|
|
1184
|
-
}
|
|
1248
|
+
}
|
|
1249
|
+
}
|
|
1250
|
+
let isDataReq = false;
|
|
1251
|
+
if (isNextDataPathname(pathname)) {
|
|
1252
|
+
const devBuildId = nextConfig?.buildId ?? process.env.__VINEXT_BUILD_ID ?? "development";
|
|
1253
|
+
const dataMatch = parseNextDataPathname(pathname, devBuildId);
|
|
1254
|
+
if (dataMatch) {
|
|
1255
|
+
isDataReq = true;
|
|
1185
1256
|
const qs = url.includes("?") ? url.slice(url.indexOf("?")) : "";
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1257
|
+
url = dataMatch.pagePathname + qs;
|
|
1258
|
+
pathname = dataMatch.pagePathname;
|
|
1259
|
+
req.url = url;
|
|
1260
|
+
} else {
|
|
1261
|
+
res.writeHead(404, { "Content-Type": "application/json" });
|
|
1262
|
+
res.end("{}");
|
|
1189
1263
|
return;
|
|
1190
1264
|
}
|
|
1191
1265
|
}
|
|
1266
|
+
if (pathname.includes(".") && !pathname.endsWith(".html")) return next();
|
|
1192
1267
|
if (hasCloudflarePlugin) return next();
|
|
1193
|
-
const
|
|
1268
|
+
const rawHeaders = new Headers(Object.fromEntries(Object.entries(req.headers).filter(([, v]) => v !== void 0).map(([k, v]) => [k, Array.isArray(v) ? v.join(", ") : String(v)])));
|
|
1269
|
+
const isDataRequest = rawHeaders.get("x-nextjs-data") === "1";
|
|
1270
|
+
const nodeRequestHeaders = filterInternalHeaders(rawHeaders);
|
|
1194
1271
|
for (const header of INTERNAL_HEADERS) delete req.headers[header];
|
|
1195
1272
|
const requestOrigin = `http://${req.headers.host || "localhost"}`;
|
|
1196
1273
|
const preMiddlewareReqUrl = new URL(url, requestOrigin);
|
|
1197
1274
|
const preMiddlewareReqCtx = requestContextFromRequest(new Request(preMiddlewareReqUrl, { headers: nodeRequestHeaders }));
|
|
1275
|
+
const matchPathname = nextConfig?.i18n ? normalizeDefaultLocalePathname(pathname, nextConfig.i18n, { hostname: preMiddlewareReqUrl.hostname }) : pathname;
|
|
1276
|
+
const matchResolvedPathname = (p) => nextConfig?.i18n ? normalizeDefaultLocalePathname(p, nextConfig.i18n, { hostname: preMiddlewareReqUrl.hostname }) : p;
|
|
1198
1277
|
if (nextConfig?.redirects.length) {
|
|
1199
|
-
if (applyRedirects(
|
|
1278
|
+
if (applyRedirects(matchPathname, res, nextConfig.redirects, preMiddlewareReqCtx, nextConfig.basePath ?? "")) return;
|
|
1200
1279
|
}
|
|
1201
1280
|
const applyRequestHeadersToNodeRequest = (nextRequestHeaders) => {
|
|
1202
1281
|
for (const key of Object.keys(req.headers)) delete req.headers[key];
|
|
@@ -1218,7 +1297,7 @@ function vinext(options = {}) {
|
|
|
1218
1297
|
method: req.method,
|
|
1219
1298
|
headers: nodeRequestHeaders
|
|
1220
1299
|
});
|
|
1221
|
-
const result = await runMiddleware(getPagesRunner(), middlewarePath, middlewareRequest, nextConfig?.i18n, nextConfig?.basePath);
|
|
1300
|
+
const result = await runMiddleware(getPagesRunner(), middlewarePath, middlewareRequest, nextConfig?.i18n, nextConfig?.basePath, nextConfig?.trailingSlash, isDataRequest);
|
|
1222
1301
|
if (result.waitUntilPromises?.length) Promise.allSettled(result.waitUntilPromises);
|
|
1223
1302
|
if (!result.continue) {
|
|
1224
1303
|
if (result.redirectUrl) {
|
|
@@ -1272,23 +1351,27 @@ function vinext(options = {}) {
|
|
|
1272
1351
|
}
|
|
1273
1352
|
const reqUrl = new URL(url, requestOrigin);
|
|
1274
1353
|
const reqCtx = requestContextFromRequest(new Request(reqUrl, { headers: middlewareRequestHeaders ?? nodeRequestHeaders }));
|
|
1275
|
-
if (nextConfig?.headers.length) applyHeaders(
|
|
1354
|
+
if (nextConfig?.headers.length) applyHeaders(matchPathname, res, nextConfig.headers, preMiddlewareReqCtx, bp);
|
|
1276
1355
|
let resolvedUrl = url;
|
|
1277
|
-
if (nextConfig?.rewrites.beforeFiles.length)
|
|
1356
|
+
if (nextConfig?.rewrites.beforeFiles.length) {
|
|
1357
|
+
const rewritten = applyRewrites(matchPathname, nextConfig.rewrites.beforeFiles, reqCtx, bp);
|
|
1358
|
+
if (rewritten) resolvedUrl = mergeRewriteQuery(url, rewritten);
|
|
1359
|
+
}
|
|
1278
1360
|
if (isExternalUrl(resolvedUrl)) {
|
|
1279
1361
|
applyDeferredMwHeaders();
|
|
1280
1362
|
applyMwRequestHeadersForExternalProxy();
|
|
1281
1363
|
await proxyExternalRewriteNode(req, res, resolvedUrl);
|
|
1282
1364
|
return;
|
|
1283
1365
|
}
|
|
1284
|
-
const
|
|
1366
|
+
const apiLookupUrl = stripI18nLocaleForApiRoute(resolvedUrl, nextConfig?.i18n);
|
|
1367
|
+
const resolvedPathname = apiLookupUrl.split("?")[0];
|
|
1285
1368
|
if (resolvedPathname.startsWith("/api/") || resolvedPathname === "/api") {
|
|
1286
1369
|
const apiRoutes = await apiRouter(pagesDir, nextConfig?.pageExtensions, fileMatcher);
|
|
1287
|
-
if (matchRoute(
|
|
1370
|
+
if (matchRoute(apiLookupUrl, apiRoutes)) {
|
|
1288
1371
|
applyDeferredMwHeaders();
|
|
1289
1372
|
if (middlewareRequestHeaders) applyRequestHeadersToNodeRequest(middlewareRequestHeaders);
|
|
1290
1373
|
}
|
|
1291
|
-
if (await handleApiRoute(getPagesRunner(), req, res,
|
|
1374
|
+
if (await handleApiRoute(getPagesRunner(), req, res, apiLookupUrl, apiRoutes)) return;
|
|
1292
1375
|
if (hasAppDir) return next();
|
|
1293
1376
|
res.statusCode = 404;
|
|
1294
1377
|
res.end("404 - API route not found");
|
|
@@ -1297,9 +1380,9 @@ function vinext(options = {}) {
|
|
|
1297
1380
|
const routes = await pagesRouter(pagesDir, nextConfig?.pageExtensions, fileMatcher);
|
|
1298
1381
|
let match = matchRoute(resolvedUrl.split("?")[0], routes);
|
|
1299
1382
|
if ((!match || match.route.isDynamic) && nextConfig?.rewrites.afterFiles.length) {
|
|
1300
|
-
const afterRewrite = applyRewrites(resolvedUrl.split("?")[0], nextConfig.rewrites.afterFiles, reqCtx);
|
|
1383
|
+
const afterRewrite = applyRewrites(matchResolvedPathname(resolvedUrl.split("?")[0]), nextConfig.rewrites.afterFiles, reqCtx, bp);
|
|
1301
1384
|
if (afterRewrite) {
|
|
1302
|
-
resolvedUrl = afterRewrite;
|
|
1385
|
+
resolvedUrl = mergeRewriteQuery(resolvedUrl, afterRewrite);
|
|
1303
1386
|
match = matchRoute(resolvedUrl.split("?")[0], routes);
|
|
1304
1387
|
}
|
|
1305
1388
|
}
|
|
@@ -1314,11 +1397,11 @@ function vinext(options = {}) {
|
|
|
1314
1397
|
if (match) {
|
|
1315
1398
|
applyDeferredMwHeaders();
|
|
1316
1399
|
if (middlewareRequestHeaders) applyRequestHeadersToNodeRequest(middlewareRequestHeaders);
|
|
1317
|
-
await handler(req, res, resolvedUrl, mwStatus);
|
|
1400
|
+
await handler(req, res, resolvedUrl, mwStatus, isDataReq);
|
|
1318
1401
|
return;
|
|
1319
1402
|
}
|
|
1320
1403
|
if (nextConfig?.rewrites.fallback.length) {
|
|
1321
|
-
const fallbackRewrite = applyRewrites(resolvedUrl.split("?")[0], nextConfig.rewrites.fallback, reqCtx);
|
|
1404
|
+
const fallbackRewrite = applyRewrites(matchResolvedPathname(resolvedUrl.split("?")[0]), nextConfig.rewrites.fallback, reqCtx, bp);
|
|
1322
1405
|
if (fallbackRewrite) {
|
|
1323
1406
|
if (isExternalUrl(fallbackRewrite)) {
|
|
1324
1407
|
applyDeferredMwHeaders();
|
|
@@ -1329,12 +1412,12 @@ function vinext(options = {}) {
|
|
|
1329
1412
|
if (!matchRoute(fallbackRewrite.split("?")[0], routes) && hasAppDir) return next();
|
|
1330
1413
|
applyDeferredMwHeaders();
|
|
1331
1414
|
if (middlewareRequestHeaders) applyRequestHeadersToNodeRequest(middlewareRequestHeaders);
|
|
1332
|
-
await handler(req, res, fallbackRewrite, mwStatus);
|
|
1415
|
+
await handler(req, res, fallbackRewrite, mwStatus, isDataReq);
|
|
1333
1416
|
return;
|
|
1334
1417
|
}
|
|
1335
1418
|
}
|
|
1336
1419
|
if (hasAppDir) return next();
|
|
1337
|
-
await handler(req, res, resolvedUrl, mwStatus);
|
|
1420
|
+
await handler(req, res, resolvedUrl, mwStatus, isDataReq);
|
|
1338
1421
|
} catch (e) {
|
|
1339
1422
|
next(e);
|
|
1340
1423
|
}
|
|
@@ -1792,7 +1875,7 @@ function vinext(options = {}) {
|
|
|
1792
1875
|
if (!fs.existsSync(headersPath)) {
|
|
1793
1876
|
const headersContent = [
|
|
1794
1877
|
"# Cache content-hashed assets immutably (generated by vinext)",
|
|
1795
|
-
`/${envConfig.build?.assetsDir ?? "
|
|
1878
|
+
`/${envConfig.build?.assetsDir ?? "_next/static"}/*`,
|
|
1796
1879
|
" Cache-Control: public, max-age=31536000, immutable",
|
|
1797
1880
|
""
|
|
1798
1881
|
].join("\n");
|
|
@@ -1872,7 +1955,10 @@ function getNextPublicEnvDefines() {
|
|
|
1872
1955
|
* Returns true if a redirect was applied.
|
|
1873
1956
|
*/
|
|
1874
1957
|
function applyRedirects(pathname, res, redirects, ctx, basePath = "") {
|
|
1875
|
-
const result = matchRedirect(pathname, redirects, ctx
|
|
1958
|
+
const result = matchRedirect(pathname, redirects, ctx, {
|
|
1959
|
+
basePath,
|
|
1960
|
+
hadBasePath: true
|
|
1961
|
+
});
|
|
1876
1962
|
if (result) {
|
|
1877
1963
|
const dest = sanitizeDestination(basePath && !isExternalUrl(result.destination) && !hasBasePath(result.destination, basePath) ? basePath + result.destination : result.destination);
|
|
1878
1964
|
res.writeHead(result.permanent ? 308 : 307, { Location: dest });
|
|
@@ -1919,8 +2005,11 @@ async function proxyExternalRewriteNode(req, res, externalUrl) {
|
|
|
1919
2005
|
* Apply rewrite rules from next.config.js.
|
|
1920
2006
|
* Returns the rewritten URL or null if no rewrite matched.
|
|
1921
2007
|
*/
|
|
1922
|
-
function applyRewrites(pathname, rewrites, ctx) {
|
|
1923
|
-
const dest = matchRewrite(pathname, rewrites, ctx
|
|
2008
|
+
function applyRewrites(pathname, rewrites, ctx, basePath = "") {
|
|
2009
|
+
const dest = matchRewrite(pathname, rewrites, ctx, {
|
|
2010
|
+
basePath,
|
|
2011
|
+
hadBasePath: true
|
|
2012
|
+
});
|
|
1924
2013
|
if (dest) return sanitizeDestination(dest);
|
|
1925
2014
|
return null;
|
|
1926
2015
|
}
|
|
@@ -1929,8 +2018,11 @@ function applyRewrites(pathname, rewrites, ctx) {
|
|
|
1929
2018
|
* Middleware headers take precedence: if a header key was already set on the
|
|
1930
2019
|
* response (by middleware), the config value is skipped for that key.
|
|
1931
2020
|
*/
|
|
1932
|
-
function applyHeaders(pathname, res, headers, ctx) {
|
|
1933
|
-
const matched = matchHeaders(pathname, headers, ctx
|
|
2021
|
+
function applyHeaders(pathname, res, headers, ctx, basePath = "") {
|
|
2022
|
+
const matched = matchHeaders(pathname, headers, ctx, {
|
|
2023
|
+
basePath,
|
|
2024
|
+
hadBasePath: true
|
|
2025
|
+
});
|
|
1934
2026
|
for (const header of matched) {
|
|
1935
2027
|
const lk = header.key.toLowerCase();
|
|
1936
2028
|
if (lk === "set-cookie") {
|