@geometra/router 1.16.0 → 1.18.1

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/dist/history.d.ts CHANGED
@@ -40,12 +40,16 @@ type MemoryHistoryOptions = {
40
40
  * - Empty `initialEntries` becomes a single `"/"` entry.
41
41
  * - `initialIndex` is clamped to the stack; default is the last entry.
42
42
  * - `go(0)` does not notify listeners.
43
+ * - Non-finite `delta` (`NaN`, `±Infinity`) is a no-op (does not move the index or notify).
44
+ * - Values that are not primitive finite numbers (`bigint`, strings, objects, etc.) are also no-ops so
45
+ * `index + delta` never mixes types (BigInt + number throws).
43
46
  */
44
47
  export declare function createMemoryHistory(options?: MemoryHistoryOptions): HistoryAdapter;
45
48
  /**
46
49
  * Wraps the real (or injected) `window.history` and `popstate`.
47
50
  *
48
51
  * `push` / `replace` update `history` state and notify listeners; `go` delegates to `history.go` (async relative to `popstate`).
52
+ * Non-finite `delta` is ignored so corrupt host data never reaches the native history API.
49
53
  * Throws if no `window` is available unless {@link BrowserHistoryOptions.window} is provided.
50
54
  */
51
55
  export declare function createBrowserHistory(options?: BrowserHistoryOptions): HistoryAdapter;
@@ -1 +1 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,cAAc,CAAA;IACxB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,CAAA;CACnC,CAAA;AAED,mFAAmF;AACnF,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAA;AAEpC;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,GAAG,WAAW,CAAA;CAC/D;AAED,4EAA4E;AAC5E,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,kBAAkB,GAAG,qBAAqB,CAAC,CAAA;CAC3F,CAAA;AAmBD,KAAK,oBAAoB,GAAG;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,oBAAyB,GAAG,cAAc,CAgDtF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,qBAA0B,GAAG,cAAc,CAsDxF"}
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,cAAc,CAAA;IACxB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,CAAA;CACnC,CAAA;AAED,mFAAmF;AACnF,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAA;AAEpC;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,GAAG,WAAW,CAAA;CAC/D;AAED,4EAA4E;AAC5E,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,kBAAkB,GAAG,qBAAqB,CAAC,CAAA;CAC3F,CAAA;AAmBD,KAAK,oBAAoB,GAAG;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,oBAAyB,GAAG,cAAc,CAgDtF;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,qBAA0B,GAAG,cAAc,CAuDxF"}
package/dist/history.js CHANGED
@@ -19,6 +19,9 @@ function locationFromWindow(windowLike) {
19
19
  * - Empty `initialEntries` becomes a single `"/"` entry.
20
20
  * - `initialIndex` is clamped to the stack; default is the last entry.
21
21
  * - `go(0)` does not notify listeners.
22
+ * - Non-finite `delta` (`NaN`, `±Infinity`) is a no-op (does not move the index or notify).
23
+ * - Values that are not primitive finite numbers (`bigint`, strings, objects, etc.) are also no-ops so
24
+ * `index + delta` never mixes types (BigInt + number throws).
22
25
  */
23
26
  export function createMemoryHistory(options = {}) {
24
27
  const entries = (options.initialEntries ?? ['/']).map(parseToLocation);
@@ -52,10 +55,10 @@ export function createMemoryHistory(options = {}) {
52
55
  notify('replace');
53
56
  },
54
57
  go(delta) {
55
- if (Number.isNaN(delta))
58
+ if (!Number.isFinite(delta))
56
59
  return;
57
60
  const sum = index + delta;
58
- if (Number.isNaN(sum))
61
+ if (!Number.isFinite(sum))
59
62
  return;
60
63
  const nextIndex = Math.max(0, Math.min(sum, entries.length - 1));
61
64
  if (nextIndex === index)
@@ -73,6 +76,7 @@ export function createMemoryHistory(options = {}) {
73
76
  * Wraps the real (or injected) `window.history` and `popstate`.
74
77
  *
75
78
  * `push` / `replace` update `history` state and notify listeners; `go` delegates to `history.go` (async relative to `popstate`).
79
+ * Non-finite `delta` is ignored so corrupt host data never reaches the native history API.
76
80
  * Throws if no `window` is available unless {@link BrowserHistoryOptions.window} is provided.
77
81
  */
78
82
  export function createBrowserHistory(options = {}) {
@@ -110,6 +114,8 @@ export function createBrowserHistory(options = {}) {
110
114
  notify('replace');
111
115
  },
112
116
  go(delta) {
117
+ if (!Number.isFinite(delta))
118
+ return;
113
119
  windowLike.history.go(delta);
114
120
  },
115
121
  listen(listener) {
@@ -1 +1 @@
1
- {"version":3,"file":"history.js","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"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"}
package/dist/link.d.ts CHANGED
@@ -16,7 +16,7 @@ export type LinkProps = FlexProps & StyleProps & {
16
16
  *
17
17
  * - **Pointer**: `onClick` calls your handler first, then `router.navigate(to, { replace })`.
18
18
  * - **Keyboard**: `onKeyDown` runs first; **Enter**, **NumpadEnter**, **Space** (`' '`), and legacy **Spacebar**
19
- * then navigate the same way.
19
+ * then navigate when **Ctrl / Meta / Alt** are not held (modified chords skip in-app navigation so hosts can bind alternatives).
20
20
  *
21
21
  * Layout and style props are forwarded to {@link import('@geometra/core').box} like any other box element.
22
22
  */
@@ -1 +1 @@
1
- {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../src/link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAChJ,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,MAAM,SAAS,GAAG,SAAS,GAC/B,UAAU,GAAG;IACX,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAChC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,aAAa,CAAA;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;IACnC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAA;CAC9C,CAAA;AAMH;;;;;;;;;GASG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,GAAE,SAAS,EAAO,GAAG,UAAU,CAoC7E"}
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../src/link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAChJ,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,MAAM,SAAS,GAAG,SAAS,GAC/B,UAAU,GAAG;IACX,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAChC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,aAAa,CAAA;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;IACnC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAA;CAC9C,CAAA;AAeH;;;;;;;;;GASG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,GAAE,SAAS,EAAO,GAAG,UAAU,CAuC7E"}
package/dist/link.js CHANGED
@@ -2,20 +2,29 @@ import { box } from '@geometra/core';
2
2
  function isActivationKey(key) {
3
3
  return key === 'Enter' || key === 'NumpadEnter' || key === ' ' || key === 'Spacebar';
4
4
  }
5
+ /** True when Enter/Space should perform default link navigation (no ctrl/meta/alt chord). */
6
+ function isUnmodifiedActivation(event) {
7
+ return !event.ctrlKey && !event.metaKey && !event.altKey;
8
+ }
9
+ function isDirection(value) {
10
+ return value === 'ltr' || value === 'rtl' || value === 'auto';
11
+ }
5
12
  /**
6
13
  * Declarative navigation target: a focusable box with link semantics (`role: link`, `tag: a`) and
7
14
  * `cursor: pointer` unless overridden.
8
15
  *
9
16
  * - **Pointer**: `onClick` calls your handler first, then `router.navigate(to, { replace })`.
10
17
  * - **Keyboard**: `onKeyDown` runs first; **Enter**, **NumpadEnter**, **Space** (`' '`), and legacy **Spacebar**
11
- * then navigate the same way.
18
+ * then navigate when **Ctrl / Meta / Alt** are not held (modified chords skip in-app navigation so hosts can bind alternatives).
12
19
  *
13
20
  * Layout and style props are forwarded to {@link import('@geometra/core').box} like any other box element.
14
21
  */
15
22
  export function link(props, children = []) {
16
- const { to, router, replace, key, semantic, onClick, onKeyDown, cursor, ...styleAndLayout } = props;
23
+ const { to, router, replace, key, semantic, onClick, onKeyDown, cursor, dir, ...styleAndLayout } = props;
24
+ const normalizedDir = isDirection(dir) ? dir : undefined;
17
25
  return box({
18
26
  ...styleAndLayout,
27
+ ...(normalizedDir ? { dir: normalizedDir } : {}),
19
28
  cursor: cursor ?? 'pointer',
20
29
  key,
21
30
  semantic: {
@@ -29,7 +38,7 @@ export function link(props, children = []) {
29
38
  },
30
39
  onKeyDown: (event) => {
31
40
  onKeyDown?.(event);
32
- if (isActivationKey(event.key)) {
41
+ if (isActivationKey(event.key) && isUnmodifiedActivation(event)) {
33
42
  router.navigate(to, { replace });
34
43
  }
35
44
  },
package/dist/link.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"link.js","sourceRoot":"","sources":["../src/link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAA8G,MAAM,gBAAgB,CAAA;AAehJ,SAAS,eAAe,CAAC,GAAW;IAClC,OAAO,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,UAAU,CAAA;AACtF,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,IAAI,CAAC,KAAgB,EAAE,WAAwB,EAAE;IAC/D,MAAM,EACJ,EAAE,EACF,MAAM,EACN,OAAO,EACP,GAAG,EACH,QAAQ,EACR,OAAO,EACP,SAAS,EACT,MAAM,EACN,GAAG,cAAc,EAClB,GAAG,KAAK,CAAA;IAET,OAAO,GAAG,CACR;QACE,GAAG,cAAc;QACjB,MAAM,EAAE,MAAM,IAAI,SAAS;QAC3B,GAAG;QACH,QAAQ,EAAE;YACR,GAAG,QAAQ;YACX,GAAG,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG;YACzB,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,MAAM;SAC/B;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;YAChB,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;QAClC,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACnB,SAAS,EAAE,CAAC,KAAK,CAAC,CAAA;YAClB,IAAI,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;YAClC,CAAC;QACH,CAAC;KACF,EACD,QAAQ,CACT,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../src/link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAA8G,MAAM,gBAAgB,CAAA;AAehJ,SAAS,eAAe,CAAC,GAAW;IAClC,OAAO,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,UAAU,CAAA;AACtF,CAAC;AAED,6FAA6F;AAC7F,SAAS,sBAAsB,CAAC,KAAuB;IACrD,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;AAC1D,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM,CAAA;AAC/D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,IAAI,CAAC,KAAgB,EAAE,WAAwB,EAAE;IAC/D,MAAM,EACJ,EAAE,EACF,MAAM,EACN,OAAO,EACP,GAAG,EACH,QAAQ,EACR,OAAO,EACP,SAAS,EACT,MAAM,EACN,GAAG,EACH,GAAG,cAAc,EAClB,GAAG,KAAK,CAAA;IACT,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;IAExD,OAAO,GAAG,CACR;QACE,GAAG,cAAc;QACjB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,MAAM,EAAE,MAAM,IAAI,SAAS;QAC3B,GAAG;QACH,QAAQ,EAAE;YACR,GAAG,QAAQ;YACX,GAAG,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG;YACzB,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,MAAM;SAC/B;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;YAChB,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;QAClC,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACnB,SAAS,EAAE,CAAC,KAAK,CAAC,CAAA;YAClB,IAAI,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChE,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;YAClC,CAAC;QACH,CAAC;KACF,EACD,QAAQ,CACT,CAAA;AACH,CAAC"}
package/dist/matcher.d.ts CHANGED
@@ -18,6 +18,8 @@ export type RouteMatch = {
18
18
  * - Each captured segment is passed through `decodeURIComponent`; invalid `%` sequences are left as-is.
19
19
  * - An empty `pattern` (`''`) parses to zero segments and matches only the root pathname (`/` or `''` after
20
20
  * normalization), with empty `params`. Any non-root path misses.
21
+ * - Non-string `pattern` or `pathname` (e.g. `null` from loose deserialization) returns `null` without throwing,
22
+ * matching the router package’s other string guards (see {@link import('./query.js').parseQuery}).
21
23
  *
22
24
  * @param pattern - Route pattern (`:id`, optional `?` segments, `*` splat); leading `/` optional.
23
25
  * @param pathname - Path to match; `?` and `#` are stripped before comparison. Trailing `/` is normalized
@@ -1 +1 @@
1
- {"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../src/matcher.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/B,CAAA;AA6GD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAS9E"}
1
+ {"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../src/matcher.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/B,CAAA;AA6GD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAU9E"}
package/dist/matcher.js CHANGED
@@ -99,6 +99,8 @@ function matchRecursive(segments, pathnameSegments, segmentIndex, pathIndex, par
99
99
  * - Each captured segment is passed through `decodeURIComponent`; invalid `%` sequences are left as-is.
100
100
  * - An empty `pattern` (`''`) parses to zero segments and matches only the root pathname (`/` or `''` after
101
101
  * normalization), with empty `params`. Any non-root path misses.
102
+ * - Non-string `pattern` or `pathname` (e.g. `null` from loose deserialization) returns `null` without throwing,
103
+ * matching the router package’s other string guards (see {@link import('./query.js').parseQuery}).
102
104
  *
103
105
  * @param pattern - Route pattern (`:id`, optional `?` segments, `*` splat); leading `/` optional.
104
106
  * @param pathname - Path to match; `?` and `#` are stripped before comparison. Trailing `/` is normalized
@@ -106,6 +108,8 @@ function matchRecursive(segments, pathnameSegments, segmentIndex, pathIndex, par
106
108
  * @returns `{ params }` on success, or `null` when the pathname does not match.
107
109
  */
108
110
  export function matchPath(pattern, pathname) {
111
+ if (typeof pattern !== 'string' || typeof pathname !== 'string')
112
+ return null;
109
113
  const segments = parseSegments(pattern);
110
114
  const normalizedPath = normalizePath(pathname, true);
111
115
  const trimmedPath = trimSlashes(normalizedPath);
@@ -1 +1 @@
1
- {"version":3,"file":"matcher.js","sourceRoot":"","sources":["../src/matcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"matcher.js","sourceRoot":"","sources":["../src/matcher.ts"],"names":[],"mappings":"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"}
package/dist/ranking.d.ts CHANGED
@@ -1,14 +1,20 @@
1
1
  /**
2
2
  * Sum specificity scores for each path segment in `pattern` (after the same leading/trailing slash trim
3
3
  * as {@link matchPath} / {@link buildPath}). Static segments weigh highest, then params, optional
4
- * segments, then splats. Empty segments produced by doubled slashes (e.g. `/a//b`) count as extra
4
+ * segments, then splats (any segment whose first character is `*`, including named splats like `*rest`).
5
+ * Empty segments produced by doubled slashes (e.g. `/a//b`) count as extra
5
6
  * static segments so ranking depth stays aligned with {@link matchPath} segment lists.
7
+ *
8
+ * Non-string runtime values (bad casts, loose deserialization) score as **0**, same as an empty pattern,
9
+ * so dynamic route tables cannot throw while ranking.
6
10
  */
7
11
  export declare function scorePathPattern(pattern: string): number;
8
12
  /**
9
13
  * Comparator for sorting patterns from most specific to least: higher {@link scorePathPattern} wins;
10
14
  * on a tie, the deeper pattern (more segments) wins. Return value follows `Array.prototype.sort` —
11
15
  * negative when `a` should sort before `b` (i.e. `a` is more specific).
16
+ *
17
+ * Non-string arguments are treated like empty patterns via {@link scorePathPattern} / internal segment parsing.
12
18
  */
13
19
  export declare function comparePatternSpecificity(a: string, b: string): number;
14
20
  //# sourceMappingURL=ranking.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ranking.d.ts","sourceRoot":"","sources":["../src/ranking.ts"],"names":[],"mappings":"AAuCA;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAUtE"}
1
+ {"version":3,"file":"ranking.d.ts","sourceRoot":"","sources":["../src/ranking.ts"],"names":[],"mappings":"AAwCA;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAUtE"}
package/dist/ranking.js CHANGED
@@ -2,6 +2,8 @@ function trimSlashes(value) {
2
2
  return value.replace(/^\/+|\/+$/g, '');
3
3
  }
4
4
  function parseRankedSegments(pattern) {
5
+ if (typeof pattern !== 'string')
6
+ return [];
5
7
  const trimmed = trimSlashes(pattern);
6
8
  if (trimmed === '')
7
9
  return [];
@@ -36,8 +38,12 @@ function scoreSegment(segment) {
36
38
  /**
37
39
  * Sum specificity scores for each path segment in `pattern` (after the same leading/trailing slash trim
38
40
  * as {@link matchPath} / {@link buildPath}). Static segments weigh highest, then params, optional
39
- * segments, then splats. Empty segments produced by doubled slashes (e.g. `/a//b`) count as extra
41
+ * segments, then splats (any segment whose first character is `*`, including named splats like `*rest`).
42
+ * Empty segments produced by doubled slashes (e.g. `/a//b`) count as extra
40
43
  * static segments so ranking depth stays aligned with {@link matchPath} segment lists.
44
+ *
45
+ * Non-string runtime values (bad casts, loose deserialization) score as **0**, same as an empty pattern,
46
+ * so dynamic route tables cannot throw while ranking.
41
47
  */
42
48
  export function scorePathPattern(pattern) {
43
49
  const segments = parseRankedSegments(pattern);
@@ -47,6 +53,8 @@ export function scorePathPattern(pattern) {
47
53
  * Comparator for sorting patterns from most specific to least: higher {@link scorePathPattern} wins;
48
54
  * on a tie, the deeper pattern (more segments) wins. Return value follows `Array.prototype.sort` —
49
55
  * negative when `a` should sort before `b` (i.e. `a` is more specific).
56
+ *
57
+ * Non-string arguments are treated like empty patterns via {@link scorePathPattern} / internal segment parsing.
50
58
  */
51
59
  export function comparePatternSpecificity(a, b) {
52
60
  const scoreA = scorePathPattern(a);
@@ -1 +1 @@
1
- {"version":3,"file":"ranking.js","sourceRoot":"","sources":["../src/ranking.ts"],"names":[],"mappings":"AAIA,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;AACxC,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe;IAC1C,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;IACpC,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,EAAE,CAAA;IAE7B,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACrC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,OAAgB,EAAE,CAAA;QAC3D,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAC7B,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO,EAAE,IAAI,EAAE,gBAAyB,EAAE,CAAA;YACnE,OAAO,EAAE,IAAI,EAAE,iBAA0B,EAAE,CAAA;QAC7C,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,OAAgB,EAAE,CAAA;QAC3D,OAAO,EAAE,IAAI,EAAE,QAAiB,EAAE,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,OAAsB;IAC1C,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,GAAG,CAAA;QACZ,KAAK,OAAO;YACV,OAAO,GAAG,CAAA;QACZ,KAAK,iBAAiB;YACpB,OAAO,GAAG,CAAA;QACZ,KAAK,gBAAgB;YACnB,OAAO,GAAG,CAAA;QACZ,KAAK,OAAO;YACV,OAAO,CAAC,CAAA;IACZ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAC7C,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;AAC9E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,CAAS,EAAE,CAAS;IAC5D,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;IAClC,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;IAClC,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,GAAG,MAAM,CAAA;IAE7C,MAAM,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAC5C,MAAM,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAC5C,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,GAAG,MAAM,CAAA;IAE7C,OAAO,CAAC,CAAA;AACV,CAAC"}
1
+ {"version":3,"file":"ranking.js","sourceRoot":"","sources":["../src/ranking.ts"],"names":[],"mappings":"AAIA,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;AACxC,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe;IAC1C,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAA;IAC1C,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;IACpC,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,EAAE,CAAA;IAE7B,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACrC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,OAAgB,EAAE,CAAA;QAC3D,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAC7B,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO,EAAE,IAAI,EAAE,gBAAyB,EAAE,CAAA;YACnE,OAAO,EAAE,IAAI,EAAE,iBAA0B,EAAE,CAAA;QAC7C,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,OAAgB,EAAE,CAAA;QAC3D,OAAO,EAAE,IAAI,EAAE,QAAiB,EAAE,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,OAAsB;IAC1C,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,GAAG,CAAA;QACZ,KAAK,OAAO;YACV,OAAO,GAAG,CAAA;QACZ,KAAK,iBAAiB;YACpB,OAAO,GAAG,CAAA;QACZ,KAAK,gBAAgB;YACnB,OAAO,GAAG,CAAA;QACZ,KAAK,OAAO;YACV,OAAO,CAAC,CAAA;IACZ,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAC7C,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;AAC9E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CAAC,CAAS,EAAE,CAAS;IAC5D,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;IAClC,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;IAClC,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,GAAG,MAAM,CAAA;IAE7C,MAAM,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAC5C,MAAM,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAC5C,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,GAAG,MAAM,CAAA;IAE7C,OAAO,CAAC,CAAA;AACV,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geometra/router",
3
- "version": "1.16.0",
3
+ "version": "1.18.1",
4
4
  "description": "Routing primitives for Geometra",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -34,6 +34,6 @@
34
34
  "check": "tsc --noEmit"
35
35
  },
36
36
  "dependencies": {
37
- "@geometra/core": "^1.16.0"
37
+ "@geometra/core": "^1.18.1"
38
38
  }
39
39
  }