@budarin/use-route 1.3.3 → 1.3.5

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.
@@ -1,9 +1,2 @@
1
- /**
2
- * Временные объявления нативного API до появления типов в lib.dom.
3
- * Когда URLPattern и Navigation API появятся в TypeScript lib.dom — удалить этот файл
4
- * и убрать реэкспорт из types.ts (или перейти на типы из lib).
5
- *
6
- * Источники: WHATWG URL Pattern Standard, MDN/WHATWG Navigation API.
7
- */
8
1
  export {};
9
2
  //# sourceMappingURL=native-api-types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"native-api-types.js","sourceRoot":"","sources":["../src/native-api-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAuEH,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"native-api-types.js","sourceRoot":"","sources":["../src/native-api-types.ts"],"names":[],"mappings":"AA6EA,OAAO,EAAE,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1,69 +1,46 @@
1
- /** Строка — полный URL. */
2
1
  export type UrlString = string;
3
- /** Строка — паттерн пути (например '/users/:id'). */
4
2
  export type PathPattern = string;
5
- /** Строка — pathname, часть пути URL (например '/users/123'). */
6
3
  export type Pathname = string;
7
- /** Ключ записи в Navigation API (history entry key). */
8
4
  export type NavigationEntryKey = string;
9
- /** Индекс в истории навигации. */
10
5
  export type HistoryIndex = number;
11
- /** Имя параметра маршрута (ключ в params). */
12
6
  export type RouteParamName = string;
13
- /** Значение параметра маршрута (сегмент pathname). */
14
7
  export type RouteParamValue = string;
15
- /** Параметры маршрута: имя параметра → значение (из pathname по паттерну). */
16
8
  export type RouteParams = Record<RouteParamName, RouteParamValue>;
17
- /** Функция-матчер пути: pathname → matched и params. Для иерархических/кастомных маршрутов. */
18
9
  export type PathMatcher = (pathname: Pathname) => {
19
10
  matched: boolean;
20
11
  params: RouteParams;
21
12
  };
22
- /** Извлекает тип params из строки паттерна: '/users/:id' → { id: string } */
23
13
  export type ExtractRouteParams<T extends string> = T extends `${string}:${infer Param}/${infer Rest}` ? {
24
14
  [K in Param]: string;
25
15
  } & ExtractRouteParams<`/${Rest}`> : T extends `${string}:${infer Param}` ? {
26
16
  [K in Param]: string;
27
17
  } : Record<string, never>;
28
- /** Тип params для useRoute(pattern): литерал пути → типизированные ключи; PathMatcher → RouteParams; иначе {} */
29
18
  export type ParamsForPath<P> = P extends PathMatcher ? RouteParams : [P] extends [string] ? string extends P ? RouteParams : ExtractRouteParams<P> : Record<string, never>;
30
19
  export interface RouterState {
31
20
  location: UrlString;
32
21
  pathname: Pathname;
33
- /** Только чтение. Мутировать не следует — не меняет реальный URL. */
34
22
  searchParams: URLSearchParams;
35
23
  params: RouteParams;
36
24
  historyIndex: HistoryIndex;
37
- /** State текущей записи истории (getState() / history.state). */
38
25
  state?: unknown;
39
- /** true, если передан pattern и он совпал с pathname; false при несовпадении; undefined, если pattern не передан */
40
26
  matched?: boolean;
41
27
  }
42
28
  export interface NavigateOptions {
43
- /** 'replace' — заменить текущую запись, 'push' — новая запись, 'auto' — по умолчанию (браузер решает). */
44
29
  history?: 'push' | 'replace' | 'auto';
45
- /** Состояние записи в истории (Navigation API): произвольные данные, связанные с этим переходом; можно прочитать из currentEntry.getState() после навигации. Передаётся в navigate и replace в одном поле options.state. */
46
30
  state?: unknown;
47
- /** Full path prefix for this call. Overrides everything. '' or '/' = no prefix (e.g. other app). Otherwise this path is the prefix. Use for leaving app or explicit full path. */
48
31
  base?: string;
49
- /** Section override for this call. '' = app root (global base only, no section). '/path' = that section under global base. Ignored if base is set. */
50
32
  section?: string;
51
33
  }
52
- /** useRoute options: section (subtree under global base). pathname without section prefix; navigate(to) adds global base + section. */
53
34
  export interface UseRouteOptions {
54
- /** Section path under global base (e.g. '/dashboard'). pathname returned without this prefix; navigate(to) adds globalBase + section. '' = app root. Combined with configureRouter.base, not replacing it. */
55
35
  section?: string;
56
36
  }
57
37
  export type UseRouteReturn<P extends string | PathMatcher | undefined = undefined> = Omit<RouterState, 'params'> & {
58
38
  params: ParamsForPath<P>;
59
- /** Резолвится при commit навигации (не обязательно при полном finish, см. Navigation API). */
60
39
  navigate: (to: string | URL, options?: NavigateOptions) => Promise<void>;
61
40
  back: () => void;
62
41
  forward: () => void;
63
42
  go: (delta: number) => void;
64
- /** Same as navigate(to, { ...options, history: 'replace' }). Options same as navigate (state, base, section); history ignored. */
65
43
  replace: (to: string | URL, options?: NavigateOptions) => Promise<void>;
66
- /** Обновляет state текущей записи истории без навигации (Navigation API updateCurrentEntry / history.replaceState). */
67
44
  updateState: (state: unknown) => void;
68
45
  canGoBack: (steps?: number) => boolean;
69
46
  canGoForward: (steps?: number) => boolean;
@@ -77,28 +54,13 @@ export interface Logger {
77
54
  error(...args: unknown[]): void;
78
55
  }
79
56
  export interface RouterConfig {
80
- /** Максимальное количество URL в кэше (по умолчанию: 50) */
81
57
  urlCacheLimit: number;
82
- /** Значение history по умолчанию для всех вызовов navigate() (по умолчанию: 'auto') */
83
58
  defaultHistory?: 'push' | 'replace' | 'auto';
84
- /** Логгер (по умолчанию: console) */
85
59
  logger?: Logger;
86
- /** Базовый путь приложения (например '/app'). pathname возвращается без base; navigate(to) добавляет base к относительным путям. */
87
60
  base?: string;
88
- /** Начальный URL для SSR: при рендере на сервере (нет window) используется этот URL для pathname/searchParams. Задаётся один раз перед рендером запроса (например request.url). */
89
61
  initialLocation?: string;
90
62
  }
91
- /**
92
- * Настройка глобальной конфигурации роутера
93
- * Вызывается один раз при инициализации приложения
94
- */
95
63
  export declare function configureRouter(config: Partial<RouterConfig>): void;
96
- /**
97
- * Получить текущую конфигурацию (для внутреннего использования)
98
- */
99
64
  export declare function getRouterConfig(): RouterConfig;
100
- /**
101
- * Получить логгер (config.logger ?? console)
102
- */
103
65
  export declare function getLogger(): Logger;
104
66
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -1,23 +1,12 @@
1
- // Внутренняя конфигурация (не экспортируется)
2
1
  let routerConfig = {
3
2
  urlCacheLimit: 50,
4
3
  };
5
- /**
6
- * Настройка глобальной конфигурации роутера
7
- * Вызывается один раз при инициализации приложения
8
- */
9
4
  export function configureRouter(config) {
10
5
  routerConfig = { ...routerConfig, ...config };
11
6
  }
12
- /**
13
- * Получить текущую конфигурацию (для внутреннего использования)
14
- */
15
7
  export function getRouterConfig() {
16
8
  return routerConfig;
17
9
  }
18
- /**
19
- * Получить логгер (config.logger ?? console)
20
- */
21
10
  export function getLogger() {
22
11
  return routerConfig.logger ?? console;
23
12
  }
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAuHA,8CAA8C;AAC9C,IAAI,YAAY,GAAiB;IAC7B,aAAa,EAAE,EAAE;CACpB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAA6B;IACzD,YAAY,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,MAAM,EAAE,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC3B,OAAO,YAAY,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACrB,OAAO,YAAY,CAAC,MAAM,IAAI,OAAO,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAwHA,IAAI,YAAY,GAAiB;IAC7B,aAAa,EAAE,EAAE;CACpB,CAAC;AAMF,MAAM,UAAU,eAAe,CAAC,MAA6B;IACzD,YAAY,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,MAAM,EAAE,CAAC;AAClD,CAAC;AAKD,MAAM,UAAU,eAAe;IAC3B,OAAO,YAAY,CAAC;AACxB,CAAC;AAKD,MAAM,UAAU,SAAS;IACrB,OAAO,YAAY,CAAC,MAAM,IAAI,OAAO,CAAC;AAC1C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@budarin/use-route",
3
- "version": "1.3.3",
3
+ "version": "1.3.5",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",