From 1b671addd1d0a78f77b68dcae0c60598e080e676 Mon Sep 17 00:00:00 2001 From: KazariEX Date: Fri, 21 Nov 2025 01:10:13 +0800 Subject: [PATCH 1/3] perf: reduce type instantiations on route matching --- src/types/fetch/_match.ts | 44 ++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/src/types/fetch/_match.ts b/src/types/fetch/_match.ts index 4c097a1955..2be9ac31d7 100644 --- a/src/types/fetch/_match.ts +++ b/src/types/fetch/_match.ts @@ -58,29 +58,25 @@ type CalcMatchScore< type _MatchedRoutes< Route extends string, - MatchedResultUnion extends MatchResult = MatchResult< - keyof InternalApi - >, -> = MatchedResultUnion["key"] extends infer MatchedKeys // spread union type - ? MatchedKeys extends string - ? Route extends MatchedKeys - ? MatchResult // exact match - : MatchedKeys extends `${infer Root}/**${string}` - ? MatchedKeys extends `${string}/**` - ? Route extends `${Root}/${string}` - ? MatchResult - : never // catchAll match - : MatchResult< - MatchedKeys, - false, - CalcMatchScore - > // glob match + MatchedKeys extends string = keyof InternalApi, +> = MatchedKeys extends any + ? Route extends MatchedKeys + ? MatchResult // exact match + : MatchedKeys extends `${infer Root}/**${string}` + ? MatchedKeys extends `${string}/**` + ? Route extends `${Root}/${string}` + ? MatchResult + : never // catchAll match : MatchResult< MatchedKeys, false, - CalcMatchScore - > // partial match - : never + CalcMatchScore + > // glob match + : MatchResult< + MatchedKeys, + false, + CalcMatchScore + > // partial match : never; export type MatchedRoutes< @@ -88,15 +84,15 @@ export type MatchedRoutes< MatchedKeysResult extends MatchResult = MatchResult< keyof InternalApi >, - Matches extends MatchResult = _MatchedRoutes< + Matches extends MatchResult = _MatchedRoutes< Route, - MatchedKeysResult + MatchedKeysResult["key"] >, > = Route extends "/" ? keyof InternalApi // root middleware : Extract extends never - ? - | Extract< + ? // @ts-ignore + | Extract< Exclude, { score: MaxTuple } >["key"] From 57043c38c3985812b7d417b85142a5b1abfeb01e Mon Sep 17 00:00:00 2001 From: KazariEX Date: Fri, 21 Nov 2025 01:11:40 +0800 Subject: [PATCH 2/3] chore: lint --- src/types/fetch/_match.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/types/fetch/_match.ts b/src/types/fetch/_match.ts index 2be9ac31d7..7f0555cb1e 100644 --- a/src/types/fetch/_match.ts +++ b/src/types/fetch/_match.ts @@ -91,8 +91,8 @@ export type MatchedRoutes< > = Route extends "/" ? keyof InternalApi // root middleware : Extract extends never - ? // @ts-ignore - | Extract< + ? + | Extract< Exclude, { score: MaxTuple } >["key"] From d116bea91b1349d96430988f5791d1864f8c8a87 Mon Sep 17 00:00:00 2001 From: KazariEX Date: Fri, 21 Nov 2025 01:14:05 +0800 Subject: [PATCH 3/3] chore: lint --- src/types/fetch/_match.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/types/fetch/_match.ts b/src/types/fetch/_match.ts index 7f0555cb1e..68d57f5ff6 100644 --- a/src/types/fetch/_match.ts +++ b/src/types/fetch/_match.ts @@ -67,11 +67,7 @@ type _MatchedRoutes< ? Route extends `${Root}/${string}` ? MatchResult : never // catchAll match - : MatchResult< - MatchedKeys, - false, - CalcMatchScore - > // glob match + : MatchResult> // glob match : MatchResult< MatchedKeys, false,