@reckona/mreact-router 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +101 -0
- package/dist/actions.d.ts +43 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +577 -0
- package/dist/actions.js.map +1 -0
- package/dist/adapters/aws-lambda.d.ts +45 -0
- package/dist/adapters/aws-lambda.d.ts.map +1 -0
- package/dist/adapters/aws-lambda.js +168 -0
- package/dist/adapters/aws-lambda.js.map +1 -0
- package/dist/adapters/cloudflare.d.ts +94 -0
- package/dist/adapters/cloudflare.d.ts.map +1 -0
- package/dist/adapters/cloudflare.js +390 -0
- package/dist/adapters/cloudflare.js.map +1 -0
- package/dist/adapters/devtools.d.ts +4 -0
- package/dist/adapters/devtools.d.ts.map +1 -0
- package/dist/adapters/devtools.js +5 -0
- package/dist/adapters/devtools.js.map +1 -0
- package/dist/adapters/edge.d.ts +9 -0
- package/dist/adapters/edge.d.ts.map +1 -0
- package/dist/adapters/edge.js +53 -0
- package/dist/adapters/edge.js.map +1 -0
- package/dist/adapters/node.d.ts +26 -0
- package/dist/adapters/node.d.ts.map +1 -0
- package/dist/adapters/node.js +64 -0
- package/dist/adapters/node.js.map +1 -0
- package/dist/adapters/static.d.ts +10 -0
- package/dist/adapters/static.d.ts.map +1 -0
- package/dist/adapters/static.js +34 -0
- package/dist/adapters/static.js.map +1 -0
- package/dist/assets.d.ts +18 -0
- package/dist/assets.d.ts.map +1 -0
- package/dist/assets.js +67 -0
- package/dist/assets.js.map +1 -0
- package/dist/build.d.ts +36 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/build.js +322 -0
- package/dist/build.js.map +1 -0
- package/dist/cache.d.ts +54 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +221 -0
- package/dist/cache.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +37 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +105 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +1268 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +27 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +44 -0
- package/dist/config.js.map +1 -0
- package/dist/cookies.d.ts +14 -0
- package/dist/cookies.d.ts.map +1 -0
- package/dist/cookies.js +69 -0
- package/dist/cookies.js.map +1 -0
- package/dist/csp.d.ts +6 -0
- package/dist/csp.d.ts.map +1 -0
- package/dist/csp.js +70 -0
- package/dist/csp.js.map +1 -0
- package/dist/dev-server.d.ts +16 -0
- package/dist/dev-server.d.ts.map +1 -0
- package/dist/dev-server.js +103 -0
- package/dist/dev-server.js.map +1 -0
- package/dist/http.d.ts +23 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +106 -0
- package/dist/http.js.map +1 -0
- package/dist/i18n.d.ts +15 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +61 -0
- package/dist/i18n.js.map +1 -0
- package/dist/import-policy.d.ts +30 -0
- package/dist/import-policy.d.ts.map +1 -0
- package/dist/import-policy.js +105 -0
- package/dist/import-policy.js.map +1 -0
- package/dist/index.d.ts +60 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +47 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +60 -0
- package/dist/logger.js.map +1 -0
- package/dist/module-runner.d.ts +9 -0
- package/dist/module-runner.d.ts.map +1 -0
- package/dist/module-runner.js +112 -0
- package/dist/module-runner.js.map +1 -0
- package/dist/native-escape.d.ts +2 -0
- package/dist/native-escape.d.ts.map +1 -0
- package/dist/native-escape.js +43 -0
- package/dist/native-escape.js.map +1 -0
- package/dist/native-route-matcher.d.ts +5 -0
- package/dist/native-route-matcher.d.ts.map +1 -0
- package/dist/native-route-matcher.js +91 -0
- package/dist/native-route-matcher.js.map +1 -0
- package/dist/navigation.d.ts +25 -0
- package/dist/navigation.d.ts.map +1 -0
- package/dist/navigation.js +125 -0
- package/dist/navigation.js.map +1 -0
- package/dist/prerender-store.d.ts +37 -0
- package/dist/prerender-store.d.ts.map +1 -0
- package/dist/prerender-store.js +158 -0
- package/dist/prerender-store.js.map +1 -0
- package/dist/render.d.ts +26 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +1688 -0
- package/dist/render.js.map +1 -0
- package/dist/route-path.d.ts +2 -0
- package/dist/route-path.d.ts.map +1 -0
- package/dist/route-path.js +5 -0
- package/dist/route-path.js.map +1 -0
- package/dist/route-source.d.ts +9 -0
- package/dist/route-source.d.ts.map +1 -0
- package/dist/route-source.js +44 -0
- package/dist/route-source.js.map +1 -0
- package/dist/routes.d.ts +38 -0
- package/dist/routes.d.ts.map +1 -0
- package/dist/routes.js +168 -0
- package/dist/routes.js.map +1 -0
- package/dist/serve.d.ts +63 -0
- package/dist/serve.d.ts.map +1 -0
- package/dist/serve.js +445 -0
- package/dist/serve.js.map +1 -0
- package/dist/session.d.ts +25 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +104 -0
- package/dist/session.js.map +1 -0
- package/dist/vite-config.d.ts +8 -0
- package/dist/vite-config.d.ts.map +1 -0
- package/dist/vite-config.js +17 -0
- package/dist/vite-config.js.map +1 -0
- package/dist/vite.d.ts +25 -0
- package/dist/vite.d.ts.map +1 -0
- package/dist/vite.js +150 -0
- package/dist/vite.js.map +1 -0
- package/package.json +91 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-escape.js","sourceRoot":"","sources":["../src/native-escape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,IAAI,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAMvF,IAAI,YAAoD,CAAC;AACzD,IAAI,aAAmE,CAAC;AAExE,MAAM,UAAU,eAAe,CAAC,MAA0B;IACxD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,sBAAsB,EAAE,CAAC;IAExC,OAAO,MAAM,EAAE,eAAe,EAAE,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,sBAAsB;IAC7B,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAC;QAEvC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,YAAY,GAAG,KAAK,CAAC;YACrB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,6BAA6B,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACtF,IAAI,CAAC;gBACH,YAAY,GAAG,OAAO,CAAC,SAAS,CAAuB,CAAC;gBACxD,MAAM;YACR,CAAC;YAAC,MAAM,CAAC;gBACP,yEAAyE;YAC3E,CAAC;QACH,CAAC;QACD,YAAY,KAAK,KAAK,CAAC;IACzB,CAAC;IAED,OAAO,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;AAC3D,CAAC;AAED,SAAS,oBAAoB;IAC3B,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,aAAa;gBACX,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3F,CAAC;QAAC,MAAM,CAAC;YACP,aAAa,GAAG,KAAK,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC;AAC7D,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { AppRoute, RouteMatcher } from "./routes.js";
|
|
2
|
+
export declare function createNativeRouteMatcher(sortedRoutes: readonly AppRoute[]): RouteMatcher | undefined;
|
|
3
|
+
export declare function shouldUseNativeRouteMatcher(routeCount: number, mode: string | undefined): boolean;
|
|
4
|
+
export declare function nativeModulePackageCandidates(platform: NodeJS.Platform, arch: string): string[];
|
|
5
|
+
//# sourceMappingURL=native-route-matcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-route-matcher.d.ts","sourceRoot":"","sources":["../src/native-route-matcher.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAgB,YAAY,EAAE,MAAM,aAAa,CAAC;AAsBxE,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,SAAS,QAAQ,EAAE,GAChC,YAAY,GAAG,SAAS,CA2C1B;AAED,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,OAAO,CAUT;AAgCD,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAO/F"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
let loadedNativeModule;
|
|
5
|
+
const nativeRouteMatcherAutoThreshold = 100;
|
|
6
|
+
export function createNativeRouteMatcher(sortedRoutes) {
|
|
7
|
+
if (!shouldUseNativeRouteMatcher(sortedRoutes.length, process.env.MREACT_APP_ROUTER_NATIVE_ROUTE_MATCHER)) {
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
const nativeModule = loadNativeRouteMatcherModule();
|
|
11
|
+
const NativeRouteMatcher = nativeModule === false
|
|
12
|
+
? undefined
|
|
13
|
+
: nativeModule.NativeRouteMatcher;
|
|
14
|
+
if (NativeRouteMatcher === undefined) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
const nativeRoutes = sortedRoutes.map((route, index) => ({
|
|
18
|
+
index,
|
|
19
|
+
segments: route.segments,
|
|
20
|
+
}));
|
|
21
|
+
const matcher = new NativeRouteMatcher(JSON.stringify(nativeRoutes));
|
|
22
|
+
return {
|
|
23
|
+
match(pathname) {
|
|
24
|
+
const output = matcher.matchRoute(pathname);
|
|
25
|
+
if (output == null) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
const route = sortedRoutes[output.index];
|
|
29
|
+
return route === undefined
|
|
30
|
+
? undefined
|
|
31
|
+
: {
|
|
32
|
+
route,
|
|
33
|
+
params: output.params,
|
|
34
|
+
};
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export function shouldUseNativeRouteMatcher(routeCount, mode) {
|
|
39
|
+
if (mode === "1" || mode === "true") {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
if (mode === "0" || mode === "false") {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
return routeCount >= nativeRouteMatcherAutoThreshold;
|
|
46
|
+
}
|
|
47
|
+
function loadNativeRouteMatcherModule() {
|
|
48
|
+
if (loadedNativeModule !== undefined) {
|
|
49
|
+
return loadedNativeModule;
|
|
50
|
+
}
|
|
51
|
+
const require = createRequire(import.meta.url);
|
|
52
|
+
for (const candidate of nativeModuleCandidates()) {
|
|
53
|
+
try {
|
|
54
|
+
loadedNativeModule = require(candidate);
|
|
55
|
+
return loadedNativeModule;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// Native package is optional. The JS matcher remains the portable fallback.
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
loadedNativeModule = false;
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
function nativeModuleCandidates() {
|
|
65
|
+
const currentDir = dirname(fileURLToPath(import.meta.url));
|
|
66
|
+
const workspaceNativePackage = join(currentDir, "..", "..", "router-native");
|
|
67
|
+
return [
|
|
68
|
+
...nativeModulePackageCandidates(process.platform, process.arch),
|
|
69
|
+
workspaceNativePackage,
|
|
70
|
+
];
|
|
71
|
+
}
|
|
72
|
+
export function nativeModulePackageCandidates(platform, arch) {
|
|
73
|
+
const platformPackage = nativePlatformPackageName(platform, arch);
|
|
74
|
+
return [
|
|
75
|
+
...(platformPackage === undefined ? [] : [platformPackage]),
|
|
76
|
+
"@reckona/mreact-router-native",
|
|
77
|
+
];
|
|
78
|
+
}
|
|
79
|
+
function nativePlatformPackageName(platform, arch) {
|
|
80
|
+
if (platform === "linux" && arch === "x64") {
|
|
81
|
+
return "@reckona/mreact-router-native-linux-x64-gnu";
|
|
82
|
+
}
|
|
83
|
+
if (platform === "darwin" && arch === "arm64") {
|
|
84
|
+
return "@reckona/mreact-router-native-darwin-arm64";
|
|
85
|
+
}
|
|
86
|
+
if (platform === "win32" && arch === "x64") {
|
|
87
|
+
return "@reckona/mreact-router-native-win32-x64-msvc";
|
|
88
|
+
}
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=native-route-matcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-route-matcher.js","sourceRoot":"","sources":["../src/native-route-matcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface RedirectOptions {
|
|
2
|
+
status?: 301 | 302 | 303 | 307 | 308;
|
|
3
|
+
}
|
|
4
|
+
export type MiddlewareNext = undefined;
|
|
5
|
+
export declare function redirect(location: string, options?: RedirectOptions): never;
|
|
6
|
+
export declare function redirectExternal(location: string, options?: RedirectOptions): never;
|
|
7
|
+
export declare function notFound(): never;
|
|
8
|
+
export declare function next(): MiddlewareNext;
|
|
9
|
+
export declare function rewrite(location: string, init?: ResponseInit): Response;
|
|
10
|
+
export declare function json(value: unknown, init?: ResponseInit): Response;
|
|
11
|
+
export declare function html(value: string, init?: ResponseInit): Response;
|
|
12
|
+
export declare function headers(request: Request): Headers;
|
|
13
|
+
export interface RequestCookies {
|
|
14
|
+
entries(): IterableIterator<[string, string]>;
|
|
15
|
+
get(name: string): string | undefined;
|
|
16
|
+
has(name: string): boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare function cookies(request: Request): RequestCookies;
|
|
19
|
+
export declare function rewriteLocation(response: Response): string | undefined;
|
|
20
|
+
export declare function isRedirectError(error: unknown): error is Error & {
|
|
21
|
+
location: string;
|
|
22
|
+
status: number;
|
|
23
|
+
};
|
|
24
|
+
export declare function isNotFoundError(error: unknown): boolean;
|
|
25
|
+
//# sourceMappingURL=navigation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../src/navigation.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CACtC;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC;AA4CvC,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,KAAK,CAS/E;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,eAAoB,GAC5B,KAAK,CASP;AAED,wBAAgB,QAAQ,IAAI,KAAK,CAKhC;AAED,wBAAgB,IAAI,IAAI,cAAc,CAErC;AAED,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,QAAQ,CAa3E;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,QAAQ,CAElE;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,QAAQ,CAWrE;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEjD;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACtC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5B;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,CAQxD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAMtE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAIrG;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEvD"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { parseCookieHeader } from "./cookies.js";
|
|
2
|
+
const redirectErrorName = "MReactRedirect";
|
|
3
|
+
const notFoundErrorName = "MReactNotFound";
|
|
4
|
+
const rewriteHeaderName = "x-mreact-rewrite";
|
|
5
|
+
const rewriteLocationSymbol = Symbol.for("mreact.router.rewriteLocation");
|
|
6
|
+
// Strip leading C0 controls + ASCII whitespace per WHATWG URL parsing.
|
|
7
|
+
// Browsers ignore these characters when resolving the Location header,
|
|
8
|
+
// so attacker payloads must be rejected after the same normalization.
|
|
9
|
+
function stripLeadingControlOrWhitespace(value) {
|
|
10
|
+
let start = 0;
|
|
11
|
+
while (start < value.length && value.charCodeAt(start) <= 0x20) {
|
|
12
|
+
start += 1;
|
|
13
|
+
}
|
|
14
|
+
return value.slice(start);
|
|
15
|
+
}
|
|
16
|
+
// Returns true if `location` is safe to use as a same-origin Location header.
|
|
17
|
+
// Allowed: path-absolute (`/foo`), query-only (`?x=1`), hash-only (`#x`),
|
|
18
|
+
// relative (`foo`). Rejected: protocol-relative (`//evil`), backslash variants
|
|
19
|
+
// (`/\evil`, `\\evil`), and anything with a scheme like `javascript:`.
|
|
20
|
+
function isSafeInternalRedirect(location) {
|
|
21
|
+
const trimmed = stripLeadingControlOrWhitespace(location);
|
|
22
|
+
if (trimmed === "")
|
|
23
|
+
return false;
|
|
24
|
+
if (trimmed.startsWith("//"))
|
|
25
|
+
return false;
|
|
26
|
+
if (trimmed.startsWith("/\\"))
|
|
27
|
+
return false;
|
|
28
|
+
if (trimmed.startsWith("\\"))
|
|
29
|
+
return false;
|
|
30
|
+
// Reject anything that parses as a URL with a scheme.
|
|
31
|
+
if (/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(trimmed))
|
|
32
|
+
return false;
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
function isSafeExternalRedirect(location) {
|
|
36
|
+
const trimmed = stripLeadingControlOrWhitespace(location);
|
|
37
|
+
const match = /^([a-zA-Z][a-zA-Z0-9+.-]*):/.exec(trimmed);
|
|
38
|
+
if (match === null || match[1] === undefined)
|
|
39
|
+
return false;
|
|
40
|
+
const scheme = match[1].toLowerCase();
|
|
41
|
+
return scheme === "http" || scheme === "https";
|
|
42
|
+
}
|
|
43
|
+
function throwUnsafeRedirect(location) {
|
|
44
|
+
throw new TypeError(`unsafe redirect target: ${JSON.stringify(location)} - use redirectExternal() for off-site destinations and ensure the URL is http(s)`);
|
|
45
|
+
}
|
|
46
|
+
export function redirect(location, options = {}) {
|
|
47
|
+
if (!isSafeInternalRedirect(location)) {
|
|
48
|
+
throwUnsafeRedirect(location);
|
|
49
|
+
}
|
|
50
|
+
throw Object.assign(new Error(`Redirect to ${location}`), {
|
|
51
|
+
location,
|
|
52
|
+
name: redirectErrorName,
|
|
53
|
+
status: options.status ?? 307,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
export function redirectExternal(location, options = {}) {
|
|
57
|
+
if (!isSafeExternalRedirect(location)) {
|
|
58
|
+
throwUnsafeRedirect(location);
|
|
59
|
+
}
|
|
60
|
+
throw Object.assign(new Error(`Redirect to ${location}`), {
|
|
61
|
+
location,
|
|
62
|
+
name: redirectErrorName,
|
|
63
|
+
status: options.status ?? 307,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
export function notFound() {
|
|
67
|
+
throw Object.assign(new Error("Not Found"), {
|
|
68
|
+
name: notFoundErrorName,
|
|
69
|
+
status: 404,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
export function next() {
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
export function rewrite(location, init = {}) {
|
|
76
|
+
const response = new Response(null, {
|
|
77
|
+
...init,
|
|
78
|
+
status: init.status ?? 200,
|
|
79
|
+
});
|
|
80
|
+
Object.defineProperty(response, rewriteLocationSymbol, {
|
|
81
|
+
configurable: false,
|
|
82
|
+
enumerable: false,
|
|
83
|
+
value: location,
|
|
84
|
+
});
|
|
85
|
+
return response;
|
|
86
|
+
}
|
|
87
|
+
export function json(value, init) {
|
|
88
|
+
return Response.json(value, init);
|
|
89
|
+
}
|
|
90
|
+
export function html(value, init = {}) {
|
|
91
|
+
const headers = new Headers(init.headers);
|
|
92
|
+
if (!headers.has("content-type")) {
|
|
93
|
+
headers.set("content-type", "text/html; charset=utf-8");
|
|
94
|
+
}
|
|
95
|
+
return new Response(value, {
|
|
96
|
+
...init,
|
|
97
|
+
headers,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
export function headers(request) {
|
|
101
|
+
return request.headers;
|
|
102
|
+
}
|
|
103
|
+
export function cookies(request) {
|
|
104
|
+
const values = parseCookieHeader(request.headers.get("cookie"));
|
|
105
|
+
return {
|
|
106
|
+
entries: () => values.entries(),
|
|
107
|
+
get: (name) => values.get(name),
|
|
108
|
+
has: (name) => values.has(name),
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
export function rewriteLocation(response) {
|
|
112
|
+
const marked = response[rewriteLocationSymbol];
|
|
113
|
+
return typeof marked === "string"
|
|
114
|
+
? marked
|
|
115
|
+
: response.headers.get(rewriteHeaderName) ?? undefined;
|
|
116
|
+
}
|
|
117
|
+
export function isRedirectError(error) {
|
|
118
|
+
return error instanceof Error &&
|
|
119
|
+
error.name === redirectErrorName &&
|
|
120
|
+
typeof error.location === "string";
|
|
121
|
+
}
|
|
122
|
+
export function isNotFoundError(error) {
|
|
123
|
+
return error instanceof Error && error.name === notFoundErrorName;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=navigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../src/navigation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { BuiltPrerenderedRoute } from "./build.js";
|
|
2
|
+
import type { AppRouterPrerenderStore } from "./serve.js";
|
|
3
|
+
export interface MemoryPrerenderStoreOptions {
|
|
4
|
+
backing?: Map<string, MemoryPrerenderStoreEntry>;
|
|
5
|
+
maxEntries?: number;
|
|
6
|
+
namespace?: string;
|
|
7
|
+
now?: () => number;
|
|
8
|
+
ttlMs?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface MemoryPrerenderStoreEntry {
|
|
11
|
+
entry: BuiltPrerenderedRoute;
|
|
12
|
+
expiresAt: number;
|
|
13
|
+
lastAccessedAt: number;
|
|
14
|
+
}
|
|
15
|
+
export interface FileSystemPrerenderStoreOptions {
|
|
16
|
+
directory: string;
|
|
17
|
+
lockPollMs?: number;
|
|
18
|
+
lockTimeoutMs?: number;
|
|
19
|
+
namespace?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface KeyValuePrerenderStoreAdapter {
|
|
22
|
+
delete(key: string): void | Promise<void>;
|
|
23
|
+
get(key: string): string | undefined | Promise<string | undefined>;
|
|
24
|
+
set(key: string, value: string, options?: {
|
|
25
|
+
ttlMs?: number | undefined;
|
|
26
|
+
}): void | Promise<void>;
|
|
27
|
+
withLock?<T>(key: string, task: (token: string) => Promise<T>): Promise<T>;
|
|
28
|
+
}
|
|
29
|
+
export interface KeyValuePrerenderStoreOptions {
|
|
30
|
+
adapter: KeyValuePrerenderStoreAdapter;
|
|
31
|
+
namespace?: string;
|
|
32
|
+
ttlMs?: number;
|
|
33
|
+
}
|
|
34
|
+
export declare function createMemoryPrerenderStore(options?: MemoryPrerenderStoreOptions): AppRouterPrerenderStore;
|
|
35
|
+
export declare function createFileSystemPrerenderStore(options: FileSystemPrerenderStoreOptions): AppRouterPrerenderStore;
|
|
36
|
+
export declare function createKeyValuePrerenderStore(options: KeyValuePrerenderStoreOptions): AppRouterPrerenderStore;
|
|
37
|
+
//# sourceMappingURL=prerender-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prerender-store.d.ts","sourceRoot":"","sources":["../src/prerender-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D,MAAM,WAAW,2BAA2B;IAC1C,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,qBAAqB,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,6BAA6B;IAC5C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACnE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChG,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC5E;AAED,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,6BAA6B,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,0BAA0B,CACxC,OAAO,GAAE,2BAAgC,GACxC,uBAAuB,CA0DzB;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,+BAA+B,GACvC,uBAAuB,CA0DzB;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,6BAA6B,GACrC,uBAAuB,CA2BzB"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
2
|
+
import { mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
export function createMemoryPrerenderStore(options = {}) {
|
|
5
|
+
const backing = options.backing ?? new Map();
|
|
6
|
+
const locks = new Map();
|
|
7
|
+
const namespace = options.namespace ?? "default";
|
|
8
|
+
const now = options.now ?? Date.now;
|
|
9
|
+
const maxEntries = options.maxEntries ?? Number.POSITIVE_INFINITY;
|
|
10
|
+
const ttlMs = options.ttlMs ?? Number.POSITIVE_INFINITY;
|
|
11
|
+
return {
|
|
12
|
+
delete(path) {
|
|
13
|
+
backing.delete(storeKey(namespace, path));
|
|
14
|
+
},
|
|
15
|
+
get(path) {
|
|
16
|
+
const key = storeKey(namespace, path);
|
|
17
|
+
const current = backing.get(key);
|
|
18
|
+
if (current === undefined) {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
if (current.expiresAt <= now()) {
|
|
22
|
+
backing.delete(key);
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
current.lastAccessedAt = now();
|
|
26
|
+
return current.entry;
|
|
27
|
+
},
|
|
28
|
+
set(path, entry) {
|
|
29
|
+
backing.set(storeKey(namespace, path), {
|
|
30
|
+
entry,
|
|
31
|
+
expiresAt: now() + ttlMs,
|
|
32
|
+
lastAccessedAt: now(),
|
|
33
|
+
});
|
|
34
|
+
evictLeastRecentlyUsed(backing, namespace, maxEntries);
|
|
35
|
+
},
|
|
36
|
+
async withLock(path, task) {
|
|
37
|
+
const key = storeKey(namespace, path);
|
|
38
|
+
const previous = locks.get(key) ?? Promise.resolve();
|
|
39
|
+
let release = () => undefined;
|
|
40
|
+
const current = new Promise((resolve) => {
|
|
41
|
+
release = resolve;
|
|
42
|
+
});
|
|
43
|
+
const queued = previous.then(() => current, () => current);
|
|
44
|
+
locks.set(key, queued);
|
|
45
|
+
await previous.catch(() => undefined);
|
|
46
|
+
try {
|
|
47
|
+
return await task();
|
|
48
|
+
}
|
|
49
|
+
finally {
|
|
50
|
+
release();
|
|
51
|
+
if (locks.get(key) === queued) {
|
|
52
|
+
locks.delete(key);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export function createFileSystemPrerenderStore(options) {
|
|
59
|
+
const namespace = options.namespace ?? "default";
|
|
60
|
+
const lockPollMs = options.lockPollMs ?? 5;
|
|
61
|
+
const lockTimeoutMs = options.lockTimeoutMs ?? 5_000;
|
|
62
|
+
return {
|
|
63
|
+
async delete(path) {
|
|
64
|
+
await rm(filePath(options.directory, namespace, path), { force: true });
|
|
65
|
+
},
|
|
66
|
+
async get(path) {
|
|
67
|
+
try {
|
|
68
|
+
return JSON.parse(await readFile(filePath(options.directory, namespace, path), "utf8"));
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
if (isNodeError(error, "ENOENT")) {
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
throw error;
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
async set(path, entry) {
|
|
78
|
+
const target = filePath(options.directory, namespace, path);
|
|
79
|
+
const temporary = `${target}.${process.pid}.${randomUUID()}.tmp`;
|
|
80
|
+
await mkdir(dirname(target), { recursive: true });
|
|
81
|
+
await writeFile(temporary, JSON.stringify(entry), "utf8");
|
|
82
|
+
await rename(temporary, target);
|
|
83
|
+
},
|
|
84
|
+
async withLock(path, task) {
|
|
85
|
+
const lock = `${filePath(options.directory, namespace, path)}.lock`;
|
|
86
|
+
const startedAt = Date.now();
|
|
87
|
+
while (true) {
|
|
88
|
+
try {
|
|
89
|
+
await mkdir(lock, { recursive: false });
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
if (!isNodeError(error, "EEXIST")) {
|
|
94
|
+
throw error;
|
|
95
|
+
}
|
|
96
|
+
if (Date.now() - startedAt > lockTimeoutMs) {
|
|
97
|
+
throw new Error(`Timed out acquiring prerender lock for ${path}.`);
|
|
98
|
+
}
|
|
99
|
+
await new Promise((resolve) => setTimeout(resolve, lockPollMs));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
try {
|
|
103
|
+
return await task();
|
|
104
|
+
}
|
|
105
|
+
finally {
|
|
106
|
+
await rm(lock, { force: true, recursive: true });
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
export function createKeyValuePrerenderStore(options) {
|
|
112
|
+
const namespace = options.namespace ?? "default";
|
|
113
|
+
const store = {
|
|
114
|
+
delete(path) {
|
|
115
|
+
return options.adapter.delete(keyValueStoreKey(namespace, path));
|
|
116
|
+
},
|
|
117
|
+
async get(path) {
|
|
118
|
+
const value = await options.adapter.get(keyValueStoreKey(namespace, path));
|
|
119
|
+
return value === undefined ? undefined : JSON.parse(value);
|
|
120
|
+
},
|
|
121
|
+
set(path, entry) {
|
|
122
|
+
return options.adapter.set(keyValueStoreKey(namespace, path), JSON.stringify(entry), { ttlMs: options.ttlMs });
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
if (options.adapter.withLock !== undefined) {
|
|
126
|
+
store.withLock = (path, task) => options.adapter.withLock?.(keyValueStoreKey(namespace, path), async () => await task()) ??
|
|
127
|
+
task();
|
|
128
|
+
}
|
|
129
|
+
return store;
|
|
130
|
+
}
|
|
131
|
+
function storeKey(namespace, path) {
|
|
132
|
+
return `${namespace}\0${path}`;
|
|
133
|
+
}
|
|
134
|
+
function keyValueStoreKey(namespace, path) {
|
|
135
|
+
return `${namespace}:${path}`;
|
|
136
|
+
}
|
|
137
|
+
function filePath(directory, namespace, path) {
|
|
138
|
+
const digest = createHash("sha256")
|
|
139
|
+
.update(storeKey(namespace, path))
|
|
140
|
+
.digest("hex");
|
|
141
|
+
return join(directory, namespace, `${digest}.json`);
|
|
142
|
+
}
|
|
143
|
+
function isNodeError(error, code) {
|
|
144
|
+
return error instanceof Error && error.code === code;
|
|
145
|
+
}
|
|
146
|
+
function evictLeastRecentlyUsed(backing, namespace, maxEntries) {
|
|
147
|
+
if (!Number.isFinite(maxEntries) || maxEntries < 0) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
const prefix = `${namespace}\0`;
|
|
151
|
+
const entries = Array.from(backing.entries())
|
|
152
|
+
.filter(([key]) => key.startsWith(prefix))
|
|
153
|
+
.sort(([, left], [, right]) => left.lastAccessedAt - right.lastAccessedAt);
|
|
154
|
+
for (const [key] of entries.slice(0, Math.max(0, entries.length - maxEntries))) {
|
|
155
|
+
backing.delete(key);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=prerender-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prerender-store.js","sourceRoot":"","sources":["../src/prerender-store.ts"],"names":[],"mappings":"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"}
|
package/dist/render.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type QueryClient } from "@reckona/mreact-query";
|
|
2
|
+
import type { AppRoute, RouteMatcher } from "./routes.js";
|
|
3
|
+
import { type AppRouterServerActionOptions } from "./actions.js";
|
|
4
|
+
import { type AppRouterCache } from "./cache.js";
|
|
5
|
+
import { type AppRouterImportPolicy } from "./import-policy.js";
|
|
6
|
+
import type { BuiltServerModuleArtifact } from "./build.js";
|
|
7
|
+
import type { AppRouterLogger } from "./logger.js";
|
|
8
|
+
export interface RenderAppRequestOptions {
|
|
9
|
+
appDir: string;
|
|
10
|
+
assetBaseUrl?: string | undefined;
|
|
11
|
+
clientScripts?: ReadonlyMap<string, string>;
|
|
12
|
+
importPolicy?: AppRouterImportPolicy | undefined;
|
|
13
|
+
logger?: AppRouterLogger | undefined;
|
|
14
|
+
queryClient?: QueryClient | undefined;
|
|
15
|
+
request: Request;
|
|
16
|
+
routeCache?: AppRouterCache | undefined;
|
|
17
|
+
routeMatcher?: RouteMatcher | undefined;
|
|
18
|
+
routes?: readonly AppRoute[] | undefined;
|
|
19
|
+
serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;
|
|
20
|
+
serverModuleCacheVersion?: string | undefined;
|
|
21
|
+
serverSourceFiles?: ReadonlyMap<string, string> | undefined;
|
|
22
|
+
serverActions?: AppRouterServerActionOptions | undefined;
|
|
23
|
+
skipMiddleware?: boolean | undefined;
|
|
24
|
+
}
|
|
25
|
+
export declare function renderAppRequest(options: RenderAppRequestOptions): Promise<Response>;
|
|
26
|
+
//# sourceMappingURL=render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAUA,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,uBAAuB,CAAC;AAsB/B,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EACL,KAAK,4BAA4B,EAIlC,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,cAAc,EAMpB,MAAM,YAAY,CAAC;AAKpB,OAAO,EAAqC,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACnG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAiBnD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,YAAY,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACjD,MAAM,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACrC,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACxC,YAAY,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IACxC,MAAM,CAAC,EAAE,SAAS,QAAQ,EAAE,GAAG,SAAS,CAAC;IACzC,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,yBAAyB,CAAC,GAAG,SAAS,CAAC;IAC3E,wBAAwB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,iBAAiB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC5D,aAAa,CAAC,EAAE,4BAA4B,GAAG,SAAS,CAAC;IACzD,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACtC;AAqED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAuhB1F"}
|