vinext 1.0.0-beta.1 → 1.0.0-beta.3
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 +10 -10
- package/dist/build/client-build-config.js +8 -1
- package/dist/build/report.d.ts +8 -1
- package/dist/build/report.js +12 -2
- package/dist/check.js +19 -2
- package/dist/cli.js +3 -2
- package/dist/config/config-matchers.d.ts +13 -37
- package/dist/config/config-matchers.js +35 -122
- package/dist/config/next-config.d.ts +15 -5
- package/dist/config/next-config.js +7 -1
- package/dist/config/request-context.d.ts +14 -0
- package/dist/config/request-context.js +26 -0
- package/dist/entries/app-browser-entry.d.ts +4 -10
- package/dist/entries/app-browser-entry.js +20 -4
- package/dist/entries/app-rsc-entry.js +30 -9
- package/dist/entries/app-rsc-manifest.js +36 -0
- package/dist/entries/pages-client-entry.js +0 -1
- package/dist/entries/pages-server-entry.js +13 -5
- package/dist/index.js +194 -101
- package/dist/init-cloudflare.d.ts +3 -1
- package/dist/init-cloudflare.js +59 -5
- package/dist/init.d.ts +6 -4
- package/dist/init.js +20 -22
- package/dist/plugins/extensionless-dynamic-import.js +23 -18
- package/dist/plugins/ignore-dynamic-requests.js +3 -1
- package/dist/plugins/import-meta-url.js +17 -6
- package/dist/plugins/og-assets.js +1 -1
- package/dist/plugins/require-context.js +20 -15
- package/dist/plugins/transform-cache.d.ts +19 -0
- package/dist/plugins/transform-cache.js +36 -0
- package/dist/routing/app-route-graph.d.ts +27 -11
- package/dist/routing/app-route-graph.js +158 -22
- package/dist/routing/app-router.js +12 -6
- package/dist/routing/file-matcher.d.ts +11 -22
- package/dist/routing/file-matcher.js +21 -33
- package/dist/routing/pages-router.js +23 -29
- 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.d.ts +2 -0
- package/dist/server/api-handler.js +3 -3
- package/dist/server/app-browser-entry.js +110 -37
- 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.d.ts +23 -21
- package/dist/server/app-browser-navigation-controller.js +2 -2
- package/dist/server/app-browser-state.js +1 -1
- package/dist/server/app-browser-visible-commit.js +1 -1
- package/dist/server/app-fallback-renderer.d.ts +3 -0
- package/dist/server/app-fallback-renderer.js +4 -2
- package/dist/server/app-middleware.js +2 -1
- package/dist/server/app-page-boundary-render.d.ts +12 -1
- package/dist/server/app-page-boundary-render.js +84 -2
- package/dist/server/app-page-cache-finalizer.d.ts +1 -1
- package/dist/server/app-page-cache-finalizer.js +1 -1
- package/dist/server/app-page-cache.d.ts +2 -2
- package/dist/server/app-page-cache.js +16 -2
- package/dist/server/app-page-dispatch.d.ts +19 -2
- package/dist/server/app-page-dispatch.js +45 -23
- package/dist/server/app-page-element-builder.d.ts +9 -2
- package/dist/server/app-page-element-builder.js +144 -33
- package/dist/server/app-page-head.d.ts +56 -4
- package/dist/server/app-page-head.js +216 -85
- package/dist/server/app-page-http-access-fallback-metadata.d.ts +29 -0
- package/dist/server/app-page-http-access-fallback-metadata.js +114 -0
- package/dist/server/app-page-probe.d.ts +4 -0
- package/dist/server/app-page-probe.js +6 -2
- 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 +15 -0
- package/dist/server/app-page-request.js +134 -14
- package/dist/server/app-page-response.js +1 -1
- package/dist/server/app-page-route-wiring.d.ts +16 -0
- package/dist/server/app-page-route-wiring.js +254 -52
- package/dist/server/app-pages-bridge.d.ts +1 -1
- package/dist/server/app-pages-bridge.js +2 -1
- 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-cache.js +4 -0
- package/dist/server/app-route-handler-dispatch.js +40 -20
- package/dist/server/app-route-handler-execution.d.ts +6 -1
- package/dist/server/app-route-handler-execution.js +42 -16
- 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-handler-response.js +1 -1
- package/dist/server/app-route-module-loader.d.ts +9 -1
- package/dist/server/app-route-module-loader.js +4 -0
- package/dist/server/app-router-entry.js +6 -3
- package/dist/server/app-rsc-cache-busting.d.ts +1 -1
- package/dist/server/app-rsc-errors.d.ts +1 -1
- package/dist/server/app-rsc-errors.js +22 -2
- package/dist/server/app-rsc-handler.d.ts +10 -5
- package/dist/server/app-rsc-handler.js +73 -33
- 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 +29 -0
- package/dist/server/app-rsc-route-matching.js +93 -11
- package/dist/server/app-segment-config.js +13 -3
- package/dist/server/app-server-action-execution.d.ts +3 -1
- package/dist/server/app-server-action-execution.js +9 -7
- package/dist/server/app-ssr-entry.js +6 -6
- package/dist/server/app-ssr-stream.d.ts +1 -7
- package/dist/server/app-ssr-stream.js +2 -10
- package/dist/server/cache-control.d.ts +2 -2
- package/dist/server/cache-control.js +2 -1
- package/dist/server/config-headers.d.ts +24 -0
- package/dist/server/config-headers.js +52 -0
- package/dist/server/dev-initial-server-error.d.ts +1 -1
- package/dist/server/dev-server.d.ts +3 -1
- package/dist/server/dev-server.js +170 -321
- package/dist/server/headers.d.ts +2 -2
- package/dist/server/headers.js +4 -3
- package/dist/server/isr-cache.d.ts +11 -34
- package/dist/server/isr-cache.js +33 -43
- package/dist/server/isr-decision.d.ts +2 -2
- 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-runtime.js +4 -3
- package/dist/server/middleware.d.ts +1 -1
- package/dist/server/middleware.js +2 -1
- package/dist/server/pages-api-route.d.ts +2 -0
- package/dist/server/pages-api-route.js +4 -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.js +0 -1
- package/dist/server/pages-get-initial-props.d.ts +16 -3
- package/dist/server/pages-get-initial-props.js +17 -10
- package/dist/server/pages-i18n.js +64 -16
- package/dist/server/pages-node-compat.d.ts +2 -0
- package/dist/server/pages-node-compat.js +7 -3
- package/dist/server/pages-page-data.d.ts +64 -10
- package/dist/server/pages-page-data.js +349 -80
- package/dist/server/pages-page-handler.d.ts +9 -3
- package/dist/server/pages-page-handler.js +131 -36
- package/dist/server/pages-page-response.d.ts +5 -3
- package/dist/server/pages-page-response.js +24 -27
- package/dist/server/pages-readiness.d.ts +3 -3
- package/dist/server/pages-request-pipeline.d.ts +8 -0
- package/dist/server/pages-request-pipeline.js +30 -12
- package/dist/server/pages-revalidate.d.ts +1 -1
- package/dist/server/pages-revalidate.js +54 -8
- package/dist/server/pages-router-entry.d.ts +1 -0
- package/dist/server/pages-router-entry.js +16 -4
- package/dist/server/prerender-route-params.js +2 -2
- package/dist/server/prod-server.d.ts +3 -5
- package/dist/server/prod-server.js +72 -35
- package/dist/server/request-pipeline.d.ts +15 -29
- package/dist/server/request-pipeline.js +24 -59
- package/dist/server/revalidation-host.d.ts +11 -0
- package/dist/server/revalidation-host.js +19 -0
- package/dist/server/rsc-stream-hints.js +122 -18
- package/dist/server/worker-revalidation-context.d.ts +13 -0
- package/dist/server/worker-revalidation-context.js +29 -0
- package/dist/shims/app.d.ts +1 -1
- package/dist/shims/cache-handler.d.ts +1 -1
- package/dist/shims/cache-handler.js +10 -7
- 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 +18 -1
- package/dist/shims/cache-runtime.js +26 -8
- package/dist/shims/cache.d.ts +5 -5
- package/dist/shims/cache.js +27 -11
- 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.d.ts +1 -1
- package/dist/shims/error.js +2 -2
- package/dist/shims/fetch-cache.js +13 -4
- package/dist/shims/font-google-base.d.ts +11 -4
- package/dist/shims/font-google-base.js +17 -8
- package/dist/shims/font-local.d.ts +10 -3
- package/dist/shims/font-local.js +41 -10
- package/dist/shims/head.d.ts +13 -2
- package/dist/shims/head.js +3 -3
- package/dist/shims/headers.d.ts +37 -43
- package/dist/shims/headers.js +183 -74
- package/dist/shims/image.d.ts +27 -37
- package/dist/shims/image.js +21 -14
- package/dist/shims/internal/cookie-serialize.d.ts +12 -9
- package/dist/shims/internal/cookie-serialize.js +10 -7
- package/dist/shims/internal/hybrid-client-route-owner.js +3 -1
- package/dist/shims/internal/interpolate-as.d.ts +15 -1
- package/dist/shims/internal/interpolate-as.js +27 -2
- package/dist/shims/internal/utils.d.ts +3 -3
- package/dist/shims/legacy-image.d.ts +3 -37
- package/dist/shims/legacy-image.js +6 -16
- package/dist/shims/link.d.ts +15 -22
- package/dist/shims/link.js +34 -13
- package/dist/shims/metadata.d.ts +7 -17
- package/dist/shims/metadata.js +74 -24
- package/dist/shims/navigation-context-state.d.ts +1 -1
- package/dist/shims/navigation.d.ts +7 -3
- package/dist/shims/navigation.js +25 -14
- package/dist/shims/navigation.react-server.js +1 -1
- 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-context.d.ts +4 -1
- package/dist/shims/request-state-types.d.ts +1 -1
- package/dist/shims/router.d.ts +55 -21
- package/dist/shims/router.js +180 -44
- package/dist/shims/script.d.ts +6 -10
- package/dist/shims/script.js +7 -4
- package/dist/shims/server.d.ts +50 -26
- package/dist/shims/server.js +193 -55
- package/dist/shims/unified-request-context.d.ts +22 -3
- package/dist/shims/unified-request-context.js +84 -1
- 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 +76 -15
- package/dist/utils/cache-control-metadata.d.ts +2 -1
- package/dist/utils/cache-control-metadata.js +5 -1
- 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/html-limited-bots.js +1 -1
- package/dist/utils/protocol-headers.d.ts +7 -1
- package/dist/utils/protocol-headers.js +7 -1
- package/dist/utils/regex-safety.d.ts +8 -0
- package/dist/utils/regex-safety.js +737 -0
- package/package.json +13 -2
|
@@ -29,6 +29,6 @@ declare function isDangerousScheme(url: string): boolean;
|
|
|
29
29
|
* packages/next/src/shared/lib/router/router.ts:1025,1057
|
|
30
30
|
*/
|
|
31
31
|
declare function reportBlockedDangerousNavigation(): void;
|
|
32
|
-
declare function assertSafeNavigationUrl(url: string): void;
|
|
32
|
+
declare function assertSafeNavigationUrl(url: string, ErrorConstructor?: new (message: string) => Error): void;
|
|
33
33
|
//#endregion
|
|
34
34
|
export { DANGEROUS_URL_BLOCK_MESSAGE, assertSafeNavigationUrl, isDangerousScheme, reportBlockedDangerousNavigation };
|
package/dist/shims/url-safety.js
CHANGED
|
@@ -60,10 +60,10 @@ function isDangerousScheme(url) {
|
|
|
60
60
|
function reportBlockedDangerousNavigation() {
|
|
61
61
|
console.error(DANGEROUS_URL_BLOCK_MESSAGE);
|
|
62
62
|
}
|
|
63
|
-
function assertSafeNavigationUrl(url) {
|
|
63
|
+
function assertSafeNavigationUrl(url, ErrorConstructor = Error) {
|
|
64
64
|
if (isDangerousScheme(url)) {
|
|
65
65
|
reportBlockedDangerousNavigation();
|
|
66
|
-
throw new
|
|
66
|
+
throw new ErrorConstructor(DANGEROUS_URL_BLOCK_MESSAGE);
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
//#endregion
|
package/dist/typegen.d.ts
CHANGED
|
@@ -4,6 +4,12 @@ type GenerateRouteTypesOptions = {
|
|
|
4
4
|
appDir?: string | null;
|
|
5
5
|
pageExtensions?: readonly string[];
|
|
6
6
|
};
|
|
7
|
-
|
|
7
|
+
type GenerateRouteTypesResult = {
|
|
8
|
+
routeTypesPath: string;
|
|
9
|
+
nextEnvPath: string;
|
|
10
|
+
nextEnvStatus: "created" | "updated" | "unchanged";
|
|
11
|
+
};
|
|
12
|
+
declare function nextEnvFileContent(hasNext: boolean, hasAppDir: boolean, eol?: string): string;
|
|
13
|
+
declare function generateRouteTypes(options: GenerateRouteTypesOptions): Promise<GenerateRouteTypesResult>;
|
|
8
14
|
//#endregion
|
|
9
|
-
export { generateRouteTypes };
|
|
15
|
+
export { GenerateRouteTypesResult, generateRouteTypes, nextEnvFileContent };
|
package/dist/typegen.js
CHANGED
|
@@ -4,34 +4,82 @@ import { decodeRouteSegment, isInvisibleSegment } from "./routing/utils.js";
|
|
|
4
4
|
import { patternToNextFormat } from "./routing/route-validation.js";
|
|
5
5
|
import { compareStrings } from "./utils/compare.js";
|
|
6
6
|
import { appRouteGraph } from "./routing/app-router.js";
|
|
7
|
+
import { createRequire } from "node:module";
|
|
7
8
|
import fsp from "node:fs/promises";
|
|
9
|
+
import os from "node:os";
|
|
8
10
|
//#region src/typegen.ts
|
|
9
|
-
|
|
11
|
+
function nextEnvFileContent(hasNext, hasAppDir, eol = "\n") {
|
|
12
|
+
return `${hasNext ? `/// <reference types="next" />
|
|
10
13
|
/// <reference types="next/image-types/global" />
|
|
11
|
-
import "
|
|
14
|
+
import "vinext/types/augmentations";
|
|
15
|
+
` : `import "vinext/types";
|
|
16
|
+
`}import "./.next/types/routes.d.ts";
|
|
12
17
|
|
|
13
18
|
// NOTE: This file should not be edited
|
|
14
|
-
// see https://nextjs.org/docs
|
|
15
|
-
|
|
19
|
+
// see https://nextjs.org/docs/${hasAppDir ? "app" : "pages"}/api-reference/config/typescript for more information.
|
|
20
|
+
`.replaceAll("\n", eol);
|
|
21
|
+
}
|
|
16
22
|
async function generateRouteTypes(options) {
|
|
17
23
|
const root = path.resolve(options.root);
|
|
18
|
-
const appDir = options.appDir ? path.resolve(options.appDir) : findDir(root, "app", "src/app");
|
|
24
|
+
const appDir = options.appDir === null ? null : options.appDir ? path.resolve(options.appDir) : findDir(root, "app", "src/app");
|
|
19
25
|
const outPath = path.join(root, ".next", "types", "routes.d.ts");
|
|
20
|
-
const
|
|
26
|
+
const pagesDir = findDir(root, "pages", "src/pages");
|
|
27
|
+
const content = appDir ? renderRouteTypes(await collectRouteTypeModel(appDir, options.pageExtensions), pagesDir !== null) : renderRouteTypes(emptyRouteTypeModel(), false);
|
|
21
28
|
await fsp.mkdir(path.dirname(outPath), { recursive: true });
|
|
22
29
|
await fsp.writeFile(outPath, content, "utf-8");
|
|
23
|
-
await ensureNextEnvFile(root);
|
|
24
|
-
return
|
|
30
|
+
const nextEnv = await ensureNextEnvFile(root, appDir !== null);
|
|
31
|
+
return {
|
|
32
|
+
routeTypesPath: outPath,
|
|
33
|
+
nextEnvPath: nextEnv.path,
|
|
34
|
+
nextEnvStatus: nextEnv.status
|
|
35
|
+
};
|
|
25
36
|
}
|
|
26
|
-
async function ensureNextEnvFile(root) {
|
|
37
|
+
async function ensureNextEnvFile(root, hasAppDir) {
|
|
27
38
|
const envPath = path.join(root, "next-env.d.ts");
|
|
39
|
+
let eol = os.EOL;
|
|
40
|
+
let existing;
|
|
28
41
|
try {
|
|
29
|
-
await fsp.
|
|
30
|
-
|
|
31
|
-
|
|
42
|
+
existing = await fsp.readFile(envPath, "utf-8");
|
|
43
|
+
const newline = existing.indexOf("\n", 1);
|
|
44
|
+
if (newline !== -1) eol = existing[newline - 1] === "\r" ? "\r\n" : "\n";
|
|
45
|
+
} catch (error) {
|
|
46
|
+
if (error.code !== "ENOENT") throw error;
|
|
47
|
+
}
|
|
48
|
+
const content = nextEnvFileContent(await hasNextPackage(root), hasAppDir, eol);
|
|
49
|
+
if (existing === content) return {
|
|
50
|
+
path: envPath,
|
|
51
|
+
status: "unchanged"
|
|
52
|
+
};
|
|
53
|
+
await fsp.writeFile(envPath, content, "utf-8");
|
|
54
|
+
return {
|
|
55
|
+
path: envPath,
|
|
56
|
+
status: existing === void 0 ? "created" : "updated"
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
async function hasNextPackage(root) {
|
|
60
|
+
const manifestPath = path.join(root, "package.json");
|
|
61
|
+
let declaresNext;
|
|
62
|
+
try {
|
|
63
|
+
const manifest = JSON.parse(await fsp.readFile(manifestPath, "utf-8"));
|
|
64
|
+
declaresNext = [
|
|
65
|
+
"dependencies",
|
|
66
|
+
"devDependencies",
|
|
67
|
+
"peerDependencies",
|
|
68
|
+
"optionalDependencies"
|
|
69
|
+
].some((field) => {
|
|
70
|
+
const dependencies = manifest[field];
|
|
71
|
+
return typeof dependencies === "object" && dependencies !== null && Object.hasOwn(dependencies, "next");
|
|
32
72
|
});
|
|
33
73
|
} catch (error) {
|
|
34
|
-
if (error.code !== "
|
|
74
|
+
if (error.code !== "ENOENT") throw error;
|
|
75
|
+
}
|
|
76
|
+
if (declaresNext === false) return false;
|
|
77
|
+
try {
|
|
78
|
+
const packageJsonPath = createRequire(manifestPath).resolve("next/package.json");
|
|
79
|
+
await fsp.access(packageJsonPath);
|
|
80
|
+
return true;
|
|
81
|
+
} catch {
|
|
82
|
+
return false;
|
|
35
83
|
}
|
|
36
84
|
}
|
|
37
85
|
function emptyRouteTypeModel() {
|
|
@@ -84,12 +132,23 @@ async function collectRouteTypeModel(appDir, pageExtensions) {
|
|
|
84
132
|
for (const slotNames of model.layoutSlots.values()) slotNames.sort(compareStrings);
|
|
85
133
|
return model;
|
|
86
134
|
}
|
|
87
|
-
function renderRouteTypes(model) {
|
|
135
|
+
function renderRouteTypes(model, hasPagesCompat) {
|
|
88
136
|
const allRoutes = uniqueSorted([
|
|
89
137
|
...model.pageRoutes,
|
|
90
138
|
...model.layoutRoutes,
|
|
91
139
|
...model.routeHandlerRoutes
|
|
92
140
|
]);
|
|
141
|
+
const navigationCompat = hasPagesCompat ? `
|
|
142
|
+
declare module "next/navigation" {
|
|
143
|
+
function useSearchParams(): import("next/navigation").ReadonlyURLSearchParams | null;
|
|
144
|
+
function usePathname(): string | null;
|
|
145
|
+
function useParams<
|
|
146
|
+
T extends Record<string, string | string[]> = Record<string, string | string[]>,
|
|
147
|
+
>(): T | null;
|
|
148
|
+
function useSelectedLayoutSegments(): string[] | null;
|
|
149
|
+
function useSelectedLayoutSegment(): string | null;
|
|
150
|
+
}
|
|
151
|
+
` : "";
|
|
93
152
|
return `// This file is generated by vinext. Do not edit.
|
|
94
153
|
import type * as React from "react";
|
|
95
154
|
|
|
@@ -126,6 +185,8 @@ ${renderLayoutSlotMap(model.layoutRoutes, model.layoutSlots)}
|
|
|
126
185
|
}
|
|
127
186
|
}
|
|
128
187
|
|
|
188
|
+
${navigationCompat}
|
|
189
|
+
|
|
129
190
|
export {};
|
|
130
191
|
`;
|
|
131
192
|
}
|
|
@@ -224,4 +285,4 @@ function quote(value) {
|
|
|
224
285
|
return JSON.stringify(value);
|
|
225
286
|
}
|
|
226
287
|
//#endregion
|
|
227
|
-
export { generateRouteTypes };
|
|
288
|
+
export { generateRouteTypes, nextEnvFileContent };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
//#region src/utils/cache-control-metadata.d.ts
|
|
2
2
|
declare function readCacheControlNumberField(ctx: Record<string, unknown> | undefined, field: string): number | undefined;
|
|
3
|
+
declare function readCacheControlRevalidateField(ctx: Record<string, unknown> | undefined): number | false | undefined;
|
|
3
4
|
//#endregion
|
|
4
|
-
export { readCacheControlNumberField };
|
|
5
|
+
export { readCacheControlNumberField, readCacheControlRevalidateField };
|
|
@@ -8,5 +8,9 @@ function readCacheControlNumberField(ctx, field) {
|
|
|
8
8
|
const value = readRecordField(ctx, "cacheControl")?.[field] ?? ctx?.[field];
|
|
9
9
|
return typeof value === "number" ? value : void 0;
|
|
10
10
|
}
|
|
11
|
+
function readCacheControlRevalidateField(ctx) {
|
|
12
|
+
const value = readRecordField(ctx, "cacheControl")?.revalidate ?? ctx?.revalidate;
|
|
13
|
+
return typeof value === "number" || value === false ? value : void 0;
|
|
14
|
+
}
|
|
11
15
|
//#endregion
|
|
12
|
-
export { readCacheControlNumberField };
|
|
16
|
+
export { readCacheControlNumberField, readCacheControlRevalidateField };
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
type DomainLocale = {
|
|
3
3
|
domain: string;
|
|
4
4
|
defaultLocale: string;
|
|
5
|
-
locales?: string[];
|
|
6
|
-
http?:
|
|
5
|
+
locales?: readonly string[];
|
|
6
|
+
http?: true;
|
|
7
7
|
};
|
|
8
8
|
declare function normalizeDomainHostname(hostname: string | null | undefined): string | undefined;
|
|
9
9
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/utils/html-limited-bots.ts
|
|
2
|
-
const HTML_LIMITED_BOT_UA_RE_STRING = String.raw`[\w-]+-Google|Google-[\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight`;
|
|
2
|
+
const HTML_LIMITED_BOT_UA_RE_STRING = String.raw`[\w-]+-Google|Google-[\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|meta-externalagent|meta-externalfetcher|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight`;
|
|
3
3
|
const HEADLESS_BROWSER_BOT_UA_RE = /Googlebot(?!-)|Googlebot$/i;
|
|
4
4
|
const htmlLimitedBotRegexCache = /* @__PURE__ */ new Map();
|
|
5
5
|
function getHtmlLimitedBotRegex(htmlLimitedBots) {
|
|
@@ -7,6 +7,8 @@ declare const VINEXT_PRERENDER_SECRET_HEADER = "x-vinext-prerender-secret";
|
|
|
7
7
|
declare const VINEXT_PRERENDER_ROUTE_PARAMS_HEADER = "x-vinext-prerender-route-params";
|
|
8
8
|
/** Indicates a build-time prerender render is probing whether a route can be static. */
|
|
9
9
|
declare const VINEXT_PRERENDER_SPECULATIVE_HEADER = "x-vinext-prerender-speculative";
|
|
10
|
+
/** Logical hostname carried only by authenticated Node revalidation loopbacks. */
|
|
11
|
+
declare const VINEXT_REVALIDATE_HOST_HEADER = "x-vinext-revalidate-host";
|
|
10
12
|
/** Prefix for forwarded request headers (e.g. `x-middleware-request-cookie`). */
|
|
11
13
|
declare const MIDDLEWARE_REQUEST_HEADER_PREFIX = "x-middleware-request-";
|
|
12
14
|
/** Comma-separated list of header names that middleware wants to override. */
|
|
@@ -19,5 +21,9 @@ declare const MIDDLEWARE_CACHE_HEADER = "x-middleware-cache";
|
|
|
19
21
|
declare const MIDDLEWARE_SKIP_HEADER = "x-middleware-skip";
|
|
20
22
|
/** Generic prefix for all middleware internal headers. */
|
|
21
23
|
declare const MIDDLEWARE_HEADER_PREFIX = "x-middleware-";
|
|
24
|
+
/** Authenticates an internal Pages Router on-demand revalidation request. */
|
|
25
|
+
declare const PRERENDER_REVALIDATE_HEADER = "x-prerender-revalidate";
|
|
26
|
+
/** Restricts on-demand revalidation to paths that were already generated. */
|
|
27
|
+
declare const PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER = "x-prerender-revalidate-if-generated";
|
|
22
28
|
//#endregion
|
|
23
|
-
export { MIDDLEWARE_CACHE_HEADER, MIDDLEWARE_HEADER_PREFIX, MIDDLEWARE_OVERRIDE_HEADERS, MIDDLEWARE_REQUEST_HEADER_PREFIX, MIDDLEWARE_SET_COOKIE_HEADER, MIDDLEWARE_SKIP_HEADER, VINEXT_MW_CTX_HEADER, VINEXT_PRERENDER_ROUTE_PARAMS_HEADER, VINEXT_PRERENDER_SECRET_HEADER, VINEXT_PRERENDER_SPECULATIVE_HEADER };
|
|
29
|
+
export { MIDDLEWARE_CACHE_HEADER, MIDDLEWARE_HEADER_PREFIX, MIDDLEWARE_OVERRIDE_HEADERS, MIDDLEWARE_REQUEST_HEADER_PREFIX, MIDDLEWARE_SET_COOKIE_HEADER, MIDDLEWARE_SKIP_HEADER, PRERENDER_REVALIDATE_HEADER, PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER, VINEXT_MW_CTX_HEADER, VINEXT_PRERENDER_ROUTE_PARAMS_HEADER, VINEXT_PRERENDER_SECRET_HEADER, VINEXT_PRERENDER_SPECULATIVE_HEADER, VINEXT_REVALIDATE_HOST_HEADER };
|
|
@@ -7,6 +7,8 @@ const VINEXT_PRERENDER_SECRET_HEADER = "x-vinext-prerender-secret";
|
|
|
7
7
|
const VINEXT_PRERENDER_ROUTE_PARAMS_HEADER = "x-vinext-prerender-route-params";
|
|
8
8
|
/** Indicates a build-time prerender render is probing whether a route can be static. */
|
|
9
9
|
const VINEXT_PRERENDER_SPECULATIVE_HEADER = "x-vinext-prerender-speculative";
|
|
10
|
+
/** Logical hostname carried only by authenticated Node revalidation loopbacks. */
|
|
11
|
+
const VINEXT_REVALIDATE_HOST_HEADER = "x-vinext-revalidate-host";
|
|
10
12
|
/** Prefix for forwarded request headers (e.g. `x-middleware-request-cookie`). */
|
|
11
13
|
const MIDDLEWARE_REQUEST_HEADER_PREFIX = "x-middleware-request-";
|
|
12
14
|
/** Comma-separated list of header names that middleware wants to override. */
|
|
@@ -19,5 +21,9 @@ const MIDDLEWARE_CACHE_HEADER = "x-middleware-cache";
|
|
|
19
21
|
const MIDDLEWARE_SKIP_HEADER = "x-middleware-skip";
|
|
20
22
|
/** Generic prefix for all middleware internal headers. */
|
|
21
23
|
const MIDDLEWARE_HEADER_PREFIX = "x-middleware-";
|
|
24
|
+
/** Authenticates an internal Pages Router on-demand revalidation request. */
|
|
25
|
+
const PRERENDER_REVALIDATE_HEADER = "x-prerender-revalidate";
|
|
26
|
+
/** Restricts on-demand revalidation to paths that were already generated. */
|
|
27
|
+
const PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER = "x-prerender-revalidate-if-generated";
|
|
22
28
|
//#endregion
|
|
23
|
-
export { MIDDLEWARE_CACHE_HEADER, MIDDLEWARE_HEADER_PREFIX, MIDDLEWARE_OVERRIDE_HEADERS, MIDDLEWARE_REQUEST_HEADER_PREFIX, MIDDLEWARE_SET_COOKIE_HEADER, MIDDLEWARE_SKIP_HEADER, VINEXT_MW_CTX_HEADER, VINEXT_PRERENDER_ROUTE_PARAMS_HEADER, VINEXT_PRERENDER_SECRET_HEADER, VINEXT_PRERENDER_SPECULATIVE_HEADER };
|
|
29
|
+
export { MIDDLEWARE_CACHE_HEADER, MIDDLEWARE_HEADER_PREFIX, MIDDLEWARE_OVERRIDE_HEADERS, MIDDLEWARE_REQUEST_HEADER_PREFIX, MIDDLEWARE_SET_COOKIE_HEADER, MIDDLEWARE_SKIP_HEADER, PRERENDER_REVALIDATE_HEADER, PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER, VINEXT_MW_CTX_HEADER, VINEXT_PRERENDER_ROUTE_PARAMS_HEADER, VINEXT_PRERENDER_SECRET_HEADER, VINEXT_PRERENDER_SPECULATIVE_HEADER, VINEXT_REVALIDATE_HOST_HEADER };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
//#region src/utils/regex-safety.d.ts
|
|
2
|
+
type RegexSafetyIssue = "nested repetition" | "ambiguous alternatives under repetition" | "ambiguous sequence expansion" | "overlapping sequential repetition" | "analysis budget exceeded";
|
|
3
|
+
declare function analyzeRegexSafety(pattern: string, options?: {
|
|
4
|
+
ignoreCase?: boolean;
|
|
5
|
+
}): RegexSafetyIssue | null;
|
|
6
|
+
declare function regexAtomsMayOverlap(left: string, right: string, ignoreCase?: boolean): boolean;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { RegexSafetyIssue, analyzeRegexSafety, regexAtomsMayOverlap };
|