reactive-route 0.0.1-alpha.2 → 0.0.1-alpha.4
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/index.js
CHANGED
|
@@ -90,6 +90,37 @@ function getDynamicValues(params) {
|
|
|
90
90
|
return dynamicParams;
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
+
// packages/core/utils/findRouteByPathname.ts
|
|
94
|
+
function completeStaticMatch(pathname, path) {
|
|
95
|
+
return !path.includes(constants.dynamicSeparator) && (pathname === path || pathname === `${path}${constants.pathPartSeparator}`);
|
|
96
|
+
}
|
|
97
|
+
function findRouteByPathname({
|
|
98
|
+
pathname,
|
|
99
|
+
routes
|
|
100
|
+
}) {
|
|
101
|
+
let dynamicRouteMatch;
|
|
102
|
+
const pathnameArray = pathname.replace(/\?.+$/, "").split(constants.pathPartSeparator).filter(Boolean);
|
|
103
|
+
for (const routeName in routes) {
|
|
104
|
+
if (!Object.hasOwn(routes, routeName)) continue;
|
|
105
|
+
const route = routes[routeName];
|
|
106
|
+
if (completeStaticMatch(pathname, route.path)) return route;
|
|
107
|
+
if (dynamicRouteMatch) continue;
|
|
108
|
+
const routePathnameArray = route.path.split(constants.pathPartSeparator).filter(Boolean);
|
|
109
|
+
if (routePathnameArray.length !== pathnameArray.length) continue;
|
|
110
|
+
const someParamInvalid = routePathnameArray.some((paramName, i) => {
|
|
111
|
+
const paramFromUrl = pathnameArray[i];
|
|
112
|
+
if (!isDynamic(paramName)) return paramName !== paramFromUrl;
|
|
113
|
+
const validator = route.params?.[clearDynamic(paramName)];
|
|
114
|
+
if (typeof validator !== "function") {
|
|
115
|
+
throw new Error(`findRoute: missing validator for param "${paramName}"`);
|
|
116
|
+
}
|
|
117
|
+
return !validator(paramFromUrl);
|
|
118
|
+
});
|
|
119
|
+
if (!someParamInvalid) dynamicRouteMatch = route;
|
|
120
|
+
}
|
|
121
|
+
return dynamicRouteMatch;
|
|
122
|
+
}
|
|
123
|
+
|
|
93
124
|
// packages/core/utils/getQueryValues.ts
|
|
94
125
|
var import_query_string = __toESM(require("query-string"));
|
|
95
126
|
|
|
@@ -111,6 +142,16 @@ function getQueryValues(params) {
|
|
|
111
142
|
return query;
|
|
112
143
|
}
|
|
113
144
|
|
|
145
|
+
// packages/core/utils/getInitialRoute.ts
|
|
146
|
+
function getInitialRoute(params) {
|
|
147
|
+
const route = findRouteByPathname({ pathname: params.pathname, routes: params.routes }) || params.routes[params.fallback];
|
|
148
|
+
return {
|
|
149
|
+
route: route.name,
|
|
150
|
+
query: getQueryValues({ route, pathname: params.pathname }),
|
|
151
|
+
params: getDynamicValues({ route, pathname: params.pathname })
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
|
|
114
155
|
// packages/core/utils/history.ts
|
|
115
156
|
var import_history = require("history");
|
|
116
157
|
var history = constants.isClient ? (0, import_history.createBrowserHistory)() : null;
|
|
@@ -163,6 +204,8 @@ function createRouterStore({
|
|
|
163
204
|
currentRoute: {},
|
|
164
205
|
isRedirecting: false,
|
|
165
206
|
redirectTo: void 0,
|
|
207
|
+
restoreFromURL: void 0,
|
|
208
|
+
restoreFromServer: void 0,
|
|
166
209
|
utils: {
|
|
167
210
|
batch,
|
|
168
211
|
autorun,
|
|
@@ -170,6 +213,19 @@ function createRouterStore({
|
|
|
170
213
|
makeObservable
|
|
171
214
|
}
|
|
172
215
|
});
|
|
216
|
+
routerStore.restoreFromServer = function restoreFromServer(obj) {
|
|
217
|
+
batch(() => {
|
|
218
|
+
routerStore.routesHistory.push(...obj.routesHistory || []);
|
|
219
|
+
Object.assign(routerStore.currentRoute, obj.currentRoute);
|
|
220
|
+
});
|
|
221
|
+
const preloadedRouteName = Object.keys(routes).find(
|
|
222
|
+
(routeName) => routerStore.currentRoute.name === routeName
|
|
223
|
+
);
|
|
224
|
+
return loadComponentToConfig({ route: routes[preloadedRouteName] });
|
|
225
|
+
};
|
|
226
|
+
routerStore.restoreFromURL = function restoreFromURL(params) {
|
|
227
|
+
return routerStore.redirectTo(getInitialRoute({ routes, ...params }));
|
|
228
|
+
};
|
|
173
229
|
routerStore.redirectTo = async function redirectTo(config) {
|
|
174
230
|
const { route: routeName, noHistoryPush, asClient } = config;
|
|
175
231
|
const isClient = typeof asClient === "boolean" ? asClient : constants.isClient;
|
|
@@ -327,44 +383,3 @@ function createRouterStore({
|
|
|
327
383
|
};
|
|
328
384
|
return routerStore;
|
|
329
385
|
}
|
|
330
|
-
|
|
331
|
-
// packages/core/utils/findRouteByPathname.ts
|
|
332
|
-
function completeStaticMatch(pathname, path) {
|
|
333
|
-
return !path.includes(constants.dynamicSeparator) && (pathname === path || pathname === `${path}${constants.pathPartSeparator}`);
|
|
334
|
-
}
|
|
335
|
-
function findRouteByPathname({
|
|
336
|
-
pathname,
|
|
337
|
-
routes
|
|
338
|
-
}) {
|
|
339
|
-
let dynamicRouteMatch;
|
|
340
|
-
const pathnameArray = pathname.replace(/\?.+$/, "").split(constants.pathPartSeparator).filter(Boolean);
|
|
341
|
-
for (const routeName in routes) {
|
|
342
|
-
if (!Object.hasOwn(routes, routeName)) continue;
|
|
343
|
-
const route = routes[routeName];
|
|
344
|
-
if (completeStaticMatch(pathname, route.path)) return route;
|
|
345
|
-
if (dynamicRouteMatch) continue;
|
|
346
|
-
const routePathnameArray = route.path.split(constants.pathPartSeparator).filter(Boolean);
|
|
347
|
-
if (routePathnameArray.length !== pathnameArray.length) continue;
|
|
348
|
-
const someParamInvalid = routePathnameArray.some((paramName, i) => {
|
|
349
|
-
const paramFromUrl = pathnameArray[i];
|
|
350
|
-
if (!isDynamic(paramName)) return paramName !== paramFromUrl;
|
|
351
|
-
const validator = route.params?.[clearDynamic(paramName)];
|
|
352
|
-
if (typeof validator !== "function") {
|
|
353
|
-
throw new Error(`findRoute: missing validator for param "${paramName}"`);
|
|
354
|
-
}
|
|
355
|
-
return !validator(paramFromUrl);
|
|
356
|
-
});
|
|
357
|
-
if (!someParamInvalid) dynamicRouteMatch = route;
|
|
358
|
-
}
|
|
359
|
-
return dynamicRouteMatch;
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
// packages/core/utils/getInitialRoute.ts
|
|
363
|
-
function getInitialRoute(params) {
|
|
364
|
-
const route = findRouteByPathname({ pathname: params.pathname, routes: params.routes }) || params.routes[params.fallback];
|
|
365
|
-
return {
|
|
366
|
-
route: route.name,
|
|
367
|
-
query: getQueryValues({ route, pathname: params.pathname }),
|
|
368
|
-
params: getDynamicValues({ route, pathname: params.pathname })
|
|
369
|
-
};
|
|
370
|
-
}
|
package/dist/esm/index.js
CHANGED
|
@@ -47,6 +47,37 @@ function getDynamicValues(params) {
|
|
|
47
47
|
return dynamicParams;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
+
// packages/core/utils/findRouteByPathname.ts
|
|
51
|
+
function completeStaticMatch(pathname, path) {
|
|
52
|
+
return !path.includes(constants.dynamicSeparator) && (pathname === path || pathname === `${path}${constants.pathPartSeparator}`);
|
|
53
|
+
}
|
|
54
|
+
function findRouteByPathname({
|
|
55
|
+
pathname,
|
|
56
|
+
routes
|
|
57
|
+
}) {
|
|
58
|
+
let dynamicRouteMatch;
|
|
59
|
+
const pathnameArray = pathname.replace(/\?.+$/, "").split(constants.pathPartSeparator).filter(Boolean);
|
|
60
|
+
for (const routeName in routes) {
|
|
61
|
+
if (!Object.hasOwn(routes, routeName)) continue;
|
|
62
|
+
const route = routes[routeName];
|
|
63
|
+
if (completeStaticMatch(pathname, route.path)) return route;
|
|
64
|
+
if (dynamicRouteMatch) continue;
|
|
65
|
+
const routePathnameArray = route.path.split(constants.pathPartSeparator).filter(Boolean);
|
|
66
|
+
if (routePathnameArray.length !== pathnameArray.length) continue;
|
|
67
|
+
const someParamInvalid = routePathnameArray.some((paramName, i) => {
|
|
68
|
+
const paramFromUrl = pathnameArray[i];
|
|
69
|
+
if (!isDynamic(paramName)) return paramName !== paramFromUrl;
|
|
70
|
+
const validator = route.params?.[clearDynamic(paramName)];
|
|
71
|
+
if (typeof validator !== "function") {
|
|
72
|
+
throw new Error(`findRoute: missing validator for param "${paramName}"`);
|
|
73
|
+
}
|
|
74
|
+
return !validator(paramFromUrl);
|
|
75
|
+
});
|
|
76
|
+
if (!someParamInvalid) dynamicRouteMatch = route;
|
|
77
|
+
}
|
|
78
|
+
return dynamicRouteMatch;
|
|
79
|
+
}
|
|
80
|
+
|
|
50
81
|
// packages/core/utils/getQueryValues.ts
|
|
51
82
|
import queryString from "query-string";
|
|
52
83
|
|
|
@@ -68,6 +99,16 @@ function getQueryValues(params) {
|
|
|
68
99
|
return query;
|
|
69
100
|
}
|
|
70
101
|
|
|
102
|
+
// packages/core/utils/getInitialRoute.ts
|
|
103
|
+
function getInitialRoute(params) {
|
|
104
|
+
const route = findRouteByPathname({ pathname: params.pathname, routes: params.routes }) || params.routes[params.fallback];
|
|
105
|
+
return {
|
|
106
|
+
route: route.name,
|
|
107
|
+
query: getQueryValues({ route, pathname: params.pathname }),
|
|
108
|
+
params: getDynamicValues({ route, pathname: params.pathname })
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
|
|
71
112
|
// packages/core/utils/history.ts
|
|
72
113
|
import { createBrowserHistory } from "history";
|
|
73
114
|
var history = constants.isClient ? createBrowserHistory() : null;
|
|
@@ -120,6 +161,8 @@ function createRouterStore({
|
|
|
120
161
|
currentRoute: {},
|
|
121
162
|
isRedirecting: false,
|
|
122
163
|
redirectTo: void 0,
|
|
164
|
+
restoreFromURL: void 0,
|
|
165
|
+
restoreFromServer: void 0,
|
|
123
166
|
utils: {
|
|
124
167
|
batch,
|
|
125
168
|
autorun,
|
|
@@ -127,6 +170,19 @@ function createRouterStore({
|
|
|
127
170
|
makeObservable
|
|
128
171
|
}
|
|
129
172
|
});
|
|
173
|
+
routerStore.restoreFromServer = function restoreFromServer(obj) {
|
|
174
|
+
batch(() => {
|
|
175
|
+
routerStore.routesHistory.push(...obj.routesHistory || []);
|
|
176
|
+
Object.assign(routerStore.currentRoute, obj.currentRoute);
|
|
177
|
+
});
|
|
178
|
+
const preloadedRouteName = Object.keys(routes).find(
|
|
179
|
+
(routeName) => routerStore.currentRoute.name === routeName
|
|
180
|
+
);
|
|
181
|
+
return loadComponentToConfig({ route: routes[preloadedRouteName] });
|
|
182
|
+
};
|
|
183
|
+
routerStore.restoreFromURL = function restoreFromURL(params) {
|
|
184
|
+
return routerStore.redirectTo(getInitialRoute({ routes, ...params }));
|
|
185
|
+
};
|
|
130
186
|
routerStore.redirectTo = async function redirectTo(config) {
|
|
131
187
|
const { route: routeName, noHistoryPush, asClient } = config;
|
|
132
188
|
const isClient = typeof asClient === "boolean" ? asClient : constants.isClient;
|
|
@@ -284,47 +340,6 @@ function createRouterStore({
|
|
|
284
340
|
};
|
|
285
341
|
return routerStore;
|
|
286
342
|
}
|
|
287
|
-
|
|
288
|
-
// packages/core/utils/findRouteByPathname.ts
|
|
289
|
-
function completeStaticMatch(pathname, path) {
|
|
290
|
-
return !path.includes(constants.dynamicSeparator) && (pathname === path || pathname === `${path}${constants.pathPartSeparator}`);
|
|
291
|
-
}
|
|
292
|
-
function findRouteByPathname({
|
|
293
|
-
pathname,
|
|
294
|
-
routes
|
|
295
|
-
}) {
|
|
296
|
-
let dynamicRouteMatch;
|
|
297
|
-
const pathnameArray = pathname.replace(/\?.+$/, "").split(constants.pathPartSeparator).filter(Boolean);
|
|
298
|
-
for (const routeName in routes) {
|
|
299
|
-
if (!Object.hasOwn(routes, routeName)) continue;
|
|
300
|
-
const route = routes[routeName];
|
|
301
|
-
if (completeStaticMatch(pathname, route.path)) return route;
|
|
302
|
-
if (dynamicRouteMatch) continue;
|
|
303
|
-
const routePathnameArray = route.path.split(constants.pathPartSeparator).filter(Boolean);
|
|
304
|
-
if (routePathnameArray.length !== pathnameArray.length) continue;
|
|
305
|
-
const someParamInvalid = routePathnameArray.some((paramName, i) => {
|
|
306
|
-
const paramFromUrl = pathnameArray[i];
|
|
307
|
-
if (!isDynamic(paramName)) return paramName !== paramFromUrl;
|
|
308
|
-
const validator = route.params?.[clearDynamic(paramName)];
|
|
309
|
-
if (typeof validator !== "function") {
|
|
310
|
-
throw new Error(`findRoute: missing validator for param "${paramName}"`);
|
|
311
|
-
}
|
|
312
|
-
return !validator(paramFromUrl);
|
|
313
|
-
});
|
|
314
|
-
if (!someParamInvalid) dynamicRouteMatch = route;
|
|
315
|
-
}
|
|
316
|
-
return dynamicRouteMatch;
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
// packages/core/utils/getInitialRoute.ts
|
|
320
|
-
function getInitialRoute(params) {
|
|
321
|
-
const route = findRouteByPathname({ pathname: params.pathname, routes: params.routes }) || params.routes[params.fallback];
|
|
322
|
-
return {
|
|
323
|
-
route: route.name,
|
|
324
|
-
query: getQueryValues({ route, pathname: params.pathname }),
|
|
325
|
-
params: getDynamicValues({ route, pathname: params.pathname })
|
|
326
|
-
};
|
|
327
|
-
}
|
|
328
343
|
export {
|
|
329
344
|
createRouterConfig,
|
|
330
345
|
createRouterStore,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createRouterStore.d.ts","sourceRoot":"","sources":["../../../packages/core/createRouterStore.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE3F,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"createRouterStore.d.ts","sourceRoot":"","sources":["../../../packages/core/createRouterStore.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE3F,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAS9C,wBAAgB,iBAAiB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,EAC3E,KAAK,EACL,MAAM,EACN,OAAO,EACP,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,GAChB,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG,oBAAoB,CAAC,OAAO,CAAC,CA+PhE"}
|
|
@@ -13,11 +13,16 @@ export type TypeCreateRouterStore<TRoutes extends Record<string, TypeRoute>> = T
|
|
|
13
13
|
lifecycleParams?: Array<any>;
|
|
14
14
|
};
|
|
15
15
|
export type InterfaceRouterStore<TRoutes extends Record<string, TypeRoute>> = {
|
|
16
|
-
|
|
16
|
+
utils: TypeUtils;
|
|
17
17
|
currentRoute: TypeCurrentRoute<TRoutes[keyof TRoutes]>;
|
|
18
|
+
routesHistory: Array<string>;
|
|
18
19
|
isRedirecting: boolean;
|
|
19
20
|
redirectTo<TRouteName extends keyof TRoutes>(config: TypeRedirectToParams<TRoutes, TRouteName>): Promise<void>;
|
|
20
|
-
|
|
21
|
+
restoreFromURL(params: {
|
|
22
|
+
pathname: string;
|
|
23
|
+
fallback: TRoutes[keyof TRoutes]['name'];
|
|
24
|
+
}): Promise<void>;
|
|
25
|
+
restoreFromServer(obj: InterfaceRouterStore<TRoutes>): Promise<void>;
|
|
21
26
|
};
|
|
22
27
|
export {};
|
|
23
28
|
//# sourceMappingURL=InterfaceRouterStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InterfaceRouterStore.d.ts","sourceRoot":"","sources":["../../../../packages/core/types/InterfaceRouterStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,KAAK,SAAS,GAAG;IACf,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAChC,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,GAAG,CAAC;IACjC,aAAa,EAAE,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;IACnF,cAAc,EAAE,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC;CACvE,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,SAAS,GAAG;IACzF,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI;IAC5E,
|
|
1
|
+
{"version":3,"file":"InterfaceRouterStore.d.ts","sourceRoot":"","sources":["../../../../packages/core/types/InterfaceRouterStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,KAAK,SAAS,GAAG;IACf,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAChC,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,GAAG,CAAC;IACjC,aAAa,EAAE,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;IACnF,cAAc,EAAE,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC;CACvE,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,SAAS,GAAG;IACzF,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI;IAC5E,KAAK,EAAE,SAAS,CAAC;IACjB,YAAY,EAAE,gBAAgB,CAAC,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC;IACvD,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,UAAU,SAAS,MAAM,OAAO,EACzC,MAAM,EAAE,oBAAoB,CAAC,OAAO,EAAE,UAAU,CAAC,GAChD,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,cAAc,CAAC,MAAM,EAAE;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;KAC1C,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClB,iBAAiB,CAAC,GAAG,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtE,CAAC"}
|