Skip to content

Commit 5314613

Browse files
committed
Move next to second parameter
1 parent db70549 commit 5314613

File tree

5 files changed

+51
-43
lines changed

5 files changed

+51
-43
lines changed

integration/middleware-test.ts

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ test.describe("Middleware", () => {
248248
"app/routes/redirect.tsx": js`
249249
import { Link, redirect } from 'react-router'
250250
export const unstable_clientMiddleware = [
251-
async ({ request, context, next }) => {
251+
async ({ request, context }, next) => {
252252
await next();
253253
throw redirect('/target');
254254
}
@@ -304,7 +304,7 @@ test.describe("Middleware", () => {
304304
`,
305305
"app/routes/broken.tsx": js`
306306
export const unstable_clientMiddleware = [
307-
async ({ request, context, next }) => {
307+
async ({ request, context }, next) => {
308308
throw new Error('broken!');
309309
}
310310
]
@@ -362,7 +362,7 @@ test.describe("Middleware", () => {
362362
`,
363363
"app/routes/broken.tsx": js`
364364
export const unstable_clientMiddleware = [
365-
async ({ request, context, next }) => {
365+
async ({ request, context }, next) => {
366366
await next();
367367
throw new Error('broken!');
368368
}
@@ -694,7 +694,7 @@ test.describe("Middleware", () => {
694694
"app/routes/redirect.tsx": js`
695695
import { Link, redirect } from 'react-router'
696696
export const unstable_clientMiddleware = [
697-
async ({ request, context, next }) => {
697+
async ({ request, context }, next) => {
698698
await next();
699699
throw redirect('/target');
700700
}
@@ -749,7 +749,7 @@ test.describe("Middleware", () => {
749749
"app/routes/broken.tsx": js`
750750
import { useRouteError } from 'react-router'
751751
export const unstable_clientMiddleware = [
752-
async ({ request, context, next }) => {
752+
async ({ request, context }, next) => {
753753
throw new Error('broken!')
754754
}
755755
]
@@ -806,7 +806,7 @@ test.describe("Middleware", () => {
806806
"app/routes/broken.tsx": js`
807807
import { useRouteError } from 'react-router'
808808
export const unstable_clientMiddleware = [
809-
async ({ request, context, next }) => {
809+
async ({ request, context }, next) => {
810810
await next();
811811
throw new Error('broken!')
812812
}
@@ -1438,7 +1438,7 @@ test.describe("Middleware", () => {
14381438
"app/routes/redirect.tsx": js`
14391439
import { Link, redirect } from 'react-router'
14401440
export const unstable_middleware = [
1441-
async ({ request, context, next }) => {
1441+
async ({ request, context }, next) => {
14421442
await next();
14431443
throw redirect('/target');
14441444
}
@@ -1497,7 +1497,7 @@ test.describe("Middleware", () => {
14971497
`,
14981498
"app/routes/broken.tsx": js`
14991499
export const unstable_middleware = [
1500-
async ({ request, context, next }) => {
1500+
async ({ request, context }, next) => {
15011501
throw new Error('broken!');
15021502
}
15031503
]
@@ -1550,7 +1550,7 @@ test.describe("Middleware", () => {
15501550
`,
15511551
"app/routes/broken.tsx": js`
15521552
export const unstable_middleware = [
1553-
async ({ request, context, next }) => {
1553+
async ({ request, context }, next) => {
15541554
throw new Error('broken!');
15551555
}
15561556
]
@@ -1609,7 +1609,7 @@ test.describe("Middleware", () => {
16091609
`,
16101610
"app/routes/broken.tsx": js`
16111611
export const unstable_middleware = [
1612-
async ({ request, context, next }) => {
1612+
async ({ request, context }, next) => {
16131613
await next();
16141614
throw new Error('broken!');
16151615
}
@@ -1672,7 +1672,7 @@ test.describe("Middleware", () => {
16721672
`,
16731673
"app/routes/broken.tsx": js`
16741674
export const unstable_middleware = [
1675-
async ({ request, context, next }) => {
1675+
async ({ request, context }, next) => {
16761676
await next()
16771677
throw new Error('broken!');
16781678
}
@@ -1739,7 +1739,7 @@ test.describe("Middleware", () => {
17391739
import { Outlet } from 'react-router'
17401740
17411741
export const unstable_middleware = [
1742-
async ({ context, next }) => {
1742+
async ({ context }, next) => {
17431743
context.a = true;
17441744
let res = await next();
17451745
res.headers.set('x-a', 'true');
@@ -1761,7 +1761,7 @@ test.describe("Middleware", () => {
17611761
`,
17621762
"app/routes/a.b.tsx": js`
17631763
export const unstable_middleware = [
1764-
async ({ context, next }) => {
1764+
async ({ context }, next) => {
17651765
let res = await next();
17661766
throw new Error('broken!')
17671767
},
@@ -1819,7 +1819,7 @@ test.describe("Middleware", () => {
18191819
import { Outlet } from 'react-router'
18201820
18211821
export const unstable_middleware = [
1822-
async ({ context, next }) => {
1822+
async ({ context }, next) => {
18231823
context.a = true;
18241824
let res = await next();
18251825
res.headers.set('x-a', 'true');
@@ -1841,7 +1841,7 @@ test.describe("Middleware", () => {
18411841
`,
18421842
"app/routes/a.b.tsx": js`
18431843
export const unstable_middleware = [
1844-
async ({ context, next }) => {
1844+
async ({ context }, next) => {
18451845
let res = await next();
18461846
throw new Error('broken!')
18471847
},
@@ -2232,7 +2232,7 @@ test.describe("Middleware", () => {
22322232
`,
22332233
"app/routes/a.tsx": js`
22342234
export const unstable_middleware = [
2235-
async ({ context, next }) => {
2235+
async ({ context }, next) => {
22362236
context.a = true;
22372237
let res = await next();
22382238
res.headers.set('x-a', 'true');
@@ -2242,7 +2242,7 @@ test.describe("Middleware", () => {
22422242
`,
22432243
"app/routes/a.b.tsx": js`
22442244
export const unstable_middleware = [
2245-
async ({ context, next }) => {
2245+
async ({ context }, next) => {
22462246
context.b = true;
22472247
let res = await next();
22482248
res.headers.set('x-b', 'true');

packages/react-router-dev/typegen/generate.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ export function generate(ctx: Context, route: RouteManifestEntry): string {
6262
export type HeadersArgs = T.HeadersArgs
6363
export type HeadersFunction = (args: HeadersArgs) => Headers | HeadersInit
6464
65-
export type unstable_MiddlewareArgs = T.CreateServerMiddlewareArgs<Info>
66-
export type unstable_ClientMiddlewareArgs = T.CreateClientMiddlewareArgs<Info>
65+
export type unstable_MiddlewareFunction = T.CreateServerMiddlewareFunction<Info>
66+
export type unstable_ClientMiddlewareFunction = T.CreateClientMiddlewareFunction<Info>
6767
export type LoaderArgs = T.CreateServerLoaderArgs<Info>
6868
export type ClientLoaderArgs = T.CreateClientLoaderArgs<Info>
6969
export type ActionArgs = T.CreateServerActionArgs<Info>

packages/react-router/lib/router/router.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import type {
3939
unstable_RouterContext,
4040
unstable_MiddlewareFunction,
4141
unstable_MiddlewareFunctionArgs,
42+
unstable_MiddlewareNextFunction,
4243
} from "./utils";
4344
import {
4445
ErrorResponseImpl,
@@ -5032,7 +5033,7 @@ async function callRouteMiddleware(
50325033

50335034
let [routeId, middleware] = tuple;
50345035
let nextCalled = false;
5035-
let next: unstable_MiddlewareFunctionArgs["next"] = async () => {
5036+
let next: unstable_MiddlewareNextFunction = async () => {
50365037
if (nextCalled) {
50375038
throw new Error("You may only call `next()` once per middleware");
50385039
}
@@ -5050,12 +5051,14 @@ async function callRouteMiddleware(
50505051
};
50515052

50525053
try {
5053-
let result = await middleware({
5054-
request: args.request,
5055-
params: args.params,
5056-
context: args.context,
5057-
next,
5058-
});
5054+
let result = await middleware(
5055+
{
5056+
request: args.request,
5057+
params: args.params,
5058+
context: args.context,
5059+
},
5060+
next
5061+
);
50595062
return nextCalled ? result : next();
50605063
} catch (e) {
50615064
if (e instanceof MiddlewareError) {

packages/react-router/lib/router/utils.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -154,10 +154,17 @@ interface DataFunctionArgs<Context> {
154154
/**
155155
* Route middleware function arguments
156156
*/
157-
export type unstable_MiddlewareFunctionArgs<
158-
Context = unstable_RouterContext,
159-
Result = unknown
160-
> = DataFunctionArgs<Context> & { next: () => Promise<Result> };
157+
export interface unstable_MiddlewareFunctionArgs<
158+
Context = unstable_RouterContext
159+
> extends DataFunctionArgs<Context> {}
160+
161+
/**
162+
* Route middleware `next` function to call downstream handlers and then complete
163+
* middlewares from the bottom-up
164+
*/
165+
export interface unstable_MiddlewareNextFunction<Result = unknown> {
166+
(): Result | Promise<Result>;
167+
}
161168

162169
/**
163170
* Route middleware function signature
@@ -166,7 +173,8 @@ export type unstable_MiddlewareFunction<
166173
Context = unstable_RouterContext,
167174
Result = unknown
168175
> = (
169-
args: unstable_MiddlewareFunctionArgs<Context, Result>
176+
args: unstable_MiddlewareFunctionArgs<Context>,
177+
next: unstable_MiddlewareNextFunction<Result>
170178
) => Result | Promise<Result>;
171179

172180
/**

packages/react-router/lib/types/route-module.ts

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { MetaDescriptor } from "../dom/ssr/routeModules";
22
import type { LinkDescriptor } from "../router/links";
33
import type {
4-
unstable_MiddlewareFunctionArgs,
4+
unstable_MiddlewareNextFunction,
55
unstable_RouterContext,
66
} from "../router/utils";
77
import type { AppLoadContext } from "../server-runtime/data";
@@ -171,18 +171,15 @@ type ServerDataFunctionArgs<T extends RouteInfo> = {
171171
context: AppLoadContext;
172172
};
173173

174-
export type CreateServerMiddlewareArgs<T extends RouteInfo> =
175-
ServerDataFunctionArgs<T> & {
176-
next: unstable_MiddlewareFunctionArgs<AppLoadContext, Response>["next"];
177-
};
174+
export type CreateServerMiddlewareFunction<T extends RouteInfo> = (
175+
args: ServerDataFunctionArgs<T>,
176+
next: unstable_MiddlewareNextFunction<Response>
177+
) => Response | Promise<Response>;
178178

179-
export type CreateClientMiddlewareArgs<T extends RouteInfo> =
180-
ClientDataFunctionArgs<T> & {
181-
next: unstable_MiddlewareFunctionArgs<
182-
unstable_RouterContext,
183-
undefined
184-
>["next"];
185-
};
179+
export type CreateClientMiddlewareFunction<T extends RouteInfo> = (
180+
args: ClientDataFunctionArgs<T>,
181+
next: unstable_MiddlewareNextFunction<undefined>
182+
) => Response | Promise<Response>;
186183

187184
export type CreateServerLoaderArgs<T extends RouteInfo> =
188185
ServerDataFunctionArgs<T>;

0 commit comments

Comments
 (0)