@tanstack/react-router 1.0.7 → 1.0.9
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/build/cjs/RouterProvider.js.map +1 -1
- package/build/cjs/link.js +1 -4
- package/build/cjs/link.js.map +1 -1
- package/build/cjs/useNavigate.js.map +1 -1
- package/build/cjs/utils.js +2 -0
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +3 -4
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +355 -355
- package/build/types/RouterProvider.d.ts +1 -1
- package/build/types/link.d.ts +21 -24
- package/build/types/useNavigate.d.ts +6 -6
- package/build/types/utils.d.ts +1 -0
- package/build/umd/index.development.js +3 -4
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +2 -2
- package/src/RouterProvider.tsx +2 -2
- package/src/link.tsx +53 -75
- package/src/useNavigate.tsx +11 -12
- package/src/utils.ts +3 -0
|
@@ -18,7 +18,7 @@ export interface MatchLocation {
|
|
|
18
18
|
caseSensitive?: boolean;
|
|
19
19
|
from?: string;
|
|
20
20
|
}
|
|
21
|
-
export type NavigateFn<TRouteTree extends AnyRoute> = <TFrom extends RoutePaths<TRouteTree> =
|
|
21
|
+
export type NavigateFn<TRouteTree extends AnyRoute> = <TFrom extends RoutePaths<TRouteTree> | string = string, TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> | string = TFrom, TMaskTo extends string = ''>(opts: NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>) => Promise<void>;
|
|
22
22
|
export type MatchRouteFn<TRouteTree extends AnyRoute> = <TFrom extends RoutePaths<TRouteTree> = '/', TTo extends string = '', TResolved = ResolveRelativePath<TFrom, NoInfer<TTo>>>(location: ToOptions<TRouteTree, TFrom, TTo>, opts?: MatchRouteOptions) => false | RouteById<TRouteTree, TResolved>['types']['allParams'];
|
|
23
23
|
export type BuildLocationFn<TRouteTree extends AnyRoute> = (opts: ToOptions<TRouteTree>) => ParsedLocation;
|
|
24
24
|
export type InjectedHtmlEntry = string | (() => Promise<string> | string);
|
package/build/types/link.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { Trim } from './fileRoute';
|
|
3
3
|
import { AnyRoute, ReactNode } from './route';
|
|
4
|
-
import {
|
|
4
|
+
import { RouteByPath, RouteIds, RoutePaths } from './routeInfo';
|
|
5
5
|
import { RegisteredRouter } from './router';
|
|
6
6
|
import { LinkProps, UseLinkPropsOptions } from './useNavigate';
|
|
7
|
-
import { Expand, NoInfer, NonNullableUpdater, PickRequired,
|
|
7
|
+
import { Expand, NoInfer, NonNullableUpdater, PickRequired, Updater, WithoutEmpty } from './utils';
|
|
8
8
|
import { HistoryState } from '@tanstack/history';
|
|
9
9
|
export type CleanPath<T extends string> = T extends `${infer L}//${infer R}` ? CleanPath<`${CleanPath<L>}/${CleanPath<R>}`> : T extends `${infer L}//` ? `${CleanPath<L>}/` : T extends `//${infer L}` ? `/${CleanPath<L>}` : T;
|
|
10
10
|
export type Split<S, TIncludeTrailingSlash = true> = S extends unknown ? string extends S ? string[] : S extends string ? CleanPath<S> extends '' ? [] : TIncludeTrailingSlash extends true ? CleanPath<S> extends `${infer T}/` ? [...Split<T>, '/'] : CleanPath<S> extends `/${infer U}` ? Split<U> : CleanPath<S> extends `${infer T}/${infer U}` ? [...Split<T>, ...Split<U>] : [S] : CleanPath<S> extends `${infer T}/${infer U}` ? [...Split<T>, ...Split<U>] : S extends string ? [S] : never : never : never;
|
|
@@ -26,45 +26,42 @@ export type RelativeToPathAutoComplete<AllPaths extends string, TFrom extends st
|
|
|
26
26
|
] ? `${TTo}${Join<RestPath>}` : never : (TFrom extends `/` ? never : SplitPaths extends [...Split<TFrom, false>, ...infer RestPath] ? Join<RestPath> extends {
|
|
27
27
|
length: 0;
|
|
28
28
|
} ? never : './' : never) | (TFrom extends `/` ? never : '../') | AllPaths;
|
|
29
|
-
export type NavigateOptions<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> =
|
|
29
|
+
export type NavigateOptions<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> | string = string, TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> | string = TFrom, TMaskTo extends string = ''> = ToOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> & {
|
|
30
30
|
replace?: boolean;
|
|
31
31
|
resetScroll?: boolean;
|
|
32
32
|
startTransition?: boolean;
|
|
33
33
|
};
|
|
34
|
-
export type ToOptions<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> =
|
|
34
|
+
export type ToOptions<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> | string = string, TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> | string = TFrom, TMaskTo extends string = ''> = ToSubOptions<TRouteTree, TFrom, TTo> & {
|
|
35
35
|
mask?: ToMaskOptions<TRouteTree, TMaskFrom, TMaskTo>;
|
|
36
36
|
};
|
|
37
|
-
export type ToMaskOptions<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TMaskFrom extends RoutePaths<TRouteTree> =
|
|
37
|
+
export type ToMaskOptions<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TMaskFrom extends RoutePaths<TRouteTree> | string = string, TMaskTo extends string = ''> = ToSubOptions<TRouteTree, TMaskFrom, TMaskTo> & {
|
|
38
38
|
unmaskOnReload?: boolean;
|
|
39
39
|
};
|
|
40
|
-
export type ToSubOptions<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> =
|
|
40
|
+
export type ToSubOptions<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> | string = string, TTo extends string = '', TResolved = ResolveRelativePath<TFrom, NoInfer<TTo>>> = {
|
|
41
41
|
to?: ToPathOption<TRouteTree, TFrom, TTo>;
|
|
42
42
|
hash?: true | Updater<string>;
|
|
43
43
|
state?: true | NonNullableUpdater<HistoryState>;
|
|
44
44
|
from?: TFrom;
|
|
45
|
-
} & CheckPath<TRouteTree, NoInfer<TResolved>, {}> & SearchParamOptions<TRouteTree, TFrom, TTo, TResolved> & PathParamOptions<TRouteTree, TFrom, TResolved>;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
} & CheckPath<TRouteTree, NoInfer<TResolved>, {}> & SearchParamOptions<TRouteTree, TFrom, TTo, TResolved> & PathParamOptions<TRouteTree, TFrom, TTo, TResolved>;
|
|
46
|
+
type ParamsReducer<TFrom, TTo> = TTo | ((current: TFrom) => TTo);
|
|
47
|
+
export type ParamOptions<TRouteTree extends AnyRoute, TFrom, TTo, TResolved, TParamVariant extends 'allParams' | 'fullSearchSchema', TFromParams = Expand<RouteByPath<TRouteTree, TFrom>['types'][TParamVariant]>, TToParams = TTo extends '' ? TFromParams : never extends TResolved ? Expand<RouteByPath<TRouteTree, TTo>['types'][TParamVariant]> : Expand<RouteByPath<TRouteTree, TResolved>['types'][TParamVariant]>, TReducer = ParamsReducer<TFromParams, TToParams>> = Expand<WithoutEmpty<PickRequired<TToParams>>> extends never ? Partial<MakeParamOption<TParamVariant, true | TReducer>> : TFromParams extends Expand<WithoutEmpty<PickRequired<TToParams>>> ? MakeParamOption<TParamVariant, true | TReducer> : MakeParamOption<TParamVariant, TReducer>;
|
|
48
|
+
type MakeParamOption<TParamVariant extends 'allParams' | 'fullSearchSchema', T> = TParamVariant extends 'allParams' ? MakePathParamOptions<T> : MakeSearchParamOptions<T>;
|
|
49
|
+
type MakeSearchParamOptions<T> = {
|
|
50
|
+
search: T;
|
|
50
51
|
};
|
|
51
|
-
type
|
|
52
|
-
|
|
53
|
-
params?: true | ParamsReducer<Partial<TFromParams>, Partial<TFromParams>>;
|
|
54
|
-
} : keyof PickRequired<TToParams> extends never ? {
|
|
55
|
-
params?: true | ParamsReducer<TFromParams, TToParams>;
|
|
56
|
-
} : {
|
|
57
|
-
params: TFromParamsEnsured extends PickRequired<TToParams> ? true | ParamsReducer<TFromParams, TToParams> : ParamsReducer<TFromParams, TToParams>;
|
|
52
|
+
type MakePathParamOptions<T> = {
|
|
53
|
+
params: T;
|
|
58
54
|
};
|
|
59
|
-
type
|
|
60
|
-
export type
|
|
61
|
-
export type
|
|
55
|
+
export type SearchParamOptions<TRouteTree extends AnyRoute, TFrom, TTo, TResolved> = ParamOptions<TRouteTree, TFrom, TTo, TResolved, 'fullSearchSchema'>;
|
|
56
|
+
export type PathParamOptions<TRouteTree extends AnyRoute, TFrom, TTo, TResolved> = ParamOptions<TRouteTree, TFrom, TTo, TResolved, 'allParams'>;
|
|
57
|
+
export type ToPathOption<TRouteTree extends AnyRoute = AnyRoute, TFrom extends RoutePaths<TRouteTree> | string = string, TTo extends string = ''> = TTo | RelativeToPathAutoComplete<RoutePaths<TRouteTree>, NoInfer<TFrom> extends string ? NoInfer<TFrom> : '', NoInfer<TTo> & string>;
|
|
58
|
+
export type ToIdOption<TRouteTree extends AnyRoute = AnyRoute, TFrom extends RoutePaths<TRouteTree> | undefined = undefined, TTo extends string = ''> = TTo | RelativeToPathAutoComplete<RouteIds<TRouteTree>, NoInfer<TFrom> extends string ? NoInfer<TFrom> : '', NoInfer<TTo> & string>;
|
|
62
59
|
export interface ActiveOptions {
|
|
63
60
|
exact?: boolean;
|
|
64
61
|
includeHash?: boolean;
|
|
65
62
|
includeSearch?: boolean;
|
|
66
63
|
}
|
|
67
|
-
export type LinkOptions<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> =
|
|
64
|
+
export type LinkOptions<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> | string = string, TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> | string = TFrom, TMaskTo extends string = ''> = NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> & {
|
|
68
65
|
target?: HTMLAnchorElement['target'];
|
|
69
66
|
activeOptions?: ActiveOptions;
|
|
70
67
|
preload?: false | 'intent';
|
|
@@ -85,9 +82,9 @@ export type CheckIdError<TRouteTree extends AnyRoute, TInvalids> = {
|
|
|
85
82
|
'Valid Route IDs': RouteIds<TRouteTree>;
|
|
86
83
|
};
|
|
87
84
|
export type ResolveRelativePath<TFrom, TTo = '.'> = TFrom extends string ? TTo extends string ? TTo extends '.' ? TFrom : TTo extends `./` ? Join<[TFrom, '/']> : TTo extends `./${infer TRest}` ? ResolveRelativePath<TFrom, TRest> : TTo extends `/${infer TRest}` ? TTo : Split<TTo> extends ['..', ...infer ToRest] ? Split<TFrom> extends [...infer FromRest, infer FromTail] ? ToRest extends ['/'] ? Join<[...FromRest, '/']> : ResolveRelativePath<Join<FromRest>, Join<ToRest>> : never : Split<TTo> extends ['.', ...infer ToRest] ? ToRest extends ['/'] ? Join<[TFrom, '/']> : ResolveRelativePath<TFrom, Join<ToRest>> : CleanPath<Join<['/', ...Split<TFrom>, ...Split<TTo>]>> : never : never;
|
|
88
|
-
export declare function useLinkProps<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> =
|
|
85
|
+
export declare function useLinkProps<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> | string = string, TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> | string = TFrom, TMaskTo extends string = ''>(options: UseLinkPropsOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>): React.AnchorHTMLAttributes<HTMLAnchorElement>;
|
|
89
86
|
export interface LinkComponent<TProps extends Record<string, any> = {}> {
|
|
90
|
-
<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> =
|
|
87
|
+
<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> | string = string, TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> | string = TFrom, TMaskTo extends string = ''>(props: LinkProps<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> & TProps & React.RefAttributes<HTMLAnchorElement>): ReactNode;
|
|
91
88
|
}
|
|
92
89
|
export declare const Link: LinkComponent;
|
|
93
90
|
export {};
|
|
@@ -3,17 +3,17 @@ import { LinkOptions, NavigateOptions } from './link';
|
|
|
3
3
|
import { AnyRoute } from './route';
|
|
4
4
|
import { RoutePaths } from './routeInfo';
|
|
5
5
|
import { RegisteredRouter } from './router';
|
|
6
|
-
export declare function useNavigate<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TDefaultFrom extends RoutePaths<TRouteTree> =
|
|
6
|
+
export declare function useNavigate<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TDefaultFrom extends RoutePaths<TRouteTree> | string = string>(_defaultOpts?: {
|
|
7
7
|
from?: TDefaultFrom;
|
|
8
|
-
}): <TFrom extends
|
|
9
|
-
export declare function Navigate<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> =
|
|
10
|
-
export type UseLinkPropsOptions<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> =
|
|
11
|
-
export type LinkProps<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> =
|
|
8
|
+
}): <TFrom extends string | import("./routeInfo").ParseRoute<TRouteTree>["fullPath"] = TDefaultFrom, TTo extends string = "", TMaskFrom extends string | import("./routeInfo").ParseRoute<TRouteTree>["fullPath"] = TFrom, TMaskTo extends string = "">({ from, ...rest }: NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>) => Promise<void>;
|
|
9
|
+
export declare function Navigate<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> | string = string, TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> | string = TFrom, TMaskTo extends string = ''>(props: NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>): null;
|
|
10
|
+
export type UseLinkPropsOptions<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> | string = string, TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> | string = TFrom, TMaskTo extends string = ''> = ActiveLinkOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> & React.AnchorHTMLAttributes<HTMLAnchorElement>;
|
|
11
|
+
export type LinkProps<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> | string = string, TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> | string = TFrom, TMaskTo extends string = ''> = ActiveLinkOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> & Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'children'> & {
|
|
12
12
|
children?: React.ReactNode | ((state: {
|
|
13
13
|
isActive: boolean;
|
|
14
14
|
}) => React.ReactNode);
|
|
15
15
|
};
|
|
16
|
-
export type ActiveLinkOptions<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> =
|
|
16
|
+
export type ActiveLinkOptions<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> | string = string, TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> | string = TFrom, TMaskTo extends string = ''> = LinkOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> & {
|
|
17
17
|
activeProps?: React.AnchorHTMLAttributes<HTMLAnchorElement> | (() => React.AnchorHTMLAttributes<HTMLAnchorElement>);
|
|
18
18
|
inactiveProps?: React.AnchorHTMLAttributes<HTMLAnchorElement> | (() => React.AnchorHTMLAttributes<HTMLAnchorElement>);
|
|
19
19
|
};
|
package/build/types/utils.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export type PickExtra<T, K> = {
|
|
|
15
15
|
export type PickRequired<T> = {
|
|
16
16
|
[K in keyof T as undefined extends T[K] ? never : K]: T[K];
|
|
17
17
|
};
|
|
18
|
+
export type WithoutEmpty<T> = T extends T ? ({} extends T ? never : T) : never;
|
|
18
19
|
export type Expand<T> = T extends object ? T extends infer O ? {
|
|
19
20
|
[K in keyof O]: O[K];
|
|
20
21
|
} : never : T;
|
|
@@ -716,6 +716,8 @@
|
|
|
716
716
|
}, error.message ? /*#__PURE__*/React__namespace.createElement("code", null, error.message) : null)) : null);
|
|
717
717
|
}
|
|
718
718
|
|
|
719
|
+
// from https://stackoverflow.com/a/76458160
|
|
720
|
+
|
|
719
721
|
// export type Expand<T> = T
|
|
720
722
|
|
|
721
723
|
// type Compute<T> = { [K in keyof T]: T[K] } | never
|
|
@@ -1690,10 +1692,7 @@
|
|
|
1690
1692
|
}
|
|
1691
1693
|
|
|
1692
1694
|
const preloadWarning = 'Error preloading route! ☝️';
|
|
1693
|
-
function useLinkProps({
|
|
1694
|
-
from,
|
|
1695
|
-
...options
|
|
1696
|
-
}) {
|
|
1695
|
+
function useLinkProps(options) {
|
|
1697
1696
|
const router = useRouter();
|
|
1698
1697
|
const matchPathname = useMatch({
|
|
1699
1698
|
strict: false,
|