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;AAQ9C,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,CA0PhE"}
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
- routesHistory: Array<string>;
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
- utils: TypeUtils;
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,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,YAAY,EAAE,gBAAgB,CAAC,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC;IACvD,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,KAAK,EAAE,SAAS,CAAC;IACjB,iBAAiB,CAAC,GAAG,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtE,CAAC"}
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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "reactive-route",
3
3
  "author": "Dmitry Kazakov",
4
4
  "license": "MIT",
5
- "version": "0.0.1-alpha.3",
5
+ "version": "0.0.1-alpha.4",
6
6
  "description": "Reactive Router for different frameworks",
7
7
  "repository": {
8
8
  "type": "git",