reactive-route 0.0.1-alpha.6 → 0.0.1-alpha.8

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.
@@ -25,128 +25,82 @@ __export(react_exports, {
25
25
  module.exports = __toCommonJS(react_exports);
26
26
 
27
27
  // packages/react/Router.tsx
28
- var import_react2 = require("react");
29
- var import_reactive_route = require("reactive-route");
30
-
31
- // packages/react/useStore.ts
32
- var import_mobx = require("mobx");
33
28
  var import_react = require("react");
34
- function useStore(ViewModel, props) {
35
- const isFirstRenderRef = (0, import_react.useRef)(true);
36
- const [vm] = (0, import_react.useState)(() => {
37
- const instance = new ViewModel(props || {});
38
- (0, import_mobx.runInAction)(() => {
39
- instance.beforeMount?.();
40
- });
41
- return instance;
42
- });
43
- (0, import_react.useEffect)(() => {
44
- if (isFirstRenderRef.current) {
45
- isFirstRenderRef.current = false;
46
- } else if (props) {
47
- (0, import_mobx.runInAction)(() => {
48
- vm.props = props || {};
49
- });
50
- }
51
- }, [props]);
52
- (0, import_react.useEffect)(() => {
53
- vm.afterMount?.();
54
- return () => {
55
- vm.autorunDisposers?.forEach((disposer) => disposer());
56
- };
57
- }, []);
58
- return vm;
59
- }
60
-
61
- // packages/react/Router.tsx
29
+ var import_reactive_route = require("reactive-route");
62
30
  var import_jsx_runtime = require("react/jsx-runtime");
63
- var VM = class {
64
- constructor(props) {
65
- this.props = props;
66
- return this.adapters.makeAutoObservable(
67
- this,
68
- { loadedComponent: false, setLoadedComponent: false, props: false },
69
- { autoBind: true }
70
- );
71
- }
72
- autorunDisposers = [];
73
- loadedComponentName = void 0;
74
- loadedComponentPage = void 0;
75
- loadedComponent;
76
- currentProps = {};
77
- get adapters() {
78
- return this.props.routerStore.adapters;
79
- }
80
- beforeMount() {
81
- this.props.beforeMount?.();
82
- this.redirectOnHistoryPop();
83
- this.setLoadedComponent();
84
- this.autorunDisposers.push(this.adapters.autorun(this.setLoadedComponent));
85
- }
86
- redirectOnHistoryPop() {
31
+ function RouterInner(props) {
32
+ const disposerRef = (0, import_react.useRef)(null);
33
+ const redirectOnHistoryPop = (0, import_react.useCallback)(() => {
87
34
  if (!import_reactive_route.history) return;
88
35
  import_reactive_route.history.listen((params) => {
89
36
  if (params.action !== "POP") return;
90
- const previousRoutePathname = this.props.routerStore.routesHistory[this.props.routerStore.routesHistory.length - 2];
37
+ const previousRoutePathname = props.routerStore.routesHistory[props.routerStore.routesHistory.length - 2];
91
38
  if (previousRoutePathname === params.location.pathname) {
92
- this.adapters.batch(() => this.props.routerStore.routesHistory.pop());
39
+ props.routerStore.adapters.batch(() => props.routerStore.routesHistory.pop());
93
40
  }
94
- void this.props.routerStore.redirectTo({
41
+ void props.routerStore.redirectTo({
95
42
  noHistoryPush: true,
96
43
  ...(0, import_reactive_route.getInitialRoute)({
97
- routes: this.props.routes,
44
+ routes: props.routes,
98
45
  pathname: import_reactive_route.history.location.pathname,
99
46
  fallback: "error404"
100
47
  })
101
48
  });
102
49
  });
103
- }
104
- setLoadedComponent = () => {
105
- const { loadedComponentName, loadedComponentPage } = this;
106
- const { currentRoute, isRedirecting } = this.props.routerStore;
107
- const currentRouteName = currentRoute.name;
108
- 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];
109
62
  let preventRedirect = false;
110
63
  if (isRedirecting) preventRedirect = true;
111
- else if (loadedComponentName === currentRouteName) preventRedirect = true;
112
- else if (loadedComponentPage != null && currentRouteName != null) {
113
- if (loadedComponentPage === currentRoutePage) {
114
- const componentConfig = this.props.routes[currentRouteName];
115
- this.adapters.batch(() => {
116
- 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();
117
70
  });
118
71
  preventRedirect = true;
119
72
  }
120
73
  }
121
74
  if (preventRedirect) return;
122
- this.adapters.batch(() => {
123
- if (!loadedComponentName) {
124
- this.setComponent(currentRouteName);
125
- } else {
126
- this.props.beforeUpdatePageComponent?.();
127
- this.setComponent(currentRouteName);
128
- }
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();
129
82
  });
130
- };
131
- setComponent(currentRouteName) {
132
- const componentConfig = this.props.routes[currentRouteName];
133
- const RouteComponent = componentConfig.component;
134
- this.props.beforeSetPageComponent?.(componentConfig);
135
- this.currentProps = "props" in componentConfig ? componentConfig.props || {} : {};
136
- this.loadedComponentName = currentRouteName;
137
- this.loadedComponentPage = componentConfig.pageName;
138
- this.loadedComponent = RouteComponent;
139
- }
140
- };
141
- function RouterInner(props) {
142
- const vm = useStore(VM, props);
143
- const LoadedComponent = vm.loadedComponentName ? vm.loadedComponent : null;
144
- if (LoadedComponent) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LoadedComponent, { ...vm.currentProps });
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 });
145
100
  return null;
146
101
  }
147
- var Router = (0, import_react2.memo)(
148
- (props) => {
149
- const Component = props.routerStore.adapters.observer ? props.routerStore.adapters.observer(RouterInner) : RouterInner;
150
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Component, { ...props });
151
- }
152
- );
102
+ function RouterWrapper(props) {
103
+ const Component = props.routerStore.adapters.observer ? props.routerStore.adapters.observer(RouterInner) : RouterInner;
104
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Component, { ...props });
105
+ }
106
+ var Router = (0, import_react.memo)(RouterWrapper);
@@ -1,129 +1,83 @@
1
1
  // packages/react/Router.tsx
2
- import { memo } from "react";
2
+ import { memo, useCallback, useEffect, useRef, useState } from "react";
3
3
  import { getInitialRoute, history } from "reactive-route";
4
-
5
- // packages/react/useStore.ts
6
- import { runInAction } from "mobx";
7
- import { useEffect, useRef, useState } from "react";
8
- function useStore(ViewModel, props) {
9
- const isFirstRenderRef = useRef(true);
10
- const [vm] = useState(() => {
11
- const instance = new ViewModel(props || {});
12
- runInAction(() => {
13
- instance.beforeMount?.();
14
- });
15
- return instance;
16
- });
17
- useEffect(() => {
18
- if (isFirstRenderRef.current) {
19
- isFirstRenderRef.current = false;
20
- } else if (props) {
21
- runInAction(() => {
22
- vm.props = props || {};
23
- });
24
- }
25
- }, [props]);
26
- useEffect(() => {
27
- vm.afterMount?.();
28
- return () => {
29
- vm.autorunDisposers?.forEach((disposer) => disposer());
30
- };
31
- }, []);
32
- return vm;
33
- }
34
-
35
- // packages/react/Router.tsx
36
4
  import { jsx } from "react/jsx-runtime";
37
- var VM = class {
38
- constructor(props) {
39
- this.props = props;
40
- return this.adapters.makeAutoObservable(
41
- this,
42
- { loadedComponent: false, setLoadedComponent: false, props: false },
43
- { autoBind: true }
44
- );
45
- }
46
- autorunDisposers = [];
47
- loadedComponentName = void 0;
48
- loadedComponentPage = void 0;
49
- loadedComponent;
50
- currentProps = {};
51
- get adapters() {
52
- return this.props.routerStore.adapters;
53
- }
54
- beforeMount() {
55
- this.props.beforeMount?.();
56
- this.redirectOnHistoryPop();
57
- this.setLoadedComponent();
58
- this.autorunDisposers.push(this.adapters.autorun(this.setLoadedComponent));
59
- }
60
- redirectOnHistoryPop() {
5
+ function RouterInner(props) {
6
+ const disposerRef = useRef(null);
7
+ const redirectOnHistoryPop = useCallback(() => {
61
8
  if (!history) return;
62
9
  history.listen((params) => {
63
10
  if (params.action !== "POP") return;
64
- const previousRoutePathname = this.props.routerStore.routesHistory[this.props.routerStore.routesHistory.length - 2];
11
+ const previousRoutePathname = props.routerStore.routesHistory[props.routerStore.routesHistory.length - 2];
65
12
  if (previousRoutePathname === params.location.pathname) {
66
- this.adapters.batch(() => this.props.routerStore.routesHistory.pop());
13
+ props.routerStore.adapters.batch(() => props.routerStore.routesHistory.pop());
67
14
  }
68
- void this.props.routerStore.redirectTo({
15
+ void props.routerStore.redirectTo({
69
16
  noHistoryPush: true,
70
17
  ...getInitialRoute({
71
- routes: this.props.routes,
18
+ routes: props.routes,
72
19
  pathname: history.location.pathname,
73
20
  fallback: "error404"
74
21
  })
75
22
  });
76
23
  });
77
- }
78
- setLoadedComponent = () => {
79
- const { loadedComponentName, loadedComponentPage } = this;
80
- const { currentRoute, isRedirecting } = this.props.routerStore;
81
- const currentRouteName = currentRoute.name;
82
- 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];
83
36
  let preventRedirect = false;
84
37
  if (isRedirecting) preventRedirect = true;
85
- else if (loadedComponentName === currentRouteName) preventRedirect = true;
86
- else if (loadedComponentPage != null && currentRouteName != null) {
87
- if (loadedComponentPage === currentRoutePage) {
88
- const componentConfig = this.props.routes[currentRouteName];
89
- this.adapters.batch(() => {
90
- 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();
91
44
  });
92
45
  preventRedirect = true;
93
46
  }
94
47
  }
95
48
  if (preventRedirect) return;
96
- this.adapters.batch(() => {
97
- if (!loadedComponentName) {
98
- this.setComponent(currentRouteName);
99
- } else {
100
- this.props.beforeUpdatePageComponent?.();
101
- this.setComponent(currentRouteName);
102
- }
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();
103
56
  });
104
- };
105
- setComponent(currentRouteName) {
106
- const componentConfig = this.props.routes[currentRouteName];
107
- const RouteComponent = componentConfig.component;
108
- this.props.beforeSetPageComponent?.(componentConfig);
109
- this.currentProps = "props" in componentConfig ? componentConfig.props || {} : {};
110
- this.loadedComponentName = currentRouteName;
111
- this.loadedComponentPage = componentConfig.pageName;
112
- this.loadedComponent = RouteComponent;
113
- }
114
- };
115
- function RouterInner(props) {
116
- const vm = useStore(VM, props);
117
- const LoadedComponent = vm.loadedComponentName ? vm.loadedComponent : null;
118
- if (LoadedComponent) return /* @__PURE__ */ jsx(LoadedComponent, { ...vm.currentProps });
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 });
119
74
  return null;
120
75
  }
121
- var Router = memo(
122
- (props) => {
123
- const Component = props.routerStore.adapters.observer ? props.routerStore.adapters.observer(RouterInner) : RouterInner;
124
- return /* @__PURE__ */ jsx(Component, { ...props });
125
- }
126
- );
76
+ function RouterWrapper(props) {
77
+ const Component = props.routerStore.adapters.observer ? props.routerStore.adapters.observer(RouterInner) : RouterInner;
78
+ return /* @__PURE__ */ jsx(Component, { ...props });
79
+ }
80
+ var Router = memo(RouterWrapper);
127
81
  export {
128
82
  Router
129
83
  };
@@ -8,6 +8,7 @@ export type TypeAdapters = {
8
8
  makeObservable: <TObj extends Record<string, any>>(obj: TObj) => TObj;
9
9
  makeAutoObservable: (...args: Array<any>) => any;
10
10
  observer?: (comp: any) => any;
11
+ subscribe?: (target: any, cb: () => void, keys: Set<any>) => any;
11
12
  };
12
13
  export type TypeCreateRouterStore<TRoutes extends Record<string, TypeRoute>> = {
13
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;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;CAC/B,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,3 +1,5 @@
1
1
  import { TypePropsRouter, TypeRoute } from 'reactive-route';
2
- export declare const Router: import("react").MemoExoticComponent<(<TRoutes extends Record<string, TypeRoute>>(props: TypePropsRouter<TRoutes>) => any)>;
2
+ declare function RouterWrapper<TRoutes extends Record<string, TypeRoute>>(props: TypePropsRouter<TRoutes>): any;
3
+ export declare const Router: typeof RouterWrapper;
4
+ export {};
3
5
  //# sourceMappingURL=Router.d.ts.map
@@ -1 +1 @@
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;AAgHtF,eAAO,MAAM,MAAM,wCAChB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,OAAO,CAAC,KAKpC,GAAG,EAE3C,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;AAwGtF,iBAAS,aAAa,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,GAK1D,GAAG,CACzC;AAED,eAAO,MAAM,MAAM,EAA0B,OAAO,aAAa,CAAC"}
@@ -1 +1 @@
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/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"],"version":"5.9.2"}
@@ -0,0 +1 @@
1
+ {"root":["../../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.6",
5
+ "version": "0.0.1-alpha.8",
6
6
  "description": "Reactive Router for different frameworks",
7
7
  "repository": {
8
8
  "type": "git",
@@ -10,15 +10,18 @@
10
10
  },
11
11
  "scripts": {
12
12
  "upd": "rm -rf ./node_modules&&pnpm i --prefer-offline",
13
- "build": "rm -rf ./dist&&node --import tsx ./scripts/build.ts&&tsc -b ./tsconfig.types.json",
13
+ "build": "rm -rf ./dist&&node --import tsx ./scripts/build.ts&&tsc -b ./tsconfig.types.react.json&&tsc -b ./tsconfig.types.solid.json",
14
14
  "test": "vitest run&&node --import tsx ./scripts/genCoverageBadge.ts",
15
15
  "test-watch": "vitest --coverage=false",
16
16
  "npm-publish": "pnpm run build&&pnpm run test&&npm publish --access public",
17
17
  "analyze:js": "biome check --no-errors-on-unmatched .",
18
18
  "format:js": "biome check --no-errors-on-unmatched --write",
19
- "check-types": "tsc --project tsconfig.json",
20
- "check-types-example": "tsc --project examples/react-mobx/tsconfig.json",
21
- "prepare": "husky"
19
+ "check-types": "tsc --project tsconfig.json&&tsc --project tsconfig.solid.json",
20
+ "check-types-example": "tsc --project examples/react/tsconfig.json",
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,33 +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
- "kr-observable": "3.0.19",
46
- "react": "19.1.1",
47
- "solid-js": "1.9.9",
48
36
  "@babel/core": "7.28.3",
49
37
  "@babel/preset-env": "7.28.3",
50
38
  "@babel/preset-typescript": "7.27.1",
39
+ "@biomejs/biome": "2.2.2",
51
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",
52
47
  "badge-maker": "5.0.2",
53
48
  "esbuild": "0.25.9",
54
- "regenerator-runtime": "0.14.1",
55
- "@biomejs/biome": "2.2.2",
49
+ "global-jsdom": "26.0.0",
56
50
  "husky": "9.1.7",
51
+ "kr-observable": "3.0.23",
57
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",
58
59
  "tsx": "4.20.5",
59
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",
60
65
  "xml-splitter": "1.2.1"
61
66
  },
62
67
  "packageManager": "pnpm@10.9.0",
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "include": ["packages/solid"],
4
+ "exclude": ["packages/solid/test"],
5
+ "compilerOptions": {
6
+ "jsx": "preserve",
7
+ "jsxImportSource": "solid-js"
8
+ }
9
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "include": ["packages"],
4
+ "compilerOptions": {
5
+ "outDir": "./dist/types",
6
+ "noEmit": false,
7
+ "declaration": true,
8
+ "declarationMap": true,
9
+ "emitDeclarationOnly": true
10
+ }
11
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "include": ["packages/solid"],
4
+ "exclude": ["packages/solid/test"],
5
+ "compilerOptions": {
6
+ "outDir": "./dist/types",
7
+ "jsx": "preserve",
8
+ "jsxImportSource": "solid-js",
9
+ "noEmit": false,
10
+ "declaration": true,
11
+ "declarationMap": true,
12
+ "emitDeclarationOnly": true
13
+ }
14
+ }
@@ -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"}