@real-router/react 0.1.0 → 0.1.2
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/README.md +66 -295
- package/dist/cjs/metafile-cjs.json +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
[](https://opensource.org/licenses/MIT)
|
|
4
4
|
[](https://reactjs.org/)
|
|
5
5
|
|
|
6
|
-
React integration for
|
|
6
|
+
React integration for Real-Router — hooks, components, and context providers.
|
|
7
7
|
|
|
8
8
|
## Installation
|
|
9
9
|
|
|
@@ -17,11 +17,7 @@ yarn add @real-router/react @real-router/core @real-router/browser-plugin
|
|
|
17
17
|
bun add @real-router/react @real-router/core @real-router/browser-plugin
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
- `react` >= 18.0.0
|
|
23
|
-
- `@real-router/core` (core router)
|
|
24
|
-
- `@real-router/browser-plugin` (for browser history integration)
|
|
20
|
+
**Peer Dependencies:** `react` >= 18.0.0
|
|
25
21
|
|
|
26
22
|
## Quick Start
|
|
27
23
|
|
|
@@ -60,7 +56,6 @@ function App() {
|
|
|
60
56
|
);
|
|
61
57
|
}
|
|
62
58
|
|
|
63
|
-
// Render with provider
|
|
64
59
|
createRoot(document.getElementById("root")!).render(
|
|
65
60
|
<RouterProvider router={router}>
|
|
66
61
|
<App />
|
|
@@ -68,51 +63,52 @@ createRoot(document.getElementById("root")!).render(
|
|
|
68
63
|
);
|
|
69
64
|
```
|
|
70
65
|
|
|
71
|
-
|
|
66
|
+
---
|
|
72
67
|
|
|
73
|
-
|
|
68
|
+
## API
|
|
74
69
|
|
|
75
|
-
|
|
70
|
+
### Provider
|
|
76
71
|
|
|
77
|
-
|
|
72
|
+
#### `<RouterProvider router={router}>`
|
|
73
|
+
Provides router instance to component tree via React Context.\
|
|
74
|
+
`router: Router` — router instance from `createRouter()`\
|
|
75
|
+
`children: ReactNode` — child components\
|
|
76
|
+
[Wiki](https://github.com/greydragon888/real-router/wiki/RouterProvider)
|
|
78
77
|
|
|
79
78
|
```tsx
|
|
80
|
-
import { RouterProvider } from "@real-router/react";
|
|
81
|
-
|
|
82
79
|
<RouterProvider router={router}>
|
|
83
80
|
<App />
|
|
84
|
-
</RouterProvider
|
|
81
|
+
</RouterProvider>
|
|
85
82
|
```
|
|
86
83
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
- `router` - Router instance created with `createRouter()`
|
|
90
|
-
- `children` - React children
|
|
84
|
+
---
|
|
91
85
|
|
|
92
86
|
### Hooks
|
|
93
87
|
|
|
94
|
-
#### useRouter
|
|
95
|
-
|
|
96
|
-
Returns
|
|
88
|
+
#### `useRouter(): Router`
|
|
89
|
+
Get router instance. **Never re-renders** on navigation.\
|
|
90
|
+
Returns: `Router` — router instance\
|
|
91
|
+
[Wiki](https://github.com/greydragon888/real-router/wiki/useRouter)
|
|
97
92
|
|
|
98
93
|
```tsx
|
|
99
94
|
import { useRouter } from "@real-router/react";
|
|
100
95
|
|
|
101
|
-
|
|
96
|
+
const NavigateButton = () => {
|
|
102
97
|
const router = useRouter();
|
|
103
98
|
|
|
104
99
|
return <button onClick={() => router.navigate("home")}>Go Home</button>;
|
|
105
100
|
}
|
|
106
101
|
```
|
|
107
102
|
|
|
108
|
-
#### useRoute
|
|
109
|
-
|
|
110
|
-
Returns
|
|
103
|
+
#### `useRoute(): { router, route, previousRoute }`
|
|
104
|
+
Get current route state. **Re-renders on every navigation.**\
|
|
105
|
+
Returns: `{ router: Router, route: State | undefined, previousRoute: State | undefined }`\
|
|
106
|
+
[Wiki](https://github.com/greydragon888/real-router/wiki/useRoute)
|
|
111
107
|
|
|
112
108
|
```tsx
|
|
113
109
|
import { useRoute } from "@real-router/react";
|
|
114
110
|
|
|
115
|
-
|
|
111
|
+
const CurrentRoute = () => {
|
|
116
112
|
const { router, route, previousRoute } = useRoute();
|
|
117
113
|
|
|
118
114
|
return (
|
|
@@ -126,20 +122,16 @@ function CurrentRoute() {
|
|
|
126
122
|
}
|
|
127
123
|
```
|
|
128
124
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
-
|
|
134
|
-
|
|
135
|
-
#### useRouteNode
|
|
136
|
-
|
|
137
|
-
Optimized hook that only re-renders when the specified route node changes. Ideal for nested route structures.
|
|
125
|
+
#### `useRouteNode(nodeName: string): { router, route, previousRoute }`
|
|
126
|
+
Optimized hook for nested routes. **Re-renders only when specified node changes.**\
|
|
127
|
+
`nodeName: string` — route segment to observe (e.g., `"users"`)
|
|
128
|
+
Returns: `{ router: Router, route: State | undefined, previousRoute: State | undefined }`\
|
|
129
|
+
[Wiki](https://github.com/greydragon888/real-router/wiki/useRouteNode)
|
|
138
130
|
|
|
139
131
|
```tsx
|
|
140
132
|
import { useRouteNode } from "@real-router/react";
|
|
141
133
|
|
|
142
|
-
|
|
134
|
+
const UsersSection = () => {
|
|
143
135
|
// Only re-renders when routes starting with "users" change
|
|
144
136
|
const { router, route, previousRoute } = useRouteNode("users");
|
|
145
137
|
|
|
@@ -148,33 +140,30 @@ function UsersSection() {
|
|
|
148
140
|
return null;
|
|
149
141
|
}
|
|
150
142
|
|
|
151
|
-
|
|
152
|
-
|
|
143
|
+
switch (route.name) {
|
|
144
|
+
case "users":
|
|
145
|
+
return <UsersList />;
|
|
146
|
+
case "users.profile":
|
|
147
|
+
return <UserProfile id={route.params.id} />;
|
|
148
|
+
default:
|
|
149
|
+
return null;
|
|
153
150
|
}
|
|
154
|
-
|
|
155
|
-
if (route.name === "users.profile") {
|
|
156
|
-
return <UserProfile id={route.params.id} />;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
return null;
|
|
160
151
|
}
|
|
161
152
|
```
|
|
162
153
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
- `nodeName` - Route segment to observe (e.g., `"users"`, `"users.profile"`)
|
|
166
|
-
|
|
167
|
-
**Returns:**
|
|
168
|
-
|
|
169
|
-
- `router` - Router instance
|
|
170
|
-
- `route` - Current route state (`State | undefined`) - `undefined` when current route is not under the specified node
|
|
171
|
-
- `previousRoute` - Previous route state (`State | undefined`)
|
|
154
|
+
---
|
|
172
155
|
|
|
173
156
|
### Components
|
|
174
157
|
|
|
175
|
-
#### Link
|
|
176
|
-
|
|
177
|
-
|
|
158
|
+
#### `<Link routeName={string} routeParams={object} ...props>`
|
|
159
|
+
Navigation link with automatic active state detection.\
|
|
160
|
+
`routeName: string` — target route name\
|
|
161
|
+
`routeParams?: Params` — route parameters\
|
|
162
|
+
`routeOptions?: { reload?, replace? }` — navigation options\
|
|
163
|
+
`activeClassName?: string` — class when active (default: `"active"`)
|
|
164
|
+
`activeStrict?: boolean` — exact match only (default: `false`)
|
|
165
|
+
`ignoreQueryParams?: boolean` — ignore query params in active check (default: `true`)\
|
|
166
|
+
[Wiki](https://github.com/greydragon888/real-router/wiki/Link)
|
|
178
167
|
|
|
179
168
|
```tsx
|
|
180
169
|
import { Link } from "@real-router/react";
|
|
@@ -186,256 +175,38 @@ import { Link } from "@real-router/react";
|
|
|
186
175
|
activeStrict={false}
|
|
187
176
|
>
|
|
188
177
|
View Profile
|
|
189
|
-
</Link
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
**Props:**
|
|
193
|
-
|
|
194
|
-
| Prop | Type | Default | Description |
|
|
195
|
-
| ------------------- | ----------------------- | ----------- | ----------------------------------- |
|
|
196
|
-
| `routeName` | `string` | (required) | Target route name |
|
|
197
|
-
| `routeParams` | `Params` | `{}` | Route parameters |
|
|
198
|
-
| `routeOptions` | `{ reload?, replace? }` | `{}` | Navigation options |
|
|
199
|
-
| `activeClassName` | `string` | `"active"` | Class applied when route is active |
|
|
200
|
-
| `activeStrict` | `boolean` | `false` | Strict matching (exact route only) |
|
|
201
|
-
| `ignoreQueryParams` | `boolean` | `true` | Ignore query params in active check |
|
|
202
|
-
| `className` | `string` | `undefined` | Base CSS class |
|
|
203
|
-
| `onClick` | `(event) => void` | `undefined` | Click handler |
|
|
204
|
-
| `successCallback` | `(state) => void` | `undefined` | Called on successful navigation |
|
|
205
|
-
| `errorCallback` | `(error) => void` | `undefined` | Called on navigation error |
|
|
206
|
-
| `target` | `string` | `undefined` | Link target (e.g., `"_blank"`) |
|
|
207
|
-
|
|
208
|
-
**Note:** The rendered `<a>` element also includes `data-route` and `data-active` attributes for CSS styling and event delegation.
|
|
209
|
-
|
|
210
|
-
#### ConnectedLink
|
|
211
|
-
|
|
212
|
-
Same as `Link`, but re-renders on every route change. Use when you need the link to update based on current route state.
|
|
213
|
-
|
|
214
|
-
```tsx
|
|
215
|
-
import { ConnectedLink } from "@real-router/react";
|
|
216
|
-
|
|
217
|
-
<ConnectedLink routeName="dashboard" activeClassName="nav-active">
|
|
218
|
-
Dashboard
|
|
219
|
-
</ConnectedLink>;
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
#### BaseLink
|
|
223
|
-
|
|
224
|
-
Low-level link component that requires router instance as prop. Useful for custom implementations.
|
|
225
|
-
|
|
226
|
-
```tsx
|
|
227
|
-
import { BaseLink, useRouter } from "@real-router/react";
|
|
228
|
-
|
|
229
|
-
function CustomLink({ to, children }) {
|
|
230
|
-
const router = useRouter();
|
|
231
|
-
|
|
232
|
-
return (
|
|
233
|
-
<BaseLink router={router} routeName={to}>
|
|
234
|
-
{children}
|
|
235
|
-
</BaseLink>
|
|
236
|
-
);
|
|
237
|
-
}
|
|
178
|
+
</Link>
|
|
238
179
|
```
|
|
239
180
|
|
|
240
|
-
|
|
181
|
+
#### `<ConnectedLink ...props>`
|
|
182
|
+
Same as `Link`, but re-renders on every route change.\
|
|
183
|
+
Props: same as `Link`\
|
|
184
|
+
[Wiki](https://github.com/greydragon888/real-router/wiki/ConnectedLink)
|
|
241
185
|
|
|
242
|
-
|
|
186
|
+
#### `<BaseLink router={router} ...props>`
|
|
187
|
+
Low-level link component. Requires router instance as prop.\
|
|
188
|
+
`router: Router` — router instance\
|
|
189
|
+
Props: same as `Link`\
|
|
190
|
+
[Wiki](https://github.com/greydragon888/real-router/wiki/BaseLink)
|
|
243
191
|
|
|
244
|
-
|
|
245
|
-
import { RouterContext, RouteContext } from "@real-router/react";
|
|
246
|
-
import { useContext } from "react";
|
|
247
|
-
|
|
248
|
-
function CustomComponent() {
|
|
249
|
-
// RouterContext provides: Router | null
|
|
250
|
-
const router = useContext(RouterContext);
|
|
251
|
-
|
|
252
|
-
// RouteContext provides: { router, route, previousRoute } | null
|
|
253
|
-
const routeContext = useContext(RouteContext);
|
|
254
|
-
|
|
255
|
-
if (!router || !routeContext) {
|
|
256
|
-
throw new Error("Must be used within RouterProvider");
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
// Access route state
|
|
260
|
-
const { route, previousRoute } = routeContext;
|
|
261
|
-
|
|
262
|
-
// ...
|
|
263
|
-
}
|
|
264
|
-
```
|
|
265
|
-
|
|
266
|
-
**Note:** Prefer using hooks (`useRouter`, `useRoute`, `useRouteNode`) over direct context access, as hooks provide better error handling and TypeScript support.
|
|
267
|
-
|
|
268
|
-
## TypeScript
|
|
269
|
-
|
|
270
|
-
Full TypeScript support with exported types:
|
|
271
|
-
|
|
272
|
-
```tsx
|
|
273
|
-
import {
|
|
274
|
-
RouterProvider,
|
|
275
|
-
Link,
|
|
276
|
-
ConnectedLink,
|
|
277
|
-
BaseLink,
|
|
278
|
-
useRouter,
|
|
279
|
-
useRoute,
|
|
280
|
-
useRouteNode,
|
|
281
|
-
RouterContext,
|
|
282
|
-
RouteContext,
|
|
283
|
-
type BaseLinkProps,
|
|
284
|
-
} from "@real-router/react";
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
### Typed Route Parameters
|
|
288
|
-
|
|
289
|
-
You can type route parameters by using type assertions:
|
|
290
|
-
|
|
291
|
-
```tsx
|
|
292
|
-
import type { Params, State } from "@real-router/core";
|
|
192
|
+
---
|
|
293
193
|
|
|
294
|
-
|
|
295
|
-
id: string;
|
|
296
|
-
}
|
|
194
|
+
## Migration from react-router5
|
|
297
195
|
|
|
298
|
-
|
|
299
|
-
|
|
196
|
+
| API | react-router5 | @real-router/react |
|
|
197
|
+
| --------------------------------------------- | ------------- | ------------------ |
|
|
198
|
+
| `RouterProvider` | ✓ | ✓ |
|
|
199
|
+
| `Link`, `ConnectedLink`, `BaseLink` | ✓ | ✓ |
|
|
200
|
+
| `useRouter`, `useRoute`, `useRouteNode` | ✓ | ✓ |
|
|
201
|
+
| `withRouter`, `withRoute`, `routeNode` | ✓ | ❌ Use hooks |
|
|
202
|
+
| `Router`, `Route`, `RouteNode` (render props) | ✓ | ❌ Use hooks |
|
|
300
203
|
|
|
301
|
-
|
|
302
|
-
const params = route?.params as UserParams | undefined;
|
|
303
|
-
|
|
304
|
-
return <h1>User: {params?.id}</h1>;
|
|
305
|
-
}
|
|
306
|
-
```
|
|
204
|
+
---
|
|
307
205
|
|
|
308
206
|
## Related Packages
|
|
309
207
|
|
|
310
208
|
- [@real-router/core](https://www.npmjs.com/package/@real-router/core) — Core router
|
|
311
|
-
- [@real-router/browser-plugin](https://www.npmjs.com/package/@real-router/browser-plugin) — Browser history
|
|
312
|
-
|
|
313
|
-
## Migration from react-router5
|
|
314
|
-
|
|
315
|
-
### Import Changes
|
|
316
|
-
|
|
317
|
-
```diff
|
|
318
|
-
- import { RouterProvider, Link, useRoute, useRouter, useRouteNode } from 'react-router5';
|
|
319
|
-
+ import { RouterProvider, Link, useRoute, useRouter, useRouteNode } from '@real-router/react';
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
### Removed: Higher-Order Components (HOCs)
|
|
323
|
-
|
|
324
|
-
HOCs have been removed in favor of hooks:
|
|
325
|
-
|
|
326
|
-
```diff
|
|
327
|
-
- import { withRouter, withRoute, routeNode } from 'react-router5';
|
|
328
|
-
+ import { useRouter, useRoute, useRouteNode } from '@real-router/react';
|
|
329
|
-
|
|
330
|
-
- const MyComponent = withRouter(({ router }) => {
|
|
331
|
-
- return <button onClick={() => router.navigate('home')}>Home</button>;
|
|
332
|
-
- });
|
|
333
|
-
+ function MyComponent() {
|
|
334
|
-
+ const router = useRouter();
|
|
335
|
-
+ return <button onClick={() => router.navigate('home')}>Home</button>;
|
|
336
|
-
+ }
|
|
337
|
-
|
|
338
|
-
- const MyRoute = withRoute(({ route }) => {
|
|
339
|
-
- return <div>Current: {route.name}</div>;
|
|
340
|
-
- });
|
|
341
|
-
+ function MyRoute() {
|
|
342
|
-
+ const { route } = useRoute();
|
|
343
|
-
+ return <div>Current: {route?.name}</div>;
|
|
344
|
-
+ }
|
|
345
|
-
|
|
346
|
-
- const UsersNode = routeNode('users')(({ route }) => {
|
|
347
|
-
- return <div>{route.name}</div>;
|
|
348
|
-
- });
|
|
349
|
-
+ function UsersNode() {
|
|
350
|
-
+ const { route } = useRouteNode('users');
|
|
351
|
-
+ return <div>{route?.name}</div>;
|
|
352
|
-
+ }
|
|
353
|
-
```
|
|
354
|
-
|
|
355
|
-
### Removed: Render Props
|
|
356
|
-
|
|
357
|
-
Render prop components have been removed in favor of hooks:
|
|
358
|
-
|
|
359
|
-
```diff
|
|
360
|
-
- import { Router, Route, RouteNode } from 'react-router5';
|
|
361
|
-
+ import { useRouter, useRoute, useRouteNode } from '@real-router/react';
|
|
362
|
-
|
|
363
|
-
- <Router>
|
|
364
|
-
- {({ router }) => <button onClick={() => router.navigate('home')}>Home</button>}
|
|
365
|
-
- </Router>
|
|
366
|
-
+ function MyComponent() {
|
|
367
|
-
+ const router = useRouter();
|
|
368
|
-
+ return <button onClick={() => router.navigate('home')}>Home</button>;
|
|
369
|
-
+ }
|
|
370
|
-
|
|
371
|
-
- <Route>
|
|
372
|
-
- {({ route }) => <div>Current: {route.name}</div>}
|
|
373
|
-
- </Route>
|
|
374
|
-
+ function MyRoute() {
|
|
375
|
-
+ const { route } = useRoute();
|
|
376
|
-
+ return <div>Current: {route?.name}</div>;
|
|
377
|
-
+ }
|
|
378
|
-
|
|
379
|
-
- <RouteNode nodeName="users">
|
|
380
|
-
- {({ route }) => <div>{route.name}</div>}
|
|
381
|
-
- </RouteNode>
|
|
382
|
-
+ function UsersNode() {
|
|
383
|
-
+ const { route } = useRouteNode('users');
|
|
384
|
-
+ return <div>{route?.name}</div>;
|
|
385
|
-
+ }
|
|
386
|
-
```
|
|
387
|
-
|
|
388
|
-
### Available APIs
|
|
389
|
-
|
|
390
|
-
| API | react-router5 | @real-router/react |
|
|
391
|
-
|-----|---------------|---------------|
|
|
392
|
-
| `RouterProvider` | ✓ | ✓ |
|
|
393
|
-
| `Link` | ✓ | ✓ |
|
|
394
|
-
| `ConnectedLink` | ✓ | ✓ |
|
|
395
|
-
| `BaseLink` | ✓ | ✓ |
|
|
396
|
-
| `useRouter` | ✓ | ✓ |
|
|
397
|
-
| `useRoute` | ✓ | ✓ |
|
|
398
|
-
| `useRouteNode` | ✓ | ✓ |
|
|
399
|
-
| `withRouter` | ✓ | ❌ removed |
|
|
400
|
-
| `withRoute` | ✓ | ❌ removed |
|
|
401
|
-
| `routeNode` | ✓ | ❌ removed |
|
|
402
|
-
| `Router` (render prop) | ✓ | ❌ removed |
|
|
403
|
-
| `Route` (render prop) | ✓ | ❌ removed |
|
|
404
|
-
| `RouteNode` (render prop) | ✓ | ❌ removed |
|
|
405
|
-
|
|
406
|
-
### Full Migration Example
|
|
407
|
-
|
|
408
|
-
```diff
|
|
409
|
-
- import { createRouter } from 'router5';
|
|
410
|
-
- import browserPlugin from 'router5-plugin-browser';
|
|
411
|
-
- import { RouterProvider, withRoute, Link } from 'react-router5';
|
|
412
|
-
+ import { createRouter } from '@real-router/core';
|
|
413
|
-
+ import { browserPluginFactory } from '@real-router/browser-plugin';
|
|
414
|
-
+ import { RouterProvider, useRoute, Link } from '@real-router/react';
|
|
415
|
-
|
|
416
|
-
const router = createRouter(routes);
|
|
417
|
-
- router.usePlugin(browserPlugin());
|
|
418
|
-
+ router.usePlugin(browserPluginFactory());
|
|
419
|
-
|
|
420
|
-
- const CurrentRoute = withRoute(({ route }) => (
|
|
421
|
-
- <span>{route.name}</span>
|
|
422
|
-
- ));
|
|
423
|
-
+ function CurrentRoute() {
|
|
424
|
-
+ const { route } = useRoute();
|
|
425
|
-
+ return <span>{route?.name}</span>;
|
|
426
|
-
+ }
|
|
427
|
-
|
|
428
|
-
function App() {
|
|
429
|
-
return (
|
|
430
|
-
<RouterProvider router={router}>
|
|
431
|
-
<nav>
|
|
432
|
-
<Link routeName="home">Home</Link>
|
|
433
|
-
</nav>
|
|
434
|
-
<CurrentRoute />
|
|
435
|
-
</RouterProvider>
|
|
436
|
-
);
|
|
437
|
-
}
|
|
438
|
-
```
|
|
209
|
+
- [@real-router/browser-plugin](https://www.npmjs.com/package/@real-router/browser-plugin) — Browser history
|
|
439
210
|
|
|
440
211
|
## License
|
|
441
212
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"../../node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js":{"bytes":569,"imports":[],"format":"esm"},"src/constants.ts":{"bytes":225,"imports":[{"path":"/
|
|
1
|
+
{"inputs":{"../../node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js":{"bytes":569,"imports":[],"format":"esm"},"src/constants.ts":{"bytes":225,"imports":[{"path":"/home/runner/work/real-router/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useRouterSubscription.tsx":{"bytes":2370,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"/home/runner/work/real-router/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useStableValue.tsx":{"bytes":976,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"/home/runner/work/real-router/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/utils.ts":{"bytes":1483,"imports":[{"path":"/home/runner/work/real-router/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useIsActiveRoute.tsx":{"bytes":2679,"imports":[{"path":"@real-router/helpers","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"src/hooks/useRouterSubscription.tsx","kind":"import-statement","original":"./useRouterSubscription"},{"path":"src/hooks/useStableValue.tsx","kind":"import-statement","original":"./useStableValue"},{"path":"src/constants.ts","kind":"import-statement","original":"../constants"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils"},{"path":"/home/runner/work/real-router/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/components/BaseLink.tsx":{"bytes":4826,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"../constants"},{"path":"src/hooks/useIsActiveRoute.tsx","kind":"import-statement","original":"../hooks/useIsActiveRoute"},{"path":"src/hooks/useStableValue.tsx","kind":"import-statement","original":"../hooks/useStableValue"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils"},{"path":"/home/runner/work/real-router/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/components/Link.tsx":{"bytes":512,"imports":[{"path":"src/index.ts","kind":"import-statement","original":"@real-router/react"},{"path":"src/components/BaseLink.tsx","kind":"import-statement","original":"./BaseLink"},{"path":"/home/runner/work/real-router/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/components/ConnectedLink.tsx":{"bytes":563,"imports":[{"path":"src/index.ts","kind":"import-statement","original":"@real-router/react"},{"path":"src/components/BaseLink.tsx","kind":"import-statement","original":"./BaseLink"},{"path":"/home/runner/work/real-router/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useRouteNode.tsx":{"bytes":2096,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/index.ts","kind":"import-statement","original":"@real-router/react"},{"path":"src/hooks/useRouterSubscription.tsx","kind":"import-statement","original":"./useRouterSubscription"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils"},{"path":"/home/runner/work/real-router/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/context.ts":{"bytes":333,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"/home/runner/work/real-router/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useRoute.tsx":{"bytes":417,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/context.ts","kind":"import-statement","original":"../context"},{"path":"/home/runner/work/real-router/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/RouterProvider.tsx":{"bytes":1596,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/context.ts","kind":"import-statement","original":"./context"},{"path":"/home/runner/work/real-router/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useRouter.tsx":{"bytes":378,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/context.ts","kind":"import-statement","original":"../context"},{"path":"/home/runner/work/real-router/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":529,"imports":[{"path":"src/components/BaseLink.tsx","kind":"import-statement","original":"./components/BaseLink"},{"path":"src/components/Link.tsx","kind":"import-statement","original":"./components/Link"},{"path":"src/components/ConnectedLink.tsx","kind":"import-statement","original":"./components/ConnectedLink"},{"path":"src/hooks/useRouteNode.tsx","kind":"import-statement","original":"./hooks/useRouteNode"},{"path":"src/hooks/useRoute.tsx","kind":"import-statement","original":"./hooks/useRoute"},{"path":"src/RouterProvider.tsx","kind":"import-statement","original":"./RouterProvider"},{"path":"src/context.ts","kind":"import-statement","original":"./context"},{"path":"src/hooks/useRouter.tsx","kind":"import-statement","original":"./hooks/useRouter"},{"path":"/home/runner/work/real-router/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/cjs/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":26879},"dist/cjs/index.js":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@real-router/helpers","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react/jsx-runtime","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["BaseLink","ConnectedLink","Link","RouteContext","RouterContext","RouterProvider","useRoute","useRouteNode","useRouter"],"entryPoint":"src/index.ts","inputs":{"src/components/BaseLink.tsx":{"bytesInOutput":3235},"src/constants.ts":{"bytesInOutput":77},"src/hooks/useIsActiveRoute.tsx":{"bytesInOutput":1723},"src/hooks/useRouterSubscription.tsx":{"bytesInOutput":1386},"src/hooks/useStableValue.tsx":{"bytesInOutput":157},"src/utils.ts":{"bytesInOutput":816},"src/index.ts":{"bytesInOutput":0},"src/components/Link.tsx":{"bytesInOutput":243},"src/components/ConnectedLink.tsx":{"bytesInOutput":247},"src/hooks/useRouteNode.tsx":{"bytesInOutput":1064},"src/hooks/useRoute.tsx":{"bytesInOutput":230},"src/context.ts":{"bytesInOutput":120},"src/RouterProvider.tsx":{"bytesInOutput":893},"src/hooks/useRouter.tsx":{"bytesInOutput":232}},"bytes":11031}}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@real-router/react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"description": "React integration for Real-Router",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|
|
@@ -65,9 +65,10 @@
|
|
|
65
65
|
"vitest-react-profiler": "1.12.0"
|
|
66
66
|
},
|
|
67
67
|
"peerDependencies": {
|
|
68
|
+
"@real-router/browser-plugin": "workspace:^",
|
|
68
69
|
"@types/react": ">=18.0.0",
|
|
69
70
|
"@types/react-dom": ">=18.0.0",
|
|
70
71
|
"react": ">=18.0.0",
|
|
71
|
-
"
|
|
72
|
+
"react-dom": ">=18.0.0"
|
|
72
73
|
}
|
|
73
74
|
}
|