reactive-route 0.0.1-alpha.21 → 0.0.1-alpha.22

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.
Files changed (33) hide show
  1. package/dist/cjs/index.js +116 -93
  2. package/dist/cjs/preact/index.js +10 -10
  3. package/dist/cjs/react/index.js +10 -10
  4. package/dist/cjs/solid/index.js +14 -14
  5. package/dist/core/createRouter.d.ts +4 -0
  6. package/dist/core/createRouter.d.ts.map +1 -0
  7. package/dist/core/{createRouterConfig.d.ts → createRoutes.d.ts} +2 -2
  8. package/dist/core/createRoutes.d.ts.map +1 -0
  9. package/dist/core/index.d.ts +3 -2
  10. package/dist/core/index.d.ts.map +1 -1
  11. package/dist/core/types/TypeLifecycleConfig.d.ts +2 -0
  12. package/dist/core/types/TypeLifecycleConfig.d.ts.map +1 -1
  13. package/dist/core/types/TypePropsRouter.d.ts +1 -1
  14. package/dist/core/types/TypePropsRouter.d.ts.map +1 -1
  15. package/dist/core/utils/PreventError.d.ts +4 -0
  16. package/dist/core/utils/PreventError.d.ts.map +1 -0
  17. package/dist/core/utils/RedirectError.d.ts +4 -0
  18. package/dist/core/utils/RedirectError.d.ts.map +1 -0
  19. package/dist/core/utils/constants.d.ts +0 -2
  20. package/dist/core/utils/constants.d.ts.map +1 -1
  21. package/dist/core/utils/getQueryValues.d.ts.map +1 -1
  22. package/dist/core/utils/queryString.d.ts +8 -0
  23. package/dist/core/utils/queryString.d.ts.map +1 -0
  24. package/dist/esm/index.js +114 -81
  25. package/dist/esm/preact/index.js +10 -10
  26. package/dist/esm/react/index.js +10 -10
  27. package/dist/esm/solid/index.js +14 -14
  28. package/dist/preact/Router.d.ts.map +1 -1
  29. package/dist/tsconfig.types.react.tsbuildinfo +1 -1
  30. package/package.json +2 -3
  31. package/dist/core/createRouterConfig.d.ts.map +0 -1
  32. package/dist/core/createRouterStore.d.ts +0 -4
  33. package/dist/core/createRouterStore.d.ts.map +0 -1
@@ -0,0 +1,4 @@
1
+ export declare class PreventError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ //# sourceMappingURL=PreventError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PreventError.d.ts","sourceRoot":"","sources":["../../../packages/core/utils/PreventError.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI5B"}
@@ -0,0 +1,4 @@
1
+ export declare class RedirectError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ //# sourceMappingURL=RedirectError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RedirectError.d.ts","sourceRoot":"","sources":["../../../packages/core/utils/RedirectError.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B"}
@@ -2,7 +2,5 @@ export declare const constants: {
2
2
  dynamicSeparator: string;
3
3
  pathPartSeparator: string;
4
4
  isClient: boolean;
5
- errorRedirect: string;
6
- errorPrevent: string;
7
5
  };
8
6
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../packages/core/utils/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;;;;CAMrB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../packages/core/utils/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;;CAIrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getQueryValues.d.ts","sourceRoot":"","sources":["../../../packages/core/utils/getQueryValues.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,wBAAgB,cAAc,CAAC,MAAM,SAAS,SAAS,EAAE,MAAM,EAAE;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAkBjD"}
1
+ {"version":3,"file":"getQueryValues.d.ts","sourceRoot":"","sources":["../../../packages/core/utils/getQueryValues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/C,wBAAgB,cAAc,CAAC,MAAM,SAAS,SAAS,EAAE,MAAM,EAAE;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAkBjD"}
@@ -0,0 +1,8 @@
1
+ export declare const queryString: {
2
+ extract(input: string): string;
3
+ parse(input: string): {
4
+ [k: string]: string;
5
+ };
6
+ stringify(obj: Record<string, string>): string;
7
+ };
8
+ //# sourceMappingURL=queryString.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryString.d.ts","sourceRoot":"","sources":["../../../packages/core/utils/queryString.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW;mBACP,MAAM;iBAOR,MAAM;;;mBAGJ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAGtC,CAAC"}
package/dist/esm/index.js CHANGED
@@ -1,26 +1,8 @@
1
- // packages/core/utils/addNames.ts
2
- function addNames(obj) {
3
- Object.entries(obj).forEach(([key, value]) => {
4
- value.name = key;
5
- });
6
- return obj;
7
- }
8
-
9
- // packages/core/createRouterConfig.ts
10
- function createRouterConfig(config) {
11
- return addNames(config);
12
- }
13
-
14
- // packages/core/createRouterStore.ts
15
- import queryString2 from "query-string";
16
-
17
1
  // packages/core/utils/constants.ts
18
2
  var constants = {
19
3
  dynamicSeparator: ":",
20
4
  pathPartSeparator: "/",
21
- isClient: typeof window !== "undefined",
22
- errorRedirect: "REDIRECT",
23
- errorPrevent: "PREVENT_REDIRECT"
5
+ isClient: typeof window !== "undefined"
24
6
  };
25
7
 
26
8
  // packages/core/utils/dynamic.ts
@@ -78,12 +60,28 @@ function findRouteByPathname({
78
60
  return dynamicRouteMatch;
79
61
  }
80
62
 
81
- // packages/core/utils/getQueryValues.ts
82
- import queryString from "query-string";
83
-
84
63
  // packages/core/utils/getTypedEntries.ts
85
64
  var getTypedEntries = Object.entries;
86
65
 
66
+ // packages/core/utils/queryString.ts
67
+ function removeHash(input) {
68
+ const hashStart = input.indexOf("#");
69
+ return hashStart === -1 ? input : input.slice(0, hashStart);
70
+ }
71
+ var queryString = {
72
+ extract(input) {
73
+ const inputNoHash = removeHash(input);
74
+ const queryStart = inputNoHash.indexOf("?");
75
+ return queryStart === -1 ? "" : inputNoHash.slice(queryStart + 1);
76
+ },
77
+ parse(input) {
78
+ return Object.fromEntries(new URLSearchParams(input));
79
+ },
80
+ stringify(obj) {
81
+ return new URLSearchParams(obj).toString();
82
+ }
83
+ };
84
+
87
85
  // packages/core/utils/getQueryValues.ts
88
86
  function getQueryValues(params) {
89
87
  const { route, pathname } = params;
@@ -128,6 +126,22 @@ function loadComponentToConfig(params) {
128
126
  return Promise.resolve();
129
127
  }
130
128
 
129
+ // packages/core/utils/PreventError.ts
130
+ var PreventError = class extends Error {
131
+ constructor(message) {
132
+ super(message);
133
+ this.name = "PreventError";
134
+ }
135
+ };
136
+
137
+ // packages/core/utils/RedirectError.ts
138
+ var RedirectError = class extends Error {
139
+ constructor(message) {
140
+ super(message);
141
+ this.name = "RedirectError";
142
+ }
143
+ };
144
+
131
145
  // packages/core/utils/replaceDynamicValues.ts
132
146
  var re = new RegExp(`[^${constants.pathPartSeparator}]+`, "g");
133
147
  function replaceDynamicValues({
@@ -146,53 +160,52 @@ function replaceDynamicValues({
146
160
  });
147
161
  }
148
162
 
149
- // packages/core/createRouterStore.ts
150
- function createRouterStore({
163
+ // packages/core/createRouter.ts
164
+ function createRouter({
151
165
  adapters,
152
166
  routes,
153
167
  lifecycleParams
154
168
  }) {
155
- const routerStore = adapters.makeObservable({
169
+ const router = adapters.makeObservable({
156
170
  routesHistory: [],
157
171
  currentRoute: {},
158
172
  isRedirecting: false,
159
173
  redirectTo: void 0,
160
174
  restoreFromURL: void 0,
161
175
  restoreFromServer: void 0,
162
- adapters
176
+ get adapters() {
177
+ return adapters;
178
+ }
163
179
  });
164
- routerStore.restoreFromServer = function restoreFromServer(obj) {
180
+ router.restoreFromServer = function restoreFromServer(obj) {
165
181
  adapters.batch(() => {
166
- routerStore.routesHistory.push(...obj.routesHistory || []);
167
- Object.assign(routerStore.currentRoute, obj.currentRoute);
182
+ router.routesHistory.push(...obj.routesHistory || []);
183
+ Object.assign(router.currentRoute, obj.currentRoute);
168
184
  });
169
185
  const preloadedRouteName = Object.keys(routes).find(
170
- (routeName) => routerStore.currentRoute.name === routeName
186
+ (routeName) => router.currentRoute.name === routeName
171
187
  );
172
188
  return loadComponentToConfig({ route: routes[preloadedRouteName] });
173
189
  };
174
- routerStore.restoreFromURL = function restoreFromURL(params) {
175
- return routerStore.redirectTo(getInitialRoute({ routes, pathname: params.pathname }));
190
+ router.restoreFromURL = function restoreFromURL(params) {
191
+ return router.redirectTo(getInitialRoute({ routes, pathname: params.pathname }));
176
192
  };
177
- routerStore.redirectTo = async function redirectTo(config) {
193
+ router.redirectTo = async function redirectTo(config) {
178
194
  const { route: routeName, noHistoryPush } = config;
179
195
  let currentRoute;
180
196
  let currentPathname;
181
197
  let currentUrl;
182
198
  let currentSearch;
183
199
  let currentQuery;
184
- if (routerStore.currentRoute?.name) {
185
- currentRoute = routes[routerStore.currentRoute.name];
200
+ if (router.currentRoute?.name) {
201
+ currentRoute = routes[router.currentRoute.name];
186
202
  currentPathname = replaceDynamicValues({
187
203
  route: currentRoute,
188
- params: routerStore.currentRoute.params
189
- });
190
- currentUrl = queryString2.stringifyUrl({
191
- url: currentPathname,
192
- query: routerStore.currentRoute.query
204
+ params: router.currentRoute.params
193
205
  });
194
- currentQuery = routerStore.currentRoute.query;
195
- currentSearch = queryString2.stringify(routerStore.currentRoute.query);
206
+ currentQuery = router.currentRoute.query;
207
+ currentSearch = queryString.stringify(router.currentRoute.query);
208
+ currentUrl = `${currentPathname}${currentSearch ? `?${currentSearch}` : ""}`;
196
209
  }
197
210
  const nextRoute = routes[routeName];
198
211
  const nextPathname = replaceDynamicValues({
@@ -205,23 +218,23 @@ function createRouterStore({
205
218
  if ("query" in config && config.query) {
206
219
  const clearedQuery = getQueryValues({
207
220
  route: nextRoute,
208
- pathname: `${nextPathname}?${queryString2.stringify(config.query)}`
221
+ pathname: `${nextPathname}?${queryString.stringify(config.query)}`
209
222
  });
210
223
  if (Object.keys(clearedQuery).length > 0) {
211
224
  nextQuery = clearedQuery;
212
- nextSearch = queryString2.stringify(clearedQuery);
213
- nextUrl = queryString2.stringifyUrl({ url: nextPathname, query: clearedQuery });
225
+ nextSearch = queryString.stringify(clearedQuery);
226
+ nextUrl = `${nextPathname}?${nextSearch}`;
214
227
  }
215
228
  }
216
229
  if (currentUrl === nextUrl) return Promise.resolve();
217
230
  if (currentPathname === nextPathname) {
218
231
  if (currentSearch !== nextSearch) {
219
232
  adapters.batch(() => {
220
- adapters.replaceObject(routerStore.currentRoute, {
221
- ...routerStore.currentRoute,
233
+ adapters.replaceObject(router.currentRoute, {
234
+ ...router.currentRoute,
222
235
  query: nextQuery || {}
223
236
  });
224
- routerStore.routesHistory.push(nextUrl);
237
+ router.routesHistory.push(nextUrl);
225
238
  });
226
239
  if (history && !noHistoryPush) {
227
240
  history.push({
@@ -234,7 +247,7 @@ function createRouterStore({
234
247
  return Promise.resolve();
235
248
  }
236
249
  adapters.batch(() => {
237
- routerStore.isRedirecting = true;
250
+ router.isRedirecting = true;
238
251
  });
239
252
  try {
240
253
  const config2 = {
@@ -247,39 +260,45 @@ function createRouterStore({
247
260
  currentQuery,
248
261
  currentRoute,
249
262
  currentSearch,
250
- currentPathname
251
- };
252
- await currentRoute?.beforeLeave?.(config2, ...lifecycleParams || []);
253
- const redirectConfig = await nextRoute.beforeEnter?.(config2, ...lifecycleParams || []);
254
- if (typeof redirectConfig === "object") {
255
- if (constants.isClient) return redirectTo(redirectConfig);
256
- const redirectRoute = routes[redirectConfig.route];
257
- const redirectParams = "params" in redirectConfig && redirectConfig.params ? redirectConfig.params : void 0;
258
- let redirectUrl = replaceDynamicValues({
259
- params: redirectParams,
260
- route: redirectRoute
261
- });
262
- if ("query" in redirectConfig && redirectConfig.query) {
263
- const clearedQuery = getQueryValues({
264
- route: nextRoute,
265
- pathname: `${nextPathname}?${queryString2.stringify(redirectConfig.query)}`
263
+ currentPathname,
264
+ redirect: (redirectConfig2) => {
265
+ if (constants.isClient) return redirectConfig2;
266
+ const redirectRoute = routes[redirectConfig2.route];
267
+ const redirectParams = "params" in redirectConfig2 && redirectConfig2.params ? redirectConfig2.params : void 0;
268
+ let redirectUrl = replaceDynamicValues({
269
+ params: redirectParams,
270
+ route: redirectRoute
266
271
  });
267
- if (Object.keys(clearedQuery).length > 0) {
268
- redirectUrl = queryString2.stringifyUrl({ url: redirectUrl, query: clearedQuery });
272
+ if ("query" in redirectConfig2 && redirectConfig2.query) {
273
+ const clearedQuery = getQueryValues({
274
+ route: nextRoute,
275
+ pathname: `${nextPathname}?${queryString.stringify(redirectConfig2.query)}`
276
+ });
277
+ if (Object.keys(clearedQuery).length > 0) {
278
+ redirectUrl = `${redirectUrl}?${queryString.stringify(clearedQuery)}`;
279
+ }
269
280
  }
281
+ throw new RedirectError(redirectUrl);
282
+ },
283
+ preventRedirect: () => {
284
+ throw new PreventError(`Redirect to ${nextUrl} was prevented`);
270
285
  }
271
- throw Object.assign(new Error(redirectUrl), { name: constants.errorRedirect });
272
- }
286
+ };
287
+ await currentRoute?.beforeLeave?.(config2, ...lifecycleParams || []);
288
+ const redirectConfig = await nextRoute.beforeEnter?.(config2, ...lifecycleParams || []);
289
+ if (redirectConfig) return redirectTo(redirectConfig);
273
290
  await loadComponentToConfig({ route: routes[nextRoute.name] });
274
291
  } catch (error) {
275
- if (error?.name === constants.errorPrevent) return Promise.resolve();
276
- if (error?.name === constants.errorRedirect) {
292
+ if (error instanceof PreventError) {
293
+ return Promise.resolve();
294
+ }
295
+ if (error instanceof RedirectError) {
277
296
  throw error;
278
297
  }
279
298
  console.error(error);
280
299
  await loadComponentToConfig({ route: routes.internalError });
281
300
  adapters.batch(() => {
282
- adapters.replaceObject(routerStore.currentRoute, {
301
+ adapters.replaceObject(router.currentRoute, {
283
302
  name: routes.internalError.name,
284
303
  path: routes.internalError.path,
285
304
  props: routes[routes.internalError.name].props,
@@ -287,12 +306,12 @@ function createRouterStore({
287
306
  params: adapters.makeObservable({}),
288
307
  pageName: routes[routes.internalError.name].pageName
289
308
  });
290
- routerStore.isRedirecting = false;
309
+ router.isRedirecting = false;
291
310
  });
292
311
  return Promise.resolve();
293
312
  }
294
313
  adapters.batch(() => {
295
- adapters.replaceObject(routerStore.currentRoute, {
314
+ adapters.replaceObject(router.currentRoute, {
296
315
  name: nextRoute.name,
297
316
  path: nextRoute.path,
298
317
  props: routes[nextRoute.name].props,
@@ -300,26 +319,40 @@ function createRouterStore({
300
319
  params: getDynamicValues({ route: nextRoute, pathname: nextUrl }),
301
320
  pageName: routes[nextRoute.name].pageName
302
321
  });
303
- const lastUrl = routerStore.routesHistory[routerStore.routesHistory.length - 1];
322
+ const lastUrl = router.routesHistory[router.routesHistory.length - 1];
304
323
  if (lastUrl !== nextUrl) {
305
- routerStore.routesHistory.push(nextUrl);
324
+ router.routesHistory.push(nextUrl);
306
325
  }
307
326
  if (history && !noHistoryPush) {
308
327
  history.push({
309
328
  hash: history.location.hash,
310
- search: "query" in config ? `?${queryString2.stringify(config.query)}` : "",
329
+ search: "query" in config ? `?${queryString.stringify(config.query)}` : "",
311
330
  pathname: nextPathname
312
331
  });
313
332
  }
314
- routerStore.isRedirecting = false;
333
+ router.isRedirecting = false;
315
334
  });
316
335
  return Promise.resolve();
317
336
  };
318
- return routerStore;
337
+ return router;
338
+ }
339
+
340
+ // packages/core/utils/addNames.ts
341
+ function addNames(obj) {
342
+ Object.entries(obj).forEach(([key, value]) => {
343
+ value.name = key;
344
+ });
345
+ return obj;
346
+ }
347
+
348
+ // packages/core/createRoutes.ts
349
+ function createRoutes(config) {
350
+ return addNames(config);
319
351
  }
320
352
  export {
321
- createRouterConfig,
322
- createRouterStore,
353
+ RedirectError,
354
+ createRouter,
355
+ createRoutes,
323
356
  findRouteByPathname,
324
357
  getInitialRoute,
325
358
  history,
@@ -8,11 +8,11 @@ function RouterInner(props) {
8
8
  if (!history) return;
9
9
  history.listen((params) => {
10
10
  if (params.action !== "POP") return;
11
- const previousRoutePathname = props.routerStore.routesHistory[props.routerStore.routesHistory.length - 2];
11
+ const previousRoutePathname = props.router.routesHistory[props.router.routesHistory.length - 2];
12
12
  if (previousRoutePathname === params.location.pathname) {
13
- props.routerStore.adapters.batch(() => props.routerStore.routesHistory.pop());
13
+ props.router.adapters.batch(() => props.router.routesHistory.pop());
14
14
  }
15
- void props.routerStore.redirectTo({
15
+ void props.router.redirectTo({
16
16
  noHistoryPush: true,
17
17
  ...getInitialRoute({
18
18
  routes: props.routes,
@@ -22,7 +22,7 @@ function RouterInner(props) {
22
22
  });
23
23
  }, []);
24
24
  const [config] = useState(
25
- () => props.routerStore.adapters.makeObservable({
25
+ () => props.router.adapters.makeObservable({
26
26
  loadedComponentName: void 0,
27
27
  loadedComponentPage: void 0,
28
28
  currentProps: {}
@@ -30,21 +30,21 @@ function RouterInner(props) {
30
30
  );
31
31
  const setLoadedComponent = useCallback(() => {
32
32
  const { loadedComponentName, loadedComponentPage } = config;
33
- const { currentRoute, isRedirecting } = props.routerStore;
33
+ const { currentRoute, isRedirecting } = props.router;
34
34
  const componentConfig = props.routes[currentRoute.name];
35
35
  let preventRedirect = false;
36
36
  if (isRedirecting) preventRedirect = true;
37
37
  else if (loadedComponentName === currentRoute.name) preventRedirect = true;
38
38
  else if (loadedComponentPage != null && currentRoute.name != null) {
39
39
  if (loadedComponentPage === currentRoute.pageName) {
40
- props.routerStore.adapters.batch(() => {
40
+ props.router.adapters.batch(() => {
41
41
  config.currentProps = "props" in componentConfig ? componentConfig.props || {} : {};
42
42
  });
43
43
  preventRedirect = true;
44
44
  }
45
45
  }
46
46
  if (preventRedirect) return;
47
- props.routerStore.adapters.batch(() => {
47
+ props.router.adapters.batch(() => {
48
48
  if (loadedComponentName) props.beforeUpdatePageComponent?.();
49
49
  props.beforeSetPageComponent?.(componentConfig);
50
50
  config.currentProps = "props" in componentConfig ? componentConfig.props || {} : {};
@@ -53,11 +53,11 @@ function RouterInner(props) {
53
53
  });
54
54
  }, []);
55
55
  useState(() => {
56
- props.routerStore.adapters.batch(() => {
56
+ props.router.adapters.batch(() => {
57
57
  props.beforeMount?.();
58
58
  redirectOnHistoryPop();
59
59
  setLoadedComponent();
60
- disposerRef.current = props.routerStore.adapters.autorun(setLoadedComponent);
60
+ disposerRef.current = props.router.adapters.autorun(setLoadedComponent);
61
61
  });
62
62
  });
63
63
  useEffect(() => {
@@ -72,7 +72,7 @@ function RouterInner(props) {
72
72
  }
73
73
  function Router(props) {
74
74
  const [Component] = useState(
75
- () => props.routerStore.adapters.observer ? props.routerStore.adapters.observer(RouterInner) : RouterInner
75
+ () => props.router.adapters.observer ? props.router.adapters.observer(RouterInner) : RouterInner
76
76
  );
77
77
  return /* @__PURE__ */ jsx(Component, { ...props });
78
78
  }
@@ -8,11 +8,11 @@ function RouterInner(props) {
8
8
  if (!history) return;
9
9
  history.listen((params) => {
10
10
  if (params.action !== "POP") return;
11
- const previousRoutePathname = props.routerStore.routesHistory[props.routerStore.routesHistory.length - 2];
11
+ const previousRoutePathname = props.router.routesHistory[props.router.routesHistory.length - 2];
12
12
  if (previousRoutePathname === params.location.pathname) {
13
- props.routerStore.adapters.batch(() => props.routerStore.routesHistory.pop());
13
+ props.router.adapters.batch(() => props.router.routesHistory.pop());
14
14
  }
15
- void props.routerStore.redirectTo({
15
+ void props.router.redirectTo({
16
16
  noHistoryPush: true,
17
17
  ...getInitialRoute({
18
18
  routes: props.routes,
@@ -22,7 +22,7 @@ function RouterInner(props) {
22
22
  });
23
23
  }, []);
24
24
  const [config] = useState(
25
- () => props.routerStore.adapters.makeObservable({
25
+ () => props.router.adapters.makeObservable({
26
26
  loadedComponentName: void 0,
27
27
  loadedComponentPage: void 0,
28
28
  currentProps: {}
@@ -30,21 +30,21 @@ function RouterInner(props) {
30
30
  );
31
31
  const setLoadedComponent = useCallback(() => {
32
32
  const { loadedComponentName, loadedComponentPage } = config;
33
- const { currentRoute, isRedirecting } = props.routerStore;
33
+ const { currentRoute, isRedirecting } = props.router;
34
34
  const componentConfig = props.routes[currentRoute.name];
35
35
  let preventRedirect = false;
36
36
  if (isRedirecting) preventRedirect = true;
37
37
  else if (loadedComponentName === currentRoute.name) preventRedirect = true;
38
38
  else if (loadedComponentPage != null && currentRoute.name != null) {
39
39
  if (loadedComponentPage === currentRoute.pageName) {
40
- props.routerStore.adapters.batch(() => {
40
+ props.router.adapters.batch(() => {
41
41
  config.currentProps = "props" in componentConfig ? componentConfig.props || {} : {};
42
42
  });
43
43
  preventRedirect = true;
44
44
  }
45
45
  }
46
46
  if (preventRedirect) return;
47
- props.routerStore.adapters.batch(() => {
47
+ props.router.adapters.batch(() => {
48
48
  if (loadedComponentName) props.beforeUpdatePageComponent?.();
49
49
  props.beforeSetPageComponent?.(componentConfig);
50
50
  config.currentProps = "props" in componentConfig ? componentConfig.props || {} : {};
@@ -53,11 +53,11 @@ function RouterInner(props) {
53
53
  });
54
54
  }, []);
55
55
  useState(() => {
56
- props.routerStore.adapters.batch(() => {
56
+ props.router.adapters.batch(() => {
57
57
  props.beforeMount?.();
58
58
  redirectOnHistoryPop();
59
59
  setLoadedComponent();
60
- disposerRef.current = props.routerStore.adapters.autorun(setLoadedComponent);
60
+ disposerRef.current = props.router.adapters.autorun(setLoadedComponent);
61
61
  });
62
62
  });
63
63
  useEffect(() => {
@@ -71,7 +71,7 @@ function RouterInner(props) {
71
71
  return null;
72
72
  }
73
73
  function RouterWrapper(props) {
74
- const Component = props.routerStore.adapters.observer ? props.routerStore.adapters.observer(RouterInner) : RouterInner;
74
+ const Component = props.router.adapters.observer ? props.router.adapters.observer(RouterInner) : RouterInner;
75
75
  return /* @__PURE__ */ jsx(Component, { ...props });
76
76
  }
77
77
  var Router = memo(RouterWrapper);
@@ -5,7 +5,7 @@ import { getInitialRoute, history } from "reactive-route";
5
5
  import { Show } from "solid-js";
6
6
  import { Dynamic } from "solid-js/web";
7
7
  function Router(props) {
8
- const config = props.routerStore.adapters.makeObservable({
8
+ const config = props.router.adapters.makeObservable({
9
9
  loadedComponentName: void 0,
10
10
  loadedComponentPage: void 0,
11
11
  currentProps: {}
@@ -14,11 +14,11 @@ function Router(props) {
14
14
  if (!history) return;
15
15
  history.listen((params) => {
16
16
  if (params.action !== "POP") return;
17
- const previousRoutePathname = props.routerStore.routesHistory[props.routerStore.routesHistory.length - 2];
17
+ const previousRoutePathname = props.router.routesHistory[props.router.routesHistory.length - 2];
18
18
  if (previousRoutePathname === params.location.pathname) {
19
- props.routerStore.routesHistory.pop();
19
+ props.router.routesHistory.pop();
20
20
  }
21
- void props.routerStore.redirectTo({
21
+ void props.router.redirectTo({
22
22
  noHistoryPush: true,
23
23
  ...getInitialRoute({
24
24
  routes: props.routes,
@@ -28,27 +28,27 @@ function Router(props) {
28
28
  });
29
29
  }
30
30
  function setLoadedComponent() {
31
- const currentRouteName = props.routerStore.currentRoute.name;
32
- const currentRoutePage = props.routerStore.currentRoute.pageName;
31
+ const currentRouteName = props.router.currentRoute.name;
32
+ const currentRoutePage = props.router.currentRoute.pageName;
33
33
  const componentConfig = props.routes[currentRouteName];
34
34
  let preventRedirect = false;
35
- if (props.routerStore.isRedirecting) preventRedirect = true;
35
+ if (props.router.isRedirecting) preventRedirect = true;
36
36
  else if (config.loadedComponentName === currentRouteName) {
37
37
  preventRedirect = true;
38
38
  } else if (config.loadedComponentPage != null && currentRouteName != null) {
39
39
  if (config.loadedComponentPage === currentRoutePage) {
40
- props.routerStore.adapters.replaceObject(config.currentProps, "props" in componentConfig ? componentConfig.props : {});
40
+ props.router.adapters.replaceObject(config.currentProps, "props" in componentConfig ? componentConfig.props : {});
41
41
  preventRedirect = true;
42
42
  }
43
43
  }
44
44
  if (preventRedirect) return;
45
- props.routerStore.adapters.batch(() => {
45
+ props.router.adapters.batch(() => {
46
46
  if (config.loadedComponentName) {
47
47
  props.beforeUpdatePageComponent?.();
48
48
  }
49
49
  props.beforeSetPageComponent?.(componentConfig);
50
- props.routerStore.adapters.batch(() => {
51
- props.routerStore.adapters.replaceObject(config.currentProps, "props" in componentConfig ? componentConfig.props : {});
50
+ props.router.adapters.batch(() => {
51
+ props.router.adapters.replaceObject(config.currentProps, "props" in componentConfig ? componentConfig.props : {});
52
52
  config.loadedComponentName = currentRouteName;
53
53
  config.loadedComponentPage = componentConfig.pageName;
54
54
  });
@@ -56,12 +56,12 @@ function Router(props) {
56
56
  }
57
57
  props.beforeMount?.();
58
58
  redirectOnHistoryPop();
59
- if (props.routerStore.adapters.immediateSetComponent) {
60
- props.routerStore.adapters.batch(() => {
59
+ if (props.router.adapters.immediateSetComponent) {
60
+ props.router.adapters.batch(() => {
61
61
  setLoadedComponent();
62
62
  });
63
63
  }
64
- props.routerStore.adapters.autorun(() => setLoadedComponent());
64
+ props.router.adapters.autorun(() => setLoadedComponent());
65
65
  return (
66
66
  // @ts-ignore
67
67
  _$createComponent(Show, {
@@ -1 +1 @@
1
- {"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../packages/preact/Router.tsx"],"names":[],"mappings":"AACA,OAAO,EAA4B,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAkGtF,wBAAgB,MAAM,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,GAO1D,GAAG,CACzC"}
1
+ {"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../packages/preact/Router.tsx"],"names":[],"mappings":"AACA,OAAO,EAA4B,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAkGtF,wBAAgB,MAAM,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,GAK1D,GAAG,CACzC"}
@@ -1 +1 @@
1
- {"root":["../packages/adapters/kr-observable-preact.ts","../packages/adapters/kr-observable-react.ts","../packages/adapters/kr-observable-solid.ts","../packages/adapters/mobx-preact.ts","../packages/adapters/mobx-react.ts","../packages/adapters/mobx-solid.ts","../packages/adapters/solid.ts","../packages/core/createRouterConfig.ts","../packages/core/createRouterStore.ts","../packages/core/index.ts","../packages/core/types/InterfaceRouterStore.ts","../packages/core/types/TypeCurrentRoute.ts","../packages/core/types/TypeLifecycleConfig.ts","../packages/core/types/TypePropsRouter.ts","../packages/core/types/TypeRedirectToParams.ts","../packages/core/types/TypeRoute.ts","../packages/core/types/TypeRouteRaw.ts","../packages/core/types/TypeRouteWithParams.ts","../packages/core/types/TypeValidator.ts","../packages/core/utils/addNames.ts","../packages/core/utils/constants.ts","../packages/core/utils/dynamic.ts","../packages/core/utils/findRouteByPathname.ts","../packages/core/utils/getDynamicValues.ts","../packages/core/utils/getInitialRoute.ts","../packages/core/utils/getQueryValues.ts","../packages/core/utils/getTypedEntries.ts","../packages/core/utils/history.ts","../packages/core/utils/loadComponentToConfig.ts","../packages/core/utils/replaceDynamicValues.ts","../packages/preact/Router.tsx","../packages/preact/index.ts","../packages/react/Router.tsx","../packages/react/index.ts"],"version":"5.9.2"}
1
+ {"root":["../packages/adapters/kr-observable-preact.ts","../packages/adapters/kr-observable-react.ts","../packages/adapters/kr-observable-solid.ts","../packages/adapters/mobx-preact.ts","../packages/adapters/mobx-react.ts","../packages/adapters/mobx-solid.ts","../packages/adapters/solid.ts","../packages/core/createRouter.ts","../packages/core/createRoutes.ts","../packages/core/index.ts","../packages/core/types/InterfaceRouterStore.ts","../packages/core/types/TypeCurrentRoute.ts","../packages/core/types/TypeLifecycleConfig.ts","../packages/core/types/TypePropsRouter.ts","../packages/core/types/TypeRedirectToParams.ts","../packages/core/types/TypeRoute.ts","../packages/core/types/TypeRouteRaw.ts","../packages/core/types/TypeRouteWithParams.ts","../packages/core/types/TypeValidator.ts","../packages/core/utils/PreventError.ts","../packages/core/utils/RedirectError.ts","../packages/core/utils/addNames.ts","../packages/core/utils/constants.ts","../packages/core/utils/dynamic.ts","../packages/core/utils/findRouteByPathname.ts","../packages/core/utils/getDynamicValues.ts","../packages/core/utils/getInitialRoute.ts","../packages/core/utils/getQueryValues.ts","../packages/core/utils/getTypedEntries.ts","../packages/core/utils/history.ts","../packages/core/utils/loadComponentToConfig.ts","../packages/core/utils/queryString.ts","../packages/core/utils/replaceDynamicValues.ts","../packages/preact/Router.tsx","../packages/preact/index.ts","../packages/react/Router.tsx","../packages/react/index.ts"],"version":"5.9.2"}
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.21",
5
+ "version": "0.0.1-alpha.22",
6
6
  "description": "Reactive Router for different frameworks",
7
7
  "repository": {
8
8
  "type": "git",
@@ -29,8 +29,7 @@
29
29
  ]
30
30
  },
31
31
  "dependencies": {
32
- "history": "5.3.0",
33
- "query-string": "7.1.3"
32
+ "history": "5.3.0"
34
33
  },
35
34
  "devDependencies": {
36
35
  "@types/babel__core": "7.20.5",
@@ -1 +0,0 @@
1
- {"version":3,"file":"createRouterConfig.d.ts","sourceRoot":"","sources":["../../packages/core/createRouterConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,wBAAgB,kBAAkB,CAChC,OAAO,SAAS;KAAG,GAAG,IAAI,MAAM,OAAO,GAAG,UAAU,GAAG,eAAe,GAAG,YAAY;CAAE,EAEvF,MAAM,EAAE,OAAO,GACd;KACA,GAAG,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG;QACrC,IAAI,EAAE,GAAG,CAAC;QACV,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,GAAG,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACpC;CACF,CAEA"}
@@ -1,4 +0,0 @@
1
- import { InterfaceRouterStore, TypeCreateRouterStore } from './types/InterfaceRouterStore';
2
- import { TypeRoute } from './types/TypeRoute';
3
- export declare function createRouterStore<TRoutes extends Record<string | 'notFound' | 'internalError', TypeRoute>>({ adapters, routes, lifecycleParams, }: TypeCreateRouterStore<TRoutes>): InterfaceRouterStore<TRoutes>;
4
- //# sourceMappingURL=createRouterStore.d.ts.map
@@ -1 +0,0 @@
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;AAG3F,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAS9C,wBAAgB,iBAAiB,CAC/B,OAAO,SAAS,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,eAAe,EAAE,SAAS,CAAC,EACxE,EACA,QAAQ,EACR,MAAM,EACN,eAAe,GAChB,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG,oBAAoB,CAAC,OAAO,CAAC,CA4OhE"}