Skip to content

Commit e02e9c7

Browse files
committed
chore: refactor
1 parent 3191716 commit e02e9c7

File tree

4 files changed

+25
-41
lines changed

4 files changed

+25
-41
lines changed

src/index.ts

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,48 @@
11
export type {
2-
ConfiguredRoute,
3-
Route,
2+
ActionProps,
3+
Actions,
44
AnyJson,
55
AnyJsonArray,
6+
ConfiguredRoute,
7+
HttpMethods,
68
Loader,
7-
Actions,
9+
LoaderProps,
810
PathFormat,
11+
Route,
912
RouteData,
10-
HttpMethods,
1113
WithoutGet,
12-
LoaderProps,
13-
ActionProps,
1414
} from "./types";
1515
export type { LinkProps } from "./router/link";
1616
export type { Paths } from "./types/paths";
1717
export type { QueryString } from "./types/query-string";
1818
export type { RouterNavigator } from "./router/router-navigator";
1919
export {
2020
Brouther,
21-
useUrlSearchParams,
22-
usePage,
21+
Outlet,
22+
useBasename,
2323
useDataLoader,
24-
useNavigation,
2524
useErrorPage,
25+
useHref,
26+
useLoadingState,
27+
useNavigation,
28+
usePage,
2629
usePaths,
2730
useQueryString,
28-
useHref,
2931
useRouteError,
30-
useBasename,
32+
useUrlSearchParams,
3133
} from "./brouther/brouther";
3234
export { BroutherError, NotFoundRoute } from "./utils/errors";
3335
export { Form } from "./form/form";
3436
export { Link } from "./router/link";
3537
export {
36-
createRouter,
37-
createMappedRouter,
38-
createMappedRouter as createRouterMap,
39-
createMappedRouter as createRecordRouter,
40-
createRoute,
4138
asyncActions,
42-
asyncLoader,
4339
asyncComponent,
40+
asyncLoader,
41+
createMappedRouter as createRecordRouter,
42+
createMappedRouter as createRouterMap,
43+
createMappedRouter,
44+
createRoute,
45+
createRouter,
4446
} from "./router/router";
4547
export { urlEntity, mergeUrlEntities, createHref, qsToString, transformData, createPaths, type GetPaths } from "./utils/utils";
4648
export { urlSearchParamsToJson, jsonToURLSearchParams, formToJson } from "./form/form-data-api";

src/router/link.tsx

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,6 @@ import type { Paths } from "../types/paths";
55
import type { QueryString } from "../types/query-string";
66
import { AnyJson } from "../types";
77

8-
type ForwardRef = <Ref, Props = {}>(
9-
render: (props: Props & React.RefAttributes<Ref>, ref: React.Ref<Ref>) => JSX.Element
10-
) => (props: Props & React.RefAttributes<Ref>) => JSX.Element;
11-
12-
const forwardRefTyped = forwardRef as ForwardRef;
13-
148
const isLeftClick = (e: React.MouseEvent) => e.button === 0;
159

1610
const isMod = (event: React.MouseEvent): boolean => event.metaKey || event.altKey || event.ctrlKey || event.shiftKey;
@@ -31,11 +25,8 @@ export type LinkProps<Path extends string> = Omit<
3125

3226
const httpRegex = /^https?:\/\//;
3327

34-
export const Link = forwardRefTyped(
35-
<TPath extends string>(
36-
{ href, state, replace = false, onClick, query, paths, ...props }: LinkProps<TPath>,
37-
ref: React.Ref<HTMLAnchorElement>
38-
) => {
28+
export const Link: <TPath extends string>(props: LinkProps<TPath>, ref: React.MutableRefObject<HTMLAnchorElement>) => JSX.Element = forwardRef(
29+
<TPath extends string>({ href, state, replace = false, onClick, query, paths, ...props }: LinkProps<TPath>, ref: any) => {
3930
const { push, replace: _replace } = useNavigation();
4031
const contextHref = useHref();
4132
const basename = useBasename();
@@ -50,4 +41,4 @@ export const Link = forwardRefTyped(
5041
};
5142
return <a {...props} href={_href} onClick={_onClick} ref={ref} />;
5243
}
53-
) as unknown;
44+
) as any;

src/router/router.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,8 @@ export const createRouter = <const T extends Function.Narrow<readonly Readonly<R
9898

9999
export const createMappedRouter = <const T extends Function.Narrow<Router>, Basename extends string>(
100100
routes: T,
101-
basename: Basename = "/" as any
101+
basename: Basename = "/" as Basename,
102+
historyCreate?: () => BrowserHistory
102103
): CreateMappedRoute<T> => {
103104
const list = Object.keys(routes).map((id) => {
104105
const r = routes[id];
@@ -115,7 +116,7 @@ export const createMappedRouter = <const T extends Function.Narrow<Router>, Base
115116
data
116117
);
117118
});
118-
return createRouter(list as any, basename) as any;
119+
return createRouter(list as any, basename, historyCreate) as any;
119120
};
120121

121122
export const asyncLoader =

src/types/x.ts

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import type { List, Union, Number, Object } from "ts-toolbelt";
2-
31
export namespace X {
42
export type Nullable<T> = T | null;
53

@@ -10,12 +8,4 @@ export namespace X {
108
export type AnyString<T extends string | number | symbol> = T | Omit<string, T>;
119

1210
export type Promisify<T> = T | Promise<T>;
13-
14-
export type ReduceKeys<T extends {}, Keys extends List.List, C extends number = 0> = Keys["length"] extends C
15-
? false
16-
: T[Keys[C]] extends T[Keys[C]] | undefined
17-
? Object.UnionOf<Keys[C]> extends undefined | Object.UnionOf<Keys[C]>
18-
? true
19-
: false
20-
: ReduceKeys<T, Keys, Number.Add<C, 1>>;
2111
}

0 commit comments

Comments
 (0)