@owlmeans/router 0.1.18-rc.30 → 0.1.18-rc.32
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 +2 -2
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/router/SKILL.md +1 -1
- package/build/consts.local.d.ts +8 -0
- package/build/consts.local.d.ts.map +1 -0
- package/build/consts.local.js +8 -0
- package/build/consts.local.js.map +1 -0
- package/build/matcher.d.ts +11 -21
- package/build/matcher.d.ts.map +1 -1
- package/build/matcher.js +1 -7
- package/build/matcher.js.map +1 -1
- package/build/types.d.ts +19 -0
- package/build/types.d.ts.map +1 -1
- package/build/types.local.d.ts +2 -0
- package/build/types.local.d.ts.map +1 -0
- package/build/types.local.js +2 -0
- package/build/types.local.js.map +1 -0
- package/package.json +4 -4
- package/src/consts.local.ts +13 -0
- package/src/matcher.ts +2 -31
- package/src/types.local.ts +1 -0
- package/src/types.ts +22 -0
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@ Internal router service for the OwlMeans entrypoint system.
|
|
|
11
11
|
## Installation
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
bun add @owlmeans/router@^0.1.18-rc.
|
|
14
|
+
bun add @owlmeans/router@^0.1.18-rc.32
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
## Related Packages
|
|
@@ -28,7 +28,7 @@ This package ships embedded agent skills under `agent-meta/`. After installing y
|
|
|
28
28
|
your project's skill store (`.agents/skills/`):
|
|
29
29
|
|
|
30
30
|
```sh
|
|
31
|
-
npx @owlmeans/agent-skills@^0.1.18-rc.
|
|
31
|
+
npx @owlmeans/agent-skills@^0.1.18-rc.48
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
The embedded files are version-matched to this package release. Do not edit them
|
package/agent-meta/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"package": "@owlmeans/router",
|
|
4
|
-
"version": "0.1.18-rc.
|
|
5
|
-
"generatedAt": "2026-
|
|
4
|
+
"version": "0.1.18-rc.32",
|
|
5
|
+
"generatedAt": "2026-10-05T08:32:19.122Z",
|
|
6
6
|
"canonicalRepo": "https://github.com/owlmeans/common",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
@@ -8,7 +8,7 @@ user-invocable: false
|
|
|
8
8
|
# @owlmeans/router
|
|
9
9
|
|
|
10
10
|
**Layer:** Core (L1)
|
|
11
|
-
**Install:** `"@owlmeans/router": "^0.1.18-rc.
|
|
11
|
+
**Install:** `"@owlmeans/router": "^0.1.18-rc.32"` in `dependencies`
|
|
12
12
|
|
|
13
13
|
`@owlmeans/router` is the **plugin host** for OwlMeans UI routing. It does not talk to any
|
|
14
14
|
concrete router; it defines the contract, holds a registry of routing plugins, and selects the
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const SEP = "/";
|
|
2
|
+
export declare const PARAM = ":";
|
|
3
|
+
export declare const SPLAT = "*";
|
|
4
|
+
export declare const STATIC_WEIGHT = 10;
|
|
5
|
+
export declare const PARAM_WEIGHT = 4;
|
|
6
|
+
export declare const INDEX_WEIGHT = 2;
|
|
7
|
+
export declare const EMPTY_WEIGHT = 1;
|
|
8
|
+
//# sourceMappingURL=consts.local.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.local.d.ts","sourceRoot":"","sources":["../src/consts.local.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,GAAG,MAAM,CAAA;AAEtB,eAAO,MAAM,KAAK,MAAM,CAAA;AAExB,eAAO,MAAM,KAAK,MAAM,CAAA;AAExB,eAAO,MAAM,aAAa,KAAK,CAAA;AAE/B,eAAO,MAAM,YAAY,IAAI,CAAA;AAE7B,eAAO,MAAM,YAAY,IAAI,CAAA;AAE7B,eAAO,MAAM,YAAY,IAAI,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.local.js","sourceRoot":"","sources":["../src/consts.local.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,CAAA;AAEtB,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAA;AAExB,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAA;AAExB,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAA;AAE/B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAA;AAE7B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAA;AAE7B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAA"}
|
package/build/matcher.d.ts
CHANGED
|
@@ -1,23 +1,14 @@
|
|
|
1
|
-
import type { RouteObject,
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
/** true when the terminal node is an index route */
|
|
13
|
-
index: boolean;
|
|
14
|
-
score: number;
|
|
15
|
-
}
|
|
16
|
-
export interface RouteMatch {
|
|
17
|
-
route: RouteObject;
|
|
18
|
-
params: RouteParams;
|
|
19
|
-
pathname: string;
|
|
20
|
-
}
|
|
1
|
+
import type { RouteObject, PatternSegment, RouteBranch, RouteMatch } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Pure, DOM-free route matcher. Supports exactly the route-description subset used
|
|
4
|
+
* across the OwlMeans projects: static segments, `:param` dynamic segments, nested
|
|
5
|
+
* (parent/child) routes and index routes. Splat (`*`) and optional (`:x?`) segments
|
|
6
|
+
* are intentionally not implemented yet — a seam is reserved so they can be added
|
|
7
|
+
* without changing the public shape.
|
|
8
|
+
*
|
|
9
|
+
* Segment weights mirror react-router's ranking intuition (static beats dynamic,
|
|
10
|
+
* more specific / deeper beats shallower).
|
|
11
|
+
*/
|
|
21
12
|
export declare const splitPath: (path?: string) => string[];
|
|
22
13
|
export declare const segmentsOf: (path?: string) => PatternSegment[];
|
|
23
14
|
/**
|
|
@@ -33,5 +24,4 @@ export declare const rankRouteBranches: (branches: RouteBranch[]) => RouteBranch
|
|
|
33
24
|
* depth sees the full leaf param set, matching react-router's `useParams`).
|
|
34
25
|
*/
|
|
35
26
|
export declare const matchRoutes: (branches: RouteBranch[], pathname: string) => RouteMatch[] | null;
|
|
36
|
-
export {};
|
|
37
27
|
//# sourceMappingURL=matcher.d.ts.map
|
package/build/matcher.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../src/matcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../src/matcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAe,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAGnG;;;;;;;;;GASG;AAIH,eAAO,MAAM,SAAS,UAAW,MAAM,KAAG,MAAM,EACS,CAAA;AAEzD,eAAO,MAAM,UAAU,UAAW,MAAM,KAAG,cAAc,EAKrD,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,aAAa,WAChB,WAAW,EAAE,gBACR,WAAW,EAAE,mBACV,cAAc,EAAE,KAC/B,WAAW,EAuBb,CAAA;AAaD,0FAA0F;AAC1F,eAAO,MAAM,iBAAiB,aAAc,WAAW,EAAE,KAAG,WAAW,EAKvC,CAAA;AAsBhC;;;;GAIG;AACH,eAAO,MAAM,WAAW,aAAc,WAAW,EAAE,YAAY,MAAM,KAAG,UAAU,EAAE,GAAG,IAgBtF,CAAA"}
|
package/build/matcher.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { EMPTY_WEIGHT, INDEX_WEIGHT, PARAM, PARAM_WEIGHT, SEP, SPLAT, STATIC_WEIGHT } from './consts.local.js';
|
|
1
2
|
/**
|
|
2
3
|
* Pure, DOM-free route matcher. Supports exactly the route-description subset used
|
|
3
4
|
* across the OwlMeans projects: static segments, `:param` dynamic segments, nested
|
|
@@ -8,13 +9,6 @@
|
|
|
8
9
|
* Segment weights mirror react-router's ranking intuition (static beats dynamic,
|
|
9
10
|
* more specific / deeper beats shallower).
|
|
10
11
|
*/
|
|
11
|
-
const SEP = '/';
|
|
12
|
-
const PARAM = ':';
|
|
13
|
-
const SPLAT = '*';
|
|
14
|
-
const STATIC_WEIGHT = 10;
|
|
15
|
-
const PARAM_WEIGHT = 4;
|
|
16
|
-
const INDEX_WEIGHT = 2;
|
|
17
|
-
const EMPTY_WEIGHT = 1;
|
|
18
12
|
export const splitPath = (path) => (path ?? '').split(SEP).filter(part => part.length > 0);
|
|
19
13
|
export const segmentsOf = (path) => splitPath(path).map(part => {
|
|
20
14
|
if (part === SPLAT)
|
package/build/matcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matcher.js","sourceRoot":"","sources":["../src/matcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"matcher.js","sourceRoot":"","sources":["../src/matcher.ts"],"names":[],"mappings":"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"}
|
package/build/types.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { LazyService, BasicContext } from "@owlmeans/context";
|
|
2
2
|
import type { ComponentType } from 'react';
|
|
3
|
+
import type { SegmentKind } from './types.local.js';
|
|
3
4
|
export type { ComponentType };
|
|
4
5
|
export type LibraryRouter = unknown;
|
|
5
6
|
/**
|
|
@@ -97,4 +98,22 @@ export interface SetSearchParams {
|
|
|
97
98
|
export interface UseSearchParamsHook {
|
|
98
99
|
(init?: URLSearchParams | Record<string, string>): [URLSearchParams, SetSearchParams];
|
|
99
100
|
}
|
|
101
|
+
export interface PatternSegment {
|
|
102
|
+
kind: SegmentKind;
|
|
103
|
+
/** literal value for static, param name for param */
|
|
104
|
+
value: string;
|
|
105
|
+
}
|
|
106
|
+
export interface RouteBranch {
|
|
107
|
+
/** root → node chain; drives outlet depth in the renderer */
|
|
108
|
+
chain: RouteObject[];
|
|
109
|
+
segments: PatternSegment[];
|
|
110
|
+
/** true when the terminal node is an index route */
|
|
111
|
+
index: boolean;
|
|
112
|
+
score: number;
|
|
113
|
+
}
|
|
114
|
+
export interface RouteMatch {
|
|
115
|
+
route: RouteObject;
|
|
116
|
+
params: RouteParams;
|
|
117
|
+
pathname: string;
|
|
118
|
+
}
|
|
100
119
|
//# sourceMappingURL=types.d.ts.map
|
package/build/types.d.ts.map
CHANGED
|
@@ -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":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,YAAY,EAAE,aAAa,EAAE,CAAA;AAE7B,MAAM,MAAM,aAAa,GAAG,OAAO,CAAA;AAEnC;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAA;IACxB,SAAS,CAAC,EAAE,aAAa,CAAA;CAC1B;AAED,MAAM,MAAM,cAAc,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;AAE/C;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,OAAO,CAAA;IAClB,GAAG,EAAE,OAAO,CAAA;IACZ,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,uDAAuD;IACvD,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,KAAK,OAAO,CAAA;IAC5D,0EAA0E;IAC1E,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,KAAK,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IACnG,QAAQ,EAAE,MAAM,cAAc,CAAA;IAC9B,MAAM,EAAE,MAAM,aAAa,CAAA;IAC3B,SAAS,EAAE,aAAa,CAAA;IACxB,WAAW,EAAE,eAAe,CAAA;IAC5B,WAAW,EAAE,eAAe,CAAA;IAC5B,eAAe,EAAE,mBAAmB,CAAA;CACrC;AAED,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAA;IAC9C,uEAAuE;IACvE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,KAAK,YAAY,CAAA;IAIzC,MAAM,EAAE,MAAM,aAAa,CAAA;IAC3B,QAAQ,EAAE,MAAM,cAAc,CAAA;IAC9B,SAAS,EAAE,aAAa,CAAA;IACxB,WAAW,EAAE,eAAe,CAAA;IAC5B,WAAW,EAAE,eAAe,CAAA;IAC5B,eAAe,EAAE,mBAAmB,CAAA;IACpC,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;CAC3E;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;AAE5D,MAAM,WAAW,aAAa;IAC5B,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,KAAK,CAAC,CAAA;CAC3C;AAED,MAAM,WAAW,IAAI;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAE,SAAQ,IAAI;IACjD,KAAK,EAAE,KAAK,CAAA;IAEZ,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,QAAQ,CAAA;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,GAAG,CAAA;IACX,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7E,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,gBAAgB,CAAA;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,CACE,IAAI,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,eAAe,KAAK,eAAe,CAAC,EAC7F,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,GAAG,CAAA;KAAE,GAC3C,IAAI,CAAA;CACR;AAED,MAAM,WAAW,mBAAmB;IAClC,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,eAAe,CAAC,CAAA;CACtF;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,WAAW,CAAA;IACjB,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,oDAAoD;IACpD,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,WAAW,CAAA;IAClB,MAAM,EAAE,WAAW,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.local.d.ts","sourceRoot":"","sources":["../src/types.local.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.local.js","sourceRoot":"","sources":["../src/types.local.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owlmeans/router",
|
|
3
|
-
"version": "0.1.18-rc.
|
|
3
|
+
"version": "0.1.18-rc.32",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -21,15 +21,15 @@
|
|
|
21
21
|
}
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@owlmeans/context": "^0.1.18-rc.
|
|
24
|
+
"@owlmeans/context": "^0.1.18-rc.33"
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
27
27
|
"react": "*"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@owlmeans/dep-config": "workspace:*",
|
|
31
|
-
"@types/node": "^26.
|
|
32
|
-
"@types/react": "^19.
|
|
31
|
+
"@types/node": "^26.6.4",
|
|
32
|
+
"@types/react": "^19.3.0",
|
|
33
33
|
"nodemon": "^3.1.14",
|
|
34
34
|
"typescript": "^7.0.2"
|
|
35
35
|
},
|
package/src/matcher.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { RouteObject, RouteParams } from './types.js'
|
|
1
|
+
import type { RouteObject, RouteParams, PatternSegment, RouteBranch, RouteMatch } from './types.js'
|
|
2
|
+
import { EMPTY_WEIGHT, INDEX_WEIGHT, PARAM, PARAM_WEIGHT, SEP, SPLAT, STATIC_WEIGHT } from './consts.local.js'
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Pure, DOM-free route matcher. Supports exactly the route-description subset used
|
|
@@ -11,37 +12,7 @@ import type { RouteObject, RouteParams } from './types.js'
|
|
|
11
12
|
* more specific / deeper beats shallower).
|
|
12
13
|
*/
|
|
13
14
|
|
|
14
|
-
const SEP = '/'
|
|
15
|
-
const PARAM = ':'
|
|
16
|
-
const SPLAT = '*'
|
|
17
15
|
|
|
18
|
-
const STATIC_WEIGHT = 10
|
|
19
|
-
const PARAM_WEIGHT = 4
|
|
20
|
-
const INDEX_WEIGHT = 2
|
|
21
|
-
const EMPTY_WEIGHT = 1
|
|
22
|
-
|
|
23
|
-
type SegmentKind = 'static' | 'param' | 'splat'
|
|
24
|
-
|
|
25
|
-
export interface PatternSegment {
|
|
26
|
-
kind: SegmentKind
|
|
27
|
-
/** literal value for static, param name for param */
|
|
28
|
-
value: string
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export interface RouteBranch {
|
|
32
|
-
/** root → node chain; drives outlet depth in the renderer */
|
|
33
|
-
chain: RouteObject[]
|
|
34
|
-
segments: PatternSegment[]
|
|
35
|
-
/** true when the terminal node is an index route */
|
|
36
|
-
index: boolean
|
|
37
|
-
score: number
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export interface RouteMatch {
|
|
41
|
-
route: RouteObject
|
|
42
|
-
params: RouteParams
|
|
43
|
-
pathname: string
|
|
44
|
-
}
|
|
45
16
|
|
|
46
17
|
export const splitPath = (path?: string): string[] =>
|
|
47
18
|
(path ?? '').split(SEP).filter(part => part.length > 0)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type SegmentKind = 'static' | 'param' | 'splat'
|
package/src/types.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { LazyService, BasicContext } from "@owlmeans/context"
|
|
2
2
|
import type { ComponentType } from 'react'
|
|
3
|
+
import type { SegmentKind } from './types.local.js'
|
|
3
4
|
export type { ComponentType }
|
|
4
5
|
|
|
5
6
|
export type LibraryRouter = unknown
|
|
@@ -117,3 +118,24 @@ export interface SetSearchParams {
|
|
|
117
118
|
export interface UseSearchParamsHook {
|
|
118
119
|
(init?: URLSearchParams | Record<string, string>): [URLSearchParams, SetSearchParams]
|
|
119
120
|
}
|
|
121
|
+
|
|
122
|
+
export interface PatternSegment {
|
|
123
|
+
kind: SegmentKind
|
|
124
|
+
/** literal value for static, param name for param */
|
|
125
|
+
value: string
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export interface RouteBranch {
|
|
129
|
+
/** root → node chain; drives outlet depth in the renderer */
|
|
130
|
+
chain: RouteObject[]
|
|
131
|
+
segments: PatternSegment[]
|
|
132
|
+
/** true when the terminal node is an index route */
|
|
133
|
+
index: boolean
|
|
134
|
+
score: number
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export interface RouteMatch {
|
|
138
|
+
route: RouteObject
|
|
139
|
+
params: RouteParams
|
|
140
|
+
pathname: string
|
|
141
|
+
}
|