@real-router/core 0.41.0 → 0.42.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/dist/cjs/Router-B2tmtNiM.d.ts +353 -0
- package/dist/cjs/Router-CVNR-dug.js +6 -0
- package/dist/cjs/Router-CVNR-dug.js.map +1 -0
- package/dist/cjs/RouterError-BkgjTHQg.js +2 -0
- package/dist/cjs/RouterError-BkgjTHQg.js.map +1 -0
- package/dist/cjs/RouterValidator-TUi8eT8Q.d.ts +112 -0
- package/dist/cjs/api.d.ts +17 -12
- package/dist/cjs/api.js +2 -1
- package/dist/cjs/api.js.map +1 -1
- package/dist/cjs/getPluginApi-BXrM_Nwv.js +2 -0
- package/dist/cjs/getPluginApi-BXrM_Nwv.js.map +1 -0
- package/dist/cjs/index.d.ts +206 -196
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internals-na15rxo_.js +2 -0
- package/dist/cjs/internals-na15rxo_.js.map +1 -0
- package/dist/cjs/utils.d.ts +6 -3
- package/dist/cjs/utils.js +2 -1
- package/dist/cjs/utils.js.map +1 -1
- package/dist/cjs/validation.d.ts +153 -152
- package/dist/cjs/validation.js +1 -1
- package/dist/esm/Router-4JRfQLMM.d.mts +353 -0
- package/dist/esm/Router-C_k70gHi.mjs +6 -0
- package/dist/esm/Router-C_k70gHi.mjs.map +1 -0
- package/dist/esm/RouterError-D0RlQE_5.mjs +2 -0
- package/dist/esm/RouterError-D0RlQE_5.mjs.map +1 -0
- package/dist/esm/RouterValidator-DphcVMEp.d.mts +112 -0
- package/dist/esm/api.d.mts +17 -12
- package/dist/esm/api.mjs +2 -1
- package/dist/esm/api.mjs.map +1 -1
- package/dist/esm/getPluginApi-D0bBPuLp.mjs +2 -0
- package/dist/esm/getPluginApi-D0bBPuLp.mjs.map +1 -0
- package/dist/esm/index.d.mts +206 -196
- package/dist/esm/index.mjs +2 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/internals-CCymabFj.mjs +2 -0
- package/dist/esm/internals-CCymabFj.mjs.map +1 -0
- package/dist/esm/utils.d.mts +6 -3
- package/dist/esm/utils.mjs +2 -1
- package/dist/esm/utils.mjs.map +1 -1
- package/dist/esm/validation.d.mts +153 -152
- package/dist/esm/validation.mjs +1 -1
- package/package.json +5 -7
- package/src/helpers.ts +9 -6
- package/src/namespaces/OptionsNamespace/constants.ts +1 -0
- package/dist/cjs/Router-DoJ3NWsT.d.ts +0 -46
- package/dist/cjs/RouterValidator-CaIeCVeB.d.ts +0 -136
- package/dist/cjs/index.d-y2b-8_3Y.d.ts +0 -236
- package/dist/cjs/metafile-cjs.json +0 -1
- package/dist/cjs/validation.js.map +0 -1
- package/dist/esm/Router-DoJ3NWsT.d.mts +0 -46
- package/dist/esm/RouterValidator-CaIeCVeB.d.mts +0 -136
- package/dist/esm/chunk-EPF2YSMX.mjs +0 -1
- package/dist/esm/chunk-EPF2YSMX.mjs.map +0 -1
- package/dist/esm/chunk-UPJLWPEL.mjs +0 -1
- package/dist/esm/chunk-UPJLWPEL.mjs.map +0 -1
- package/dist/esm/chunk-UUG7DSTN.mjs +0 -1
- package/dist/esm/chunk-UUG7DSTN.mjs.map +0 -1
- package/dist/esm/chunk-XQJDGUQE.mjs +0 -1
- package/dist/esm/chunk-XQJDGUQE.mjs.map +0 -1
- package/dist/esm/index.d-y2b-8_3Y.d.mts +0 -236
- package/dist/esm/metafile-esm.json +0 -1
- package/dist/esm/validation.mjs.map +0 -1
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { a as Limits, d as RouteDefinition, f as RouteTree, i as GuardFnFactory, l as CreateMatcherOptions, o as PluginFactory, r as EventMethodMap, u as Matcher } from "./Router-4JRfQLMM.mjs";
|
|
2
|
+
import { t as RouterValidator } from "./RouterValidator-DphcVMEp.mjs";
|
|
3
|
+
import { DefaultDependencies, EventName, ForwardToCallback, GuardFn, Options, Params, Plugin, RouteTreeState, Router, SimpleState, State, Unsubscribe } from "@real-router/types";
|
|
4
4
|
|
|
5
|
+
//#region src/namespaces/DependenciesNamespace/dependenciesStore.d.ts
|
|
5
6
|
interface DependenciesStore<Dependencies extends DefaultDependencies = DefaultDependencies> {
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
dependencies: Partial<Dependencies>;
|
|
8
|
+
limits: Limits;
|
|
8
9
|
}
|
|
9
|
-
|
|
10
|
+
//#endregion
|
|
11
|
+
//#region src/namespaces/RoutesNamespace/types.d.ts
|
|
10
12
|
/**
|
|
11
13
|
* Dependencies injected into RoutesNamespace.
|
|
12
14
|
*
|
|
@@ -14,42 +16,44 @@ interface DependenciesStore<Dependencies extends DefaultDependencies = DefaultDe
|
|
|
14
16
|
* avoiding the need to pass the entire Router object.
|
|
15
17
|
*/
|
|
16
18
|
interface RoutesDependencies<Dependencies extends DefaultDependencies = DefaultDependencies> {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
19
|
+
/** Register canActivate handler for a route */
|
|
20
|
+
addActivateGuard: (name: string, handler: GuardFnFactory<Dependencies>) => void;
|
|
21
|
+
/** Register canDeactivate handler for a route */
|
|
22
|
+
addDeactivateGuard: (name: string, handler: GuardFnFactory<Dependencies>) => void;
|
|
23
|
+
/** Create state object */
|
|
24
|
+
makeState: <P extends Params = Params>(name: string, params?: P, path?: string, meta?: Record<string, Record<string, "url" | "query">>) => State<P>;
|
|
25
|
+
/** Get current router state */
|
|
26
|
+
getState: () => State | undefined;
|
|
27
|
+
/** Compare two states for equality */
|
|
28
|
+
areStatesEqual: (state1: State | undefined, state2: State | undefined, ignoreQueryParams?: boolean) => boolean;
|
|
29
|
+
/** Get a dependency by name */
|
|
30
|
+
getDependency: <K extends keyof Dependencies>(name: K) => Dependencies[K];
|
|
31
|
+
/** Forward state through facade (allows plugin interception) */
|
|
32
|
+
forwardState: <P extends Params = Params>(name: string, params: P) => SimpleState<P>;
|
|
31
33
|
}
|
|
32
34
|
/**
|
|
33
35
|
* Configuration storage for routes.
|
|
34
36
|
* Stores decoders, encoders, default params, and forward mappings.
|
|
35
37
|
*/
|
|
36
38
|
interface RouteConfig {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
39
|
+
/** Custom param decoders per route */
|
|
40
|
+
decoders: Record<string, (params: Params) => Params>;
|
|
41
|
+
/** Custom param encoders per route */
|
|
42
|
+
encoders: Record<string, (params: Params) => Params>;
|
|
43
|
+
/** Default params per route */
|
|
44
|
+
defaultParams: Record<string, Params>;
|
|
45
|
+
/** Forward mappings (source -> target) */
|
|
46
|
+
forwardMap: Record<string, string>;
|
|
47
|
+
/** Dynamic forward callbacks (source -> callback) */
|
|
48
|
+
forwardFnMap: Record<string, ForwardToCallback<any>>;
|
|
47
49
|
}
|
|
48
|
-
|
|
50
|
+
//#endregion
|
|
51
|
+
//#region src/namespaces/RouteLifecycleNamespace/types.d.ts
|
|
49
52
|
interface RouteLifecycleDependencies<Dependencies extends DefaultDependencies = DefaultDependencies> {
|
|
50
|
-
|
|
53
|
+
compileFactory: (factory: GuardFnFactory<Dependencies>) => GuardFn;
|
|
51
54
|
}
|
|
52
|
-
|
|
55
|
+
//#endregion
|
|
56
|
+
//#region src/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.d.ts
|
|
53
57
|
/**
|
|
54
58
|
* Independent namespace for managing route lifecycle handlers.
|
|
55
59
|
*
|
|
@@ -57,128 +61,125 @@ interface RouteLifecycleDependencies<Dependencies extends DefaultDependencies =
|
|
|
57
61
|
* Instance methods handle state-dependent validation, storage and business logic.
|
|
58
62
|
*/
|
|
59
63
|
declare class RouteLifecycleNamespace<Dependencies extends DefaultDependencies = DefaultDependencies> {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
*/
|
|
126
|
-
getFunctions(): [Map<string, GuardFn>, Map<string, GuardFn>];
|
|
127
|
-
canNavigateTo(toDeactivate: string[], toActivate: string[], toState: State, fromState: State | undefined): boolean;
|
|
64
|
+
#private;
|
|
65
|
+
setDependencies(deps: RouteLifecycleDependencies<Dependencies>): void;
|
|
66
|
+
/**
|
|
67
|
+
* Updates handler registration limits (max lifecycle handlers threshold).
|
|
68
|
+
*
|
|
69
|
+
* @param limits - Limits configuration with maxLifecycleHandlers
|
|
70
|
+
*/
|
|
71
|
+
setLimits(limits: Limits): void;
|
|
72
|
+
setValidatorGetter(getter: () => RouterValidator | null): void;
|
|
73
|
+
getHandlerCount(type: "activate" | "deactivate"): number;
|
|
74
|
+
/**
|
|
75
|
+
* Adds a canActivate guard for a route.
|
|
76
|
+
* Handles overwrite detection and registration.
|
|
77
|
+
*
|
|
78
|
+
* @param name - Route name (input-validated by facade)
|
|
79
|
+
* @param handler - Guard function or boolean (input-validated by facade)
|
|
80
|
+
* @param isFromDefinition - True when guard comes from route definition (tracked for HMR replace)
|
|
81
|
+
*/
|
|
82
|
+
addCanActivate(name: string, handler: GuardFnFactory<Dependencies> | boolean, isFromDefinition?: boolean): void;
|
|
83
|
+
/**
|
|
84
|
+
* Adds a canDeactivate guard for a route.
|
|
85
|
+
* Handles overwrite detection and registration.
|
|
86
|
+
*
|
|
87
|
+
* @param name - Route name (input-validated by facade)
|
|
88
|
+
* @param handler - Guard function or boolean (input-validated by facade)
|
|
89
|
+
* @param isFromDefinition - True when guard comes from route definition (tracked for HMR replace)
|
|
90
|
+
*/
|
|
91
|
+
addCanDeactivate(name: string, handler: GuardFnFactory<Dependencies> | boolean, isFromDefinition?: boolean): void;
|
|
92
|
+
/**
|
|
93
|
+
* Removes a canActivate guard for a route.
|
|
94
|
+
* Input already validated by facade (not registering).
|
|
95
|
+
*
|
|
96
|
+
* @param name - Route name (already validated by facade)
|
|
97
|
+
*/
|
|
98
|
+
clearCanActivate(name: string): void;
|
|
99
|
+
/**
|
|
100
|
+
* Removes a canDeactivate guard for a route.
|
|
101
|
+
* Input already validated by facade (not registering).
|
|
102
|
+
*
|
|
103
|
+
* @param name - Route name (already validated by facade)
|
|
104
|
+
*/
|
|
105
|
+
clearCanDeactivate(name: string): void;
|
|
106
|
+
/**
|
|
107
|
+
* Clears all lifecycle handlers (canActivate and canDeactivate).
|
|
108
|
+
* Used by clearRoutes to reset all lifecycle state.
|
|
109
|
+
*/
|
|
110
|
+
clearAll(): void;
|
|
111
|
+
/**
|
|
112
|
+
* Clears only lifecycle handlers that were registered from route definitions.
|
|
113
|
+
* Used by HMR to remove definition-sourced guards without touching externally-added guards.
|
|
114
|
+
*/
|
|
115
|
+
clearDefinitionGuards(): void;
|
|
116
|
+
/**
|
|
117
|
+
* Returns lifecycle factories as records for cloning.
|
|
118
|
+
*
|
|
119
|
+
* @returns Tuple of [canDeactivateFactories, canActivateFactories]
|
|
120
|
+
*/
|
|
121
|
+
getFactories(): [Record<string, GuardFnFactory<Dependencies>>, Record<string, GuardFnFactory<Dependencies>>];
|
|
122
|
+
/**
|
|
123
|
+
* Returns compiled lifecycle functions for transition execution.
|
|
124
|
+
*
|
|
125
|
+
* @returns Tuple of [canDeactivateFunctions, canActivateFunctions] as Maps
|
|
126
|
+
*/
|
|
127
|
+
getFunctions(): [Map<string, GuardFn>, Map<string, GuardFn>];
|
|
128
|
+
canNavigateTo(toDeactivate: string[], toActivate: string[], toState: State, fromState: State | undefined): boolean;
|
|
128
129
|
}
|
|
129
|
-
|
|
130
|
+
//#endregion
|
|
131
|
+
//#region src/namespaces/RoutesNamespace/routesStore.d.ts
|
|
130
132
|
interface RoutesStore<Dependencies extends DefaultDependencies = DefaultDependencies> {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
133
|
+
readonly definitions: RouteDefinition[];
|
|
134
|
+
readonly config: RouteConfig;
|
|
135
|
+
tree: RouteTree;
|
|
136
|
+
matcher: Matcher;
|
|
137
|
+
resolvedForwardMap: Record<string, string>;
|
|
138
|
+
routeCustomFields: Record<string, Record<string, unknown>>;
|
|
139
|
+
rootPath: string;
|
|
140
|
+
readonly matcherOptions: CreateMatcherOptions | undefined;
|
|
141
|
+
depsStore: RoutesDependencies<Dependencies> | undefined;
|
|
142
|
+
lifecycleNamespace: RouteLifecycleNamespace<Dependencies> | undefined;
|
|
143
|
+
readonly pendingCanActivate: Map<string, GuardFnFactory<Dependencies>>;
|
|
144
|
+
readonly pendingCanDeactivate: Map<string, GuardFnFactory<Dependencies>>;
|
|
145
|
+
readonly treeOperations: {
|
|
146
|
+
readonly commitTreeChanges: (store: RoutesStore<Dependencies>) => void;
|
|
147
|
+
readonly resetStore: (store: RoutesStore<Dependencies>) => void;
|
|
148
|
+
readonly nodeToDefinition: (node: RouteTree) => RouteDefinition;
|
|
149
|
+
};
|
|
148
150
|
}
|
|
149
|
-
|
|
151
|
+
//#endregion
|
|
152
|
+
//#region src/internals.d.ts
|
|
150
153
|
interface RouterInternals<D extends DefaultDependencies = DefaultDependencies> {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
readonly routerExtensions: {
|
|
179
|
-
keys: string[];
|
|
180
|
-
}[];
|
|
154
|
+
readonly makeState: <P extends Params = Params>(name: string, params?: P, path?: string, meta?: Record<string, Record<string, "url" | "query">>) => State<P>;
|
|
155
|
+
readonly forwardState: <P extends Params = Params>(routeName: string, routeParams: P) => SimpleState<P>;
|
|
156
|
+
readonly buildStateResolved: (resolvedName: string, resolvedParams: Params) => RouteTreeState | undefined;
|
|
157
|
+
readonly matchPath: <P extends Params = Params>(path: string, options?: Options) => State<P> | undefined;
|
|
158
|
+
readonly getOptions: () => Options;
|
|
159
|
+
readonly addEventListener: <E extends EventName>(eventName: E, cb: Plugin[EventMethodMap[E]]) => Unsubscribe;
|
|
160
|
+
readonly buildPath: (route: string, params?: Params) => string;
|
|
161
|
+
readonly start: (path: string) => Promise<State>;
|
|
162
|
+
readonly interceptors: Map<string, ((next: (...args: any[]) => any, ...args: any[]) => any)[]>;
|
|
163
|
+
readonly setRootPath: (rootPath: string) => void;
|
|
164
|
+
readonly getRootPath: () => string;
|
|
165
|
+
readonly getTree: () => RouteTree;
|
|
166
|
+
readonly isDisposed: () => boolean;
|
|
167
|
+
validator: RouterValidator | null;
|
|
168
|
+
readonly dependenciesGetStore: () => DependenciesStore<D>;
|
|
169
|
+
readonly cloneOptions: () => Options;
|
|
170
|
+
readonly cloneDependencies: () => Record<string, unknown>;
|
|
171
|
+
readonly getLifecycleFactories: () => [Record<string, GuardFnFactory<D>>, Record<string, GuardFnFactory<D>>];
|
|
172
|
+
readonly getPluginFactories: () => PluginFactory<D>[];
|
|
173
|
+
readonly routeGetStore: () => RoutesStore<D>;
|
|
174
|
+
readonly getStateName: () => string | undefined;
|
|
175
|
+
readonly isTransitioning: () => boolean;
|
|
176
|
+
readonly clearState: () => void;
|
|
177
|
+
readonly setState: (state: State) => void;
|
|
178
|
+
readonly routerExtensions: {
|
|
179
|
+
keys: string[];
|
|
180
|
+
}[];
|
|
181
181
|
}
|
|
182
182
|
declare function getInternals<D extends DefaultDependencies>(router: Router<D>): RouterInternals<D>;
|
|
183
|
-
|
|
184
|
-
export { type RouterInternals, RouterValidator, getInternals };
|
|
183
|
+
//#endregion
|
|
184
|
+
export { type RouterInternals, type RouterValidator, getInternals };
|
|
185
|
+
//# sourceMappingURL=validation.d.mts.map
|
package/dist/esm/validation.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{r as e}from"./internals-CCymabFj.mjs";export{e as getInternals};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@real-router/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.42.0",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"description": "A simple, powerful, view-agnostic, modular and extensible router",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|
|
@@ -85,20 +85,18 @@
|
|
|
85
85
|
"url": "https://github.com/greydragon888/real-router/issues"
|
|
86
86
|
},
|
|
87
87
|
"homepage": "https://github.com/greydragon888/real-router",
|
|
88
|
-
"sideEffects":
|
|
89
|
-
"./dist/esm/chunk-*.mjs"
|
|
90
|
-
],
|
|
88
|
+
"sideEffects": false,
|
|
91
89
|
"dependencies": {
|
|
92
90
|
"@real-router/fsm": "^0.2.2",
|
|
93
91
|
"@real-router/logger": "^0.2.1",
|
|
94
|
-
"@real-router/types": "^0.
|
|
92
|
+
"@real-router/types": "^0.28.0"
|
|
95
93
|
},
|
|
96
94
|
"devDependencies": {
|
|
97
95
|
"event-emitter": "^0.1.2",
|
|
98
96
|
"route-tree": "^0.3.4"
|
|
99
97
|
},
|
|
100
98
|
"scripts": {
|
|
101
|
-
"build": "
|
|
99
|
+
"build": "tsdown --config-loader unrun",
|
|
102
100
|
"test": "vitest run functional/",
|
|
103
101
|
"test:properties": "vitest run --config vitest.config.properties.mts",
|
|
104
102
|
"test:coverage": "vitest run functional/ --coverage",
|
|
@@ -109,6 +107,6 @@
|
|
|
109
107
|
"lint": "eslint --cache --ext .ts src/ tests/ --fix --max-warnings 0",
|
|
110
108
|
"lint:package": "publint",
|
|
111
109
|
"lint:types": "attw --pack .",
|
|
112
|
-
"build:dist-only": "
|
|
110
|
+
"build:dist-only": "tsdown --config-loader unrun"
|
|
113
111
|
}
|
|
114
112
|
}
|
package/src/helpers.ts
CHANGED
|
@@ -91,12 +91,15 @@ export function deepFreezeState<T extends State>(state: T): T {
|
|
|
91
91
|
// Freeze the object/array itself
|
|
92
92
|
Object.freeze(obj);
|
|
93
93
|
|
|
94
|
-
//
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
94
|
+
// Iterate without Object.values() allocation
|
|
95
|
+
if (Array.isArray(obj)) {
|
|
96
|
+
for (const item of obj) {
|
|
97
|
+
freezeClonedRecursive(item);
|
|
98
|
+
}
|
|
99
|
+
} else {
|
|
100
|
+
for (const key in obj) {
|
|
101
|
+
freezeClonedRecursive((obj as Record<string, unknown>)[key]);
|
|
102
|
+
}
|
|
100
103
|
}
|
|
101
104
|
}
|
|
102
105
|
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { DefaultDependencies, Router as Router$1, Route, Options, Params, State, PluginFactory, Unsubscribe, SubscribeFn, NavigationOptions } from '@real-router/types';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Router class with integrated namespace architecture.
|
|
5
|
-
*
|
|
6
|
-
* All functionality is provided by namespace classes:
|
|
7
|
-
* - OptionsNamespace: getOptions (immutable)
|
|
8
|
-
* - DependenciesStore: get/set/remove dependencies
|
|
9
|
-
* - EventEmitter: subscribe
|
|
10
|
-
* - StateNamespace: state storage (getState, setState, getPreviousState)
|
|
11
|
-
* - RoutesNamespace: route tree operations
|
|
12
|
-
* - RouteLifecycleNamespace: canActivate/canDeactivate guards
|
|
13
|
-
* - PluginsNamespace: plugin lifecycle
|
|
14
|
-
* - NavigationNamespace: navigate
|
|
15
|
-
* - RouterLifecycleNamespace: start, stop, isStarted
|
|
16
|
-
*
|
|
17
|
-
* @internal This class implementation is internal. Use createRouter() instead.
|
|
18
|
-
*/
|
|
19
|
-
declare class Router<Dependencies extends DefaultDependencies = DefaultDependencies> implements Router$1<Dependencies> {
|
|
20
|
-
#private;
|
|
21
|
-
[key: string]: unknown;
|
|
22
|
-
/**
|
|
23
|
-
* @param routes - Route definitions
|
|
24
|
-
* @param options - Router options
|
|
25
|
-
* @param dependencies - DI dependencies
|
|
26
|
-
*/
|
|
27
|
-
constructor(routes?: Route<Dependencies>[], options?: Partial<Options>, dependencies?: Dependencies);
|
|
28
|
-
isActiveRoute(name: string, params?: Params, strictEquality?: boolean, ignoreQueryParams?: boolean): boolean;
|
|
29
|
-
buildPath(route: string, params?: Params): string;
|
|
30
|
-
getState<P extends Params = Params>(): State<P> | undefined;
|
|
31
|
-
getPreviousState(): State | undefined;
|
|
32
|
-
areStatesEqual(state1: State | undefined, state2: State | undefined, ignoreQueryParams?: boolean): boolean;
|
|
33
|
-
shouldUpdateNode(nodeName: string): (toState: State, fromState?: State) => boolean;
|
|
34
|
-
isActive(): boolean;
|
|
35
|
-
start(startPath: string): Promise<State>;
|
|
36
|
-
stop(): this;
|
|
37
|
-
dispose(): void;
|
|
38
|
-
canNavigateTo(name: string, params?: Params): boolean;
|
|
39
|
-
usePlugin(...plugins: (PluginFactory<Dependencies> | false | null | undefined)[]): Unsubscribe;
|
|
40
|
-
subscribe(listener: SubscribeFn): Unsubscribe;
|
|
41
|
-
navigate(routeName: string, routeParams?: Params, options?: NavigationOptions): Promise<State>;
|
|
42
|
-
navigateToDefault(options?: NavigationOptions): Promise<State>;
|
|
43
|
-
navigateToNotFound(path?: string): State;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export { Router as R };
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { Params, RouteTreeState, LimitsConfig } from '@real-router/types';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Core-internal types + re-exports from @real-router/types.
|
|
5
|
-
*
|
|
6
|
-
* Factory types (PluginFactory, GuardFnFactory) and
|
|
7
|
-
* route config types (Route, RouteConfigUpdate) are canonical in @real-router/types
|
|
8
|
-
* and re-exported here for backward compatibility.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Immutable limits configuration type.
|
|
13
|
-
*/
|
|
14
|
-
type Limits = Readonly<LimitsConfig>;
|
|
15
|
-
/**
|
|
16
|
-
* Extended build result that includes segments for path building.
|
|
17
|
-
* Used internally to avoid duplicate getSegmentsByName calls.
|
|
18
|
-
*
|
|
19
|
-
* @param segments - Route segments from getSegmentsByName (typed as unknown[] for cross-package compatibility)
|
|
20
|
-
* @internal
|
|
21
|
-
*/
|
|
22
|
-
interface BuildStateResultWithSegments<P extends Params = Params> {
|
|
23
|
-
readonly state: RouteTreeState<P>;
|
|
24
|
-
readonly segments: readonly unknown[];
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* RouterValidator interface - defines all validation methods used by the router.
|
|
29
|
-
*
|
|
30
|
-
* This interface is implemented by the validation plugin and injected into RouterInternals.
|
|
31
|
-
* When ctx.validator is null (default), validation is skipped.
|
|
32
|
-
* When ctx.validator is set (by validation plugin), all methods are called.
|
|
33
|
-
*
|
|
34
|
-
* All parameters use `unknown` type to avoid coupling to internal type names.
|
|
35
|
-
*/
|
|
36
|
-
interface RouterValidator {
|
|
37
|
-
/**
|
|
38
|
-
* Route validation methods
|
|
39
|
-
*/
|
|
40
|
-
routes: {
|
|
41
|
-
validateBuildPathArgs: (route: unknown) => void;
|
|
42
|
-
validateMatchPathArgs: (path: unknown) => void;
|
|
43
|
-
validateIsActiveRouteArgs: (name: unknown, params: unknown, strict: unknown, ignoreQP: unknown) => void;
|
|
44
|
-
validateShouldUpdateNodeArgs: (name: unknown) => void;
|
|
45
|
-
validateStateBuilderArgs: (name: unknown, params: unknown, caller: string) => void;
|
|
46
|
-
validateAddRouteArgs: (routes: unknown) => void;
|
|
47
|
-
validateRoutes: (routes: unknown[], tree: unknown) => void;
|
|
48
|
-
validateRemoveRouteArgs: (name: unknown) => void;
|
|
49
|
-
validateUpdateRouteBasicArgs: (name: unknown, updates: unknown) => void;
|
|
50
|
-
validateUpdateRoutePropertyTypes: (name: string, updates: unknown) => void;
|
|
51
|
-
validateUpdateRoute: (name: string, updates: unknown, tree: unknown) => void;
|
|
52
|
-
validateParentOption: (parent: unknown, tree: unknown) => void;
|
|
53
|
-
validateRouteName: (name: unknown, caller: string) => void;
|
|
54
|
-
throwIfInternalRoute: (name: unknown, caller: string) => void;
|
|
55
|
-
throwIfInternalRouteInArray: (routes: unknown[], caller: string) => void;
|
|
56
|
-
validateExistingRoutes: (store: unknown) => void;
|
|
57
|
-
validateForwardToConsistency: (store: unknown) => void;
|
|
58
|
-
validateSetRootPathArgs: (rootPath: unknown) => void;
|
|
59
|
-
guardRouteCallbacks: (route: unknown) => void;
|
|
60
|
-
guardNoAsyncCallbacks: (route: unknown) => void;
|
|
61
|
-
};
|
|
62
|
-
/**
|
|
63
|
-
* Options validation methods
|
|
64
|
-
*/
|
|
65
|
-
options: {
|
|
66
|
-
validateLimitValue: (name: string, value: unknown) => void;
|
|
67
|
-
validateLimits: (limits: unknown) => void;
|
|
68
|
-
validateOptions: (options: unknown, methodName: string) => void;
|
|
69
|
-
};
|
|
70
|
-
/**
|
|
71
|
-
* Dependencies validation methods
|
|
72
|
-
*/
|
|
73
|
-
dependencies: {
|
|
74
|
-
validateDependencyName: (name: unknown, caller: string) => void;
|
|
75
|
-
validateSetDependencyArgs: (name: unknown, value: unknown, caller: string) => void;
|
|
76
|
-
validateDependenciesObject: (deps: unknown, caller: string) => void;
|
|
77
|
-
validateDependencyExists: (name: string, store: unknown) => void;
|
|
78
|
-
validateDependencyLimit: (store: unknown, limits: unknown) => void;
|
|
79
|
-
validateDependenciesStructure: (store: unknown) => void;
|
|
80
|
-
validateDependencyCount: (store: unknown, methodName: string) => void;
|
|
81
|
-
validateCloneArgs: (dependencies: unknown) => void;
|
|
82
|
-
warnOverwrite: (name: string, methodName: string) => void;
|
|
83
|
-
warnBatchOverwrite: (keys: string[], methodName: string) => void;
|
|
84
|
-
warnRemoveNonExistent: (name: unknown) => void;
|
|
85
|
-
};
|
|
86
|
-
/**
|
|
87
|
-
* Plugin validation methods
|
|
88
|
-
*/
|
|
89
|
-
plugins: {
|
|
90
|
-
validatePluginLimit: (count: number, limits: unknown) => void;
|
|
91
|
-
validateNoDuplicatePlugins: (factory: unknown, factories: unknown[]) => void;
|
|
92
|
-
validatePluginKeys: (plugin: unknown) => void;
|
|
93
|
-
validateCountThresholds: (count: number) => void;
|
|
94
|
-
warnBatchDuplicates: (plugins: unknown[]) => void;
|
|
95
|
-
warnPluginMethodType: (methodName: string) => void;
|
|
96
|
-
warnPluginAfterStart: (methodName: string) => void;
|
|
97
|
-
validateAddInterceptorArgs: (method: unknown, fn: unknown) => void;
|
|
98
|
-
};
|
|
99
|
-
/**
|
|
100
|
-
* Lifecycle guard validation methods
|
|
101
|
-
*/
|
|
102
|
-
lifecycle: {
|
|
103
|
-
validateHandler: (handler: unknown, caller: string) => void;
|
|
104
|
-
validateNotRegistering: (name: string, guards: unknown, caller: string) => void;
|
|
105
|
-
validateHandlerLimit: (count: number, limits: unknown, caller: string) => void;
|
|
106
|
-
validateCountThresholds: (count: number, methodName: string) => void;
|
|
107
|
-
warnOverwrite: (name: string, type: string, methodName: string) => void;
|
|
108
|
-
warnAsyncGuardSync: (name: string, methodName: string) => void;
|
|
109
|
-
};
|
|
110
|
-
/**
|
|
111
|
-
* Navigation validation methods
|
|
112
|
-
*/
|
|
113
|
-
navigation: {
|
|
114
|
-
validateNavigateArgs: (name: unknown) => void;
|
|
115
|
-
validateNavigateToDefaultArgs: (options: unknown) => void;
|
|
116
|
-
validateNavigationOptions: (options: unknown, caller: string) => void;
|
|
117
|
-
validateParams: (params: unknown, methodName: string) => void;
|
|
118
|
-
validateStartArgs: (path: unknown) => void;
|
|
119
|
-
};
|
|
120
|
-
/**
|
|
121
|
-
* State validation methods
|
|
122
|
-
*/
|
|
123
|
-
state: {
|
|
124
|
-
validateMakeStateArgs: (name: unknown, params: unknown, path: unknown) => void;
|
|
125
|
-
validateAreStatesEqualArgs: (s1: unknown, s2: unknown, ignoreQP: unknown) => void;
|
|
126
|
-
};
|
|
127
|
-
/**
|
|
128
|
-
* Event bus validation methods
|
|
129
|
-
*/
|
|
130
|
-
eventBus: {
|
|
131
|
-
validateEventName: (name: unknown) => void;
|
|
132
|
-
validateListenerArgs: (name: unknown, cb: unknown) => void;
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
export type { BuildStateResultWithSegments as B, Limits as L, RouterValidator as R };
|