@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 CHANGED
@@ -3,7 +3,7 @@
3
3
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
4
4
  [![React](https://img.shields.io/badge/React-18+-61DAFB.svg)](https://reactjs.org/)
5
5
 
6
- React integration for [@real-router/core](https://github.com/greydragon888/real-router) - hooks, components, and context providers.
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
- ### Peer Dependencies
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
- ## API Reference
66
+ ---
72
67
 
73
- ### Provider
68
+ ## API
74
69
 
75
- #### RouterProvider
70
+ ### Provider
76
71
 
77
- Provides router instance and state to all child components via React Context.
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
- **Props:**
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 the router instance from context.
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
- function NavigateButton() {
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 the current route state, previous route, and router instance. Re-renders on every route change.
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
- function CurrentRoute() {
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
- **Returns:**
130
-
131
- - `router` - Router instance
132
- - `route` - Current route state (`State | undefined`)
133
- - `previousRoute` - Previous route state (`State | undefined`)
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
- function UsersSection() {
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
- if (route.name === "users") {
152
- return <UsersList />;
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
- **Parameters:**
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
- Navigation link component with automatic active state detection.
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
- ### Context
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
- For advanced use cases, you can access contexts directly:
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
- ```tsx
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
- interface UserParams extends Params {
295
- id: string;
296
- }
194
+ ## Migration from react-router5
297
195
 
298
- function UserProfile() {
299
- const { route } = useRoute();
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
- // Type assertion for params
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 integration
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":"/Users/olegivanov/WebstormProjects/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":"/Users/olegivanov/WebstormProjects/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":"/Users/olegivanov/WebstormProjects/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":"/Users/olegivanov/WebstormProjects/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":"/Users/olegivanov/WebstormProjects/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":"/Users/olegivanov/WebstormProjects/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":"/Users/olegivanov/WebstormProjects/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":"/Users/olegivanov/WebstormProjects/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":"/Users/olegivanov/WebstormProjects/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":"/Users/olegivanov/WebstormProjects/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":"/Users/olegivanov/WebstormProjects/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":"/Users/olegivanov/WebstormProjects/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":"/Users/olegivanov/WebstormProjects/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":"/Users/olegivanov/WebstormProjects/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}}}
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.0",
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
- "@real-router/browser-plugin": "workspace:^"
72
+ "react-dom": ">=18.0.0"
72
73
  }
73
74
  }