Skip to content

Commit c097831

Browse files
committed
feat: add support for TanStack Router Solid
1 parent d7538cd commit c097831

File tree

3 files changed

+84
-0
lines changed

3 files changed

+84
-0
lines changed

packages/solid/package.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,16 @@
3838
"types": "./solidrouter.d.ts",
3939
"default": "./build/cjs/solidrouter.js"
4040
}
41+
},
42+
"./tanstack-router": {
43+
"import": {
44+
"types": "./tanstackrouter.d.ts",
45+
"default": "./build/esm/tanstackrouter.js"
46+
},
47+
"require": {
48+
"types": "./tanstackrouter.d.ts",
49+
"default": "./build/cjs/tanstackrouter.js"
50+
}
4151
}
4252
},
4353
"publishConfig": {

packages/solid/src/tanstackrouter.ts

Whitespace-only changes.
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/*
2+
3+
MIT License
4+
5+
Copyright (c) 2021-present Tanner Linsley
6+
7+
Permission is hereby granted, free of charge, to any person obtaining a copy
8+
of this software and associated documentation files (the "Software"), to deal
9+
in the Software without restriction, including without limitation the rights
10+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11+
copies of the Software, and to permit persons to whom the Software is
12+
furnished to do so, subject to the following conditions:
13+
14+
The above copyright notice and this permission notice shall be included in all
15+
copies or substantial portions of the Software.
16+
17+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23+
SOFTWARE.
24+
25+
*/
26+
27+
// The following types are vendored types from TanStack Router, so we don't have to depend on the actual package
28+
29+
export interface VendoredTanstackRouter {
30+
history: VendoredTanstackRouterHistory;
31+
state: VendoredTanstackRouterState;
32+
options: {
33+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
34+
parseSearch: (search: string) => Record<string, any>;
35+
};
36+
matchRoutes: (
37+
pathname: string,
38+
// eslint-disable-next-line @typescript-eslint/ban-types
39+
locationSearch: {},
40+
opts?: {
41+
preload?: boolean;
42+
throwOnError?: boolean;
43+
},
44+
) => Array<VendoredTanstackRouterRouteMatch>;
45+
subscribe(
46+
eventType: 'onResolved' | 'onBeforeNavigate',
47+
callback: (stateUpdate: {
48+
toLocation: VendoredTanstackRouterLocation;
49+
fromLocation?: VendoredTanstackRouterLocation;
50+
}) => void,
51+
): () => void;
52+
}
53+
54+
interface VendoredTanstackRouterLocation {
55+
pathname: string;
56+
// eslint-disable-next-line @typescript-eslint/ban-types
57+
search: {};
58+
state: string;
59+
}
60+
61+
interface VendoredTanstackRouterHistory {
62+
subscribe: (cb: () => void) => () => void;
63+
}
64+
65+
interface VendoredTanstackRouterState {
66+
matches: Array<VendoredTanstackRouterRouteMatch>;
67+
pendingMatches?: Array<VendoredTanstackRouterRouteMatch>;
68+
}
69+
70+
export interface VendoredTanstackRouterRouteMatch {
71+
routeId: string;
72+
pathname: string;
73+
params: { [key: string]: string };
74+
}

0 commit comments

Comments
 (0)