@budarin/use-route 1.3.4 → 1.4.0

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/CHANGELOG.md CHANGED
@@ -5,6 +5,26 @@
5
5
  Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.1.0/),
6
6
  версионирование — [Semantic Versioning](https://semver.org/lang/ru/).
7
7
 
8
+ ## [1.4.0] - 2025-02-01
9
+
10
+ ### Изменено (Breaking)
11
+
12
+ - **Переименование API:** все сущности с именем «Router» заменены на «Route» (приведение к названию пакета use-route).
13
+ - `configureRouter` → **`configureRoute`**
14
+ - `getRouterConfig` → **`getRouteConfig`** (внутренний)
15
+ - `clearRouterCaches` → **`clearRouteCaches`**
16
+ - тип `RouterState` → **`RouteState`**
17
+ - тип `RouterConfig` → **`RouteConfig`**
18
+ - В демо компонент `Router` переименован в **`RouteView`**.
19
+
20
+ ### Миграция
21
+
22
+ Замените в коде вызовы и импорты:
23
+
24
+ - `configureRouter({ ... })` → `configureRoute({ ... })`
25
+ - `clearRouterCaches()` → `clearRouteCaches()`
26
+ - при использовании типов: `RouterState` → `RouteState`, `RouterConfig` → `RouteConfig`
27
+
8
28
  ## [1.3.4] - 2025-02-01
9
29
 
10
30
  ### Изменено
@@ -21,7 +41,7 @@
21
41
 
22
42
  ### Изменено
23
43
 
24
- - **useRoute:** в зависимостях финального `useMemo` вместо перечисления полей `routerState` (location, pathname, searchParams, params, historyIndex, state, matched) используется один объект `routerState`. Поведение не меняется: ссылка на `routerState` обновляется только при изменении этих данных.
44
+ - **useRoute:** в зависимостях финального `useMemo` вместо перечисления полей `routeState` (location, pathname, searchParams, params, historyIndex, state, matched) используется один объект `routeState`. Поведение не меняется: ссылка на `routeState` обновляется только при изменении этих данных.
25
45
 
26
46
  ## [1.3.2] - 2025-01-31
27
47
 
@@ -50,7 +70,7 @@
50
70
 
51
71
  ### Добавлено
52
72
 
53
- - **section** в `UseRouteOptions`: путь подраздела под глобальным base (например `/dashboard`). `pathname` возвращается без этого префикса; `navigate(to)` добавляет глобальный base + section. Комбинируется с `configureRouter.base`, не заменяет его.
73
+ - **section** в `UseRouteOptions`: путь подраздела под глобальным base (например `/dashboard`). `pathname` возвращается без этого префикса; `navigate(to)` добавляет глобальный base + section. Комбинируется с `configureRoute.base`, не заменяет его.
54
74
  - **section** и **base** в `NavigateOptions`: переопределение section или полного base для одного перехода (например `navigate('/', { section: '' })` — в корень приложения, `navigate('/login', { base: '' })` — путь вне приложения).
55
75
  - Демо-приложение в `demo/` (Vite + React): примеры section, base, push/replace, свой matcher.
56
76
  - CI (GitHub Actions): проверка форматирования, типов, тесты и сборка при push в `master`.
@@ -66,5 +86,5 @@
66
86
 
67
87
  - Первый релиз.
68
88
  - Хук `useRoute(options?)`: `pathname`, `searchParams`, `navigate`, `replace`, `back`, `forward`, `canGoBack`, `canGoForward`, `state`, опционально `pattern` и параметры URL.
69
- - `configureRouter(options)`: глобальные `base`, `logger`, `initialLocation` (SSR).
89
+ - `configureRoute(options)`: глобальные `base`, `logger`, `initialLocation` (SSR).
70
90
  - Интеграция с Navigation API; запасной вариант для старых окружений.
package/README.md CHANGED
@@ -57,7 +57,7 @@ npm i @budarin/use-route
57
57
  ```
58
58
 
59
59
  ```typescript
60
- import { useRoute, configureRouter } from '@budarin/use-route';
60
+ import { useRoute, configureRoute } from '@budarin/use-route';
61
61
 
62
62
 
63
63
  function App() {
@@ -103,7 +103,7 @@ function App() {
103
103
  - **`pattern`** (опционально) — строка-паттерн (URLPattern) или PathMatcher для парсинга `params` и `matched`.
104
104
  - **`options`** (опционально)
105
105
 
106
- **`section`**: путь раздела под глобальным base (например `/dashboard`). `navigate(to)` по умолчанию добавляет к путям полный префикс (base + section). Комбинируется с глобальным `base` из `configureRouter`, не заменяет его. В компонентах раздела вызывайте `useRoute({ section: '/dashboard' })` и работайте с путями относительно раздела.
106
+ **`section`**: путь раздела под глобальным base (например `/dashboard`). `navigate(to)` по умолчанию добавляет к путям полный префикс (base + section). Комбинируется с глобальным `base` из `configureRoute`, не заменяет его. В компонентах раздела вызывайте `useRoute({ section: '/dashboard' })` и работайте с путями относительно раздела.
107
107
 
108
108
  **Возвращает:**
109
109
 
@@ -134,7 +134,7 @@ function App() {
134
134
 
135
135
  ```typescript
136
136
  {
137
- history?: 'push' | 'replace' | 'auto'; // по умолчанию из configureRouter или 'auto'
137
+ history?: 'push' | 'replace' | 'auto'; // по умолчанию из configureRoute или 'auto'
138
138
  state?: unknown; // опциональные данные перехода (только подсказки для UX); подробнее — раздел про state ниже
139
139
  base?: string; // полная подстановка префикса для этого вызова: '' или '/' — без префикса (другое приложение); иначе — полный путь (напр. '/auth')
140
140
  section?: string; // переопределение секции для этого вызова: '' — корень приложения (только global base); '/path' — другая секция
@@ -172,10 +172,10 @@ function App() {
172
172
 
173
173
  **Итог.** State в истории — опциональный инструмент для «передать что-то вместе с переходом», когда это улучшение, а не требование. Если сомневаетесь — можно не использовать; в большинстве приложений достаточно pathname, query и запросов к API.
174
174
 
175
- **`configureRouter(config)`** — глобальная настройка один раз при старте приложения:
175
+ **`configureRoute(config)`** — глобальная настройка один раз при старте приложения:
176
176
 
177
177
  ```typescript
178
- configureRouter({
178
+ configureRoute({
179
179
  urlCacheLimit: 50, // лимит LRU-кэша URL (по умолчанию 50)
180
180
  defaultHistory: 'replace', // history по умолчанию для всех navigate()
181
181
  logger: myLogger, // логгер (дефолт: console)
@@ -442,8 +442,8 @@ function UserPostsExample() {
442
442
  Когда приложение располагается **не в корне домена**, а по подпути (например `https://example.com/app/` — все маршруты под `/app`), задайте в конфиге `base: '/app'`. Тогда `navigate(to)` добавляет base к относительным путям. Для одноразового перехода «вне» этого пути (например на `/login`) используйте опцию `base` в `navigate` или `replace`: `navigate('/login', { base: '' })`.
443
443
 
444
444
  ```tsx
445
- import { useRoute, configureRouter } from '@budarin/use-route';
446
- configureRouter({ base: '/app' });
445
+ import { useRoute, configureRoute } from '@budarin/use-route';
446
+ configureRoute({ base: '/app' });
447
447
 
448
448
  function AppUnderBase() {
449
449
  const { pathname, navigate } = useRoute();
@@ -511,13 +511,13 @@ function DashboardSection() {
511
511
 
512
512
  ```tsx
513
513
  // Серверный обработчик (псевдокод: Express, Fastify, Next и т.д.)
514
- import { configureRouter } from '@budarin/use-route';
514
+ import { configureRoute } from '@budarin/use-route';
515
515
  import { renderToStaticMarkup } from 'react-dom/server';
516
516
  import { App } from './App';
517
517
 
518
518
  function handleRequest(req, res) {
519
519
  // Один раз перед рендером этого запроса
520
- configureRouter({ initialLocation: req.url });
520
+ configureRoute({ initialLocation: req.url });
521
521
 
522
522
  const html = renderToStaticMarkup(<App />);
523
523
  res.send(html);
@@ -623,7 +623,7 @@ import 'urlpattern-polyfill';
623
623
  - LRU кэш parsed URL (настраиваемый лимит)
624
624
  - Map для O(1) поиска `historyIndex`
625
625
  - URLPattern для `:params`
626
- - Кэш compiled patterns; `clearRouterCaches()` — очистка кэшей (тесты, смена окружения)
626
+ - Кэш compiled patterns; `clearRouteCaches()` — очистка кэшей (тесты, смена окружения)
627
627
  - SSR-safe (checks `typeof window`)
628
628
 
629
629
  ## 🤝 Лицензия
@@ -3,7 +3,7 @@ import {
3
3
  require_react
4
4
  } from "./chunk-3SNVYWQ3.js";
5
5
 
6
- // ../node_modules/.pnpm/@budarin+use-route@1.3.3/node_modules/@budarin/use-route/dist/types.js
6
+ // ../node_modules/.pnpm/@budarin+use-route@1.3.4/node_modules/@budarin/use-route/dist/types.js
7
7
  var routerConfig = {
8
8
  urlCacheLimit: 50
9
9
  };
@@ -17,7 +17,7 @@ function getLogger() {
17
17
  return routerConfig.logger ?? console;
18
18
  }
19
19
 
20
- // ../node_modules/.pnpm/@budarin+use-route@1.3.3/node_modules/@budarin/use-route/dist/index.js
20
+ // ../node_modules/.pnpm/@budarin+use-route@1.3.4/node_modules/@budarin/use-route/dist/index.js
21
21
  var import_react = __toESM(require_react());
22
22
  var isBrowser = typeof window !== "undefined";
23
23
  function isValidUrl(url) {
@@ -95,8 +95,19 @@ function getNavigation() {
95
95
  return typeof window !== "undefined" && "navigation" in window ? window.navigation : void 0;
96
96
  }
97
97
  function computeNavigationSnapshot(nav) {
98
- if (!nav)
98
+ if (!nav) {
99
+ if (!isBrowser) {
100
+ const urlStr2 = getRouterConfig().initialLocation ?? "/";
101
+ const parsed2 = getCachedParsedUrl(urlStr2);
102
+ return {
103
+ ...DEFAULT_SNAPSHOT,
104
+ urlStr: urlStr2,
105
+ pathname: parsed2.pathname,
106
+ searchParams: parsed2.searchParams
107
+ };
108
+ }
99
109
  return DEFAULT_SNAPSHOT;
110
+ }
100
111
  const entry = nav.currentEntry;
101
112
  const urlStr = entry?.url ?? (isBrowser ? window.location.href : "/");
102
113
  const parsed = getCachedParsedUrl(urlStr);
@@ -112,7 +123,7 @@ function computeNavigationSnapshot(nav) {
112
123
  state
113
124
  };
114
125
  }
115
- var sharedSnapshot = null;
126
+ var sharedSnapshot = computeNavigationSnapshot(getNavigation());
116
127
  var storeCallbacks = /* @__PURE__ */ new Set();
117
128
  var unsubscribeNavigation = null;
118
129
  function subscribeToNavigation(callback) {
@@ -120,6 +131,7 @@ function subscribeToNavigation(callback) {
120
131
  if (storeCallbacks.size === 1) {
121
132
  const nav = getNavigation();
122
133
  if (nav) {
134
+ sharedSnapshot = computeNavigationSnapshot(nav);
123
135
  const interceptListener = (event) => {
124
136
  const navEvent = event;
125
137
  if (!navEvent.canIntercept || !isBrowser)
@@ -154,35 +166,18 @@ function subscribeToNavigation(callback) {
154
166
  unsubscribeNavigation();
155
167
  unsubscribeNavigation = null;
156
168
  }
157
- sharedSnapshot = null;
158
- noNavSnapshot = null;
159
- noNavSnapshotUrl = null;
160
169
  }
161
170
  };
162
171
  }
163
- var noNavSnapshot = null;
164
- var noNavSnapshotUrl = null;
165
172
  function getNavigationSnapshot() {
166
- if (sharedSnapshot !== null)
167
- return sharedSnapshot;
168
173
  const nav = getNavigation();
169
- if (nav) {
170
- sharedSnapshot = computeNavigationSnapshot(nav);
171
- return sharedSnapshot;
174
+ if (storeCallbacks.size === 0 && nav) {
175
+ const currentUrl = nav.currentEntry?.url ?? (isBrowser ? window.location.href : "/");
176
+ if (currentUrl !== sharedSnapshot.urlStr) {
177
+ sharedSnapshot = computeNavigationSnapshot(nav);
178
+ }
172
179
  }
173
- const urlStr = isBrowser ? window.location.href : getRouterConfig().initialLocation ?? "/";
174
- if (noNavSnapshot !== null && noNavSnapshotUrl === urlStr)
175
- return noNavSnapshot;
176
- const parsed = getCachedParsedUrl(urlStr);
177
- noNavSnapshotUrl = urlStr;
178
- noNavSnapshot = {
179
- ...DEFAULT_SNAPSHOT,
180
- urlStr,
181
- pathname: parsed.pathname,
182
- searchParams: parsed.searchParams,
183
- state: isBrowser ? window.history.state : void 0
184
- };
185
- return noNavSnapshot;
180
+ return sharedSnapshot;
186
181
  }
187
182
  var lastEntriesKeysRef = null;
188
183
  var lastKeyToIndexMap = null;
@@ -215,8 +210,159 @@ function clearRouterCaches() {
215
210
  URL_CACHE.clear();
216
211
  lastEntriesKeysRef = null;
217
212
  lastKeyToIndexMap = null;
218
- noNavSnapshot = null;
219
- noNavSnapshotUrl = null;
213
+ sharedSnapshot = computeNavigationSnapshot(getNavigation());
214
+ }
215
+ function globalBack() {
216
+ try {
217
+ const nav = getNavigation();
218
+ if (nav)
219
+ nav.back();
220
+ } catch (error) {
221
+ getLogger().error("[useRoute] Back navigation error:", error);
222
+ }
223
+ }
224
+ function globalForward() {
225
+ try {
226
+ const nav = getNavigation();
227
+ if (nav)
228
+ nav.forward();
229
+ } catch (error) {
230
+ getLogger().error("[useRoute] Forward navigation error:", error);
231
+ }
232
+ }
233
+ function globalUpdateState(state) {
234
+ try {
235
+ const nav = getNavigation();
236
+ if (nav) {
237
+ nav.updateCurrentEntry({ state });
238
+ sharedSnapshot = computeNavigationSnapshot(nav);
239
+ storeCallbacks.forEach((cb) => cb());
240
+ } else {
241
+ getLogger().warn("[useRoute] updateState requires Navigation API");
242
+ }
243
+ } catch (error) {
244
+ getLogger().error("[useRoute] updateState error:", error);
245
+ }
246
+ }
247
+ var navigateCache = /* @__PURE__ */ new Map();
248
+ function getNavigateForBase(effectiveBase) {
249
+ const cacheKey = effectiveBase ?? "__root__";
250
+ let cachedNavigate = navigateCache.get(cacheKey);
251
+ if (!cachedNavigate) {
252
+ cachedNavigate = async (to, navOptions = {}) => {
253
+ let targetUrl = typeof to === "string" ? to : to.toString();
254
+ let baseForCall;
255
+ if (navOptions.base !== void 0) {
256
+ baseForCall = navOptions.base === "" || navOptions.base === "/" ? void 0 : navOptions.base;
257
+ } else if (navOptions.section !== void 0) {
258
+ baseForCall = combineBases(getRouterConfig().base, navOptions.section);
259
+ } else {
260
+ baseForCall = effectiveBase;
261
+ }
262
+ if (baseForCall && baseForCall !== "/" && typeof to === "string" && to.startsWith("/") && !to.startsWith("//") && !to.includes(":")) {
263
+ targetUrl = baseForCall + (to === "/" ? "" : to);
264
+ }
265
+ if (!isValidUrl(targetUrl)) {
266
+ getLogger().warn("[useRoute] Invalid URL rejected:", targetUrl);
267
+ return;
268
+ }
269
+ const nav = getNavigation();
270
+ if (!nav) {
271
+ return;
272
+ }
273
+ const defaultHistory = getRouterConfig().defaultHistory ?? "auto";
274
+ const navigationOpts = {
275
+ state: navOptions.state,
276
+ history: navOptions.history ?? defaultHistory
277
+ };
278
+ try {
279
+ await nav.navigate(targetUrl, navigationOpts);
280
+ } catch (error) {
281
+ getLogger().error("[useRoute] Navigation error:", error);
282
+ }
283
+ };
284
+ navigateCache.set(cacheKey, cachedNavigate);
285
+ }
286
+ return cachedNavigate;
287
+ }
288
+ var replaceCache = /* @__PURE__ */ new Map();
289
+ function getReplaceForBase(effectiveBase) {
290
+ const cacheKey = effectiveBase ?? "__root__";
291
+ let cachedReplace = replaceCache.get(cacheKey);
292
+ if (!cachedReplace) {
293
+ const navigateFn = getNavigateForBase(effectiveBase);
294
+ cachedReplace = (to, options) => navigateFn(to, { ...options, history: "replace" });
295
+ replaceCache.set(cacheKey, cachedReplace);
296
+ }
297
+ return cachedReplace;
298
+ }
299
+ function globalGo(delta) {
300
+ if (delta === Infinity || delta === -Infinity) {
301
+ getLogger().warn("[useRoute] Delta value too large:", delta);
302
+ return;
303
+ }
304
+ if (!Number.isFinite(delta) || delta === 0)
305
+ return;
306
+ if (delta > Number.MAX_SAFE_INTEGER || delta < -Number.MAX_SAFE_INTEGER) {
307
+ getLogger().warn("[useRoute] Delta value too large:", delta);
308
+ return;
309
+ }
310
+ const nav = getNavigation();
311
+ if (!nav)
312
+ return;
313
+ try {
314
+ const snapshot = getNavigationSnapshot();
315
+ if (snapshot.entriesKeys.length === 0)
316
+ return;
317
+ const keyToIndexMap = getKeyToIndexMap(snapshot.entriesKeys);
318
+ const idx = keyToIndexMap.get(snapshot.currentKey) ?? -1;
319
+ if (idx === -1)
320
+ return;
321
+ const targetIdx = idx + delta;
322
+ if (targetIdx < 0 || targetIdx >= snapshot.entriesKeys.length) {
323
+ return;
324
+ }
325
+ const targetKey = snapshot.entriesKeys[targetIdx];
326
+ if (targetKey === void 0)
327
+ return;
328
+ nav.traverseTo(targetKey);
329
+ } catch (error) {
330
+ getLogger().error("[useRoute] Go navigation error:", error);
331
+ }
332
+ }
333
+ function globalCanGoBack(steps = 1) {
334
+ if (!Number.isFinite(steps) || steps < 0 || steps > Number.MAX_SAFE_INTEGER) {
335
+ return false;
336
+ }
337
+ const nav = getNavigation();
338
+ if (!nav)
339
+ return false;
340
+ const snapshot = getNavigationSnapshot();
341
+ if (snapshot.entriesKeys.length === 0) {
342
+ return false;
343
+ }
344
+ const keyToIndexMap = getKeyToIndexMap(snapshot.entriesKeys);
345
+ const idx = keyToIndexMap.get(snapshot.currentKey) ?? -1;
346
+ if (idx === -1)
347
+ return false;
348
+ return idx - steps >= 0;
349
+ }
350
+ function globalCanGoForward(steps = 1) {
351
+ if (!Number.isFinite(steps) || steps < 0 || steps > Number.MAX_SAFE_INTEGER) {
352
+ return false;
353
+ }
354
+ const nav = getNavigation();
355
+ if (!nav)
356
+ return false;
357
+ const snapshot = getNavigationSnapshot();
358
+ if (snapshot.entriesKeys.length === 0) {
359
+ return false;
360
+ }
361
+ const keyToIndexMap = getKeyToIndexMap(snapshot.entriesKeys);
362
+ const idx = keyToIndexMap.get(snapshot.currentKey) ?? -1;
363
+ if (idx === -1)
364
+ return false;
365
+ return idx + steps < snapshot.entriesKeys.length;
220
366
  }
221
367
  function useRoute(patternOrOptions, optionsParam) {
222
368
  let pattern;
@@ -228,7 +374,6 @@ function useRoute(patternOrOptions, optionsParam) {
228
374
  pattern = patternOrOptions;
229
375
  options = optionsParam;
230
376
  }
231
- const navigation = getNavigation();
232
377
  const rawState = (0, import_react.useSyncExternalStore)(subscribeToNavigation, getNavigationSnapshot, () => DEFAULT_SNAPSHOT);
233
378
  const keyToIndexMap = getKeyToIndexMap(rawState.entriesKeys);
234
379
  const effectiveBase = combineBases(getRouterConfig().base, options?.section);
@@ -257,8 +402,7 @@ function useRoute(patternOrOptions, optionsParam) {
257
402
  params,
258
403
  historyIndex,
259
404
  state: rawState.state,
260
- matched,
261
- _entriesKeys: rawState.entriesKeys
405
+ matched
262
406
  };
263
407
  }, [
264
408
  rawState.currentKey,
@@ -270,125 +414,15 @@ function useRoute(patternOrOptions, optionsParam) {
270
414
  pattern,
271
415
  effectiveBase
272
416
  ]);
273
- const navigate = (0, import_react.useCallback)(async (to, navOptions = {}) => {
274
- let targetUrl = typeof to === "string" ? to : to.toString();
275
- let baseForCall;
276
- if (navOptions.base !== void 0) {
277
- baseForCall = navOptions.base === "" || navOptions.base === "/" ? void 0 : navOptions.base;
278
- } else if (navOptions.section !== void 0) {
279
- baseForCall = combineBases(getRouterConfig().base, navOptions.section);
280
- } else {
281
- baseForCall = effectiveBase;
282
- }
283
- if (baseForCall && baseForCall !== "/" && typeof to === "string" && to.startsWith("/") && !to.startsWith("//") && !to.includes(":")) {
284
- targetUrl = baseForCall + (to === "/" ? "" : to);
285
- }
286
- if (!isValidUrl(targetUrl)) {
287
- getLogger().warn("[useRoute] Invalid URL rejected:", targetUrl);
288
- return;
289
- }
290
- if (!navigation) {
291
- return;
292
- }
293
- const defaultHistory = getRouterConfig().defaultHistory ?? "auto";
294
- const navigationOpts = {
295
- state: navOptions.state,
296
- history: navOptions.history ?? defaultHistory
297
- };
298
- try {
299
- await navigation.navigate(targetUrl, navigationOpts);
300
- } catch (error) {
301
- getLogger().error("[useRoute] Navigation error:", error);
302
- }
303
- }, [navigation, effectiveBase]);
304
- const back = (0, import_react.useCallback)(() => {
305
- try {
306
- if (navigation)
307
- navigation.back();
308
- } catch (error) {
309
- getLogger().error("[useRoute] Back navigation error:", error);
310
- }
311
- }, [navigation]);
312
- const forward = (0, import_react.useCallback)(() => {
313
- try {
314
- if (navigation)
315
- navigation.forward();
316
- } catch (error) {
317
- getLogger().error("[useRoute] Forward navigation error:", error);
318
- }
319
- }, [navigation]);
320
- const canGoBack = (0, import_react.useCallback)((steps = 1) => {
321
- if (!Number.isFinite(steps) || steps < 0 || steps > Number.MAX_SAFE_INTEGER) {
322
- return false;
323
- }
324
- if (!navigation || routerState._entriesKeys.length === 0) {
325
- return false;
326
- }
327
- const idx = routerState.historyIndex;
328
- if (idx === -1)
329
- return false;
330
- return idx - steps >= 0;
331
- }, [navigation, routerState._entriesKeys.length, routerState.historyIndex]);
332
- const canGoForward = (0, import_react.useCallback)((steps = 1) => {
333
- if (!Number.isFinite(steps) || steps < 0 || steps > Number.MAX_SAFE_INTEGER) {
334
- return false;
335
- }
336
- if (!navigation || routerState._entriesKeys.length === 0) {
337
- return false;
338
- }
339
- const idx = routerState.historyIndex;
340
- if (idx === -1)
341
- return false;
342
- return idx + steps < routerState._entriesKeys.length;
343
- }, [navigation, routerState._entriesKeys.length, routerState.historyIndex]);
344
- const go = (0, import_react.useCallback)((delta) => {
345
- if (delta === Infinity || delta === -Infinity) {
346
- getLogger().warn("[useRoute] Delta value too large:", delta);
347
- return;
348
- }
349
- if (!Number.isFinite(delta) || delta === 0)
350
- return;
351
- if (delta > Number.MAX_SAFE_INTEGER || delta < -Number.MAX_SAFE_INTEGER) {
352
- getLogger().warn("[useRoute] Delta value too large:", delta);
353
- return;
354
- }
355
- try {
356
- if (navigation && routerState._entriesKeys.length > 0) {
357
- const idx = routerState.historyIndex;
358
- if (idx === -1)
359
- return;
360
- const targetIdx = idx + delta;
361
- if (targetIdx < 0 || targetIdx >= routerState._entriesKeys.length) {
362
- return;
363
- }
364
- const targetKey = routerState._entriesKeys[targetIdx];
365
- if (targetKey === void 0)
366
- return;
367
- navigation.traverseTo(targetKey);
368
- }
369
- } catch (error) {
370
- getLogger().error("[useRoute] Go navigation error:", error);
371
- }
372
- }, [navigation, routerState._entriesKeys, routerState.historyIndex]);
373
- const replace = (0, import_react.useCallback)((to, options2) => navigate(to, { ...options2, history: "replace" }), [navigate]);
374
- const updateState = (0, import_react.useCallback)((state) => {
375
- try {
376
- if (navigation) {
377
- navigation.updateCurrentEntry({ state });
378
- sharedSnapshot = computeNavigationSnapshot(navigation);
379
- storeCallbacks.forEach((cb) => cb());
380
- } else if (isBrowser) {
381
- window.history.replaceState(state, "", window.location.href);
382
- if (noNavSnapshot !== null) {
383
- noNavSnapshot = { ...noNavSnapshot, state };
384
- }
385
- storeCallbacks.forEach((cb) => cb());
386
- }
387
- } catch (error) {
388
- getLogger().error("[useRoute] updateState error:", error);
389
- }
390
- }, [navigation]);
391
- return (0, import_react.useMemo)(() => ({
417
+ const navigate = getNavigateForBase(effectiveBase);
418
+ const replace = getReplaceForBase(effectiveBase);
419
+ const back = globalBack;
420
+ const forward = globalForward;
421
+ const go = globalGo;
422
+ const updateState = globalUpdateState;
423
+ const canGoBack = globalCanGoBack;
424
+ const canGoForward = globalCanGoForward;
425
+ return {
392
426
  navigate,
393
427
  back,
394
428
  forward,
@@ -404,7 +438,7 @@ function useRoute(patternOrOptions, optionsParam) {
404
438
  historyIndex: routerState.historyIndex,
405
439
  state: routerState.state,
406
440
  matched: routerState.matched
407
- }), [navigate, back, forward, go, replace, updateState, canGoBack, canGoForward, routerState]);
441
+ };
408
442
  }
409
443
  export {
410
444
  clearRouterCaches,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../node_modules/.pnpm/@budarin+use-route@1.3.3/node_modules/@budarin/use-route/src/types.ts", "../../../../node_modules/.pnpm/@budarin+use-route@1.3.3/node_modules/@budarin/use-route/src/index.ts"],
3
+ "sources": ["../../../../node_modules/.pnpm/@budarin+use-route@1.3.4/node_modules/@budarin/use-route/src/types.ts", "../../../../node_modules/.pnpm/@budarin+use-route@1.3.4/node_modules/@budarin/use-route/src/index.ts"],
4
4
  "sourcesContent": [null, null],
5
- "mappings": "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",
6
- "names": ["options"]
5
+ "mappings": "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",
6
+ "names": ["urlStr", "parsed"]
7
7
  }