reactive-route 0.0.1-alpha.16 → 0.0.1-alpha.17

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,3 @@
1
+ import { TypeAdapters } from 'reactive-route';
2
+ export declare const adapters: TypeAdapters;
3
+ //# sourceMappingURL=kr-observable-preact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kr-observable-preact.d.ts","sourceRoot":"","sources":["../../packages/adapters/kr-observable-preact.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,YAYtB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { TypeAdapters } from 'reactive-route';
2
+ export declare const adapters: TypeAdapters;
3
+ //# sourceMappingURL=mobx-preact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobx-preact.d.ts","sourceRoot":"","sources":["../../packages/adapters/mobx-preact.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,YAetB,CAAC"}
@@ -0,0 +1,39 @@
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-preact.ts
21
+ var kr_observable_preact_exports = {};
22
+ __export(kr_observable_preact_exports, {
23
+ adapters: () => adapters
24
+ });
25
+ module.exports = __toCommonJS(kr_observable_preact_exports);
26
+ var import_kr_observable = require("kr-observable");
27
+ var import_preact = require("kr-observable/preact");
28
+ var adapters = {
29
+ batch: (cb) => cb(),
30
+ autorun: import_kr_observable.autorun,
31
+ replaceObject: (obj, newObj) => {
32
+ for (const variableKey in obj) {
33
+ delete obj[variableKey];
34
+ }
35
+ Object.assign(obj, newObj);
36
+ },
37
+ makeObservable: import_kr_observable.makeObservable,
38
+ observer: import_preact.observer
39
+ };
@@ -0,0 +1 @@
1
+ {"type": "commonjs"}
@@ -0,0 +1,43 @@
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/mobx-preact.ts
21
+ var mobx_preact_exports = {};
22
+ __export(mobx_preact_exports, {
23
+ adapters: () => adapters
24
+ });
25
+ module.exports = __toCommonJS(mobx_preact_exports);
26
+ var import_mobx = require("mobx");
27
+ var import_mobx_preact = require("mobx-preact");
28
+ var adapters = {
29
+ batch: import_mobx.runInAction,
30
+ autorun: import_mobx.autorun,
31
+ observer: import_mobx_preact.observer,
32
+ replaceObject: (obj, newObj) => {
33
+ (0, import_mobx.runInAction)(() => {
34
+ for (const variableKey in obj) {
35
+ if (obj.hasOwnProperty(variableKey)) {
36
+ delete obj[variableKey];
37
+ }
38
+ }
39
+ Object.assign(obj, newObj);
40
+ });
41
+ },
42
+ makeObservable: import_mobx.observable
43
+ };
@@ -0,0 +1 @@
1
+ {"type": "commonjs"}
@@ -0,0 +1,104 @@
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/preact/index.ts
21
+ var preact_exports = {};
22
+ __export(preact_exports, {
23
+ Router: () => Router
24
+ });
25
+ module.exports = __toCommonJS(preact_exports);
26
+
27
+ // packages/preact/Router.tsx
28
+ var import_hooks = require("preact/hooks");
29
+ var import_reactive_route = require("reactive-route");
30
+ var import_jsx_runtime = require("preact/jsx-runtime");
31
+ function RouterInner(props) {
32
+ const disposerRef = (0, import_hooks.useRef)(null);
33
+ const redirectOnHistoryPop = (0, import_hooks.useCallback)(() => {
34
+ if (!import_reactive_route.history) return;
35
+ import_reactive_route.history.listen((params) => {
36
+ if (params.action !== "POP") return;
37
+ const previousRoutePathname = props.routerStore.routesHistory[props.routerStore.routesHistory.length - 2];
38
+ if (previousRoutePathname === params.location.pathname) {
39
+ props.routerStore.adapters.batch(() => props.routerStore.routesHistory.pop());
40
+ }
41
+ void props.routerStore.redirectTo({
42
+ noHistoryPush: true,
43
+ ...(0, import_reactive_route.getInitialRoute)({
44
+ routes: props.routes,
45
+ pathname: import_reactive_route.history.location.pathname
46
+ })
47
+ });
48
+ });
49
+ }, []);
50
+ const [config] = (0, import_hooks.useState)(
51
+ () => props.routerStore.adapters.makeObservable({
52
+ loadedComponentName: void 0,
53
+ loadedComponentPage: void 0,
54
+ currentProps: {}
55
+ })
56
+ );
57
+ const setLoadedComponent = (0, import_hooks.useCallback)(() => {
58
+ const { loadedComponentName, loadedComponentPage } = config;
59
+ const { currentRoute, isRedirecting } = props.routerStore;
60
+ const componentConfig = props.routes[currentRoute.name];
61
+ let preventRedirect = false;
62
+ if (isRedirecting) preventRedirect = true;
63
+ else if (loadedComponentName === currentRoute.name) preventRedirect = true;
64
+ else if (loadedComponentPage != null && currentRoute.name != null) {
65
+ if (loadedComponentPage === currentRoute.pageName) {
66
+ props.routerStore.adapters.batch(() => {
67
+ config.currentProps = "props" in componentConfig ? componentConfig.props || {} : {};
68
+ });
69
+ preventRedirect = true;
70
+ }
71
+ }
72
+ if (preventRedirect) return;
73
+ props.routerStore.adapters.batch(() => {
74
+ if (loadedComponentName) props.beforeUpdatePageComponent?.();
75
+ props.beforeSetPageComponent?.(componentConfig);
76
+ config.currentProps = "props" in componentConfig ? componentConfig.props || {} : {};
77
+ config.loadedComponentName = currentRoute.name;
78
+ config.loadedComponentPage = componentConfig.pageName;
79
+ });
80
+ }, []);
81
+ (0, import_hooks.useState)(() => {
82
+ props.routerStore.adapters.batch(() => {
83
+ props.beforeMount?.();
84
+ redirectOnHistoryPop();
85
+ setLoadedComponent();
86
+ disposerRef.current = props.routerStore.adapters.autorun(setLoadedComponent);
87
+ });
88
+ });
89
+ (0, import_hooks.useEffect)(() => {
90
+ return () => {
91
+ disposerRef.current?.();
92
+ };
93
+ }, []);
94
+ if (!config.loadedComponentName) return null;
95
+ const LoadedComponent = props.routes[config.loadedComponentName]?.component || null;
96
+ if (LoadedComponent) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LoadedComponent, { ...config.currentProps });
97
+ return null;
98
+ }
99
+ function Router(props) {
100
+ const [Component] = (0, import_hooks.useState)(
101
+ () => props.routerStore.adapters.observer ? props.routerStore.adapters.observer(RouterInner) : RouterInner
102
+ );
103
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Component, { ...props });
104
+ }
@@ -0,0 +1 @@
1
+ {"type": "commonjs"}
@@ -0,0 +1,18 @@
1
+ // packages/adapters/kr-observable-preact.ts
2
+ import { autorun, makeObservable } from "kr-observable";
3
+ import { observer } from "kr-observable/preact";
4
+ var adapters = {
5
+ batch: (cb) => cb(),
6
+ autorun,
7
+ replaceObject: (obj, newObj) => {
8
+ for (const variableKey in obj) {
9
+ delete obj[variableKey];
10
+ }
11
+ Object.assign(obj, newObj);
12
+ },
13
+ makeObservable,
14
+ observer
15
+ };
16
+ export {
17
+ adapters
18
+ };
@@ -0,0 +1 @@
1
+ {"type": "module"}
@@ -0,0 +1,22 @@
1
+ // packages/adapters/mobx-preact.ts
2
+ import { autorun, observable, runInAction } from "mobx";
3
+ import { observer } from "mobx-preact";
4
+ var adapters = {
5
+ batch: runInAction,
6
+ autorun,
7
+ observer,
8
+ replaceObject: (obj, newObj) => {
9
+ runInAction(() => {
10
+ for (const variableKey in obj) {
11
+ if (obj.hasOwnProperty(variableKey)) {
12
+ delete obj[variableKey];
13
+ }
14
+ }
15
+ Object.assign(obj, newObj);
16
+ });
17
+ },
18
+ makeObservable: observable
19
+ };
20
+ export {
21
+ adapters
22
+ };
@@ -0,0 +1 @@
1
+ {"type": "module"}
@@ -0,0 +1,81 @@
1
+ // packages/preact/Router.tsx
2
+ import { useCallback, useEffect, useRef, useState } from "preact/hooks";
3
+ import { getInitialRoute, history } from "reactive-route";
4
+ import { jsx } from "preact/jsx-runtime";
5
+ function RouterInner(props) {
6
+ const disposerRef = useRef(null);
7
+ const redirectOnHistoryPop = useCallback(() => {
8
+ if (!history) return;
9
+ history.listen((params) => {
10
+ if (params.action !== "POP") return;
11
+ const previousRoutePathname = props.routerStore.routesHistory[props.routerStore.routesHistory.length - 2];
12
+ if (previousRoutePathname === params.location.pathname) {
13
+ props.routerStore.adapters.batch(() => props.routerStore.routesHistory.pop());
14
+ }
15
+ void props.routerStore.redirectTo({
16
+ noHistoryPush: true,
17
+ ...getInitialRoute({
18
+ routes: props.routes,
19
+ pathname: history.location.pathname
20
+ })
21
+ });
22
+ });
23
+ }, []);
24
+ const [config] = useState(
25
+ () => props.routerStore.adapters.makeObservable({
26
+ loadedComponentName: void 0,
27
+ loadedComponentPage: void 0,
28
+ currentProps: {}
29
+ })
30
+ );
31
+ const setLoadedComponent = useCallback(() => {
32
+ const { loadedComponentName, loadedComponentPage } = config;
33
+ const { currentRoute, isRedirecting } = props.routerStore;
34
+ const componentConfig = props.routes[currentRoute.name];
35
+ let preventRedirect = false;
36
+ if (isRedirecting) preventRedirect = true;
37
+ else if (loadedComponentName === currentRoute.name) preventRedirect = true;
38
+ else if (loadedComponentPage != null && currentRoute.name != null) {
39
+ if (loadedComponentPage === currentRoute.pageName) {
40
+ props.routerStore.adapters.batch(() => {
41
+ config.currentProps = "props" in componentConfig ? componentConfig.props || {} : {};
42
+ });
43
+ preventRedirect = true;
44
+ }
45
+ }
46
+ if (preventRedirect) return;
47
+ props.routerStore.adapters.batch(() => {
48
+ if (loadedComponentName) props.beforeUpdatePageComponent?.();
49
+ props.beforeSetPageComponent?.(componentConfig);
50
+ config.currentProps = "props" in componentConfig ? componentConfig.props || {} : {};
51
+ config.loadedComponentName = currentRoute.name;
52
+ config.loadedComponentPage = componentConfig.pageName;
53
+ });
54
+ }, []);
55
+ useState(() => {
56
+ props.routerStore.adapters.batch(() => {
57
+ props.beforeMount?.();
58
+ redirectOnHistoryPop();
59
+ setLoadedComponent();
60
+ disposerRef.current = props.routerStore.adapters.autorun(setLoadedComponent);
61
+ });
62
+ });
63
+ useEffect(() => {
64
+ return () => {
65
+ disposerRef.current?.();
66
+ };
67
+ }, []);
68
+ if (!config.loadedComponentName) return null;
69
+ const LoadedComponent = props.routes[config.loadedComponentName]?.component || null;
70
+ if (LoadedComponent) return /* @__PURE__ */ jsx(LoadedComponent, { ...config.currentProps });
71
+ return null;
72
+ }
73
+ function Router(props) {
74
+ const [Component] = useState(
75
+ () => props.routerStore.adapters.observer ? props.routerStore.adapters.observer(RouterInner) : RouterInner
76
+ );
77
+ return /* @__PURE__ */ jsx(Component, { ...props });
78
+ }
79
+ export {
80
+ Router
81
+ };
@@ -0,0 +1 @@
1
+ {"type": "module"}
@@ -0,0 +1,3 @@
1
+ import { TypePropsRouter, TypeRoute } from 'reactive-route';
2
+ export declare function Router<TRoutes extends Record<string, TypeRoute>>(props: TypePropsRouter<TRoutes>): any;
3
+ //# sourceMappingURL=Router.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,2 @@
1
+ export { Router } from './Router';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/preact/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,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"],"version":"5.9.2"}
1
+ {"root":["../packages/adapters/kr-observable-preact.ts","../packages/adapters/kr-observable.ts","../packages/adapters/mobx-preact.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/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.16",
5
+ "version": "0.0.1-alpha.17",
6
6
  "description": "Reactive Router for different frameworks",
7
7
  "repository": {
8
8
  "type": "git",
@@ -40,9 +40,11 @@
40
40
  "@espcom/esbuild-plugin-replace": "1.3.0",
41
41
  "@solidjs/testing-library": "0.8.10",
42
42
  "@testing-library/react": "16.3.0",
43
+ "@testing-library/preact": "3.2.4",
43
44
  "@types/lodash": "4.17.16",
44
45
  "@types/node": "22.14.1",
45
46
  "@vitest/coverage-istanbul": "3.2.4",
47
+ "@preact/preset-vite": "2.10.2",
46
48
  "babel-preset-solid": "1.9.9",
47
49
  "badge-maker": "5.0.2",
48
50
  "esbuild": "0.25.9",
@@ -52,8 +54,11 @@
52
54
  "lint-staged": "16.1.6",
53
55
  "lodash": "4.17.21",
54
56
  "mobx": "6.13.7",
57
+ "mobx-preact": "3.0.0",
55
58
  "mobx-react-lite": "4.1.0",
56
59
  "react": "19.1.1",
60
+ "preact": "10.27.2",
61
+ "preact-render-to-string": "6.6.1",
57
62
  "regenerator-runtime": "0.14.1",
58
63
  "solid-js": "1.9.9",
59
64
  "tsx": "4.20.5",
@@ -76,6 +81,11 @@
76
81
  "require": "./dist/cjs/react/index.js",
77
82
  "import": "./dist/esm/react/index.js"
78
83
  },
84
+ "./preact": {
85
+ "types": "./dist/preact/index.d.ts",
86
+ "require": "./dist/cjs/preact/index.js",
87
+ "import": "./dist/esm/preact/index.js"
88
+ },
79
89
  "./solid": {
80
90
  "types": "./dist/solid/index.d.ts",
81
91
  "require": "./dist/cjs/solid/index.js",
@@ -86,6 +96,11 @@
86
96
  "require": "./dist/cjs/adapters/mobx/index.js",
87
97
  "import": "./dist/esm/adapters/mobx/index.js"
88
98
  },
99
+ "./adapters/mobx-preact": {
100
+ "types": "./dist/adapters/mobx-preact.d.ts",
101
+ "require": "./dist/cjs/adapters/mobx-preact/index.js",
102
+ "import": "./dist/esm/adapters/mobx-preact/index.js"
103
+ },
89
104
  "./adapters/solid": {
90
105
  "types": "./dist/adapters/solid.d.ts",
91
106
  "require": "./dist/cjs/adapters/solid/index.js",
@@ -95,6 +110,11 @@
95
110
  "types": "./dist/adapters/kr-observable.d.ts",
96
111
  "require": "./dist/cjs/adapters/kr-observable/index.js",
97
112
  "import": "./dist/esm/adapters/kr-observable/index.js"
113
+ },
114
+ "./adapters/kr-observable-preact": {
115
+ "types": "./dist/adapters/kr-observable-preact.d.ts",
116
+ "require": "./dist/cjs/adapters/kr-observable-preact/index.js",
117
+ "import": "./dist/esm/adapters/kr-observable-preact/index.js"
98
118
  }
99
119
  },
100
120
  "main": "dist/cjs/index.js",