reactive-route 0.0.1-alpha.5 → 0.0.1-alpha.7

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.
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // packages/adapters/kr-observable.ts
21
+ var kr_observable_exports = {};
22
+ __export(kr_observable_exports, {
23
+ adapters: () => adapters
24
+ });
25
+ module.exports = __toCommonJS(kr_observable_exports);
26
+ var import_kr_observable = require("kr-observable");
27
+ var import_react = require("kr-observable/react");
28
+ var adapters = {
29
+ batch: (cb) => cb(),
30
+ autorun: import_kr_observable.autorun,
31
+ replaceObject: (obj, newObj) => {
32
+ for (const variableKey in obj) {
33
+ if (obj.hasOwnProperty(variableKey)) {
34
+ delete obj[variableKey];
35
+ }
36
+ }
37
+ Object.assign(obj, newObj);
38
+ },
39
+ makeObservable: import_kr_observable.makeObservable,
40
+ makeAutoObservable: import_kr_observable.makeObservable,
41
+ observer: import_react.observer
42
+ };
@@ -0,0 +1 @@
1
+ {"type": "commonjs"}
@@ -24,9 +24,11 @@ __export(mobx_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(mobx_exports);
26
26
  var import_mobx = require("mobx");
27
+ var import_mobx_react_lite = require("mobx-react-lite");
27
28
  var adapters = {
28
29
  batch: import_mobx.runInAction,
29
30
  autorun: import_mobx.autorun,
31
+ observer: import_mobx_react_lite.observer,
30
32
  replaceObject: (obj, newObj) => {
31
33
  (0, import_mobx.runInAction)(() => {
32
34
  for (const variableKey in obj) {
@@ -36,7 +38,7 @@ var adapters = {
36
38
  }
37
39
  Object.assign(obj, newObj);
38
40
  });
39
- return obj;
40
41
  },
41
- makeObservable: import_mobx.observable
42
+ makeObservable: import_mobx.observable,
43
+ makeAutoObservable: import_mobx.makeAutoObservable
42
44
  };
@@ -43,5 +43,6 @@ var adapters = {
43
43
  })
44
44
  );
45
45
  },
46
- makeObservable: import_store.createMutable
46
+ makeObservable: import_store.createMutable,
47
+ makeAutoObservable: import_store.createMutable
47
48
  };
@@ -25,125 +25,83 @@ __export(react_exports, {
25
25
  module.exports = __toCommonJS(react_exports);
26
26
 
27
27
  // packages/react/Router.tsx
28
- var import_mobx2 = require("mobx");
29
- var import_mobx_react_lite = require("mobx-react-lite");
30
- var import_reactive_route = require("reactive-route");
31
-
32
- // packages/react/useStore.ts
33
- var import_mobx = require("mobx");
34
28
  var import_react = require("react");
35
- function useStore(ViewModel, props) {
36
- const isFirstRenderRef = (0, import_react.useRef)(true);
37
- const [vm] = (0, import_react.useState)(() => {
38
- const instance = new ViewModel(props || {});
39
- (0, import_mobx.runInAction)(() => {
40
- instance.beforeMount?.();
41
- });
42
- return instance;
43
- });
44
- (0, import_react.useEffect)(() => {
45
- if (isFirstRenderRef.current) {
46
- isFirstRenderRef.current = false;
47
- } else if (props) {
48
- (0, import_mobx.runInAction)(() => {
49
- vm.props = props || {};
50
- });
51
- }
52
- }, [props]);
53
- (0, import_react.useEffect)(() => {
54
- vm.afterMount?.();
55
- return () => {
56
- vm.autorunDisposers?.forEach((disposer) => disposer());
57
- };
58
- }, []);
59
- return vm;
60
- }
61
-
62
- // packages/react/Router.tsx
29
+ var import_reactive_route = require("reactive-route");
63
30
  var import_jsx_runtime = require("react/jsx-runtime");
64
- var VM = class {
65
- constructor(props) {
66
- this.props = props;
67
- (0, import_mobx2.makeAutoObservable)(
68
- this,
69
- { loadedComponent: false, setLoadedComponent: false, props: false },
70
- { autoBind: true }
71
- );
72
- }
73
- autorunDisposers = [];
74
- loadedComponentName = void 0;
75
- loadedComponentPage = void 0;
76
- loadedComponent;
77
- currentProps = {};
78
- get adapters() {
79
- return this.props.routerStore.adapters;
80
- }
81
- beforeMount() {
82
- this.props.beforeMount?.();
83
- this.redirectOnHistoryPop();
84
- this.setLoadedComponent();
85
- this.autorunDisposers.push(this.adapters.autorun(this.setLoadedComponent));
86
- }
87
- redirectOnHistoryPop() {
31
+ function RouterInner(props) {
32
+ const disposerRef = (0, import_react.useRef)(null);
33
+ const redirectOnHistoryPop = (0, import_react.useCallback)(() => {
88
34
  if (!import_reactive_route.history) return;
89
35
  import_reactive_route.history.listen((params) => {
90
36
  if (params.action !== "POP") return;
91
- const previousRoutePathname = this.props.routerStore.routesHistory[this.props.routerStore.routesHistory.length - 2];
37
+ const previousRoutePathname = props.routerStore.routesHistory[props.routerStore.routesHistory.length - 2];
92
38
  if (previousRoutePathname === params.location.pathname) {
93
- this.adapters.batch(() => this.props.routerStore.routesHistory.pop());
39
+ props.routerStore.adapters.batch(() => props.routerStore.routesHistory.pop());
94
40
  }
95
- void this.props.routerStore.redirectTo({
41
+ void props.routerStore.redirectTo({
96
42
  noHistoryPush: true,
97
43
  ...(0, import_reactive_route.getInitialRoute)({
98
- routes: this.props.routes,
44
+ routes: props.routes,
99
45
  pathname: import_reactive_route.history.location.pathname,
100
46
  fallback: "error404"
101
47
  })
102
48
  });
103
49
  });
104
- }
105
- setLoadedComponent = () => {
106
- const { loadedComponentName, loadedComponentPage } = this;
107
- const { currentRoute, isRedirecting } = this.props.routerStore;
108
- const currentRouteName = currentRoute.name;
109
- const currentRoutePage = currentRoute.pageName;
50
+ }, []);
51
+ const [config] = (0, import_react.useState)(
52
+ () => props.routerStore.adapters.makeObservable({
53
+ loadedComponentName: void 0,
54
+ loadedComponentPage: void 0,
55
+ currentProps: {}
56
+ })
57
+ );
58
+ const setLoadedComponent = (0, import_react.useCallback)(() => {
59
+ const { loadedComponentName, loadedComponentPage } = config;
60
+ const { currentRoute, isRedirecting } = props.routerStore;
61
+ const componentConfig = props.routes[currentRoute.name];
110
62
  let preventRedirect = false;
111
63
  if (isRedirecting) preventRedirect = true;
112
- else if (loadedComponentName === currentRouteName) preventRedirect = true;
113
- else if (loadedComponentPage != null && currentRouteName != null) {
114
- if (loadedComponentPage === currentRoutePage) {
115
- const componentConfig = this.props.routes[currentRouteName];
116
- this.adapters.batch(() => {
117
- this.currentProps = "props" in componentConfig ? componentConfig.props || {} : {};
64
+ else if (loadedComponentName === currentRoute.name) preventRedirect = true;
65
+ else if (loadedComponentPage != null && currentRoute.name != null) {
66
+ if (loadedComponentPage === currentRoute.pageName) {
67
+ props.routerStore.adapters.batch(() => {
68
+ config.currentProps = "props" in componentConfig ? componentConfig.props || {} : {};
69
+ config[Symbol.for("$adm")]?.batch();
118
70
  });
119
71
  preventRedirect = true;
120
72
  }
121
73
  }
122
74
  if (preventRedirect) return;
123
- this.adapters.batch(() => {
124
- if (!loadedComponentName) {
125
- this.setComponent(currentRouteName);
126
- } else {
127
- this.props.beforeUpdatePageComponent?.();
128
- this.setComponent(currentRouteName);
129
- }
75
+ props.routerStore.adapters.batch(() => {
76
+ if (loadedComponentName) props.beforeUpdatePageComponent?.();
77
+ props.beforeSetPageComponent?.(componentConfig);
78
+ config.currentProps = "props" in componentConfig ? componentConfig.props || {} : {};
79
+ config.loadedComponentName = currentRoute.name;
80
+ config.loadedComponentPage = componentConfig.pageName;
81
+ config[Symbol.for("$adm")]?.batch();
130
82
  });
131
- };
132
- setComponent(currentRouteName) {
133
- const componentConfig = this.props.routes[currentRouteName];
134
- const RouteComponent = componentConfig.component;
135
- this.props.beforeSetPageComponent?.(componentConfig);
136
- this.currentProps = "props" in componentConfig ? componentConfig.props || {} : {};
137
- this.loadedComponentName = currentRouteName;
138
- this.loadedComponentPage = componentConfig.pageName;
139
- this.loadedComponent = RouteComponent;
140
- }
141
- };
142
- var Router = (0, import_mobx_react_lite.observer)(
83
+ }, []);
84
+ (0, import_react.useState)(() => {
85
+ props.routerStore.adapters.batch(() => {
86
+ props.beforeMount?.();
87
+ redirectOnHistoryPop();
88
+ setLoadedComponent();
89
+ disposerRef.current = props.routerStore.adapters.autorun(setLoadedComponent);
90
+ });
91
+ });
92
+ (0, import_react.useEffect)(() => {
93
+ return () => {
94
+ disposerRef.current?.();
95
+ };
96
+ }, []);
97
+ if (!config.loadedComponentName) return null;
98
+ const LoadedComponent = props.routes[config.loadedComponentName]?.component || null;
99
+ if (LoadedComponent) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LoadedComponent, { ...config.currentProps });
100
+ return null;
101
+ }
102
+ var Router = (0, import_react.memo)(
143
103
  (props) => {
144
- const vm = useStore(VM, props);
145
- const LoadedComponent = vm.loadedComponentName ? vm.loadedComponent : null;
146
- if (LoadedComponent) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LoadedComponent, { ...vm.currentProps });
147
- return null;
104
+ const Component = props.routerStore.adapters.observer ? props.routerStore.adapters.observer(RouterInner) : RouterInner;
105
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Component, { ...props });
148
106
  }
149
107
  );
@@ -29,7 +29,6 @@ var import_web = require("solid-js/web");
29
29
  var import_web2 = require("solid-js/web");
30
30
  var import_reactive_route = require("reactive-route");
31
31
  var import_solid_js2 = require("solid-js");
32
- var import_store = require("solid-js/store");
33
32
  var import_web3 = require("solid-js/web");
34
33
 
35
34
  // packages/solid/useStore.ts
@@ -47,7 +46,7 @@ function useStore(ViewModel, props) {
47
46
  var VM = class {
48
47
  constructor(props) {
49
48
  this.props = props;
50
- return (0, import_store.createMutable)(this);
49
+ return this.adapters.makeAutoObservable(this);
51
50
  }
52
51
  loadedComponentName = void 0;
53
52
  loadedComponentPage = void 0;
@@ -0,0 +1,21 @@
1
+ // packages/adapters/kr-observable.ts
2
+ import { autorun, makeObservable } from "kr-observable";
3
+ import { observer } from "kr-observable/react";
4
+ var adapters = {
5
+ batch: (cb) => cb(),
6
+ autorun,
7
+ replaceObject: (obj, newObj) => {
8
+ for (const variableKey in obj) {
9
+ if (obj.hasOwnProperty(variableKey)) {
10
+ delete obj[variableKey];
11
+ }
12
+ }
13
+ Object.assign(obj, newObj);
14
+ },
15
+ makeObservable,
16
+ makeAutoObservable: makeObservable,
17
+ observer
18
+ };
19
+ export {
20
+ adapters
21
+ };
@@ -0,0 +1 @@
1
+ {"type": "module"}
@@ -1,8 +1,10 @@
1
1
  // packages/adapters/mobx.ts
2
- import { autorun, observable, runInAction } from "mobx";
2
+ import { autorun, makeAutoObservable, observable, runInAction } from "mobx";
3
+ import { observer } from "mobx-react-lite";
3
4
  var adapters = {
4
5
  batch: runInAction,
5
6
  autorun,
7
+ observer,
6
8
  replaceObject: (obj, newObj) => {
7
9
  runInAction(() => {
8
10
  for (const variableKey in obj) {
@@ -12,9 +14,9 @@ var adapters = {
12
14
  }
13
15
  Object.assign(obj, newObj);
14
16
  });
15
- return obj;
16
17
  },
17
- makeObservable: observable
18
+ makeObservable: observable,
19
+ makeAutoObservable
18
20
  };
19
21
  export {
20
22
  adapters
@@ -19,7 +19,8 @@ var adapters = {
19
19
  })
20
20
  );
21
21
  },
22
- makeObservable: createMutable
22
+ makeObservable: createMutable,
23
+ makeAutoObservable: createMutable
23
24
  };
24
25
  export {
25
26
  adapters
@@ -1,124 +1,82 @@
1
1
  // packages/react/Router.tsx
2
- import { makeAutoObservable } from "mobx";
3
- import { observer } from "mobx-react-lite";
2
+ import { memo, useCallback, useEffect, useRef, useState } from "react";
4
3
  import { getInitialRoute, history } from "reactive-route";
5
-
6
- // packages/react/useStore.ts
7
- import { runInAction } from "mobx";
8
- import { useEffect, useRef, useState } from "react";
9
- function useStore(ViewModel, props) {
10
- const isFirstRenderRef = useRef(true);
11
- const [vm] = useState(() => {
12
- const instance = new ViewModel(props || {});
13
- runInAction(() => {
14
- instance.beforeMount?.();
15
- });
16
- return instance;
17
- });
18
- useEffect(() => {
19
- if (isFirstRenderRef.current) {
20
- isFirstRenderRef.current = false;
21
- } else if (props) {
22
- runInAction(() => {
23
- vm.props = props || {};
24
- });
25
- }
26
- }, [props]);
27
- useEffect(() => {
28
- vm.afterMount?.();
29
- return () => {
30
- vm.autorunDisposers?.forEach((disposer) => disposer());
31
- };
32
- }, []);
33
- return vm;
34
- }
35
-
36
- // packages/react/Router.tsx
37
4
  import { jsx } from "react/jsx-runtime";
38
- var VM = class {
39
- constructor(props) {
40
- this.props = props;
41
- makeAutoObservable(
42
- this,
43
- { loadedComponent: false, setLoadedComponent: false, props: false },
44
- { autoBind: true }
45
- );
46
- }
47
- autorunDisposers = [];
48
- loadedComponentName = void 0;
49
- loadedComponentPage = void 0;
50
- loadedComponent;
51
- currentProps = {};
52
- get adapters() {
53
- return this.props.routerStore.adapters;
54
- }
55
- beforeMount() {
56
- this.props.beforeMount?.();
57
- this.redirectOnHistoryPop();
58
- this.setLoadedComponent();
59
- this.autorunDisposers.push(this.adapters.autorun(this.setLoadedComponent));
60
- }
61
- redirectOnHistoryPop() {
5
+ function RouterInner(props) {
6
+ const disposerRef = useRef(null);
7
+ const redirectOnHistoryPop = useCallback(() => {
62
8
  if (!history) return;
63
9
  history.listen((params) => {
64
10
  if (params.action !== "POP") return;
65
- const previousRoutePathname = this.props.routerStore.routesHistory[this.props.routerStore.routesHistory.length - 2];
11
+ const previousRoutePathname = props.routerStore.routesHistory[props.routerStore.routesHistory.length - 2];
66
12
  if (previousRoutePathname === params.location.pathname) {
67
- this.adapters.batch(() => this.props.routerStore.routesHistory.pop());
13
+ props.routerStore.adapters.batch(() => props.routerStore.routesHistory.pop());
68
14
  }
69
- void this.props.routerStore.redirectTo({
15
+ void props.routerStore.redirectTo({
70
16
  noHistoryPush: true,
71
17
  ...getInitialRoute({
72
- routes: this.props.routes,
18
+ routes: props.routes,
73
19
  pathname: history.location.pathname,
74
20
  fallback: "error404"
75
21
  })
76
22
  });
77
23
  });
78
- }
79
- setLoadedComponent = () => {
80
- const { loadedComponentName, loadedComponentPage } = this;
81
- const { currentRoute, isRedirecting } = this.props.routerStore;
82
- const currentRouteName = currentRoute.name;
83
- const currentRoutePage = currentRoute.pageName;
24
+ }, []);
25
+ const [config] = useState(
26
+ () => props.routerStore.adapters.makeObservable({
27
+ loadedComponentName: void 0,
28
+ loadedComponentPage: void 0,
29
+ currentProps: {}
30
+ })
31
+ );
32
+ const setLoadedComponent = useCallback(() => {
33
+ const { loadedComponentName, loadedComponentPage } = config;
34
+ const { currentRoute, isRedirecting } = props.routerStore;
35
+ const componentConfig = props.routes[currentRoute.name];
84
36
  let preventRedirect = false;
85
37
  if (isRedirecting) preventRedirect = true;
86
- else if (loadedComponentName === currentRouteName) preventRedirect = true;
87
- else if (loadedComponentPage != null && currentRouteName != null) {
88
- if (loadedComponentPage === currentRoutePage) {
89
- const componentConfig = this.props.routes[currentRouteName];
90
- this.adapters.batch(() => {
91
- this.currentProps = "props" in componentConfig ? componentConfig.props || {} : {};
38
+ else if (loadedComponentName === currentRoute.name) preventRedirect = true;
39
+ else if (loadedComponentPage != null && currentRoute.name != null) {
40
+ if (loadedComponentPage === currentRoute.pageName) {
41
+ props.routerStore.adapters.batch(() => {
42
+ config.currentProps = "props" in componentConfig ? componentConfig.props || {} : {};
43
+ config[Symbol.for("$adm")]?.batch();
92
44
  });
93
45
  preventRedirect = true;
94
46
  }
95
47
  }
96
48
  if (preventRedirect) return;
97
- this.adapters.batch(() => {
98
- if (!loadedComponentName) {
99
- this.setComponent(currentRouteName);
100
- } else {
101
- this.props.beforeUpdatePageComponent?.();
102
- this.setComponent(currentRouteName);
103
- }
49
+ props.routerStore.adapters.batch(() => {
50
+ if (loadedComponentName) props.beforeUpdatePageComponent?.();
51
+ props.beforeSetPageComponent?.(componentConfig);
52
+ config.currentProps = "props" in componentConfig ? componentConfig.props || {} : {};
53
+ config.loadedComponentName = currentRoute.name;
54
+ config.loadedComponentPage = componentConfig.pageName;
55
+ config[Symbol.for("$adm")]?.batch();
104
56
  });
105
- };
106
- setComponent(currentRouteName) {
107
- const componentConfig = this.props.routes[currentRouteName];
108
- const RouteComponent = componentConfig.component;
109
- this.props.beforeSetPageComponent?.(componentConfig);
110
- this.currentProps = "props" in componentConfig ? componentConfig.props || {} : {};
111
- this.loadedComponentName = currentRouteName;
112
- this.loadedComponentPage = componentConfig.pageName;
113
- this.loadedComponent = RouteComponent;
114
- }
115
- };
116
- var Router = observer(
57
+ }, []);
58
+ useState(() => {
59
+ props.routerStore.adapters.batch(() => {
60
+ props.beforeMount?.();
61
+ redirectOnHistoryPop();
62
+ setLoadedComponent();
63
+ disposerRef.current = props.routerStore.adapters.autorun(setLoadedComponent);
64
+ });
65
+ });
66
+ useEffect(() => {
67
+ return () => {
68
+ disposerRef.current?.();
69
+ };
70
+ }, []);
71
+ if (!config.loadedComponentName) return null;
72
+ const LoadedComponent = props.routes[config.loadedComponentName]?.component || null;
73
+ if (LoadedComponent) return /* @__PURE__ */ jsx(LoadedComponent, { ...config.currentProps });
74
+ return null;
75
+ }
76
+ var Router = memo(
117
77
  (props) => {
118
- const vm = useStore(VM, props);
119
- const LoadedComponent = vm.loadedComponentName ? vm.loadedComponent : null;
120
- if (LoadedComponent) return /* @__PURE__ */ jsx(LoadedComponent, { ...vm.currentProps });
121
- return null;
78
+ const Component = props.routerStore.adapters.observer ? props.routerStore.adapters.observer(RouterInner) : RouterInner;
79
+ return /* @__PURE__ */ jsx(Component, { ...props });
122
80
  }
123
81
  );
124
82
  export {
@@ -3,7 +3,6 @@ import { createComponent as _$createComponent } from "solid-js/web";
3
3
  import { mergeProps as _$mergeProps } from "solid-js/web";
4
4
  import { getInitialRoute, history } from "reactive-route";
5
5
  import { Show } from "solid-js";
6
- import { createMutable } from "solid-js/store";
7
6
  import { Dynamic } from "solid-js/web";
8
7
 
9
8
  // packages/solid/useStore.ts
@@ -21,7 +20,7 @@ function useStore(ViewModel, props) {
21
20
  var VM = class {
22
21
  constructor(props) {
23
22
  this.props = props;
24
- return createMutable(this);
23
+ return this.adapters.makeAutoObservable(this);
25
24
  }
26
25
  loadedComponentName = void 0;
27
26
  loadedComponentPage = void 0;
@@ -0,0 +1,3 @@
1
+ import { TypeAdapters } from 'reactive-route';
2
+ export declare const adapters: TypeAdapters;
3
+ //# sourceMappingURL=kr-observable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kr-observable.d.ts","sourceRoot":"","sources":["../../../packages/adapters/kr-observable.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,YActB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mobx.d.ts","sourceRoot":"","sources":["../../../packages/adapters/mobx.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,YAgBtB,CAAC"}
1
+ {"version":3,"file":"mobx.d.ts","sourceRoot":"","sources":["../../../packages/adapters/mobx.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,YAgBtB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"solid.d.ts","sourceRoot":"","sources":["../../../packages/adapters/solid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAI9C,eAAO,MAAM,QAAQ,EAAE,YAoBtB,CAAC"}
1
+ {"version":3,"file":"solid.d.ts","sourceRoot":"","sources":["../../../packages/adapters/solid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAI9C,eAAO,MAAM,QAAQ,EAAE,YAqBtB,CAAC"}
@@ -6,6 +6,9 @@ export type TypeAdapters = {
6
6
  autorun: (cb: () => void) => any;
7
7
  replaceObject: <TObj extends Record<string, any>>(obj: TObj, newObj: TObj) => void;
8
8
  makeObservable: <TObj extends Record<string, any>>(obj: TObj) => TObj;
9
+ makeAutoObservable: (...args: Array<any>) => any;
10
+ observer?: (comp: any) => any;
11
+ subscribe?: (target: any, cb: () => void, keys: Set<any>) => any;
9
12
  };
10
13
  export type TypeCreateRouterStore<TRoutes extends Record<string, TypeRoute>> = {
11
14
  routes: TRoutes;
@@ -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,MAAM,MAAM,YAAY,GAAG;IACzB,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;IAC7E,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,QAAQ,EAAE,YAAY,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI;IAC5E,QAAQ,EAAE,YAAY,CAAC;IACvB,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"}
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,MAAM,MAAM,YAAY,GAAG;IACzB,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;IACtE,kBAAkB,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC;IACjD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC;IAC9B,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC;CAClE,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI;IAC7E,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,QAAQ,EAAE,YAAY,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI;IAC5E,QAAQ,EAAE,YAAY,CAAC;IACvB,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"}
@@ -1,5 +1,3 @@
1
1
  import { TypePropsRouter, TypeRoute } from 'reactive-route';
2
- export declare const Router: (<TRoutes extends Record<string, TypeRoute>>(props: TypePropsRouter<TRoutes>) => any) & {
3
- displayName: string;
4
- };
2
+ export declare const Router: import("react").MemoExoticComponent<(<TRoutes extends Record<string, TypeRoute>>(props: TypePropsRouter<TRoutes>) => any)>;
5
3
  //# sourceMappingURL=Router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../../packages/react/Router.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA4B,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAsGtF,eAAO,MAAM,MAAM,IAChB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,OAAO,CAAC;;CAS5E,CAAC"}
1
+ {"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../../packages/react/Router.tsx"],"names":[],"mappings":"AACA,OAAO,EAA4B,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AA4HtF,eAAO,MAAM,MAAM,wCAChB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,OAAO,CAAC,KAKpC,GAAG,EAE3C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../../packages/solid/Router.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4B,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAoGtF,wBAAgB,MAAM,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,kCAWhG"}
1
+ {"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../../packages/solid/Router.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4B,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAmGtF,wBAAgB,MAAM,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,kCAWhG"}
@@ -1 +1 @@
1
- {"root":["../../packages/adapters/mobx.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/react/Router.tsx","../../packages/react/index.ts","../../packages/react/useStore.ts","../../packages/solid/Router.tsx","../../packages/solid/index.ts","../../packages/solid/useStore.ts"],"version":"5.9.2"}
1
+ {"root":["../../packages/adapters/kr-observable.ts","../../packages/adapters/mobx.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/react/Router.tsx","../../packages/react/index.ts","../../packages/solid/Router.tsx","../../packages/solid/index.ts","../../packages/solid/useStore.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.5",
5
+ "version": "0.0.1-alpha.7",
6
6
  "description": "Reactive Router for different frameworks",
7
7
  "repository": {
8
8
  "type": "git",
@@ -18,7 +18,10 @@
18
18
  "format:js": "biome check --no-errors-on-unmatched --write",
19
19
  "check-types": "tsc --project tsconfig.json",
20
20
  "check-types-example": "tsc --project examples/react-mobx/tsconfig.json",
21
- "prepare": "husky"
21
+ "prepare": "husky",
22
+ "docs:dev": "vitepress dev docs",
23
+ "docs:build": "vitepress build docs",
24
+ "docs:preview": "vitepress preview docs"
22
25
  },
23
26
  "lint-staged": {
24
27
  "(*.js|*.ts|*.tsx|*.mjs)": [
@@ -30,32 +33,35 @@
30
33
  "query-string": "7.1.3"
31
34
  },
32
35
  "devDependencies": {
33
- "@types/node": "22.14.1",
34
- "@types/lodash": "4.17.16",
35
- "vitest": "3.2.4",
36
- "@testing-library/react": "16.3.0",
37
- "@vitest/coverage-istanbul": "3.2.4",
38
- "vite-plugin-solid": "2.11.8",
39
- "global-jsdom": "26.0.0",
40
- "babel-preset-solid": "1.9.9",
41
- "@solidjs/testing-library": "0.8.10",
42
- "lodash": "4.17.21",
43
- "mobx": "6.13.7",
44
- "mobx-react-lite": "4.1.0",
45
- "react": "19.1.1",
46
- "solid-js": "1.9.9",
47
36
  "@babel/core": "7.28.3",
48
37
  "@babel/preset-env": "7.28.3",
49
38
  "@babel/preset-typescript": "7.27.1",
39
+ "@biomejs/biome": "2.2.2",
50
40
  "@espcom/esbuild-plugin-replace": "1.3.0",
41
+ "@solidjs/testing-library": "0.8.10",
42
+ "@testing-library/react": "16.3.0",
43
+ "@types/lodash": "4.17.16",
44
+ "@types/node": "22.14.1",
45
+ "@vitest/coverage-istanbul": "3.2.4",
46
+ "babel-preset-solid": "1.9.9",
51
47
  "badge-maker": "5.0.2",
52
48
  "esbuild": "0.25.9",
53
- "regenerator-runtime": "0.14.1",
54
- "@biomejs/biome": "2.2.2",
49
+ "global-jsdom": "26.0.0",
55
50
  "husky": "9.1.7",
51
+ "kr-observable": "3.0.23",
56
52
  "lint-staged": "16.1.6",
53
+ "lodash": "4.17.21",
54
+ "mobx": "6.13.7",
55
+ "mobx-react-lite": "4.1.0",
56
+ "react": "19.1.1",
57
+ "regenerator-runtime": "0.14.1",
58
+ "solid-js": "1.9.9",
57
59
  "tsx": "4.20.5",
58
60
  "typescript": "5.9.2",
61
+ "vite-plugin-solid": "2.11.8",
62
+ "vitepress": "1.6.4",
63
+ "vitepress-plugin-group-icons": "1.6.3",
64
+ "vitest": "3.2.4",
59
65
  "xml-splitter": "1.2.1"
60
66
  },
61
67
  "packageManager": "pnpm@10.9.0",
@@ -84,6 +90,11 @@
84
90
  "types": "./dist/types/adapters/solid.d.ts",
85
91
  "require": "./dist/cjs/adapters/solid/index.js",
86
92
  "import": "./dist/esm/adapters/solid/index.js"
93
+ },
94
+ "./adapters/kr-observable": {
95
+ "types": "./dist/types/adapters/kr-observable.d.ts",
96
+ "require": "./dist/cjs/adapters/kr-observable/index.js",
97
+ "import": "./dist/esm/adapters/kr-observable/index.js"
87
98
  }
88
99
  },
89
100
  "main": "dist/cjs/index.js",
@@ -1,8 +0,0 @@
1
- export interface ViewModelConstructor {
2
- autorunDisposers?: Array<() => void>;
3
- props?: Record<string, any>;
4
- beforeMount?: () => void;
5
- afterMount?: () => void;
6
- }
7
- export declare function useStore<TViewModel extends new (props: ConstructorParameters<TViewModel>[0]) => ViewModelConstructor>(ViewModel: TViewModel, props: ConstructorParameters<TViewModel>[0]): InstanceType<TViewModel>;
8
- //# sourceMappingURL=useStore.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useStore.d.ts","sourceRoot":"","sources":["../../../packages/react/useStore.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,CAAC,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,wBAAgB,QAAQ,CACtB,UAAU,SAAS,KACjB,KAAK,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KACxC,oBAAoB,EACzB,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAgC9F"}