@reckona/mreact-router 0.0.138 → 0.0.140
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 +1 -1
- package/dist/actions.d.ts +1 -0
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +32 -12
- package/dist/actions.js.map +1 -1
- package/dist/adapters/static.js +10 -4
- package/dist/adapters/static.js.map +1 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +28 -21
- package/dist/build.js.map +1 -1
- package/dist/cache.d.ts +2 -0
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +23 -1
- package/dist/cache.js.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +53 -14
- package/dist/client.js.map +1 -1
- package/dist/dev-server.d.ts +1 -0
- package/dist/dev-server.d.ts.map +1 -1
- package/dist/dev-server.js +6 -4
- package/dist/dev-server.js.map +1 -1
- package/dist/link.js +17 -3
- package/dist/link.js.map +1 -1
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +10 -7
- package/dist/middleware.js.map +1 -1
- package/dist/multipart.d.ts +5 -0
- package/dist/multipart.d.ts.map +1 -1
- package/dist/multipart.js +24 -1
- package/dist/multipart.js.map +1 -1
- package/dist/native-route-matcher.d.ts +9 -0
- package/dist/native-route-matcher.d.ts.map +1 -1
- package/dist/native-route-matcher.js +23 -11
- package/dist/native-route-matcher.js.map +1 -1
- package/dist/navigation.d.ts.map +1 -1
- package/dist/navigation.js +8 -1
- package/dist/navigation.js.map +1 -1
- package/dist/render.d.ts +5 -1
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +239 -95
- package/dist/render.js.map +1 -1
- package/dist/route-source.d.ts +3 -1
- package/dist/route-source.d.ts.map +1 -1
- package/dist/route-source.js +13 -11
- package/dist/route-source.js.map +1 -1
- package/dist/route-styles.d.ts +4 -0
- package/dist/route-styles.d.ts.map +1 -1
- package/dist/route-styles.js +15 -3
- package/dist/route-styles.js.map +1 -1
- package/dist/serve.d.ts.map +1 -1
- package/dist/serve.js +39 -9
- package/dist/serve.js.map +1 -1
- package/dist/server-action-inference.d.ts.map +1 -1
- package/dist/server-action-inference.js +57 -0
- package/dist/server-action-inference.js.map +1 -1
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +27 -11
- package/dist/vite.js.map +1 -1
- package/package.json +11 -11
- package/src/actions.ts +44 -10
- package/src/adapters/static.ts +11 -4
- package/src/build.ts +28 -17
- package/src/cache.ts +33 -1
- package/src/client.ts +53 -14
- package/src/dev-server.ts +11 -4
- package/src/link.ts +24 -3
- package/src/middleware.ts +12 -7
- package/src/multipart.ts +32 -1
- package/src/native-route-matcher.ts +34 -13
- package/src/navigation.ts +11 -2
- package/src/render.ts +321 -113
- package/src/route-source.ts +14 -10
- package/src/route-styles.ts +28 -3
- package/src/serve.ts +68 -15
- package/src/server-action-inference.ts +86 -0
- package/src/vite.ts +39 -12
|
@@ -52,22 +52,43 @@ export function createNativeRouteMatcher(
|
|
|
52
52
|
|
|
53
53
|
return {
|
|
54
54
|
match(pathname): MatchedRoute | undefined {
|
|
55
|
-
|
|
55
|
+
return matchNativeRoute(matcher, sortedRoutes, pathname);
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
}
|
|
56
59
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
+
export function __matchNativeRouteForTesting(
|
|
61
|
+
matcher: NativeRouteMatcherInstance,
|
|
62
|
+
sortedRoutes: readonly AppRoute[],
|
|
63
|
+
pathname: string,
|
|
64
|
+
): MatchedRoute | undefined {
|
|
65
|
+
return matchNativeRoute(matcher, sortedRoutes, pathname);
|
|
66
|
+
}
|
|
60
67
|
|
|
61
|
-
|
|
68
|
+
function matchNativeRoute(
|
|
69
|
+
matcher: NativeRouteMatcherInstance,
|
|
70
|
+
sortedRoutes: readonly AppRoute[],
|
|
71
|
+
pathname: string,
|
|
72
|
+
): MatchedRoute | undefined {
|
|
73
|
+
let output: NativeMatchOutput | null | undefined;
|
|
74
|
+
try {
|
|
75
|
+
output = matcher.matchRoute(pathname);
|
|
76
|
+
} catch {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
62
79
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
80
|
+
if (output == null) {
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const route = sortedRoutes[output.index];
|
|
85
|
+
|
|
86
|
+
return route === undefined
|
|
87
|
+
? undefined
|
|
88
|
+
: {
|
|
89
|
+
route,
|
|
90
|
+
params: normalizeNativeParams(route, output.params),
|
|
91
|
+
};
|
|
71
92
|
}
|
|
72
93
|
|
|
73
94
|
export function normalizeNativeParams(
|
package/src/navigation.ts
CHANGED
|
@@ -57,6 +57,10 @@ function throwUnsafeRedirect(location: string): never {
|
|
|
57
57
|
);
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
function throwUnsafeRewrite(location: string): never {
|
|
61
|
+
throw new TypeError(`unsafe rewrite target: ${JSON.stringify(location)}`);
|
|
62
|
+
}
|
|
63
|
+
|
|
60
64
|
export function redirect(location: string, options: RedirectOptions = {}): never {
|
|
61
65
|
if (!isSafeInternalRedirect(location)) {
|
|
62
66
|
throwUnsafeRedirect(location);
|
|
@@ -134,6 +138,10 @@ export function next(): MiddlewareNext {
|
|
|
134
138
|
}
|
|
135
139
|
|
|
136
140
|
export function rewrite(location: string, init: ResponseInit = {}): Response {
|
|
141
|
+
if (!isSafeInternalRedirect(location)) {
|
|
142
|
+
throwUnsafeRewrite(location);
|
|
143
|
+
}
|
|
144
|
+
|
|
137
145
|
const response = new Response(null, {
|
|
138
146
|
...init,
|
|
139
147
|
status: init.status ?? 200,
|
|
@@ -198,10 +206,11 @@ export function cookies(request: Request): RequestCookies {
|
|
|
198
206
|
|
|
199
207
|
export function rewriteLocation(response: Response): string | undefined {
|
|
200
208
|
const marked = (response as { [rewriteLocationSymbol]?: unknown })[rewriteLocationSymbol];
|
|
201
|
-
|
|
202
|
-
return typeof marked === "string"
|
|
209
|
+
const candidate = typeof marked === "string"
|
|
203
210
|
? marked
|
|
204
211
|
: response.headers.get(rewriteHeaderName) ?? undefined;
|
|
212
|
+
|
|
213
|
+
return candidate !== undefined && isSafeInternalRedirect(candidate) ? candidate : undefined;
|
|
205
214
|
}
|
|
206
215
|
|
|
207
216
|
export function isRedirectError(error: unknown): error is Error & { location: string; status: number } {
|