reactive-route 0.0.1-alpha.25 → 0.0.1-alpha.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/dist/adapters/vue.d.ts +3 -0
- package/dist/adapters/vue.d.ts.map +1 -0
- package/dist/cjs/adapters/vue/index.js +39 -0
- package/dist/cjs/adapters/vue/package.json +1 -0
- package/dist/cjs/index.js +30 -31
- package/dist/cjs/vue/index.js +116 -0
- package/dist/cjs/vue/package.json +1 -0
- package/dist/core/createRouter.d.ts +1 -1
- package/dist/core/createRouter.d.ts.map +1 -1
- package/dist/core/types/TypeRouter.d.ts +1 -0
- package/dist/core/types/TypeRouter.d.ts.map +1 -1
- package/dist/esm/adapters/vue/index.js +18 -0
- package/dist/esm/adapters/vue/package.json +1 -0
- package/dist/esm/index.js +30 -31
- package/dist/esm/vue/index.js +93 -0
- package/dist/esm/vue/package.json +1 -0
- package/dist/tsconfig.types.react.tsbuildinfo +1 -1
- package/dist/vue/Router.d.ts +4 -0
- package/dist/vue/Router.d.ts.map +1 -0
- package/dist/vue/index.d.ts +2 -0
- package/dist/vue/index.d.ts.map +1 -0
- package/e2e/app.test.ts +130 -0
- package/e2e/teardown.ts +12 -0
- package/package.json +51 -26
- package/playwright.config.ts +52 -0
- package/vitepress/.vitepress/cache/deps/_metadata.json +52 -0
- package/vitepress/.vitepress/cache/deps/chunk-FL23S3EK.js +12705 -0
- package/vitepress/.vitepress/cache/deps/chunk-FL23S3EK.js.map +7 -0
- package/vitepress/.vitepress/cache/deps/chunk-VGAXUAUJ.js +9952 -0
- package/vitepress/.vitepress/cache/deps/chunk-VGAXUAUJ.js.map +7 -0
- package/vitepress/.vitepress/cache/deps/package.json +3 -0
- package/vitepress/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +3844 -0
- package/vitepress/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +7 -0
- package/vitepress/.vitepress/cache/deps/vitepress___@vueuse_core.js +588 -0
- package/vitepress/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +7 -0
- package/vitepress/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js +1153 -0
- package/vitepress/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js.map +7 -0
- package/vitepress/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js +1665 -0
- package/vitepress/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js.map +7 -0
- package/vitepress/.vitepress/cache/deps/vitepress___minisearch.js +1812 -0
- package/vitepress/.vitepress/cache/deps/vitepress___minisearch.js.map +7 -0
- package/vitepress/.vitepress/cache/deps/vue.js +342 -0
- package/vitepress/.vitepress/cache/deps/vue.js.map +7 -0
- package/vitepress/.vitepress/config.mts +72 -0
- package/vitepress/.vitepress/theme/custom.css +9 -0
- package/vitepress/.vitepress/theme/index.ts +5 -0
- package/vitepress/examples/preact.md +22 -0
- package/vitepress/examples/react.md +22 -0
- package/vitepress/examples/solid.md +21 -0
- package/vitepress/file.svg +79 -0
- package/vitepress/guide/advanced.md +131 -0
- package/vitepress/guide/getting-started.md +139 -0
- package/vitepress/guide/index.md +44 -0
- package/vitepress/guide/preact.md +33 -0
- package/vitepress/guide/react.md +33 -0
- package/vitepress/guide/router-component.md +67 -0
- package/vitepress/guide/router-configuration.md +185 -0
- package/vitepress/guide/routes-configuration.md +191 -0
- package/vitepress/guide/solid.md +68 -0
- package/vitepress/guide/ssr.md +70 -0
- package/vitepress/index.md +29 -0
package/LICENSE
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vue.d.ts","sourceRoot":"","sources":["../../packages/adapters/vue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,eAAO,MAAM,QAAQ,EAAE,YAYtB,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/vue.ts
|
|
21
|
+
var vue_exports = {};
|
|
22
|
+
__export(vue_exports, {
|
|
23
|
+
adapters: () => adapters
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(vue_exports);
|
|
26
|
+
var import_vue = require("vue");
|
|
27
|
+
var adapters = {
|
|
28
|
+
batch: (cb) => cb(),
|
|
29
|
+
autorun: import_vue.watchEffect,
|
|
30
|
+
replaceObject: (obj, newObj) => {
|
|
31
|
+
for (const variableKey in obj) {
|
|
32
|
+
if (obj.hasOwnProperty(variableKey)) {
|
|
33
|
+
delete obj[variableKey];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
Object.assign(obj, newObj);
|
|
37
|
+
},
|
|
38
|
+
makeObservable: import_vue.reactive
|
|
39
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type": "commonjs"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -187,12 +187,8 @@ function replaceDynamicValues({
|
|
|
187
187
|
}
|
|
188
188
|
|
|
189
189
|
// packages/core/createRouter.ts
|
|
190
|
-
function createRouter({
|
|
191
|
-
|
|
192
|
-
adapters,
|
|
193
|
-
lifecycleParams
|
|
194
|
-
}) {
|
|
195
|
-
const router = adapters.makeObservable({
|
|
190
|
+
function createRouter(config) {
|
|
191
|
+
const router = config.adapters.makeObservable({
|
|
196
192
|
routesHistory: [],
|
|
197
193
|
currentRoute: {},
|
|
198
194
|
isRedirecting: false,
|
|
@@ -200,10 +196,13 @@ function createRouter({
|
|
|
200
196
|
restoreFromURL: void 0,
|
|
201
197
|
restoreFromServer: void 0,
|
|
202
198
|
get adapters() {
|
|
203
|
-
return adapters;
|
|
199
|
+
return config.adapters;
|
|
204
200
|
},
|
|
205
201
|
get routes() {
|
|
206
|
-
return routes;
|
|
202
|
+
return config.routes;
|
|
203
|
+
},
|
|
204
|
+
get lifecycleParams() {
|
|
205
|
+
return config.lifecycleParams;
|
|
207
206
|
}
|
|
208
207
|
});
|
|
209
208
|
router.restoreFromServer = function restoreFromServer(obj) {
|
|
@@ -211,23 +210,23 @@ function createRouter({
|
|
|
211
210
|
router.routesHistory.push(...obj.routesHistory || []);
|
|
212
211
|
Object.assign(router.currentRoute, obj.currentRoute);
|
|
213
212
|
});
|
|
214
|
-
const preloadedRouteName = Object.keys(routes).find(
|
|
213
|
+
const preloadedRouteName = Object.keys(router.routes).find(
|
|
215
214
|
(routeName) => router.currentRoute.name === routeName
|
|
216
215
|
);
|
|
217
|
-
return loadComponentToConfig({ route: routes[preloadedRouteName] });
|
|
216
|
+
return loadComponentToConfig({ route: router.routes[preloadedRouteName] });
|
|
218
217
|
};
|
|
219
218
|
router.restoreFromURL = function restoreFromURL(params) {
|
|
220
|
-
return router.redirect(getInitialRoute({ routes, ...params }));
|
|
219
|
+
return router.redirect(getInitialRoute({ routes: router.routes, ...params }));
|
|
221
220
|
};
|
|
222
|
-
router.redirect = async function redirect(
|
|
223
|
-
const { route: routeName, noHistoryPush } =
|
|
221
|
+
router.redirect = async function redirect(config2) {
|
|
222
|
+
const { route: routeName, noHistoryPush } = config2;
|
|
224
223
|
let currentRoute;
|
|
225
224
|
let currentPathname;
|
|
226
225
|
let currentUrl;
|
|
227
226
|
let currentSearch;
|
|
228
227
|
let currentQuery;
|
|
229
228
|
if (router.currentRoute?.name) {
|
|
230
|
-
currentRoute = routes[router.currentRoute.name];
|
|
229
|
+
currentRoute = router.routes[router.currentRoute.name];
|
|
231
230
|
currentPathname = replaceDynamicValues({
|
|
232
231
|
route: currentRoute,
|
|
233
232
|
params: router.currentRoute.params
|
|
@@ -236,18 +235,18 @@ function createRouter({
|
|
|
236
235
|
currentSearch = queryString.stringify(router.currentRoute.query);
|
|
237
236
|
currentUrl = `${currentPathname}${currentSearch ? `?${currentSearch}` : ""}`;
|
|
238
237
|
}
|
|
239
|
-
const nextRoute = routes[routeName];
|
|
238
|
+
const nextRoute = router.routes[routeName];
|
|
240
239
|
const nextPathname = replaceDynamicValues({
|
|
241
240
|
route: nextRoute,
|
|
242
|
-
params: "params" in
|
|
241
|
+
params: "params" in config2 ? config2.params : void 0
|
|
243
242
|
});
|
|
244
243
|
let nextQuery;
|
|
245
244
|
let nextUrl = nextPathname;
|
|
246
245
|
let nextSearch;
|
|
247
|
-
if ("query" in
|
|
246
|
+
if ("query" in config2 && config2.query) {
|
|
248
247
|
const clearedQuery = getQueryValues({
|
|
249
248
|
route: nextRoute,
|
|
250
|
-
pathname: `${nextPathname}?${queryString.stringify(
|
|
249
|
+
pathname: `${nextPathname}?${queryString.stringify(config2.query)}`
|
|
251
250
|
});
|
|
252
251
|
if (Object.keys(clearedQuery).length > 0) {
|
|
253
252
|
nextQuery = clearedQuery;
|
|
@@ -279,7 +278,7 @@ function createRouter({
|
|
|
279
278
|
router.isRedirecting = true;
|
|
280
279
|
});
|
|
281
280
|
try {
|
|
282
|
-
const
|
|
281
|
+
const config3 = {
|
|
283
282
|
nextUrl,
|
|
284
283
|
nextRoute,
|
|
285
284
|
nextQuery,
|
|
@@ -292,7 +291,7 @@ function createRouter({
|
|
|
292
291
|
currentPathname,
|
|
293
292
|
redirect: (redirectConfig2) => {
|
|
294
293
|
if (constants.isClient) return redirectConfig2;
|
|
295
|
-
const redirectRoute = routes[redirectConfig2.route];
|
|
294
|
+
const redirectRoute = router.routes[redirectConfig2.route];
|
|
296
295
|
const redirectParams = "params" in redirectConfig2 && redirectConfig2.params ? redirectConfig2.params : void 0;
|
|
297
296
|
let redirectUrl = replaceDynamicValues({
|
|
298
297
|
params: redirectParams,
|
|
@@ -313,10 +312,10 @@ function createRouter({
|
|
|
313
312
|
throw new PreventError(`Redirect to ${nextUrl} was prevented`);
|
|
314
313
|
}
|
|
315
314
|
};
|
|
316
|
-
await currentRoute?.beforeLeave?.(
|
|
317
|
-
const redirectConfig = await nextRoute.beforeEnter?.(
|
|
315
|
+
await currentRoute?.beforeLeave?.(config3, ...router.lifecycleParams || []);
|
|
316
|
+
const redirectConfig = await nextRoute.beforeEnter?.(config3, ...router.lifecycleParams || []);
|
|
318
317
|
if (redirectConfig) return redirect(redirectConfig);
|
|
319
|
-
await loadComponentToConfig({ route: routes[nextRoute.name] });
|
|
318
|
+
await loadComponentToConfig({ route: router.routes[nextRoute.name] });
|
|
320
319
|
} catch (error) {
|
|
321
320
|
if (error instanceof PreventError) {
|
|
322
321
|
return Promise.resolve();
|
|
@@ -325,15 +324,15 @@ function createRouter({
|
|
|
325
324
|
throw error;
|
|
326
325
|
}
|
|
327
326
|
console.error(error);
|
|
328
|
-
await loadComponentToConfig({ route: routes.internalError });
|
|
327
|
+
await loadComponentToConfig({ route: router.routes.internalError });
|
|
329
328
|
router.adapters.batch(() => {
|
|
330
329
|
router.adapters.replaceObject(router.currentRoute, {
|
|
331
|
-
name: routes.internalError.name,
|
|
332
|
-
path: routes.internalError.path,
|
|
333
|
-
props: routes[routes.internalError.name].props,
|
|
330
|
+
name: router.routes.internalError.name,
|
|
331
|
+
path: router.routes.internalError.path,
|
|
332
|
+
props: router.routes[router.routes.internalError.name].props,
|
|
334
333
|
query: router.adapters.makeObservable({}),
|
|
335
334
|
params: router.adapters.makeObservable({}),
|
|
336
|
-
pageId: routes[routes.internalError.name].pageId
|
|
335
|
+
pageId: router.routes[router.routes.internalError.name].pageId
|
|
337
336
|
});
|
|
338
337
|
router.isRedirecting = false;
|
|
339
338
|
});
|
|
@@ -343,10 +342,10 @@ function createRouter({
|
|
|
343
342
|
router.adapters.replaceObject(router.currentRoute, {
|
|
344
343
|
name: nextRoute.name,
|
|
345
344
|
path: nextRoute.path,
|
|
346
|
-
props: routes[nextRoute.name].props,
|
|
345
|
+
props: router.routes[nextRoute.name].props,
|
|
347
346
|
query: getQueryValues({ route: nextRoute, pathname: nextUrl }),
|
|
348
347
|
params: getDynamicValues({ route: nextRoute, pathname: nextUrl }),
|
|
349
|
-
pageId: routes[nextRoute.name].pageId
|
|
348
|
+
pageId: router.routes[nextRoute.name].pageId
|
|
350
349
|
});
|
|
351
350
|
const lastUrl = router.routesHistory[router.routesHistory.length - 1];
|
|
352
351
|
if (lastUrl !== nextUrl) {
|
|
@@ -355,7 +354,7 @@ function createRouter({
|
|
|
355
354
|
if (history && !noHistoryPush) {
|
|
356
355
|
history.push({
|
|
357
356
|
hash: history.location.hash,
|
|
358
|
-
search: "query" in
|
|
357
|
+
search: "query" in config2 ? `?${queryString.stringify(config2.query)}` : "",
|
|
359
358
|
pathname: nextPathname
|
|
360
359
|
});
|
|
361
360
|
}
|
|
@@ -0,0 +1,116 @@
|
|
|
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/vue/index.ts
|
|
21
|
+
var vue_exports = {};
|
|
22
|
+
__export(vue_exports, {
|
|
23
|
+
Router: () => Router
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(vue_exports);
|
|
26
|
+
|
|
27
|
+
// packages/vue/Router.ts
|
|
28
|
+
var import_reactive_route = require("reactive-route");
|
|
29
|
+
var import_vue = require("vue");
|
|
30
|
+
var Router = (0, import_vue.defineComponent)({
|
|
31
|
+
name: "ReactiveRouteRouter",
|
|
32
|
+
props: {
|
|
33
|
+
// We keep the type generic via TS, but at runtime it's just any
|
|
34
|
+
router: { type: Object, required: true },
|
|
35
|
+
beforeSetPageComponent: { type: Function, required: false },
|
|
36
|
+
beforeUpdatePageComponent: { type: Function, required: false },
|
|
37
|
+
beforeMount: { type: Function, required: false }
|
|
38
|
+
},
|
|
39
|
+
// TS helper, runtime ignored
|
|
40
|
+
setup(props) {
|
|
41
|
+
const disposerRef = (0, import_vue.reactive)({ current: null });
|
|
42
|
+
const config = props.router.adapters.makeObservable({
|
|
43
|
+
loadedComponentName: void 0,
|
|
44
|
+
loadedComponentPage: void 0,
|
|
45
|
+
currentProps: {}
|
|
46
|
+
});
|
|
47
|
+
function redirectOnHistoryPop() {
|
|
48
|
+
if (!import_reactive_route.history) return;
|
|
49
|
+
import_reactive_route.history.listen((params) => {
|
|
50
|
+
if (params.action !== "POP") return;
|
|
51
|
+
const previousRoutePathname = props.router.routesHistory[props.router.routesHistory.length - 2];
|
|
52
|
+
if (previousRoutePathname === params.location.pathname) {
|
|
53
|
+
props.router.routesHistory.pop();
|
|
54
|
+
}
|
|
55
|
+
void props.router.restoreFromURL({
|
|
56
|
+
pathname: import_reactive_route.history.location.pathname,
|
|
57
|
+
noHistoryPush: true
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
function setLoadedComponent() {
|
|
62
|
+
const currentRouteName = props.router.currentRoute.name;
|
|
63
|
+
const currentRoutePage = props.router.currentRoute.pageId;
|
|
64
|
+
const componentConfig = props.router.routes[currentRouteName];
|
|
65
|
+
let preventRedirect = false;
|
|
66
|
+
if (props.router.isRedirecting) preventRedirect = true;
|
|
67
|
+
else if (config.loadedComponentName === currentRouteName) {
|
|
68
|
+
preventRedirect = true;
|
|
69
|
+
} else if (config.loadedComponentPage != null && currentRouteName != null) {
|
|
70
|
+
if (config.loadedComponentPage === currentRoutePage) {
|
|
71
|
+
props.router.adapters.replaceObject(
|
|
72
|
+
config.currentProps,
|
|
73
|
+
"props" in componentConfig ? componentConfig.props : {}
|
|
74
|
+
);
|
|
75
|
+
preventRedirect = true;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (preventRedirect) return;
|
|
79
|
+
props.router.adapters.batch(() => {
|
|
80
|
+
if (config.loadedComponentName) {
|
|
81
|
+
props.beforeUpdatePageComponent?.();
|
|
82
|
+
}
|
|
83
|
+
props.beforeSetPageComponent?.(componentConfig);
|
|
84
|
+
props.router.adapters.batch(() => {
|
|
85
|
+
props.router.adapters.replaceObject(
|
|
86
|
+
config.currentProps,
|
|
87
|
+
"props" in componentConfig ? componentConfig.props : {}
|
|
88
|
+
);
|
|
89
|
+
config.loadedComponentName = currentRouteName;
|
|
90
|
+
config.loadedComponentPage = componentConfig.pageId;
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
setLoadedComponent();
|
|
95
|
+
(0, import_vue.onMounted)(() => {
|
|
96
|
+
props.beforeMount?.();
|
|
97
|
+
redirectOnHistoryPop();
|
|
98
|
+
if (props.router.adapters.immediateSetComponent) {
|
|
99
|
+
props.router.adapters.batch(() => {
|
|
100
|
+
setLoadedComponent();
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
const disposer = props.router.adapters.autorun(() => setLoadedComponent());
|
|
104
|
+
if (typeof disposer === "function") disposerRef.current = disposer;
|
|
105
|
+
});
|
|
106
|
+
(0, import_vue.onBeforeUnmount)(() => {
|
|
107
|
+
disposerRef.current?.();
|
|
108
|
+
});
|
|
109
|
+
return () => {
|
|
110
|
+
if (!config.loadedComponentName) return null;
|
|
111
|
+
const LoadedComponent = props.router.routes[config.loadedComponentName]?.component || null;
|
|
112
|
+
if (!LoadedComponent) return null;
|
|
113
|
+
return (0, import_vue.h)(LoadedComponent, { ...config.currentProps || {}, router: props.router });
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type": "commonjs"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TypeAdapters } from './types/TypeAdapters';
|
|
2
2
|
import { TypeRoute } from './types/TypeRoute';
|
|
3
3
|
import { TypeRouter } from './types/TypeRouter';
|
|
4
|
-
export declare function createRouter<TRoutes extends Record<string | 'notFound' | 'internalError', TypeRoute>>(
|
|
4
|
+
export declare function createRouter<TRoutes extends Record<string | 'notFound' | 'internalError', TypeRoute>>(config: {
|
|
5
5
|
routes: TRoutes;
|
|
6
6
|
adapters: TypeAdapters;
|
|
7
7
|
lifecycleParams?: Array<any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createRouter.d.ts","sourceRoot":"","sources":["../../packages/core/createRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAYhD,wBAAgB,YAAY,CAC1B,OAAO,SAAS,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,eAAe,EAAE,SAAS,CAAC,EACxE,
|
|
1
|
+
{"version":3,"file":"createRouter.d.ts","sourceRoot":"","sources":["../../packages/core/createRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAYhD,wBAAgB,YAAY,CAC1B,OAAO,SAAS,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,eAAe,EAAE,SAAS,CAAC,EACxE,MAAM,EAAE;IACR,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,YAAY,CAAC;IACvB,eAAe,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;CAC9B,GAAG,UAAU,CAAC,OAAO,CAAC,CAuPtB"}
|
|
@@ -17,5 +17,6 @@ export type TypeRouter<TRoutes extends Record<string | 'notFound' | 'internalErr
|
|
|
17
17
|
routesHistory: Array<string>;
|
|
18
18
|
currentRoute: TypeCurrentRoute<TRoutes[keyof TRoutes]>;
|
|
19
19
|
}): Promise<void>;
|
|
20
|
+
lifecycleParams?: Array<any>;
|
|
20
21
|
};
|
|
21
22
|
//# sourceMappingURL=TypeRouter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeRouter.d.ts","sourceRoot":"","sources":["../../../packages/core/types/TypeRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,MAAM,UAAU,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,eAAe,EAAE,SAAS,CAAC,IAAI;IACjG,MAAM,EAAE,OAAO,CAAC;IAChB,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,QAAQ,CAAC,UAAU,SAAS,MAAM,OAAO,EACvC,MAAM,EAAE,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,GAC9C,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,cAAc,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrF,iBAAiB,CAAC,GAAG,EAAE;QACrB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7B,YAAY,EAAE,gBAAgB,CAAC,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC;KACxD,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"TypeRouter.d.ts","sourceRoot":"","sources":["../../../packages/core/types/TypeRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,MAAM,UAAU,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,eAAe,EAAE,SAAS,CAAC,IAAI;IACjG,MAAM,EAAE,OAAO,CAAC;IAChB,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,QAAQ,CAAC,UAAU,SAAS,MAAM,OAAO,EACvC,MAAM,EAAE,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,GAC9C,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,cAAc,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrF,iBAAiB,CAAC,GAAG,EAAE;QACrB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7B,YAAY,EAAE,gBAAgB,CAAC,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC;KACxD,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClB,eAAe,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;CAC9B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// packages/adapters/vue.ts
|
|
2
|
+
import { reactive, watchEffect } from "vue";
|
|
3
|
+
var adapters = {
|
|
4
|
+
batch: (cb) => cb(),
|
|
5
|
+
autorun: watchEffect,
|
|
6
|
+
replaceObject: (obj, newObj) => {
|
|
7
|
+
for (const variableKey in obj) {
|
|
8
|
+
if (obj.hasOwnProperty(variableKey)) {
|
|
9
|
+
delete obj[variableKey];
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
Object.assign(obj, newObj);
|
|
13
|
+
},
|
|
14
|
+
makeObservable: reactive
|
|
15
|
+
};
|
|
16
|
+
export {
|
|
17
|
+
adapters
|
|
18
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type": "module"}
|
package/dist/esm/index.js
CHANGED
|
@@ -156,12 +156,8 @@ function replaceDynamicValues({
|
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
// packages/core/createRouter.ts
|
|
159
|
-
function createRouter({
|
|
160
|
-
|
|
161
|
-
adapters,
|
|
162
|
-
lifecycleParams
|
|
163
|
-
}) {
|
|
164
|
-
const router = adapters.makeObservable({
|
|
159
|
+
function createRouter(config) {
|
|
160
|
+
const router = config.adapters.makeObservable({
|
|
165
161
|
routesHistory: [],
|
|
166
162
|
currentRoute: {},
|
|
167
163
|
isRedirecting: false,
|
|
@@ -169,10 +165,13 @@ function createRouter({
|
|
|
169
165
|
restoreFromURL: void 0,
|
|
170
166
|
restoreFromServer: void 0,
|
|
171
167
|
get adapters() {
|
|
172
|
-
return adapters;
|
|
168
|
+
return config.adapters;
|
|
173
169
|
},
|
|
174
170
|
get routes() {
|
|
175
|
-
return routes;
|
|
171
|
+
return config.routes;
|
|
172
|
+
},
|
|
173
|
+
get lifecycleParams() {
|
|
174
|
+
return config.lifecycleParams;
|
|
176
175
|
}
|
|
177
176
|
});
|
|
178
177
|
router.restoreFromServer = function restoreFromServer(obj) {
|
|
@@ -180,23 +179,23 @@ function createRouter({
|
|
|
180
179
|
router.routesHistory.push(...obj.routesHistory || []);
|
|
181
180
|
Object.assign(router.currentRoute, obj.currentRoute);
|
|
182
181
|
});
|
|
183
|
-
const preloadedRouteName = Object.keys(routes).find(
|
|
182
|
+
const preloadedRouteName = Object.keys(router.routes).find(
|
|
184
183
|
(routeName) => router.currentRoute.name === routeName
|
|
185
184
|
);
|
|
186
|
-
return loadComponentToConfig({ route: routes[preloadedRouteName] });
|
|
185
|
+
return loadComponentToConfig({ route: router.routes[preloadedRouteName] });
|
|
187
186
|
};
|
|
188
187
|
router.restoreFromURL = function restoreFromURL(params) {
|
|
189
|
-
return router.redirect(getInitialRoute({ routes, ...params }));
|
|
188
|
+
return router.redirect(getInitialRoute({ routes: router.routes, ...params }));
|
|
190
189
|
};
|
|
191
|
-
router.redirect = async function redirect(
|
|
192
|
-
const { route: routeName, noHistoryPush } =
|
|
190
|
+
router.redirect = async function redirect(config2) {
|
|
191
|
+
const { route: routeName, noHistoryPush } = config2;
|
|
193
192
|
let currentRoute;
|
|
194
193
|
let currentPathname;
|
|
195
194
|
let currentUrl;
|
|
196
195
|
let currentSearch;
|
|
197
196
|
let currentQuery;
|
|
198
197
|
if (router.currentRoute?.name) {
|
|
199
|
-
currentRoute = routes[router.currentRoute.name];
|
|
198
|
+
currentRoute = router.routes[router.currentRoute.name];
|
|
200
199
|
currentPathname = replaceDynamicValues({
|
|
201
200
|
route: currentRoute,
|
|
202
201
|
params: router.currentRoute.params
|
|
@@ -205,18 +204,18 @@ function createRouter({
|
|
|
205
204
|
currentSearch = queryString.stringify(router.currentRoute.query);
|
|
206
205
|
currentUrl = `${currentPathname}${currentSearch ? `?${currentSearch}` : ""}`;
|
|
207
206
|
}
|
|
208
|
-
const nextRoute = routes[routeName];
|
|
207
|
+
const nextRoute = router.routes[routeName];
|
|
209
208
|
const nextPathname = replaceDynamicValues({
|
|
210
209
|
route: nextRoute,
|
|
211
|
-
params: "params" in
|
|
210
|
+
params: "params" in config2 ? config2.params : void 0
|
|
212
211
|
});
|
|
213
212
|
let nextQuery;
|
|
214
213
|
let nextUrl = nextPathname;
|
|
215
214
|
let nextSearch;
|
|
216
|
-
if ("query" in
|
|
215
|
+
if ("query" in config2 && config2.query) {
|
|
217
216
|
const clearedQuery = getQueryValues({
|
|
218
217
|
route: nextRoute,
|
|
219
|
-
pathname: `${nextPathname}?${queryString.stringify(
|
|
218
|
+
pathname: `${nextPathname}?${queryString.stringify(config2.query)}`
|
|
220
219
|
});
|
|
221
220
|
if (Object.keys(clearedQuery).length > 0) {
|
|
222
221
|
nextQuery = clearedQuery;
|
|
@@ -248,7 +247,7 @@ function createRouter({
|
|
|
248
247
|
router.isRedirecting = true;
|
|
249
248
|
});
|
|
250
249
|
try {
|
|
251
|
-
const
|
|
250
|
+
const config3 = {
|
|
252
251
|
nextUrl,
|
|
253
252
|
nextRoute,
|
|
254
253
|
nextQuery,
|
|
@@ -261,7 +260,7 @@ function createRouter({
|
|
|
261
260
|
currentPathname,
|
|
262
261
|
redirect: (redirectConfig2) => {
|
|
263
262
|
if (constants.isClient) return redirectConfig2;
|
|
264
|
-
const redirectRoute = routes[redirectConfig2.route];
|
|
263
|
+
const redirectRoute = router.routes[redirectConfig2.route];
|
|
265
264
|
const redirectParams = "params" in redirectConfig2 && redirectConfig2.params ? redirectConfig2.params : void 0;
|
|
266
265
|
let redirectUrl = replaceDynamicValues({
|
|
267
266
|
params: redirectParams,
|
|
@@ -282,10 +281,10 @@ function createRouter({
|
|
|
282
281
|
throw new PreventError(`Redirect to ${nextUrl} was prevented`);
|
|
283
282
|
}
|
|
284
283
|
};
|
|
285
|
-
await currentRoute?.beforeLeave?.(
|
|
286
|
-
const redirectConfig = await nextRoute.beforeEnter?.(
|
|
284
|
+
await currentRoute?.beforeLeave?.(config3, ...router.lifecycleParams || []);
|
|
285
|
+
const redirectConfig = await nextRoute.beforeEnter?.(config3, ...router.lifecycleParams || []);
|
|
287
286
|
if (redirectConfig) return redirect(redirectConfig);
|
|
288
|
-
await loadComponentToConfig({ route: routes[nextRoute.name] });
|
|
287
|
+
await loadComponentToConfig({ route: router.routes[nextRoute.name] });
|
|
289
288
|
} catch (error) {
|
|
290
289
|
if (error instanceof PreventError) {
|
|
291
290
|
return Promise.resolve();
|
|
@@ -294,15 +293,15 @@ function createRouter({
|
|
|
294
293
|
throw error;
|
|
295
294
|
}
|
|
296
295
|
console.error(error);
|
|
297
|
-
await loadComponentToConfig({ route: routes.internalError });
|
|
296
|
+
await loadComponentToConfig({ route: router.routes.internalError });
|
|
298
297
|
router.adapters.batch(() => {
|
|
299
298
|
router.adapters.replaceObject(router.currentRoute, {
|
|
300
|
-
name: routes.internalError.name,
|
|
301
|
-
path: routes.internalError.path,
|
|
302
|
-
props: routes[routes.internalError.name].props,
|
|
299
|
+
name: router.routes.internalError.name,
|
|
300
|
+
path: router.routes.internalError.path,
|
|
301
|
+
props: router.routes[router.routes.internalError.name].props,
|
|
303
302
|
query: router.adapters.makeObservable({}),
|
|
304
303
|
params: router.adapters.makeObservable({}),
|
|
305
|
-
pageId: routes[routes.internalError.name].pageId
|
|
304
|
+
pageId: router.routes[router.routes.internalError.name].pageId
|
|
306
305
|
});
|
|
307
306
|
router.isRedirecting = false;
|
|
308
307
|
});
|
|
@@ -312,10 +311,10 @@ function createRouter({
|
|
|
312
311
|
router.adapters.replaceObject(router.currentRoute, {
|
|
313
312
|
name: nextRoute.name,
|
|
314
313
|
path: nextRoute.path,
|
|
315
|
-
props: routes[nextRoute.name].props,
|
|
314
|
+
props: router.routes[nextRoute.name].props,
|
|
316
315
|
query: getQueryValues({ route: nextRoute, pathname: nextUrl }),
|
|
317
316
|
params: getDynamicValues({ route: nextRoute, pathname: nextUrl }),
|
|
318
|
-
pageId: routes[nextRoute.name].pageId
|
|
317
|
+
pageId: router.routes[nextRoute.name].pageId
|
|
319
318
|
});
|
|
320
319
|
const lastUrl = router.routesHistory[router.routesHistory.length - 1];
|
|
321
320
|
if (lastUrl !== nextUrl) {
|
|
@@ -324,7 +323,7 @@ function createRouter({
|
|
|
324
323
|
if (history && !noHistoryPush) {
|
|
325
324
|
history.push({
|
|
326
325
|
hash: history.location.hash,
|
|
327
|
-
search: "query" in
|
|
326
|
+
search: "query" in config2 ? `?${queryString.stringify(config2.query)}` : "",
|
|
328
327
|
pathname: nextPathname
|
|
329
328
|
});
|
|
330
329
|
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
// packages/vue/Router.ts
|
|
2
|
+
import { history } from "reactive-route";
|
|
3
|
+
import { defineComponent, h, onBeforeUnmount, onMounted, reactive } from "vue";
|
|
4
|
+
var Router = defineComponent({
|
|
5
|
+
name: "ReactiveRouteRouter",
|
|
6
|
+
props: {
|
|
7
|
+
// We keep the type generic via TS, but at runtime it's just any
|
|
8
|
+
router: { type: Object, required: true },
|
|
9
|
+
beforeSetPageComponent: { type: Function, required: false },
|
|
10
|
+
beforeUpdatePageComponent: { type: Function, required: false },
|
|
11
|
+
beforeMount: { type: Function, required: false }
|
|
12
|
+
},
|
|
13
|
+
// TS helper, runtime ignored
|
|
14
|
+
setup(props) {
|
|
15
|
+
const disposerRef = reactive({ current: null });
|
|
16
|
+
const config = props.router.adapters.makeObservable({
|
|
17
|
+
loadedComponentName: void 0,
|
|
18
|
+
loadedComponentPage: void 0,
|
|
19
|
+
currentProps: {}
|
|
20
|
+
});
|
|
21
|
+
function redirectOnHistoryPop() {
|
|
22
|
+
if (!history) return;
|
|
23
|
+
history.listen((params) => {
|
|
24
|
+
if (params.action !== "POP") return;
|
|
25
|
+
const previousRoutePathname = props.router.routesHistory[props.router.routesHistory.length - 2];
|
|
26
|
+
if (previousRoutePathname === params.location.pathname) {
|
|
27
|
+
props.router.routesHistory.pop();
|
|
28
|
+
}
|
|
29
|
+
void props.router.restoreFromURL({
|
|
30
|
+
pathname: history.location.pathname,
|
|
31
|
+
noHistoryPush: true
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
function setLoadedComponent() {
|
|
36
|
+
const currentRouteName = props.router.currentRoute.name;
|
|
37
|
+
const currentRoutePage = props.router.currentRoute.pageId;
|
|
38
|
+
const componentConfig = props.router.routes[currentRouteName];
|
|
39
|
+
let preventRedirect = false;
|
|
40
|
+
if (props.router.isRedirecting) preventRedirect = true;
|
|
41
|
+
else if (config.loadedComponentName === currentRouteName) {
|
|
42
|
+
preventRedirect = true;
|
|
43
|
+
} else if (config.loadedComponentPage != null && currentRouteName != null) {
|
|
44
|
+
if (config.loadedComponentPage === currentRoutePage) {
|
|
45
|
+
props.router.adapters.replaceObject(
|
|
46
|
+
config.currentProps,
|
|
47
|
+
"props" in componentConfig ? componentConfig.props : {}
|
|
48
|
+
);
|
|
49
|
+
preventRedirect = true;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (preventRedirect) return;
|
|
53
|
+
props.router.adapters.batch(() => {
|
|
54
|
+
if (config.loadedComponentName) {
|
|
55
|
+
props.beforeUpdatePageComponent?.();
|
|
56
|
+
}
|
|
57
|
+
props.beforeSetPageComponent?.(componentConfig);
|
|
58
|
+
props.router.adapters.batch(() => {
|
|
59
|
+
props.router.adapters.replaceObject(
|
|
60
|
+
config.currentProps,
|
|
61
|
+
"props" in componentConfig ? componentConfig.props : {}
|
|
62
|
+
);
|
|
63
|
+
config.loadedComponentName = currentRouteName;
|
|
64
|
+
config.loadedComponentPage = componentConfig.pageId;
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
setLoadedComponent();
|
|
69
|
+
onMounted(() => {
|
|
70
|
+
props.beforeMount?.();
|
|
71
|
+
redirectOnHistoryPop();
|
|
72
|
+
if (props.router.adapters.immediateSetComponent) {
|
|
73
|
+
props.router.adapters.batch(() => {
|
|
74
|
+
setLoadedComponent();
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
const disposer = props.router.adapters.autorun(() => setLoadedComponent());
|
|
78
|
+
if (typeof disposer === "function") disposerRef.current = disposer;
|
|
79
|
+
});
|
|
80
|
+
onBeforeUnmount(() => {
|
|
81
|
+
disposerRef.current?.();
|
|
82
|
+
});
|
|
83
|
+
return () => {
|
|
84
|
+
if (!config.loadedComponentName) return null;
|
|
85
|
+
const LoadedComponent = props.router.routes[config.loadedComponentName]?.component || null;
|
|
86
|
+
if (!LoadedComponent) return null;
|
|
87
|
+
return h(LoadedComponent, { ...config.currentProps || {}, router: props.router });
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
export {
|
|
92
|
+
Router
|
|
93
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type": "module"}
|
|
@@ -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/createRouter.ts","../packages/core/createRoutes.ts","../packages/core/index.ts","../packages/core/types/TypeAdapters.ts","../packages/core/types/TypeCurrentRoute.ts","../packages/core/types/TypeLifecycleConfig.ts","../packages/core/types/TypePropsRouter.ts","../packages/core/types/TypeRedirectParams.ts","../packages/core/types/TypeRoute.ts","../packages/core/types/TypeRouteRaw.ts","../packages/core/types/TypeRouter.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"}
|
|
1
|
+
{"root":["../packages/declarations.d.ts","../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/adapters/vue.ts","../packages/core/createRouter.ts","../packages/core/createRoutes.ts","../packages/core/index.ts","../packages/core/types/TypeAdapters.ts","../packages/core/types/TypeCurrentRoute.ts","../packages/core/types/TypeLifecycleConfig.ts","../packages/core/types/TypePropsRouter.ts","../packages/core/types/TypeRedirectParams.ts","../packages/core/types/TypeRoute.ts","../packages/core/types/TypeRouteRaw.ts","../packages/core/types/TypeRouter.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","../packages/vue/Router.ts","../packages/vue/index.ts"],"version":"5.9.2"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const Router: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
2
|
+
[key: string]: any;
|
|
3
|
+
}> | null, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
4
|
+
//# sourceMappingURL=Router.d.ts.map
|