vinext 1.0.0-beta.0 → 1.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -2
- package/dist/build/assets-ignore.js +1 -1
- package/dist/build/clean-output.js +1 -1
- package/dist/build/client-build-config.js +7 -4
- package/dist/build/css-url-assets.js +3 -3
- package/dist/build/google-fonts/fallback-metrics.js +1 -1
- package/dist/build/google-fonts/font-metadata.js +1 -1
- package/dist/build/inject-pregenerated-paths.js +1 -1
- package/dist/build/inline-css.js +2 -5
- package/dist/build/module-dependency-cache.d.ts +4 -0
- package/dist/build/module-dependency-cache.js +13 -0
- package/dist/build/next-client-runtime-manifests.js +1 -1
- package/dist/build/pages-client-assets-module.js +1 -1
- package/dist/build/precompress.js +7 -7
- package/dist/build/prerender-paths.d.ts +2 -2
- package/dist/build/prerender-paths.js +10 -15
- package/dist/build/prerender-server-pool.js +2 -2
- package/dist/build/prerender.js +1 -1
- package/dist/build/preview-credentials.d.ts +11 -0
- package/dist/build/preview-credentials.js +19 -0
- package/dist/build/report.d.ts +8 -4
- package/dist/build/report.js +14 -6
- package/dist/build/run-prerender.d.ts +2 -11
- package/dist/build/run-prerender.js +2 -10
- package/dist/build/server-manifest.js +1 -1
- package/dist/build/ssr-manifest.d.ts +4 -0
- package/dist/build/ssr-manifest.js +10 -6
- package/dist/build/standalone.js +37 -37
- package/dist/cache/cache-adapters-virtual.d.ts +1 -17
- package/dist/cache/cache-adapters-virtual.js +20 -11
- package/dist/check.d.ts +0 -16
- package/dist/check.js +27 -36
- package/dist/cli.js +61 -55
- package/dist/client/instrumentation-client-inject.js +1 -1
- package/dist/client/pages-router-link-navigation.js +1 -1
- package/dist/config/config-matchers.d.ts +13 -37
- package/dist/config/config-matchers.js +33 -123
- package/dist/config/dotenv.js +1 -1
- package/dist/config/next-config.d.ts +7 -3
- package/dist/config/next-config.js +84 -15
- package/dist/config/prerender.d.ts +2 -2
- package/dist/config/prerender.js +7 -15
- package/dist/config/request-context.d.ts +14 -0
- package/dist/config/request-context.js +26 -0
- package/dist/config/server-external-packages.js +1 -1
- package/dist/config/tsconfig-paths.js +2 -2
- package/dist/{node_modules/.pnpm/am-i-vibing@0.5.0/node_modules → deps/.pnpm/am-i-vibing@0.5.0/deps}/am-i-vibing/dist/detector-1yx2Hoe0.js +2 -2
- package/dist/deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js +50 -0
- package/dist/entries/app-rsc-entry.js +39 -14
- package/dist/entries/app-rsc-manifest.js +21 -4
- package/dist/entries/pages-client-entry.js +6 -5
- package/dist/entries/pages-server-entry.js +18 -28
- package/dist/entries/runtime-entry-module.js +2 -2
- package/dist/index.js +314 -230
- package/dist/init-cloudflare.js +1 -1
- package/dist/init-platform.js +1 -1
- package/dist/init.d.ts +6 -4
- package/dist/init.js +25 -27
- package/dist/plugins/ast-utils.js +1 -1
- package/dist/plugins/dynamic-preload-metadata.js +7 -7
- package/dist/plugins/extensionless-dynamic-import.js +1 -1
- package/dist/plugins/fonts.js +3 -3
- package/dist/plugins/ignore-dynamic-requests.js +13 -8
- package/dist/plugins/import-meta-url.js +16 -17
- package/dist/plugins/middleware-export-validation.js +1 -1
- package/dist/plugins/middleware-server-only.js +2 -2
- package/dist/plugins/og-asset-ownership.js +7 -6
- package/dist/plugins/og-assets.js +5 -6
- package/dist/plugins/optimize-imports.js +12 -13
- package/dist/plugins/postcss.js +1 -1
- package/dist/plugins/remove-console.js +1 -1
- package/dist/plugins/require-context.js +1 -1
- package/dist/plugins/sass.js +2 -2
- package/dist/plugins/server-externals-manifest.js +1 -1
- package/dist/plugins/strip-server-exports.js +1 -1
- package/dist/plugins/styled-jsx.js +3 -2
- package/dist/plugins/typeof-window.js +1 -1
- package/dist/routing/app-route-graph.d.ts +16 -15
- package/dist/routing/app-route-graph.js +86 -88
- package/dist/routing/app-router.d.ts +0 -5
- package/dist/routing/app-router.js +12 -11
- package/dist/routing/file-matcher.d.ts +13 -28
- package/dist/routing/file-matcher.js +31 -44
- package/dist/routing/pages-router.js +26 -32
- package/dist/routing/route-matching.d.ts +14 -1
- package/dist/routing/route-matching.js +13 -1
- package/dist/routing/route-pattern.d.ts +2 -1
- package/dist/routing/route-pattern.js +7 -4
- package/dist/routing/route-trie.d.ts +5 -1
- package/dist/routing/route-trie.js +5 -2
- package/dist/server/api-handler.js +41 -33
- package/dist/server/app-browser-entry.js +18 -11
- package/dist/server/app-browser-history-controller.d.ts +1 -1
- package/dist/server/app-browser-history-controller.js +3 -3
- package/dist/server/app-browser-navigation-controller.js +4 -2
- package/dist/server/app-browser-server-action-client.js +1 -1
- package/dist/server/app-elements-wire.d.ts +2 -1
- package/dist/server/app-fallback-renderer.d.ts +11 -0
- package/dist/server/app-fallback-renderer.js +16 -2
- package/dist/server/app-middleware.js +2 -1
- package/dist/server/app-page-boundary-render.d.ts +26 -2
- package/dist/server/app-page-boundary-render.js +190 -55
- package/dist/server/app-page-cache-finalizer.d.ts +1 -1
- package/dist/server/app-page-cache.d.ts +1 -1
- package/dist/server/app-page-dispatch.d.ts +12 -2
- package/dist/server/app-page-dispatch.js +37 -51
- package/dist/server/app-page-element-builder.d.ts +8 -2
- package/dist/server/app-page-element-builder.js +112 -27
- package/dist/server/app-page-execution.d.ts +3 -1
- package/dist/server/app-page-execution.js +31 -39
- package/dist/server/app-page-head.d.ts +54 -2
- package/dist/server/app-page-head.js +164 -78
- package/dist/server/app-page-http-access-fallback-metadata.d.ts +29 -0
- package/dist/server/app-page-http-access-fallback-metadata.js +106 -0
- package/dist/server/app-page-render.d.ts +2 -2
- package/dist/server/app-page-render.js +1 -1
- package/dist/server/app-page-request.d.ts +12 -0
- package/dist/server/app-page-request.js +134 -14
- package/dist/server/app-page-route-wiring.d.ts +9 -0
- package/dist/server/app-page-route-wiring.js +44 -4
- package/dist/server/app-post-middleware-context.d.ts +1 -1
- package/dist/server/app-post-middleware-context.js +1 -1
- package/dist/server/app-route-handler-dispatch.js +31 -17
- package/dist/server/app-route-handler-execution.d.ts +6 -1
- package/dist/server/app-route-handler-execution.js +41 -15
- package/dist/server/app-route-handler-policy.d.ts +2 -0
- package/dist/server/app-route-handler-policy.js +3 -3
- package/dist/server/app-route-module-loader.d.ts +3 -1
- package/dist/server/app-route-module-loader.js +1 -0
- package/dist/server/app-route-tree-prefetch.js +1 -1
- package/dist/server/app-rsc-cache-busting.d.ts +1 -1
- package/dist/server/app-rsc-cache-busting.js +1 -1
- package/dist/server/app-rsc-errors.d.ts +1 -1
- package/dist/server/app-rsc-errors.js +12 -2
- package/dist/server/app-rsc-handler.d.ts +10 -5
- package/dist/server/app-rsc-handler.js +51 -23
- package/dist/server/app-rsc-redirect-flight.d.ts +66 -0
- package/dist/server/app-rsc-redirect-flight.js +71 -0
- package/dist/server/app-rsc-request-normalization.d.ts +3 -2
- package/dist/server/app-rsc-request-normalization.js +8 -2
- package/dist/server/app-rsc-response-finalizer.d.ts +2 -2
- package/dist/server/app-rsc-response-finalizer.js +5 -11
- package/dist/server/app-rsc-route-matching.d.ts +20 -0
- package/dist/server/app-rsc-route-matching.js +87 -11
- package/dist/server/app-segment-config.js +15 -5
- package/dist/server/app-server-action-execution.d.ts +3 -1
- package/dist/server/app-server-action-execution.js +8 -6
- package/dist/server/app-ssr-entry.js +4 -1
- package/dist/server/app-ssr-stream.d.ts +2 -7
- package/dist/server/app-ssr-stream.js +5 -10
- package/dist/server/cache-proof.js +1 -1
- package/dist/server/config-headers.d.ts +24 -0
- package/dist/server/config-headers.js +52 -0
- package/dist/server/default-global-error-module.d.ts +3 -1
- package/dist/server/default-not-found-module.d.ts +3 -1
- package/dist/server/dev-initial-server-error.d.ts +1 -1
- package/dist/server/dev-lockfile.js +2 -3
- package/dist/server/dev-route-files.js +1 -1
- package/dist/server/dev-server.js +281 -173
- package/dist/server/dev-stack-sourcemap.js +4 -3
- package/dist/server/headers.d.ts +3 -1
- package/dist/server/headers.js +3 -1
- package/dist/server/image-optimization.js +2 -2
- package/dist/server/implicit-tags.js +2 -1
- package/dist/server/instrumentation.js +2 -2
- package/dist/server/isr-cache.d.ts +1 -1
- package/dist/server/isr-cache.js +1 -1
- package/dist/server/metadata-routes.js +4 -4
- package/dist/server/middleware-matcher-pattern.d.ts +22 -0
- package/dist/server/middleware-matcher-pattern.js +219 -0
- package/dist/server/middleware-matcher.d.ts +2 -7
- package/dist/server/middleware-matcher.js +13 -60
- package/dist/server/middleware-path-to-regexp.d.ts +14 -0
- package/dist/server/middleware-path-to-regexp.js +228 -0
- package/dist/server/middleware-response-headers.js +1 -1
- package/dist/server/middleware-runtime.js +5 -4
- package/dist/server/middleware.d.ts +2 -1
- package/dist/server/middleware.js +3 -2
- package/dist/server/navigation-planner.d.ts +2 -0
- package/dist/server/navigation-planner.js +8 -2
- package/dist/server/next-error-digest.d.ts +9 -24
- package/dist/server/next-error-digest.js +23 -15
- package/dist/server/operation-token.js +1 -1
- package/dist/server/pages-body-parser-config.js +2 -1
- package/dist/server/pages-data-route.d.ts +11 -1
- package/dist/server/pages-data-route.js +16 -1
- package/dist/server/pages-dev-hydration.d.ts +14 -0
- package/dist/server/pages-dev-hydration.js +83 -0
- package/dist/server/pages-dev-module-url.js +2 -2
- package/dist/server/pages-get-initial-props.d.ts +15 -2
- package/dist/server/pages-get-initial-props.js +16 -6
- package/dist/server/pages-node-compat.d.ts +13 -6
- package/dist/server/pages-node-compat.js +44 -45
- package/dist/server/pages-page-data.d.ts +4 -2
- package/dist/server/pages-page-data.js +20 -10
- package/dist/server/pages-page-handler.d.ts +4 -2
- package/dist/server/pages-page-handler.js +74 -43
- package/dist/server/pages-page-response.d.ts +2 -2
- package/dist/server/pages-page-response.js +1 -1
- package/dist/server/pages-preview.d.ts +26 -0
- package/dist/server/pages-preview.js +165 -0
- package/dist/server/pages-readiness.d.ts +5 -4
- package/dist/server/pages-readiness.js +4 -2
- package/dist/server/pages-request-pipeline.d.ts +1 -0
- package/dist/server/pages-request-pipeline.js +25 -11
- package/dist/server/pages-router-entry.js +6 -0
- package/dist/server/prerender-route-params.js +2 -2
- package/dist/server/prod-server.d.ts +1 -4
- package/dist/server/prod-server.js +44 -30
- package/dist/server/request-pipeline.d.ts +15 -29
- package/dist/server/request-pipeline.js +25 -60
- package/dist/server/rsc-stream-hints.js +122 -18
- package/dist/server/seed-cache.js +1 -1
- package/dist/server/socket-error-backstop.js +1 -1
- package/dist/server/static-file-cache.js +7 -8
- package/dist/server/worker-utils.js +1 -1
- package/dist/shims/app.d.ts +1 -1
- package/dist/shims/cache-request-state.d.ts +27 -1
- package/dist/shims/cache-request-state.js +60 -1
- package/dist/shims/cache-runtime.d.ts +12 -1
- package/dist/shims/cache-runtime.js +22 -7
- package/dist/shims/cache.d.ts +5 -5
- package/dist/shims/cache.js +28 -11
- package/dist/shims/constants.js +1 -1
- package/dist/shims/document.d.ts +42 -83
- package/dist/shims/document.js +62 -53
- package/dist/shims/dynamic.d.ts +5 -25
- package/dist/shims/dynamic.js +29 -8
- package/dist/shims/error-boundary.d.ts +4 -4
- package/dist/shims/error.d.ts +22 -6
- package/dist/shims/error.js +53 -15
- package/dist/shims/fetch-cache.js +13 -4
- package/dist/shims/font-google-base.d.ts +11 -4
- package/dist/shims/font-local.d.ts +10 -3
- package/dist/shims/font-utils.js +1 -1
- package/dist/shims/form.d.ts +1 -1
- package/dist/shims/head.d.ts +13 -2
- package/dist/shims/head.js +6 -6
- package/dist/shims/headers.d.ts +28 -31
- package/dist/shims/headers.js +115 -53
- package/dist/shims/image.d.ts +27 -37
- package/dist/shims/image.js +21 -14
- package/dist/shims/internal/cookie-serialize.d.ts +3 -1
- package/dist/shims/internal/cookie-serialize.js +3 -1
- package/dist/shims/internal/hybrid-client-route-owner.js +3 -1
- package/dist/shims/internal/pages-data-fetch-dedup.js +5 -3
- package/dist/shims/internal/utils.d.ts +3 -3
- package/dist/shims/layout-segment-context.d.ts +1 -1
- package/dist/shims/legacy-image.d.ts +3 -37
- package/dist/shims/legacy-image.js +6 -16
- package/dist/shims/link.d.ts +16 -21
- package/dist/shims/link.js +25 -13
- package/dist/shims/navigation-context-state.d.ts +1 -1
- package/dist/shims/navigation-errors.d.ts +2 -1
- package/dist/shims/navigation-errors.js +9 -13
- package/dist/shims/navigation.d.ts +8 -4
- package/dist/shims/navigation.js +29 -18
- package/dist/shims/next-shims-augmentations.d.ts +1 -0
- package/dist/shims/next-shims-public.d.ts +1 -0
- package/dist/shims/public-shim-map.json.js +103 -0
- package/dist/shims/readonly-url-search-params.d.ts +3 -3
- package/dist/shims/readonly-url-search-params.js +3 -3
- package/dist/shims/request-state-types.d.ts +1 -1
- package/dist/shims/router-state.d.ts +1 -0
- package/dist/shims/router.d.ts +57 -22
- package/dist/shims/router.js +178 -46
- package/dist/shims/script.d.ts +6 -10
- package/dist/shims/script.js +7 -4
- package/dist/shims/server.d.ts +45 -22
- package/dist/shims/server.js +46 -7
- package/dist/shims/slot.d.ts +1 -1
- package/dist/shims/thenable-params.js +1 -1
- package/dist/shims/unified-request-context.d.ts +1 -1
- package/dist/shims/unified-request-context.js +2 -0
- package/dist/shims/url-safety.d.ts +1 -1
- package/dist/shims/url-safety.js +2 -2
- package/dist/typegen.d.ts +8 -2
- package/dist/typegen.js +84 -25
- package/dist/utils/client-build-manifest.js +2 -2
- package/dist/utils/client-entry-manifest.js +1 -1
- package/dist/utils/client-runtime-metadata.js +1 -1
- package/dist/utils/commonjs-loader.js +3 -3
- package/dist/utils/domain-locale.d.ts +2 -2
- package/dist/utils/external-url.d.ts +5 -0
- package/dist/utils/external-url.js +7 -0
- package/dist/utils/mdx-scan.js +1 -1
- package/dist/utils/path.d.ts +1 -13
- package/dist/utils/path.js +1 -15
- package/dist/utils/plugin-options.d.ts +4 -0
- package/dist/utils/plugin-options.js +8 -0
- package/dist/utils/project.d.ts +0 -6
- package/dist/utils/project.js +2 -8
- package/dist/utils/public-routes.js +2 -2
- package/dist/utils/react-version.js +1 -1
- package/dist/utils/redirect-digest.d.ts +9 -0
- package/dist/utils/redirect-digest.js +25 -0
- package/dist/utils/regex-safety.d.ts +8 -0
- package/dist/utils/regex-safety.js +737 -0
- package/dist/utils/vinext-root.js +1 -1
- package/dist/utils/vite-version.d.ts +5 -2
- package/dist/utils/vite-version.js +43 -17
- package/package.json +16 -4
- /package/dist/build/google-fonts/{fallback-metrics-data.js → fallback-metrics-data.json.js} +0 -0
- /package/dist/build/google-fonts/{font-data.js → font-data.json.js} +0 -0
- /package/dist/{node_modules/.pnpm/process-ancestry@0.1.0/node_modules → deps/.pnpm/process-ancestry@0.1.0/deps}/process-ancestry/dist/index.js +0 -0
package/dist/shims/error.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { AppRouterContext } from "./internal/app-router-context.js";
|
|
2
2
|
import { RouterContext } from "./internal/router-context.js";
|
|
3
|
+
import Head from "./head.js";
|
|
3
4
|
import { isNextRouterError } from "./navigation-errors.js";
|
|
4
5
|
import "./navigation.js";
|
|
5
6
|
import { useUntrackedPathname } from "./internal/navigation-untracked.js";
|
|
@@ -16,32 +17,69 @@ import React from "react";
|
|
|
16
17
|
* (`unstable_catchError`) and its `ErrorInfo` type, mirroring
|
|
17
18
|
* `next/error`'s public surface.
|
|
18
19
|
*/
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
const statusCodes = {
|
|
21
|
+
400: "Bad Request",
|
|
22
|
+
404: "This page could not be found",
|
|
23
|
+
405: "Method Not Allowed",
|
|
24
|
+
500: "Internal Server Error"
|
|
25
|
+
};
|
|
26
|
+
function getErrorInitialProps({ err, req, res }) {
|
|
27
|
+
const statusCode = res?.statusCode ? res.statusCode : err ? err.statusCode : 404;
|
|
28
|
+
let hostname;
|
|
29
|
+
if (typeof window !== "undefined") hostname = window.location.hostname;
|
|
30
|
+
else if (req) {
|
|
31
|
+
if (req.url) try {
|
|
32
|
+
hostname = new URL(req.url).hostname;
|
|
33
|
+
} catch {}
|
|
34
|
+
if (!hostname) {
|
|
35
|
+
const host = Array.isArray(req.headers?.host) ? req.headers.host[0] : req.headers?.host;
|
|
36
|
+
if (host) hostname = new URL(`http://${host}`).hostname;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
statusCode,
|
|
41
|
+
hostname
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
const styles = {
|
|
45
|
+
error: {
|
|
46
|
+
fontFamily: "system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"",
|
|
23
47
|
height: "100vh",
|
|
24
48
|
textAlign: "center",
|
|
25
49
|
display: "flex",
|
|
26
50
|
flexDirection: "column",
|
|
27
51
|
alignItems: "center",
|
|
28
52
|
justifyContent: "center"
|
|
29
|
-
}
|
|
53
|
+
},
|
|
54
|
+
desc: { lineHeight: "48px" },
|
|
55
|
+
h1: {
|
|
30
56
|
display: "inline-block",
|
|
31
57
|
margin: "0 20px 0 0",
|
|
32
|
-
|
|
58
|
+
paddingRight: 23,
|
|
33
59
|
fontSize: 24,
|
|
34
60
|
fontWeight: 500,
|
|
35
|
-
verticalAlign: "top"
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
} }, statusCode), React.createElement("div", { style: { display: "inline-block" } }, React.createElement("h2", { style: {
|
|
61
|
+
verticalAlign: "top"
|
|
62
|
+
},
|
|
63
|
+
h2: {
|
|
39
64
|
fontSize: 14,
|
|
40
65
|
fontWeight: 400,
|
|
41
|
-
lineHeight: "
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
66
|
+
lineHeight: "28px"
|
|
67
|
+
},
|
|
68
|
+
wrap: { display: "inline-block" }
|
|
69
|
+
};
|
|
70
|
+
var ErrorComponent = class extends React.Component {
|
|
71
|
+
static displayName = "ErrorPage";
|
|
72
|
+
static getInitialProps = getErrorInitialProps;
|
|
73
|
+
static origGetInitialProps = getErrorInitialProps;
|
|
74
|
+
render() {
|
|
75
|
+
const { statusCode, hostname, title: customTitle, withDarkMode = true } = this.props;
|
|
76
|
+
const title = customTitle || statusCodes[statusCode] || "An unexpected error has occurred";
|
|
77
|
+
return React.createElement("div", { style: styles.error }, React.createElement(Head, null, React.createElement("title", null, statusCode ? `${statusCode}: ${title}` : "Application error: a client-side exception has occurred")), React.createElement("div", { style: styles.desc }, React.createElement("style", { dangerouslySetInnerHTML: { __html: `body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}${withDarkMode ? "@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}" : ""}` } }), statusCode ? React.createElement("h1", {
|
|
78
|
+
className: "next-error-h1",
|
|
79
|
+
style: styles.h1
|
|
80
|
+
}, statusCode) : null, React.createElement("div", { style: styles.wrap }, React.createElement("h2", { style: styles.h2 }, customTitle || statusCode ? `${title}.` : `Application error: a client-side exception has occurred${hostname ? ` while loading ${hostname}` : ""} (see the browser console for more information).`))));
|
|
81
|
+
}
|
|
82
|
+
};
|
|
45
83
|
const _CatchErrorAppRouterContext = AppRouterContext ?? React.createContext(null);
|
|
46
84
|
var _CatchError = class extends React.Component {
|
|
47
85
|
static contextType = _CatchErrorAppRouterContext;
|
|
@@ -81,7 +119,7 @@ var _CatchError = class extends React.Component {
|
|
|
81
119
|
if (this.state.error) {
|
|
82
120
|
const Fallback = this.props.fallback;
|
|
83
121
|
const errorInfo = {
|
|
84
|
-
error: this.state.error.thrownValue,
|
|
122
|
+
error: this.state.error.thrownValue instanceof Error ? this.state.error.thrownValue : new Error(String(this.state.error.thrownValue)),
|
|
85
123
|
reset: this.reset,
|
|
86
124
|
unstable_retry: this.unstable_retry
|
|
87
125
|
};
|
|
@@ -3,7 +3,7 @@ import { getRequestContext, isInsideUnifiedScope, runWithUnifiedStateMutation }
|
|
|
3
3
|
import { getRequestExecutionContext } from "./request-context.js";
|
|
4
4
|
import { getDataCacheHandler } from "./cache-handler.js";
|
|
5
5
|
import { markDynamicUsage } from "./headers.js";
|
|
6
|
-
import { _setRequestScopedCacheLife } from "./cache-request-state.js";
|
|
6
|
+
import { _hasPendingRevalidatedTag, _setRequestScopedCacheLife } from "./cache-request-state.js";
|
|
7
7
|
import { encodeCacheTags } from "../utils/encode-cache-tag.js";
|
|
8
8
|
//#region src/shims/fetch-cache.ts
|
|
9
9
|
/**
|
|
@@ -371,7 +371,7 @@ async function writeFetchCacheResponse(handler, cacheKey, response, tags, revali
|
|
|
371
371
|
}
|
|
372
372
|
async function lowerFetchCacheRevalidateIfNeeded(handler, cacheKey, cachedValue, tags, revalidateSeconds) {
|
|
373
373
|
if (!Number.isFinite(revalidateSeconds) || revalidateSeconds <= 0 || typeof cachedValue.revalidate !== "number" || cachedValue.revalidate <= revalidateSeconds) return;
|
|
374
|
-
const mergedTags = Array.from(new Set([...cachedValue.tags ?? [], ...tags]));
|
|
374
|
+
const mergedTags = Array.from(/* @__PURE__ */ new Set([...cachedValue.tags ?? [], ...tags]));
|
|
375
375
|
const updatedValue = {
|
|
376
376
|
...cachedValue,
|
|
377
377
|
tags: mergedTags,
|
|
@@ -639,13 +639,22 @@ function createPatchedFetch() {
|
|
|
639
639
|
throw err;
|
|
640
640
|
}
|
|
641
641
|
const handler = getDataCacheHandler();
|
|
642
|
+
let mustBypassPendingRevalidation = _hasPendingRevalidatedTag([...tags, ...softTags]);
|
|
642
643
|
try {
|
|
643
|
-
|
|
644
|
+
let cached = mustBypassPendingRevalidation ? null : await handler.get(cacheKey, {
|
|
644
645
|
kind: "FETCH",
|
|
645
646
|
tags,
|
|
646
647
|
softTags,
|
|
647
648
|
revalidate: revalidateSeconds
|
|
648
649
|
});
|
|
650
|
+
if (cached?.value?.kind === "FETCH" && _hasPendingRevalidatedTag([
|
|
651
|
+
...cached.value.tags ?? [],
|
|
652
|
+
...tags,
|
|
653
|
+
...softTags
|
|
654
|
+
])) {
|
|
655
|
+
mustBypassPendingRevalidation = true;
|
|
656
|
+
cached = null;
|
|
657
|
+
}
|
|
649
658
|
if (cached?.value && cached.value.kind === "FETCH" && cached.cacheState !== "stale") {
|
|
650
659
|
await lowerFetchCacheRevalidateIfNeeded(handler, cacheKey, cached.value, tags, revalidateSeconds);
|
|
651
660
|
const cachedData = cached.value.data;
|
|
@@ -679,7 +688,7 @@ function createPatchedFetch() {
|
|
|
679
688
|
} catch (cacheErr) {
|
|
680
689
|
console.error("[vinext] fetch cache read error:", cacheErr);
|
|
681
690
|
}
|
|
682
|
-
const response = await dedupeFetch(input, fetchInit);
|
|
691
|
+
const response = await (mustBypassPendingRevalidation ? originalFetch(input, fetchInit) : dedupeFetch(input, fetchInit));
|
|
683
692
|
const cacheValue = await buildFetchCacheValue(response, tags, revalidateSeconds);
|
|
684
693
|
if (cacheValue) handler.set(cacheKey, cacheValue, {
|
|
685
694
|
fetchCache: true,
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { FontStyle } from "./font-utils.js";
|
|
2
2
|
|
|
3
3
|
//#region src/shims/font-google-base.d.ts
|
|
4
|
-
type
|
|
4
|
+
type CssVariable = `--${string}`;
|
|
5
|
+
type FontOptions<T extends CssVariable | undefined = CssVariable | undefined> = {
|
|
5
6
|
weight?: string | string[];
|
|
6
7
|
style?: string | string[];
|
|
7
8
|
subsets?: string[];
|
|
@@ -9,7 +10,7 @@ type FontOptions = {
|
|
|
9
10
|
preload?: boolean;
|
|
10
11
|
fallback?: string[];
|
|
11
12
|
adjustFontFallback?: boolean | string;
|
|
12
|
-
variable?:
|
|
13
|
+
variable?: T;
|
|
13
14
|
axes?: string[];
|
|
14
15
|
};
|
|
15
16
|
type FontResult = {
|
|
@@ -24,7 +25,7 @@ type InternalGoogleFontRuntimeOptions = {
|
|
|
24
25
|
fontWeight?: number;
|
|
25
26
|
fontStyle?: "normal" | "italic";
|
|
26
27
|
};
|
|
27
|
-
type FontLoaderOptions = FontOptions & {
|
|
28
|
+
type FontLoaderOptions<T extends CssVariable | undefined = CssVariable | undefined> = FontOptions<T> & {
|
|
28
29
|
/**
|
|
29
30
|
* Internal payload injected by the vinext:google-fonts transform after
|
|
30
31
|
* metadata validation. Runtime must prefer these values over user options
|
|
@@ -76,7 +77,13 @@ declare function getSSRFontPreloads(): Array<{
|
|
|
76
77
|
href: string;
|
|
77
78
|
type: string;
|
|
78
79
|
}>;
|
|
79
|
-
type
|
|
80
|
+
type NextFont = Omit<FontResult, "variable"> & {
|
|
81
|
+
variable?: undefined;
|
|
82
|
+
};
|
|
83
|
+
type NextFontWithVariable = Omit<NextFont, "variable"> & {
|
|
84
|
+
variable: string;
|
|
85
|
+
};
|
|
86
|
+
type FontLoader = <T extends CssVariable | undefined = undefined>(options?: FontLoaderOptions<T>) => T extends undefined ? NextFont : NextFontWithVariable;
|
|
80
87
|
declare function createFontLoader(family: string): FontLoader;
|
|
81
88
|
declare const googleFonts: Record<string, FontLoader>;
|
|
82
89
|
//#endregion
|
|
@@ -6,14 +6,15 @@ type LocalFontSrc = {
|
|
|
6
6
|
weight?: string;
|
|
7
7
|
style?: string;
|
|
8
8
|
};
|
|
9
|
-
type
|
|
9
|
+
type CssVariable = `--${string}`;
|
|
10
|
+
type LocalFontOptions<T extends CssVariable | undefined = CssVariable | undefined> = {
|
|
10
11
|
src: string | LocalFontSrc | LocalFontSrc[];
|
|
11
12
|
display?: string;
|
|
12
13
|
weight?: string;
|
|
13
14
|
style?: string;
|
|
14
15
|
fallback?: string[];
|
|
15
16
|
preload?: boolean;
|
|
16
|
-
variable?:
|
|
17
|
+
variable?: T;
|
|
17
18
|
adjustFontFallback?: boolean | string;
|
|
18
19
|
declarations?: Array<{
|
|
19
20
|
prop: string;
|
|
@@ -30,6 +31,12 @@ type FontResult = {
|
|
|
30
31
|
style: FontStyle;
|
|
31
32
|
variable?: string;
|
|
32
33
|
};
|
|
34
|
+
type NextFont = Omit<FontResult, "variable"> & {
|
|
35
|
+
variable?: undefined;
|
|
36
|
+
};
|
|
37
|
+
type NextFontWithVariable = Omit<NextFont, "variable"> & {
|
|
38
|
+
variable: string;
|
|
39
|
+
};
|
|
33
40
|
/**
|
|
34
41
|
* Get collected SSR font styles (used by the renderer).
|
|
35
42
|
* Note: We don't clear the arrays because fonts are loaded at module import
|
|
@@ -45,6 +52,6 @@ declare function getSSRFontPreloads(): Array<{
|
|
|
45
52
|
href: string;
|
|
46
53
|
type: string;
|
|
47
54
|
}>;
|
|
48
|
-
declare function localFont(options: LocalFontOptions):
|
|
55
|
+
declare function localFont<T extends CssVariable | undefined = undefined>(options: LocalFontOptions<T>): T extends undefined ? NextFont : NextFontWithVariable;
|
|
49
56
|
//#endregion
|
|
50
57
|
export { localFont as default, getSSRFontPreloads, getSSRFontStyles };
|
package/dist/shims/font-utils.js
CHANGED
|
@@ -30,7 +30,7 @@ function sanitizeCSSVarName(name) {
|
|
|
30
30
|
* crafted fallback values like `); } body { color: red; } .x {`.
|
|
31
31
|
*/
|
|
32
32
|
function sanitizeFallback(name) {
|
|
33
|
-
const generics = new Set([
|
|
33
|
+
const generics = /* @__PURE__ */ new Set([
|
|
34
34
|
"serif",
|
|
35
35
|
"sans-serif",
|
|
36
36
|
"monospace",
|
package/dist/shims/form.d.ts
CHANGED
|
@@ -16,6 +16,6 @@ declare const Form: import("react").ForwardRefExoticComponent<{
|
|
|
16
16
|
* In pages dir, prefetch is not supported and the prop has no effect.
|
|
17
17
|
*/
|
|
18
18
|
prefetch?: false | null;
|
|
19
|
-
} & Omit<FormHTMLAttributes<HTMLFormElement>, "
|
|
19
|
+
} & Omit<FormHTMLAttributes<HTMLFormElement>, "encType" | "method" | "target"> & import("react").RefAttributes<HTMLFormElement>>;
|
|
20
20
|
//#endregion
|
|
21
21
|
export { createFormSubmitDestinationUrl, Form as default, useActionState };
|
package/dist/shims/head.d.ts
CHANGED
|
@@ -28,6 +28,17 @@ declare function resetSSRHead(): void;
|
|
|
28
28
|
* Pass an empty array (or simply don't call this) to skip the merge.
|
|
29
29
|
*/
|
|
30
30
|
declare function setDocumentInitialHead(head: React.ReactNode[]): void;
|
|
31
|
+
/**
|
|
32
|
+
* Default head tags emitted alongside every Pages Router render — charset
|
|
33
|
+
* first, then viewport. Mirrors Next.js's `defaultHead()` in
|
|
34
|
+
* `packages/next/src/shared/lib/head.tsx`, which seeds the head array used
|
|
35
|
+
* by `HeadManagerContext` before any user `<Head>` reduces over it.
|
|
36
|
+
*
|
|
37
|
+
* The canonical Next.js order is `<meta charset>` then `<meta viewport>`
|
|
38
|
+
* then user tags, all with `data-next-head=""`. See assertion in
|
|
39
|
+
* `test/e2e/next-head/index.test.ts`.
|
|
40
|
+
*/
|
|
41
|
+
declare function defaultHead(): React.ReactElement[];
|
|
31
42
|
/** Get collected head HTML. Call after render. */
|
|
32
43
|
declare function getSSRHeadHTML(): string;
|
|
33
44
|
type HeadDOMElement = Pick<HTMLElement, "innerHTML" | "setAttribute" | "textContent">;
|
|
@@ -68,6 +79,6 @@ declare function _applyHeadPropsToElement(domEl: HeadDOMElement, props: Record<s
|
|
|
68
79
|
declare function _syncClientHead(): void;
|
|
69
80
|
declare function Head({
|
|
70
81
|
children
|
|
71
|
-
}: HeadProps):
|
|
82
|
+
}: HeadProps): React.ReactElement;
|
|
72
83
|
//#endregion
|
|
73
|
-
export { _applyHeadPropsToElement, _clientHeadChildren, _registerHeadStateAccessors, _syncClientHead, Head as default, escapeAttr, escapeInlineContent, getSSRHeadHTML, isSafeAttrName, reduceHeadChildren, resetSSRHead, setDocumentInitialHead };
|
|
84
|
+
export { _applyHeadPropsToElement, _clientHeadChildren, _registerHeadStateAccessors, _syncClientHead, Head as default, defaultHead, escapeAttr, escapeInlineContent, getSSRHeadHTML, isSafeAttrName, reduceHeadChildren, resetSSRHead, setDocumentInitialHead };
|
package/dist/shims/head.js
CHANGED
|
@@ -80,7 +80,7 @@ function getSSRHeadHTML() {
|
|
|
80
80
|
* Tags allowed inside <head>. Anything else is silently dropped.
|
|
81
81
|
* This prevents injection of dangerous elements like <iframe>, <object>, etc.
|
|
82
82
|
*/
|
|
83
|
-
const ALLOWED_HEAD_TAGS = new Set([
|
|
83
|
+
const ALLOWED_HEAD_TAGS = /* @__PURE__ */ new Set([
|
|
84
84
|
"title",
|
|
85
85
|
"meta",
|
|
86
86
|
"link",
|
|
@@ -97,13 +97,13 @@ const META_TYPES = [
|
|
|
97
97
|
"itemProp"
|
|
98
98
|
];
|
|
99
99
|
/** Self-closing tags: no inner content, emit as <tag ... /> */
|
|
100
|
-
const SELF_CLOSING_HEAD_TAGS = new Set([
|
|
100
|
+
const SELF_CLOSING_HEAD_TAGS = /* @__PURE__ */ new Set([
|
|
101
101
|
"meta",
|
|
102
102
|
"link",
|
|
103
103
|
"base"
|
|
104
104
|
]);
|
|
105
105
|
/** Tags whose content is raw text — closing-tag sequences must be escaped during SSR. */
|
|
106
|
-
const RAW_CONTENT_TAGS = new Set(["script", "style"]);
|
|
106
|
+
const RAW_CONTENT_TAGS = /* @__PURE__ */ new Set(["script", "style"]);
|
|
107
107
|
const INLINE_CLOSE_TAG_RES = {
|
|
108
108
|
script: /<\/(script)/gi,
|
|
109
109
|
style: /<\/(style)/gi
|
|
@@ -323,7 +323,7 @@ function Head({ children }) {
|
|
|
323
323
|
if (headInstanceIdRef.current === null) headInstanceIdRef.current = Symbol("vinext-head");
|
|
324
324
|
if (typeof window === "undefined") {
|
|
325
325
|
_getSSRHeadChildren().push(children);
|
|
326
|
-
return
|
|
326
|
+
return React.createElement(React.Fragment);
|
|
327
327
|
}
|
|
328
328
|
useEffect(() => {
|
|
329
329
|
const instanceId = headInstanceIdRef.current;
|
|
@@ -334,7 +334,7 @@ function Head({ children }) {
|
|
|
334
334
|
_syncClientHead();
|
|
335
335
|
};
|
|
336
336
|
}, [children]);
|
|
337
|
-
return
|
|
337
|
+
return React.createElement(React.Fragment);
|
|
338
338
|
}
|
|
339
339
|
//#endregion
|
|
340
|
-
export { _applyHeadPropsToElement, _clientHeadChildren, _registerHeadStateAccessors, _syncClientHead, Head as default, escapeAttr, escapeInlineContent, getSSRHeadHTML, isSafeAttrName, reduceHeadChildren, resetSSRHead, setDocumentInitialHead };
|
|
340
|
+
export { _applyHeadPropsToElement, _clientHeadChildren, _registerHeadStateAccessors, _syncClientHead, Head as default, defaultHead, escapeAttr, escapeInlineContent, getSSRHeadHTML, isSafeAttrName, reduceHeadChildren, resetSSRHead, setDocumentInitialHead };
|
package/dist/shims/headers.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { RenderRequestApiKind } from "../server/cache-proof.js";
|
|
2
|
+
import { ReadonlyRequestCookies } from "@vinext/types/next/upstream/dist/server/web/spec-extension/adapters/request-cookies";
|
|
3
|
+
import { ResponseCookie } from "@vinext/types/next/upstream/dist/compiled/@edge-runtime/cookies/index";
|
|
2
4
|
|
|
3
5
|
//#region src/shims/headers.d.ts
|
|
4
6
|
type HeadersContext = {
|
|
@@ -27,6 +29,8 @@ type VinextHeadersShimState = {
|
|
|
27
29
|
phase: HeadersAccessPhase;
|
|
28
30
|
};
|
|
29
31
|
type ConnectionProbeState = {
|
|
32
|
+
active: boolean;
|
|
33
|
+
dynamicUsageTarget: VinextHeadersShimState;
|
|
30
34
|
interrupted: boolean;
|
|
31
35
|
interrupt: () => void;
|
|
32
36
|
pending: Promise<never>;
|
|
@@ -47,6 +51,16 @@ type ConnectionProbeResult<T> = {
|
|
|
47
51
|
* Called by connection(), cookies(), headers(), and noStore().
|
|
48
52
|
*/
|
|
49
53
|
declare function markDynamicUsage(): void;
|
|
54
|
+
/**
|
|
55
|
+
* Measure dynamic usage in a child async scope without clearing the parent.
|
|
56
|
+
* Concurrent work that already belongs to the request (such as deferred
|
|
57
|
+
* metadata) keeps writing to the parent state and therefore remains visible
|
|
58
|
+
* to the final cache policy.
|
|
59
|
+
*/
|
|
60
|
+
declare function runWithIsolatedDynamicUsage<T>(fn: () => T | Promise<T>): Promise<{
|
|
61
|
+
result: T;
|
|
62
|
+
dynamicDetected: boolean;
|
|
63
|
+
}>;
|
|
50
64
|
declare function markRenderRequestApiUsage(kind: RenderRequestApiKind): void;
|
|
51
65
|
declare function throwIfStaticGenerationAccessError(): void;
|
|
52
66
|
declare function runWithConnectionProbe<T>(fn: () => T | Promise<T>): Promise<ConnectionProbeResult<T>>;
|
|
@@ -162,11 +176,8 @@ declare function headersContextFromRequest(request: Request, options?: HeadersCo
|
|
|
162
176
|
* the context is already available).
|
|
163
177
|
*/
|
|
164
178
|
declare function headers(): Promise<Headers> & Headers;
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
* Returns a ReadonlyRequestCookies-like object.
|
|
168
|
-
*/
|
|
169
|
-
declare function cookies(): Promise<RequestCookies> & RequestCookies;
|
|
179
|
+
type VinextReadonlyRequestCookies = Omit<ReadonlyRequestCookies, keyof RequestCookies> & RequestCookies;
|
|
180
|
+
declare function cookies(): Promise<VinextReadonlyRequestCookies> & VinextReadonlyRequestCookies;
|
|
170
181
|
/** Accumulated Set-Cookie headers from cookies().set() / .delete() calls */
|
|
171
182
|
/**
|
|
172
183
|
* Get and clear all pending Set-Cookie headers generated by cookies().set()/delete().
|
|
@@ -179,6 +190,12 @@ declare function getAndClearPendingCookies(): string[];
|
|
|
179
190
|
*/
|
|
180
191
|
declare function getDraftModeCookieHeader(): string | null;
|
|
181
192
|
declare function isDraftModeRequest(request: Request, draftModeSecret: string): boolean;
|
|
193
|
+
/**
|
|
194
|
+
* Read draft mode from the live request context without recording request API
|
|
195
|
+
* usage. `null` means there is no active request context, which lets framework
|
|
196
|
+
* callers fall back to an explicitly supplied request when needed.
|
|
197
|
+
*/
|
|
198
|
+
declare function getActiveDraftModeState(): boolean | null;
|
|
182
199
|
/**
|
|
183
200
|
* Read the active request's draft-mode state without recording request API usage.
|
|
184
201
|
* Internal cache implementations use this to bypass persistent reads and writes,
|
|
@@ -223,39 +240,19 @@ declare class RequestCookies {
|
|
|
223
240
|
* Set a cookie. In Route Handlers and Server Actions, this produces
|
|
224
241
|
* a Set-Cookie header on the response.
|
|
225
242
|
*/
|
|
226
|
-
set(
|
|
227
|
-
|
|
228
|
-
value: string;
|
|
229
|
-
path?: string;
|
|
230
|
-
domain?: string;
|
|
231
|
-
maxAge?: number;
|
|
232
|
-
expires?: Date;
|
|
233
|
-
httpOnly?: boolean;
|
|
234
|
-
secure?: boolean;
|
|
235
|
-
sameSite?: "Strict" | "Lax" | "None";
|
|
236
|
-
}, value?: string, options?: {
|
|
237
|
-
path?: string;
|
|
238
|
-
domain?: string;
|
|
239
|
-
maxAge?: number;
|
|
240
|
-
expires?: Date;
|
|
241
|
-
httpOnly?: boolean;
|
|
242
|
-
secure?: boolean;
|
|
243
|
-
sameSite?: "Strict" | "Lax" | "None";
|
|
244
|
-
}): this;
|
|
243
|
+
set(options: ResponseCookie): this;
|
|
244
|
+
set(key: string, value: string, cookie?: Partial<ResponseCookie>): this;
|
|
245
245
|
/**
|
|
246
246
|
* Delete a cookie by emitting an expired Set-Cookie header.
|
|
247
247
|
*/
|
|
248
|
-
delete(
|
|
249
|
-
|
|
250
|
-
path?: string;
|
|
251
|
-
domain?: string;
|
|
252
|
-
}): this;
|
|
248
|
+
delete(name: string): this;
|
|
249
|
+
delete(options: Omit<ResponseCookie, "value" | "expires">): this;
|
|
253
250
|
get size(): number;
|
|
254
|
-
[Symbol.iterator]():
|
|
251
|
+
[Symbol.iterator](): MapIterator<[string, {
|
|
255
252
|
name: string;
|
|
256
253
|
value: string;
|
|
257
254
|
}]>;
|
|
258
255
|
toString(): string;
|
|
259
256
|
}
|
|
260
257
|
//#endregion
|
|
261
|
-
export { HeadersAccessPhase, HeadersContext, type RequestCookies, VinextHeadersShimState, applyMiddlewareRequestHeaders, consumeDynamicUsage, consumeInvalidDynamicUsageError, consumeRenderRequestApiUsage, cookies, draftMode, getAndClearPendingCookies, getDraftModeCookieHeader, getHeadersAccessPhase, getHeadersContext, headers, headersContextFromRequest, isDraftModeEnabled, isDraftModeRequest, markDynamicUsage, markRenderRequestApiUsage, peekDynamicUsage, peekRenderRequestApiUsage, runWithConnectionProbe, runWithHeadersContext, setHeadersAccessPhase, setHeadersContext, suspendConnectionProbe, throwIfInsideCacheScope, throwIfStaticGenerationAccessError };
|
|
258
|
+
export { HeadersAccessPhase, HeadersContext, type RequestCookies, VinextHeadersShimState, applyMiddlewareRequestHeaders, consumeDynamicUsage, consumeInvalidDynamicUsageError, consumeRenderRequestApiUsage, cookies, draftMode, getActiveDraftModeState, getAndClearPendingCookies, getDraftModeCookieHeader, getHeadersAccessPhase, getHeadersContext, headers, headersContextFromRequest, isDraftModeEnabled, isDraftModeRequest, markDynamicUsage, markRenderRequestApiUsage, peekDynamicUsage, peekRenderRequestApiUsage, runWithConnectionProbe, runWithHeadersContext, runWithIsolatedDynamicUsage, setHeadersAccessPhase, setHeadersContext, suspendConnectionProbe, throwIfInsideCacheScope, throwIfStaticGenerationAccessError };
|