reactive-route 0.0.1-alpha.3 → 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,7 @@ function createRouterStore({
|
|
|
163
204
|
currentRoute: {},
|
|
164
205
|
isRedirecting: false,
|
|
165
206
|
redirectTo: void 0,
|
|
207
|
+
restoreFromURL: void 0,
|
|
166
208
|
restoreFromServer: void 0,
|
|
167
209
|
utils: {
|
|
168
210
|
batch,
|
|
@@ -181,6 +223,9 @@ function createRouterStore({
|
|
|
181
223
|
);
|
|
182
224
|
return loadComponentToConfig({ route: routes[preloadedRouteName] });
|
|
183
225
|
};
|
|
226
|
+
routerStore.restoreFromURL = function restoreFromURL(params) {
|
|
227
|
+
return routerStore.redirectTo(getInitialRoute({ routes, ...params }));
|
|
228
|
+
};
|
|
184
229
|
routerStore.redirectTo = async function redirectTo(config) {
|
|
185
230
|
const { route: routeName, noHistoryPush, asClient } = config;
|
|
186
231
|
const isClient = typeof asClient === "boolean" ? asClient : constants.isClient;
|
|
@@ -338,44 +383,3 @@ function createRouterStore({
|
|
|
338
383
|
};
|
|
339
384
|
return routerStore;
|
|
340
385
|
}
|
|
341
|
-
|
|
342
|
-
// packages/core/utils/findRouteByPathname.ts
|
|
343
|
-
function completeStaticMatch(pathname, path) {
|
|
344
|
-
return !path.includes(constants.dynamicSeparator) && (pathname === path || pathname === `${path}${constants.pathPartSeparator}`);
|
|
345
|
-
}
|
|
346
|
-
function findRouteByPathname({
|
|
347
|
-
pathname,
|
|
348
|
-
routes
|
|
349
|
-
}) {
|
|
350
|
-
let dynamicRouteMatch;
|
|
351
|
-
const pathnameArray = pathname.replace(/\?.+$/, "").split(constants.pathPartSeparator).filter(Boolean);
|
|
352
|
-
for (const routeName in routes) {
|
|
353
|
-
if (!Object.hasOwn(routes, routeName)) continue;
|
|
354
|
-
const route = routes[routeName];
|
|
355
|
-
if (completeStaticMatch(pathname, route.path)) return route;
|
|
356
|
-
if (dynamicRouteMatch) continue;
|
|
357
|
-
const routePathnameArray = route.path.split(constants.pathPartSeparator).filter(Boolean);
|
|
358
|
-
if (routePathnameArray.length !== pathnameArray.length) continue;
|
|
359
|
-
const someParamInvalid = routePathnameArray.some((paramName, i) => {
|
|
360
|
-
const paramFromUrl = pathnameArray[i];
|
|
361
|
-
if (!isDynamic(paramName)) return paramName !== paramFromUrl;
|
|
362
|
-
const validator = route.params?.[clearDynamic(paramName)];
|
|
363
|
-
if (typeof validator !== "function") {
|
|
364
|
-
throw new Error(`findRoute: missing validator for param "${paramName}"`);
|
|
365
|
-
}
|
|
366
|
-
return !validator(paramFromUrl);
|
|
367
|
-
});
|
|
368
|
-
if (!someParamInvalid) dynamicRouteMatch = route;
|
|
369
|
-
}
|
|
370
|
-
return dynamicRouteMatch;
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
// packages/core/utils/getInitialRoute.ts
|
|
374
|
-
function getInitialRoute(params) {
|
|
375
|
-
const route = findRouteByPathname({ pathname: params.pathname, routes: params.routes }) || params.routes[params.fallback];
|
|
376
|
-
return {
|
|
377
|
-
route: route.name,
|
|
378
|
-
query: getQueryValues({ route, pathname: params.pathname }),
|
|
379
|
-
params: getDynamicValues({ route, pathname: params.pathname })
|
|
380
|
-
};
|
|
381
|
-
}
|
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,7 @@ function createRouterStore({
|
|
|
120
161
|
currentRoute: {},
|
|
121
162
|
isRedirecting: false,
|
|
122
163
|
redirectTo: void 0,
|
|
164
|
+
restoreFromURL: void 0,
|
|
123
165
|
restoreFromServer: void 0,
|
|
124
166
|
utils: {
|
|
125
167
|
batch,
|
|
@@ -138,6 +180,9 @@ function createRouterStore({
|
|
|
138
180
|
);
|
|
139
181
|
return loadComponentToConfig({ route: routes[preloadedRouteName] });
|
|
140
182
|
};
|
|
183
|
+
routerStore.restoreFromURL = function restoreFromURL(params) {
|
|
184
|
+
return routerStore.redirectTo(getInitialRoute({ routes, ...params }));
|
|
185
|
+
};
|
|
141
186
|
routerStore.redirectTo = async function redirectTo(config) {
|
|
142
187
|
const { route: routeName, noHistoryPush, asClient } = config;
|
|
143
188
|
const isClient = typeof asClient === "boolean" ? asClient : constants.isClient;
|
|
@@ -295,47 +340,6 @@ function createRouterStore({
|
|
|
295
340
|
};
|
|
296
341
|
return routerStore;
|
|
297
342
|
}
|
|
298
|
-
|
|
299
|
-
// packages/core/utils/findRouteByPathname.ts
|
|
300
|
-
function completeStaticMatch(pathname, path) {
|
|
301
|
-
return !path.includes(constants.dynamicSeparator) && (pathname === path || pathname === `${path}${constants.pathPartSeparator}`);
|
|
302
|
-
}
|
|
303
|
-
function findRouteByPathname({
|
|
304
|
-
pathname,
|
|
305
|
-
routes
|
|
306
|
-
}) {
|
|
307
|
-
let dynamicRouteMatch;
|
|
308
|
-
const pathnameArray = pathname.replace(/\?.+$/, "").split(constants.pathPartSeparator).filter(Boolean);
|
|
309
|
-
for (const routeName in routes) {
|
|
310
|
-
if (!Object.hasOwn(routes, routeName)) continue;
|
|
311
|
-
const route = routes[routeName];
|
|
312
|
-
if (completeStaticMatch(pathname, route.path)) return route;
|
|
313
|
-
if (dynamicRouteMatch) continue;
|
|
314
|
-
const routePathnameArray = route.path.split(constants.pathPartSeparator).filter(Boolean);
|
|
315
|
-
if (routePathnameArray.length !== pathnameArray.length) continue;
|
|
316
|
-
const someParamInvalid = routePathnameArray.some((paramName, i) => {
|
|
317
|
-
const paramFromUrl = pathnameArray[i];
|
|
318
|
-
if (!isDynamic(paramName)) return paramName !== paramFromUrl;
|
|
319
|
-
const validator = route.params?.[clearDynamic(paramName)];
|
|
320
|
-
if (typeof validator !== "function") {
|
|
321
|
-
throw new Error(`findRoute: missing validator for param "${paramName}"`);
|
|
322
|
-
}
|
|
323
|
-
return !validator(paramFromUrl);
|
|
324
|
-
});
|
|
325
|
-
if (!someParamInvalid) dynamicRouteMatch = route;
|
|
326
|
-
}
|
|
327
|
-
return dynamicRouteMatch;
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
// packages/core/utils/getInitialRoute.ts
|
|
331
|
-
function getInitialRoute(params) {
|
|
332
|
-
const route = findRouteByPathname({ pathname: params.pathname, routes: params.routes }) || params.routes[params.fallback];
|
|
333
|
-
return {
|
|
334
|
-
route: route.name,
|
|
335
|
-
query: getQueryValues({ route, pathname: params.pathname }),
|
|
336
|
-
params: getDynamicValues({ route, pathname: params.pathname })
|
|
337
|
-
};
|
|
338
|
-
}
|
|
339
343
|
export {
|
|
340
344
|
createRouterConfig,
|
|
341
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,15 @@ 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>;
|
|
21
25
|
restoreFromServer(obj: InterfaceRouterStore<TRoutes>): Promise<void>;
|
|
22
26
|
};
|
|
23
27
|
export {};
|
|
@@ -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"}
|