@plumile/router 0.1.5
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 +21 -0
- package/README.md +1 -0
- package/lib/esm/ResourcePage.d.ts +15 -0
- package/lib/esm/ResourcePage.d.ts.map +1 -0
- package/lib/esm/ResourcePage.js +64 -0
- package/lib/esm/builder.d.ts +13 -0
- package/lib/esm/builder.d.ts.map +1 -0
- package/lib/esm/builder.js +64 -0
- package/lib/esm/errors/HttpRedirect.d.ts +6 -0
- package/lib/esm/errors/HttpRedirect.d.ts.map +1 -0
- package/lib/esm/errors/HttpRedirect.js +11 -0
- package/lib/esm/errors/index.d.ts +2 -0
- package/lib/esm/errors/index.d.ts.map +1 -0
- package/lib/esm/errors/index.js +2 -0
- package/lib/esm/history/BrowserHistory.d.ts +16 -0
- package/lib/esm/history/BrowserHistory.d.ts.map +1 -0
- package/lib/esm/history/BrowserHistory.js +59 -0
- package/lib/esm/history/index.d.ts +3 -0
- package/lib/esm/history/index.d.ts.map +1 -0
- package/lib/esm/history/index.js +2 -0
- package/lib/esm/history/types.d.ts +12 -0
- package/lib/esm/history/types.d.ts.map +1 -0
- package/lib/esm/history/types.js +2 -0
- package/lib/esm/index.d.ts +8 -0
- package/lib/esm/index.d.ts.map +1 -0
- package/lib/esm/index.js +7 -0
- package/lib/esm/routing/Link.d.ts +21 -0
- package/lib/esm/routing/Link.d.ts.map +1 -0
- package/lib/esm/routing/Link.js +99 -0
- package/lib/esm/routing/RouteComponent.d.ts +8 -0
- package/lib/esm/routing/RouteComponent.d.ts.map +1 -0
- package/lib/esm/routing/RouteComponent.js +20 -0
- package/lib/esm/routing/RouteComponentWrapper.d.ts +10 -0
- package/lib/esm/routing/RouteComponentWrapper.d.ts.map +1 -0
- package/lib/esm/routing/RouteComponentWrapper.js +72 -0
- package/lib/esm/routing/RouterRenderer.d.ts +10 -0
- package/lib/esm/routing/RouterRenderer.d.ts.map +1 -0
- package/lib/esm/routing/RouterRenderer.js +67 -0
- package/lib/esm/routing/RoutingContext.d.ts +5 -0
- package/lib/esm/routing/RoutingContext.d.ts.map +1 -0
- package/lib/esm/routing/RoutingContext.js +4 -0
- package/lib/esm/routing/createRouter.d.ts +7 -0
- package/lib/esm/routing/createRouter.d.ts.map +1 -0
- package/lib/esm/routing/createRouter.js +75 -0
- package/lib/esm/routing/index.d.ts +7 -0
- package/lib/esm/routing/index.d.ts.map +1 -0
- package/lib/esm/routing/index.js +7 -0
- package/lib/esm/tools/index.d.ts +3 -0
- package/lib/esm/tools/index.d.ts.map +1 -0
- package/lib/esm/tools/index.js +13 -0
- package/lib/esm/tools.d.ts +7 -0
- package/lib/esm/tools.d.ts.map +1 -0
- package/lib/esm/tools.js +58 -0
- package/lib/esm/types.d.ts +86 -0
- package/lib/esm/types.d.ts.map +1 -0
- package/lib/esm/types.js +2 -0
- package/lib/tsconfig.esm.tsbuildinfo +1 -0
- package/lib/types/ResourcePage.d.ts +15 -0
- package/lib/types/ResourcePage.d.ts.map +1 -0
- package/lib/types/builder.d.ts +13 -0
- package/lib/types/builder.d.ts.map +1 -0
- package/lib/types/errors/HttpRedirect.d.ts +6 -0
- package/lib/types/errors/HttpRedirect.d.ts.map +1 -0
- package/lib/types/errors/index.d.ts +2 -0
- package/lib/types/errors/index.d.ts.map +1 -0
- package/lib/types/history/BrowserHistory.d.ts +16 -0
- package/lib/types/history/BrowserHistory.d.ts.map +1 -0
- package/lib/types/history/index.d.ts +3 -0
- package/lib/types/history/index.d.ts.map +1 -0
- package/lib/types/history/types.d.ts +12 -0
- package/lib/types/history/types.d.ts.map +1 -0
- package/lib/types/index.d.ts +8 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/routing/Link.d.ts +21 -0
- package/lib/types/routing/Link.d.ts.map +1 -0
- package/lib/types/routing/RouteComponent.d.ts +8 -0
- package/lib/types/routing/RouteComponent.d.ts.map +1 -0
- package/lib/types/routing/RouteComponentWrapper.d.ts +10 -0
- package/lib/types/routing/RouteComponentWrapper.d.ts.map +1 -0
- package/lib/types/routing/RouterRenderer.d.ts +10 -0
- package/lib/types/routing/RouterRenderer.d.ts.map +1 -0
- package/lib/types/routing/RoutingContext.d.ts +5 -0
- package/lib/types/routing/RoutingContext.d.ts.map +1 -0
- package/lib/types/routing/createRouter.d.ts +7 -0
- package/lib/types/routing/createRouter.d.ts.map +1 -0
- package/lib/types/routing/index.d.ts +7 -0
- package/lib/types/routing/index.d.ts.map +1 -0
- package/lib/types/tools/index.d.ts +3 -0
- package/lib/types/tools/index.d.ts.map +1 -0
- package/lib/types/tools.d.ts +7 -0
- package/lib/types/tools.d.ts.map +1 -0
- package/lib/types/types.d.ts +86 -0
- package/lib/types/types.d.ts.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useContext, useMemo } from 'react';
|
|
3
|
+
import { HttpRedirect } from '../errors/index.js';
|
|
4
|
+
import RoutingContext from './RoutingContext.js';
|
|
5
|
+
import RouteComponent from './RouteComponent.js';
|
|
6
|
+
const RouteComponentWrapper = (props) => {
|
|
7
|
+
const { children, match, preparedRoute } = props;
|
|
8
|
+
const { resourcePage, prepared, render, redirectTo } = preparedRoute;
|
|
9
|
+
const router = useContext(RoutingContext);
|
|
10
|
+
const route = useMemo(() => {
|
|
11
|
+
if (match == null) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
return match.route;
|
|
15
|
+
}, [match]);
|
|
16
|
+
const Component = useMemo(() => {
|
|
17
|
+
if (resourcePage == null) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
return resourcePage.read();
|
|
21
|
+
}, [resourcePage]);
|
|
22
|
+
let content = null;
|
|
23
|
+
let redirectToPathname = null;
|
|
24
|
+
if (render != null) {
|
|
25
|
+
try {
|
|
26
|
+
content = render({
|
|
27
|
+
children,
|
|
28
|
+
Component,
|
|
29
|
+
preparedRoute,
|
|
30
|
+
route,
|
|
31
|
+
prepared,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
if (error instanceof HttpRedirect && router != null) {
|
|
36
|
+
content = null;
|
|
37
|
+
redirectToPathname = error.redirectTo;
|
|
38
|
+
}
|
|
39
|
+
else if (error instanceof Promise) {
|
|
40
|
+
content = error;
|
|
41
|
+
}
|
|
42
|
+
else if (typeof error === 'undefined') {
|
|
43
|
+
content = undefined;
|
|
44
|
+
redirectToPathname = null;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
console.error('ERROR: ', error);
|
|
48
|
+
content = null;
|
|
49
|
+
redirectToPathname = null;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const pathname = redirectTo ?? redirectToPathname ?? null;
|
|
54
|
+
if (render != null) {
|
|
55
|
+
if (content instanceof Promise) {
|
|
56
|
+
throw content;
|
|
57
|
+
}
|
|
58
|
+
if (pathname != null) {
|
|
59
|
+
return _jsx(RouteComponent, { redirectToPathname: pathname });
|
|
60
|
+
}
|
|
61
|
+
if (typeof content !== 'undefined') {
|
|
62
|
+
return content;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (Component == null) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const content2 = (_jsx(Component, { match: match, preparedRoute: preparedRoute, route: route, prepared: prepared, children: children }));
|
|
69
|
+
return _jsx(RouteComponent, { redirectToPathname: pathname, content: content2 });
|
|
70
|
+
};
|
|
71
|
+
export default RouteComponentWrapper;
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGVDb21wb25lbnRXcmFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JvdXRpbmcvUm91dGVDb21wb25lbnRXcmFwcGVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQVksTUFBTSxPQUFPLENBQUM7QUFHdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWxELE9BQU8sY0FBYyxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sY0FBYyxNQUFNLHFCQUFxQixDQUFDO0FBbUJqRCxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBWSxFQUFzQixFQUFFO0lBQ2pFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUNqRCxNQUFNLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsYUFBYSxDQUFDO0lBRXJFLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUUxQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFO1FBQ3pCLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQztJQUNyQixDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBR1osTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRTtRQUM3QixJQUFJLFlBQVksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN6QixPQUFPO1FBQ1QsQ0FBQztRQUdELE9BQU8sWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdCLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFFbkIsSUFBSSxPQUFPLEdBQWtELElBQUksQ0FBQztJQUNsRSxJQUFJLGtCQUFrQixHQUFrQixJQUFJLENBQUM7SUFFN0MsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDO1lBQ0gsT0FBTyxHQUFHLE1BQU0sQ0FBQztnQkFDZixRQUFRO2dCQUVSLFNBQVM7Z0JBQ1QsYUFBYTtnQkFDYixLQUFLO2dCQUNMLFFBQVE7YUFDVCxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksS0FBSyxZQUFZLFlBQVksSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3BELE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ2Ysa0JBQWtCLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztZQUV4QyxDQUFDO2lCQUFNLElBQUksS0FBSyxZQUFZLE9BQU8sRUFBRSxDQUFDO2dCQUNwQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ2xCLENBQUM7aUJBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDeEMsT0FBTyxHQUFHLFNBQVMsQ0FBQztnQkFDcEIsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1lBQzVCLENBQUM7aUJBQU0sQ0FBQztnQkFFTixPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDaEMsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDZixrQkFBa0IsR0FBRyxJQUFJLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQWtCLFVBQVUsSUFBSSxrQkFBa0IsSUFBSSxJQUFJLENBQUM7SUFFekUsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbkIsSUFBSSxPQUFPLFlBQVksT0FBTyxFQUFFLENBQUM7WUFFL0IsTUFBTSxPQUFPLENBQUM7UUFDaEIsQ0FBQztRQUVELElBQUksUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3JCLE9BQU8sS0FBQyxjQUFjLElBQUMsa0JBQWtCLEVBQUUsUUFBUSxHQUFJLENBQUM7UUFDMUQsQ0FBQztRQUVELElBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDbkMsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxDQUVmLEtBQUMsU0FBUyxJQUNSLEtBQUssRUFBRSxLQUFLLEVBQ1osYUFBYSxFQUFFLGFBQWEsRUFDNUIsS0FBSyxFQUFFLEtBQUssRUFDWixRQUFRLEVBQUUsUUFBUSxZQUVqQixRQUFRLEdBQ0MsQ0FDYixDQUFDO0lBRUYsT0FBTyxLQUFDLGNBQWMsSUFBQyxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsR0FBSSxDQUFDO0FBQzdFLENBQUMsQ0FBQztBQUVGLGVBQWUscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VNZW1vLCB0eXBlIEpTWCB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHR5cGUgeyBQcmVwYXJlZE1hdGNoUm91dGUsIFJvdXRlck1hdGNoZWRSb3V0ZSB9IGZyb20gJy4uL3R5cGVzLmpzJztcbmltcG9ydCB7IEh0dHBSZWRpcmVjdCB9IGZyb20gJy4uL2Vycm9ycy9pbmRleC5qcyc7XG5cbmltcG9ydCBSb3V0aW5nQ29udGV4dCBmcm9tICcuL1JvdXRpbmdDb250ZXh0LmpzJztcbmltcG9ydCBSb3V0ZUNvbXBvbmVudCBmcm9tICcuL1JvdXRlQ29tcG9uZW50LmpzJztcblxudHlwZSBQcm9wcyA9IHtcbiAgY2hpbGRyZW4/OiBhbnk7XG4gIG1hdGNoOiBSb3V0ZXJNYXRjaGVkUm91dGU8YW55PiB8IG51bGw7XG4gIHByZXBhcmVkUm91dGU6IFByZXBhcmVkTWF0Y2hSb3V0ZTtcbn07XG5cbi8qKlxuICogVGhlIGByZXNvdXJjZVBhZ2VgIHByb3BlcnR5IGZyb20gdGhlIHJvdXRlIGVudHJ5IGlzIGEgUmVzb3VyY2UsIHdoaWNoIG1heSBvciBtYXkgbm90IGJlIHJlYWR5LlxuICogV2UgdXNlIGEgaGVscGVyIGNoaWxkIGNvbXBvbmVudCB0byB1bndyYXAgdGhlIHJlc291cmNlIHdpdGggY29tcG9uZW50LnJlYWQoKSwgYW5kIHRoZW5cbiAqIHJlbmRlciBpdCBpZiBpdHMgcmVhZHkuXG4gKlxuICogTk9URTogY2FsbGluZyByb3V0ZUVudHJ5LnJvdXRlLmNvbXBvbmVudC5yZWFkKCkgZGlyZWN0bHkgaW4gUm91dGVSZW5kZXJlciB3b2xkbid0IHdvcmsgdGhlXG4gKiB3YXkgd2UnZCBleHBlY3QuIEJlY2F1c2UgdGhhdCBtZXRob2QgY291bGQgdGhyb3cgLSBlaXRoZXIgc3VzcGVuZGluZyBvciBvbiBlcnJvciAtIHRoZSBlcnJvclxuICogd291bGQgYnViYmxlIHVwIHRvIHRoZSAqY2FsbGVyKiBvZiBSb3V0ZVJlbmRlcmVyLiBXZSB3YW50IHRoZSBzdXNwZW5kL2Vycm9yIHRvIGJ1YmJsZSB1cCB0b1xuICogb3VyIEVycm9yQm91bmRhcnkvU3VzcGVuc2UgY29tcG9uZW50cywgc28gd2UgaGF2ZSB0byBlbnN1cmUgdGhhdCB0aGUgc3VzcGVuZC9lcnJvciBoYXBwZW5zXG4gKiBpbiBhIGNoaWxkIGNvbXBvbmVudC5cbiAqL1xuY29uc3QgUm91dGVDb21wb25lbnRXcmFwcGVyID0gKHByb3BzOiBQcm9wcyk6IEpTWC5FbGVtZW50IHwgbnVsbCA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIG1hdGNoLCBwcmVwYXJlZFJvdXRlIH0gPSBwcm9wcztcbiAgY29uc3QgeyByZXNvdXJjZVBhZ2UsIHByZXBhcmVkLCByZW5kZXIsIHJlZGlyZWN0VG8gfSA9IHByZXBhcmVkUm91dGU7IC8vIHJvdXRlRGF0YVxuXG4gIGNvbnN0IHJvdXRlciA9IHVzZUNvbnRleHQoUm91dGluZ0NvbnRleHQpO1xuXG4gIGNvbnN0IHJvdXRlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKG1hdGNoID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBtYXRjaC5yb3V0ZTtcbiAgfSwgW21hdGNoXSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcm9taXNlLWZ1bmN0aW9uLWFzeW5jXG4gIGNvbnN0IENvbXBvbmVudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChyZXNvdXJjZVBhZ2UgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICAgIHJldHVybiByZXNvdXJjZVBhZ2UucmVhZCgpO1xuICB9LCBbcmVzb3VyY2VQYWdlXSk7XG5cbiAgbGV0IGNvbnRlbnQ6IEpTWC5FbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCB8IFByb21pc2U8YW55PiA9IG51bGw7XG4gIGxldCByZWRpcmVjdFRvUGF0aG5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGlmIChyZW5kZXIgIT0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICBjb250ZW50ID0gcmVuZGVyKHtcbiAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IE9LIGNhbiBiZSBhIHN1c3BlbmRcbiAgICAgICAgQ29tcG9uZW50LFxuICAgICAgICBwcmVwYXJlZFJvdXRlLFxuICAgICAgICByb3V0ZSxcbiAgICAgICAgcHJlcGFyZWQsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cFJlZGlyZWN0ICYmIHJvdXRlciAhPSBudWxsKSB7XG4gICAgICAgIGNvbnRlbnQgPSBudWxsO1xuICAgICAgICByZWRpcmVjdFRvUGF0aG5hbWUgPSBlcnJvci5yZWRpcmVjdFRvO1xuICAgICAgICAvLyBJZiBpdCdzIHN1c3BlbmRlZFxuICAgICAgfSBlbHNlIGlmIChlcnJvciBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgY29udGVudCA9IGVycm9yO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZXJyb3IgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnRlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJlZGlyZWN0VG9QYXRobmFtZSA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmVycm9yKCdFUlJPUjogJywgZXJyb3IpO1xuICAgICAgICBjb250ZW50ID0gbnVsbDtcbiAgICAgICAgcmVkaXJlY3RUb1BhdGhuYW1lID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBwYXRobmFtZTogc3RyaW5nIHwgbnVsbCA9IHJlZGlyZWN0VG8gPz8gcmVkaXJlY3RUb1BhdGhuYW1lID8/IG51bGw7XG5cbiAgaWYgKHJlbmRlciAhPSBudWxsKSB7XG4gICAgaWYgKGNvbnRlbnQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L29ubHktdGhyb3ctZXJyb3JcbiAgICAgIHRocm93IGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgaWYgKHBhdGhuYW1lICE9IG51bGwpIHtcbiAgICAgIHJldHVybiA8Um91dGVDb21wb25lbnQgcmVkaXJlY3RUb1BhdGhuYW1lPXtwYXRobmFtZX0gLz47XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjb250ZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgaWYgKENvbXBvbmVudCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjb250ZW50MiA9IChcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBPS1xuICAgIDxDb21wb25lbnRcbiAgICAgIG1hdGNoPXttYXRjaH1cbiAgICAgIHByZXBhcmVkUm91dGU9e3ByZXBhcmVkUm91dGV9XG4gICAgICByb3V0ZT17cm91dGV9XG4gICAgICBwcmVwYXJlZD17cHJlcGFyZWR9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvQ29tcG9uZW50PlxuICApO1xuXG4gIHJldHVybiA8Um91dGVDb21wb25lbnQgcmVkaXJlY3RUb1BhdGhuYW1lPXtwYXRobmFtZX0gY29udGVudD17Y29udGVudDJ9IC8+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUm91dGVDb21wb25lbnRXcmFwcGVyO1xuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type ReactNode, type JSX } from 'react';
|
|
2
|
+
export declare function getNewIndex(): number;
|
|
3
|
+
type Props = {
|
|
4
|
+
fallback?: ReactNode;
|
|
5
|
+
enableTransition?: boolean;
|
|
6
|
+
pending?: ReactNode;
|
|
7
|
+
};
|
|
8
|
+
declare const RouterRenderer: (props: Props) => JSX.Element | null;
|
|
9
|
+
export default RouterRenderer;
|
|
10
|
+
//# sourceMappingURL=RouterRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouterRenderer.d.ts","sourceRoot":"","sources":["../../../src/routing/RouterRenderer.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,SAAS,EAA0B,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAahF,wBAAgB,WAAW,IAAI,MAAM,CAGpC;AAED,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB,CAAC;AAMF,QAAA,MAAM,cAAc,GAAI,OAAO,KAAK,KAAG,GAAG,CAAC,OAAO,GAAG,IAwIpD,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React, { useMemo, useTransition } from 'react';
|
|
3
|
+
import RoutingContext from './RoutingContext.js';
|
|
4
|
+
import RouteComponentWrapper from './RouteComponentWrapper.js';
|
|
5
|
+
const { useContext, useEffect, Suspense, useState } = React;
|
|
6
|
+
let index = 0;
|
|
7
|
+
export function getNewIndex() {
|
|
8
|
+
index += 1;
|
|
9
|
+
return index;
|
|
10
|
+
}
|
|
11
|
+
const RouterRenderer = (props) => {
|
|
12
|
+
const { fallback, pending, enableTransition = false } = props;
|
|
13
|
+
const router = useContext(RoutingContext);
|
|
14
|
+
const [isPending, startTransition] = useTransition();
|
|
15
|
+
const [routeEntry, setRouteEntry] = useState(router?.get());
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
if (router == null) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const currentEntry = router.get();
|
|
21
|
+
if (currentEntry !== routeEntry) {
|
|
22
|
+
setRouteEntry(currentEntry);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const dispose = router.subscribe((nextEntry) => {
|
|
26
|
+
if (enableTransition) {
|
|
27
|
+
startTransition(() => {
|
|
28
|
+
setRouteEntry(nextEntry);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
setRouteEntry(nextEntry);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
return () => {
|
|
36
|
+
dispose();
|
|
37
|
+
};
|
|
38
|
+
}, [router]);
|
|
39
|
+
const pendingContent = useMemo(() => {
|
|
40
|
+
if (isPending) {
|
|
41
|
+
return pending;
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}, [isPending, pending]);
|
|
45
|
+
const routeComponent = useMemo(() => {
|
|
46
|
+
if (routeEntry == null) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
const result = [];
|
|
50
|
+
const reversedItems = result
|
|
51
|
+
.concat(routeEntry.preparedMatch.routes)
|
|
52
|
+
.reverse();
|
|
53
|
+
const firstItem = reversedItems[0];
|
|
54
|
+
if (firstItem == null) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
let mainComponent = (_jsx(RouteComponentWrapper, { match: routeEntry.preparedMatch.match ?? null, preparedRoute: firstItem }, firstItem.path));
|
|
58
|
+
for (let index = 1; index < reversedItems.length; index += 1) {
|
|
59
|
+
const nextItem = reversedItems[index];
|
|
60
|
+
mainComponent = (_jsx(RouteComponentWrapper, { match: routeEntry.preparedMatch.match ?? null, preparedRoute: nextItem, children: mainComponent }, nextItem.path));
|
|
61
|
+
}
|
|
62
|
+
return mainComponent;
|
|
63
|
+
}, [routeEntry]);
|
|
64
|
+
return (_jsxs(Suspense, { fallback: fallback, children: [pendingContent, routeComponent] }));
|
|
65
|
+
};
|
|
66
|
+
export default RouterRenderer;
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGVyUmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGluZy9Sb3V0ZXJSZW5kZXJlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQWtCLE9BQU8sRUFBRSxhQUFhLEVBQVksTUFBTSxPQUFPLENBQUM7QUFJaEYsT0FBTyxjQUFjLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxxQkFBcUIsTUFBTSw0QkFBNEIsQ0FBQztBQUUvRCxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDO0FBRTVELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUlkLE1BQU0sVUFBVSxXQUFXO0lBQ3pCLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDWCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFZRCxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQVksRUFBc0IsRUFBRTtJQUMxRCxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsR0FBRyxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFHOUQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRzFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLEdBQUcsYUFBYSxFQUFFLENBQUM7SUFJckQsTUFBTSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsR0FBRyxRQUFRLENBQzFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FDZCxDQUFDO0lBR0YsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ25CLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2xDLElBQUksWUFBWSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBRWhDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM1QixPQUFPO1FBQ1QsQ0FBQztRQUlELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQU03QyxJQUFJLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3JCLGVBQWUsQ0FBQyxHQUFHLEVBQUU7b0JBQ25CLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDM0IsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUdILE9BQU8sR0FBRyxFQUFFO1lBQ1YsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDLENBQUM7SUFNSixDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBc0JiLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUU7UUFDbEMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBSXpCLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUU7UUFDbEMsSUFBSSxVQUFVLElBQUksSUFBSSxFQUFFLENBQUM7WUFDdkIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQXlCLEVBQUUsQ0FBQztRQUV4QyxNQUFNLGFBQWEsR0FBRyxNQUFNO2FBQ3pCLE1BQU0sQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQzthQUN2QyxPQUFPLEVBQUUsQ0FBQztRQUViLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVuQyxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN0QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxJQUFJLGFBQWEsR0FBRyxDQUNsQixLQUFDLHFCQUFxQixJQUVwQixLQUFLLEVBQUUsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksSUFBSSxFQUM3QyxhQUFhLEVBQUUsU0FBUyxJQUZuQixTQUFTLENBQUMsSUFBSSxDQUduQixDQUNILENBQUM7UUFDRixLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDN0QsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RDLGFBQWEsR0FBRyxDQUNkLEtBQUMscUJBQXFCLElBR3BCLEtBQUssRUFBRSxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBRTdDLGFBQWEsRUFBRSxRQUFTLFlBRXZCLGFBQWEsSUFMVCxRQUFTLENBQUMsSUFBSSxDQU1HLENBQ3pCLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUlqQixPQUFPLENBQ0wsTUFBQyxRQUFRLElBQUMsUUFBUSxFQUFFLFFBQVEsYUFDekIsY0FBYyxFQUNkLGNBQWMsSUFDTixDQUNaLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixlQUFlLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB0eXBlIFJlYWN0Tm9kZSwgdXNlTWVtbywgdXNlVHJhbnNpdGlvbiwgdHlwZSBKU1ggfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB0eXBlIHsgUHJlcGFyZWRNYXRjaFJvdXRlLCBSb3V0ZUVudHJ5IH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5pbXBvcnQgUm91dGluZ0NvbnRleHQgZnJvbSAnLi9Sb3V0aW5nQ29udGV4dC5qcyc7XG5pbXBvcnQgUm91dGVDb21wb25lbnRXcmFwcGVyIGZyb20gJy4vUm91dGVDb21wb25lbnRXcmFwcGVyLmpzJztcblxuY29uc3QgeyB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIFN1c3BlbnNlLCB1c2VTdGF0ZSB9ID0gUmVhY3Q7XG5cbmxldCBpbmRleCA9IDA7XG4vKipcbiAqIEEgc2ltcGxlIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGEgbmV3IGluZGV4IGZvciB0aGUgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXdJbmRleCgpOiBudW1iZXIge1xuICBpbmRleCArPSAxO1xuICByZXR1cm4gaW5kZXg7XG59XG5cbnR5cGUgUHJvcHMgPSB7XG4gIGZhbGxiYWNrPzogUmVhY3ROb2RlO1xuICBlbmFibGVUcmFuc2l0aW9uPzogYm9vbGVhbjtcbiAgcGVuZGluZz86IFJlYWN0Tm9kZTtcbn07XG5cbi8qKlxuICogQSBjb21wb25lbnQgdGhhdCBhY2Nlc3NlcyB0aGUgY3VycmVudCByb3V0ZSBlbnRyeSBmcm9tIFJvdXRpbmdDb250ZXh0IGFuZCByZW5kZXJzXG4gKiB0aGF0IGVudHJ5LlxuICovXG5jb25zdCBSb3V0ZXJSZW5kZXJlciA9IChwcm9wczogUHJvcHMpOiBKU1guRWxlbWVudCB8IG51bGwgPT4ge1xuICBjb25zdCB7IGZhbGxiYWNrLCBwZW5kaW5nLCBlbmFibGVUcmFuc2l0aW9uID0gZmFsc2UgfSA9IHByb3BzO1xuXG4gIC8vIEFjY2VzcyB0aGUgcm91dGVyXG4gIGNvbnN0IHJvdXRlciA9IHVzZUNvbnRleHQoUm91dGluZ0NvbnRleHQpO1xuICAvLyBJbXByb3ZlIHRoZSByb3V0ZSB0cmFuc2l0aW9uIFVYIGJ5IGRlbGF5aW5nIHRyYW5zaXRpb25zOiBzaG93IHRoZSBwcmV2aW91cyByb3V0ZSBlbnRyeVxuICAvLyBmb3IgYSBicmllZiBwZXJpb2Qgd2hpbGUgdGhlIG5leHQgcm91dGUgaXMgYmVpbmcgcHJlcGFyZWQuXG4gIGNvbnN0IFtpc1BlbmRpbmcsIHN0YXJ0VHJhbnNpdGlvbl0gPSB1c2VUcmFuc2l0aW9uKCk7XG5cbiAgLy8gU3RvcmUgdGhlIGFjdGl2ZSBlbnRyeSBpbiBzdGF0ZSAtIHRoaXMgYWxsb3dzIHRoZSByZW5kZXJlciB0byB1c2UgZmVhdHVyZXMgbGlrZVxuICAvLyB1c2VUcmFuc2l0aW9uIHRvIGRlbGF5IHdoZW4gc3RhdGUgY2hhbmdlcyBiZWNvbWUgdmlzaWJsZSB0byB0aGUgdXNlci5cbiAgY29uc3QgW3JvdXRlRW50cnksIHNldFJvdXRlRW50cnldID0gdXNlU3RhdGU8Um91dGVFbnRyeTxhbnk+IHwgdW5kZWZpbmVkPihcbiAgICByb3V0ZXI/LmdldCgpLFxuICApO1xuXG4gIC8vIE9uIG1vdW50IHN1YnNjcmliZSBmb3Igcm91dGUgY2hhbmdlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyb3V0ZXIgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBDaGVjayBpZiB0aGUgcm91dGUgaGFzIGNoYW5nZWQgYmV0d2VlbiB0aGUgbGFzdCByZW5kZXIgYW5kIGNvbW1pdDpcbiAgICBjb25zdCBjdXJyZW50RW50cnkgPSByb3V0ZXIuZ2V0KCk7XG4gICAgaWYgKGN1cnJlbnRFbnRyeSAhPT0gcm91dGVFbnRyeSkge1xuICAgICAgLy8gaWYgdGhlcmUgd2FzIGEgY29uY3VycmVudCBtb2RpZmljYXRpb24sIHJlcmVuZGVyIGFuZCBleGl0XG4gICAgICBzZXRSb3V0ZUVudHJ5KGN1cnJlbnRFbnRyeSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgKndhc24ndCogYSBjb25jdXJyZW50IGNoYW5nZSB0byB0aGUgcm91dGUsIHRoZW4gdGhlIFVJXG4gICAgLy8gaXMgY3VycmVudDogc3Vic2NyaWJlIGZvciBzdWJzZXF1ZW50IHJvdXRlIHVwZGF0ZXNcbiAgICBjb25zdCBkaXNwb3NlID0gcm91dGVyLnN1YnNjcmliZSgobmV4dEVudHJ5KSA9PiB7XG4gICAgICAvLyBzdGFydFRyYW5zaXRpb24oKSBkZWxheXMgdGhlIGVmZmVjdCBvZiB0aGUgc2V0Um91dGVFbnRyeSAoc2V0U3RhdGUpIGNhbGxcbiAgICAgIC8vIGZvciBhIGJyaWVmIHBlcmlvZCwgY29udGludWluZyB0byBzaG93IHRoZSBvbGQgc3RhdGUgd2hpbGUgdGhlIG5ld1xuICAgICAgLy8gc3RhdGUgKHJvdXRlKSBpcyBwcmVwYXJlZC5cbiAgICAgIC8vIFRPRE86IHVzZSBzdGFydFRyYW5zaXRpb24gb25seSBmb3IgcmVsYXkgY29udGVudFxuXG4gICAgICBpZiAoZW5hYmxlVHJhbnNpdGlvbikge1xuICAgICAgICBzdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgICAgIHNldFJvdXRlRW50cnkobmV4dEVudHJ5KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRSb3V0ZUVudHJ5KG5leHRFbnRyeSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZGlzcG9zZSgpO1xuICAgIH07XG5cbiAgICAvLyBOb3RlOiB0aGlzIGhvb2sgdXBkYXRlcyByb3V0ZUVudHJ5IG1hbnVhbGx5OyB3ZSBleGNsdWRlIHRoYXQgdmFyaWFibGVcbiAgICAvLyBmcm9tIHRoZSBob29rIGRlcHMgdG8gYXZvaWQgcmVjb21wdXRpbmcgdGhlIGVmZmVjdCBhZnRlciBlYWNoIGNoYW5nZVxuICAgIC8vIHRyaWdnZXJlZCBieSB0aGUgZWZmZWN0IGl0c2VsZi5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtyb3V0ZXJdKTtcblxuICAvLyBUaGUgY3VycmVudCByb3V0ZSB2YWx1ZSBpcyBhbiBhcnJheSBvZiBtYXRjaGluZyBlbnRyaWVzIC0gb25lIGVudHJ5IHBlclxuICAvLyBsZXZlbCBvZiByb3V0ZXMgKHRvIGFsbG93IG5lc3RlZCByb3V0ZXMpLiBXZSBoYXZlIHRvIG1hcCBlYWNoIG9uZSB0byBhXG4gIC8vIFJvdXRlQ29tcG9uZW50IHRvIGFsbG93IHN1c3BlbmRpbmcsIGFuZCBhbHNvIHBhc3MgaXRzIGNoaWxkcmVuIGNvcnJlY3RseS5cbiAgLy8gQ29uY2VwdHVhbGx5LCB3ZSB3YW50IHRoaXMgc3RydWN0dXJlOlxuICAvLyBgYGBcbiAgLy8gPFJvdXRlQ29tcG9uZW50XG4gIC8vICAgY29tcG9uZW50PXtlbnRyeVswXS5jb21wb25lbnR9XG4gIC8vICAgcHJlcGFyZWQ9e2VudHJyeVswXS5wcmVwYXJlZH0+XG4gIC8vICAgPFJvdXRlQ29tcG9uZW50XG4gIC8vICAgICBjb21wb25lbnQ9e2VudHJ5WzFdLmNvbXBvbmVudH1cbiAgLy8gICAgIHByZXBhcmVkPXtlbnRyeVsxXS5wcmVwYXJlZH0+XG4gIC8vICAgICAgIC8vIGNvbnRpbnVlIGZvciBuZXN0ZWQgaXRlbXMuLi5cbiAgLy8gICA8L1JvdXRlQ29tcG9uZW50PlxuICAvLyA8L1JvdXRlQ29tcG9uZW50PlxuICAvLyBgYGBcbiAgLy8gVG8gYWNoaWV2ZSB0aGlzLCB3ZSByZXZlcnNlIHRoZSBsaXN0IHNvIHdlIGNhbiBzdGFydCBhdCB0aGUgYm90dG9tLW1vc3RcbiAgLy8gY29tcG9uZW50LCBhbmQgaXRlcmF0aXZlbHkgY29uc3RydWN0IHBhcmVudCBjb21wb25lbnRzIHcgdGhlIHByZXZpb3VzXG4gIC8vIHZhbHVlIGFzIHRoZSBjaGlsZCBvZiB0aGUgbmV4dCBvbmU6XG4gIC8vIHJldmVyc2UgaXMgaW4gcGxhY2UsIGJ1dCB3ZSB3YW50IGEgY29weSBzbyBjb25jYXRcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcm9taXNlLWZ1bmN0aW9uLWFzeW5jXG4gIGNvbnN0IHBlbmRpbmdDb250ZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGlzUGVuZGluZykge1xuICAgICAgcmV0dXJuIHBlbmRpbmc7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH0sIFtpc1BlbmRpbmcsIHBlbmRpbmddKTtcblxuICAvLyB0aGUgYm90dG9tLW1vc3QgY29tcG9uZW50IGlzIHNwZWNpYWwgc2luY2UgaXQgd2lsbCBoYXZlIG5vIGNoaWxkcmVuXG4gIC8vICh0aG91Z2ggd2UgY291bGQgcHJvYmFibHkganVzdCBwYXNzIG51bGwgY2hpbGRyZW4gdG8gaXQpXG4gIGNvbnN0IHJvdXRlQ29tcG9uZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKHJvdXRlRW50cnkgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0OiBQcmVwYXJlZE1hdGNoUm91dGVbXSA9IFtdO1xuXG4gICAgY29uc3QgcmV2ZXJzZWRJdGVtcyA9IHJlc3VsdFxuICAgICAgLmNvbmNhdChyb3V0ZUVudHJ5LnByZXBhcmVkTWF0Y2gucm91dGVzKVxuICAgICAgLnJldmVyc2UoKTtcblxuICAgIGNvbnN0IGZpcnN0SXRlbSA9IHJldmVyc2VkSXRlbXNbMF07XG5cbiAgICBpZiAoZmlyc3RJdGVtID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBtYWluQ29tcG9uZW50ID0gKFxuICAgICAgPFJvdXRlQ29tcG9uZW50V3JhcHBlclxuICAgICAgICBrZXk9e2ZpcnN0SXRlbS5wYXRofVxuICAgICAgICBtYXRjaD17cm91dGVFbnRyeS5wcmVwYXJlZE1hdGNoLm1hdGNoID8/IG51bGx9XG4gICAgICAgIHByZXBhcmVkUm91dGU9e2ZpcnN0SXRlbX1cbiAgICAgIC8+XG4gICAgKTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDE7IGluZGV4IDwgcmV2ZXJzZWRJdGVtcy5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgIGNvbnN0IG5leHRJdGVtID0gcmV2ZXJzZWRJdGVtc1tpbmRleF07XG4gICAgICBtYWluQ29tcG9uZW50ID0gKFxuICAgICAgICA8Um91dGVDb21wb25lbnRXcmFwcGVyXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICBrZXk9e25leHRJdGVtIS5wYXRofVxuICAgICAgICAgIG1hdGNoPXtyb3V0ZUVudHJ5LnByZXBhcmVkTWF0Y2gubWF0Y2ggPz8gbnVsbH1cbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICAgIHByZXBhcmVkUm91dGU9e25leHRJdGVtIX1cbiAgICAgICAgPlxuICAgICAgICAgIHttYWluQ29tcG9uZW50fVxuICAgICAgICA8L1JvdXRlQ29tcG9uZW50V3JhcHBlcj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1haW5Db21wb25lbnQ7XG4gIH0sIFtyb3V0ZUVudHJ5XSk7XG5cbiAgLy8gUm91dGVzIGNhbiBlcnJvciBzbyB3cmFwIGluIGFuIDxFcnJvckJvdW5kYXJ5PlxuICAvLyBSb3V0ZXMgY2FuIHN1c3BlbmQsIHNvIHdyYXAgaW4gPFN1c3BlbnNlPlxuICByZXR1cm4gKFxuICAgIDxTdXNwZW5zZSBmYWxsYmFjaz17ZmFsbGJhY2t9PlxuICAgICAge3BlbmRpbmdDb250ZW50fVxuICAgICAge3JvdXRlQ29tcG9uZW50fVxuICAgIDwvU3VzcGVuc2U+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBSb3V0ZXJSZW5kZXJlcjtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RoutingContext.d.ts","sourceRoot":"","sources":["../../../src/routing/RoutingContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,QAAA,MAAM,cAAc,+CAEnB,CAAC;AAKF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
const RoutingContext = React.createContext(null);
|
|
3
|
+
export default RoutingContext;
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGluZ0NvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGluZy9Sb3V0aW5nQ29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFJMUIsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FDeEMsSUFBSSxDQUNMLENBQUM7QUFLRixlQUFlLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB0eXBlIHsgUm91dGluZ0NvbnRleHRUeXBlIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5jb25zdCBSb3V0aW5nQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQ8Um91dGluZ0NvbnRleHRUeXBlPGFueT4gfCBudWxsPihcbiAgbnVsbCxcbik7XG5cbi8qKlxuICogQSBjdXN0b20gY29udGV4dCBpbnN0YW5jZSBmb3Igb3VyIHJvdXRlciB0eXBlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IFJvdXRpbmdDb250ZXh0O1xuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Route, RoutingContextType } from '../types.js';
|
|
2
|
+
export type CreateRouterReturn = {
|
|
3
|
+
cleanup: () => void;
|
|
4
|
+
context: RoutingContextType<any>;
|
|
5
|
+
};
|
|
6
|
+
export default function createRouter(routes: Route<any, any>[]): CreateRouterReturn;
|
|
7
|
+
//# sourceMappingURL=createRouter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createRouter.d.ts","sourceRoot":"","sources":["../../../src/routing/createRouter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,KAAK,EAEL,kBAAkB,EAEnB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC;CAClC,CAAC;AAQF,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GACxB,kBAAkB,CA2FpB"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { buildRoutes } from '../builder.js';
|
|
2
|
+
import { BrowserHistory } from '../history/index.js';
|
|
3
|
+
import { getMatchedRoute, prepareMatch } from '../tools.js';
|
|
4
|
+
export default function createRouter(routes) {
|
|
5
|
+
const history = new BrowserHistory();
|
|
6
|
+
const flatRoutes = buildRoutes(routes);
|
|
7
|
+
const route = getMatchedRoute(flatRoutes, history.location);
|
|
8
|
+
const preparedMatch = prepareMatch(route);
|
|
9
|
+
let currentEntry = {
|
|
10
|
+
forceRerender: false,
|
|
11
|
+
location: history.location,
|
|
12
|
+
route,
|
|
13
|
+
preparedMatch,
|
|
14
|
+
};
|
|
15
|
+
let nextId = 0;
|
|
16
|
+
const subscribers = new Map();
|
|
17
|
+
const cleanup = history.subscribe((location, forceRerender) => {
|
|
18
|
+
if (forceRerender) {
|
|
19
|
+
}
|
|
20
|
+
else if (location.pathname === currentEntry.location.pathname) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const route = getMatchedRoute(flatRoutes, history.location);
|
|
24
|
+
const preparedMatch = prepareMatch(route);
|
|
25
|
+
const nextEntry = {
|
|
26
|
+
forceRerender,
|
|
27
|
+
location,
|
|
28
|
+
route,
|
|
29
|
+
preparedMatch,
|
|
30
|
+
};
|
|
31
|
+
currentEntry = nextEntry;
|
|
32
|
+
subscribers.forEach((callback) => {
|
|
33
|
+
callback(nextEntry);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
const context = {
|
|
37
|
+
history,
|
|
38
|
+
get() {
|
|
39
|
+
return currentEntry;
|
|
40
|
+
},
|
|
41
|
+
preloadCode(pathname) {
|
|
42
|
+
const matches = getMatchedRoute(flatRoutes, {
|
|
43
|
+
...window.location,
|
|
44
|
+
pathname,
|
|
45
|
+
});
|
|
46
|
+
if (matches == null) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
matches.route.routes.forEach(({ resourcePage }) => {
|
|
50
|
+
if (resourcePage == null) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
resourcePage.load();
|
|
54
|
+
});
|
|
55
|
+
},
|
|
56
|
+
preload(pathname) {
|
|
57
|
+
const matches = getMatchedRoute(flatRoutes, {
|
|
58
|
+
...window.location,
|
|
59
|
+
pathname,
|
|
60
|
+
});
|
|
61
|
+
prepareMatch(matches);
|
|
62
|
+
},
|
|
63
|
+
subscribe(callback) {
|
|
64
|
+
nextId += 1;
|
|
65
|
+
const id = nextId;
|
|
66
|
+
const dispose = () => {
|
|
67
|
+
subscribers.delete(id);
|
|
68
|
+
};
|
|
69
|
+
subscribers.set(id, callback);
|
|
70
|
+
return dispose;
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
return { cleanup, context };
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JvdXRpbmcvY3JlYXRlUm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBbUI1RCxNQUFNLENBQUMsT0FBTyxVQUFVLFlBQVksQ0FDbEMsTUFBeUI7SUFHekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztJQUVyQyxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFHdkMsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUQsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLElBQUksWUFBWSxHQUFvQjtRQUNsQyxhQUFhLEVBQUUsS0FBSztRQUNwQixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7UUFDMUIsS0FBSztRQUNMLGFBQWE7S0FDZCxDQUFDO0lBR0YsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQWtDLENBQUM7SUFLOUQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsRUFBRTtRQUM1RCxJQUNFLGFBQWEsRUFFYixDQUFDO1FBQ0gsQ0FBQzthQUFNLElBQUksUUFBUSxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hFLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUQsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLE1BQU0sU0FBUyxHQUFvQjtZQUNqQyxhQUFhO1lBQ2IsUUFBUTtZQUNSLEtBQUs7WUFDTCxhQUFhO1NBQ2QsQ0FBQztRQUNGLFlBQVksR0FBRyxTQUFTLENBQUM7UUFDekIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQy9CLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBR0gsTUFBTSxPQUFPLEdBQTRCO1FBQ3ZDLE9BQU87UUFDUCxHQUFHO1lBQ0QsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQztRQUNELFdBQVcsQ0FBQyxRQUFRO1lBRWxCLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxVQUFVLEVBQUU7Z0JBQzFDLEdBQUcsTUFBTSxDQUFDLFFBQVE7Z0JBQ2xCLFFBQVE7YUFDVCxDQUFDLENBQUM7WUFFSCxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDcEIsT0FBTztZQUNULENBQUM7WUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUU7Z0JBQ2hELElBQUksWUFBWSxJQUFJLElBQUksRUFBRSxDQUFDO29CQUN6QixPQUFPO2dCQUNULENBQUM7Z0JBRUQsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sQ0FBQyxRQUFRO1lBRWQsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLFVBQVUsRUFBRTtnQkFDMUMsR0FBRyxNQUFNLENBQUMsUUFBUTtnQkFDbEIsUUFBUTthQUNULENBQUMsQ0FBQztZQUNILFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBQ0QsU0FBUyxDQUFDLFFBQVE7WUFDaEIsTUFBTSxJQUFJLENBQUMsQ0FBQztZQUNaLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQztZQUVsQixNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUU7Z0JBQ25CLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUFDO1lBQ0YsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDOUIsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztLQUNGLENBQUM7SUFHRixPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBidWlsZFJvdXRlcyB9IGZyb20gJy4uL2J1aWxkZXIuanMnO1xuaW1wb3J0IHsgQnJvd3Nlckhpc3RvcnkgfSBmcm9tICcuLi9oaXN0b3J5L2luZGV4LmpzJztcbmltcG9ydCB7IGdldE1hdGNoZWRSb3V0ZSwgcHJlcGFyZU1hdGNoIH0gZnJvbSAnLi4vdG9vbHMuanMnO1xuaW1wb3J0IHR5cGUge1xuICBSb3V0ZSxcbiAgUm91dGVFbnRyeSxcbiAgUm91dGluZ0NvbnRleHRUeXBlLFxuICBTdWJzY3JpYmVDYWxsYmFjayxcbn0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgdHlwZSBDcmVhdGVSb3V0ZXJSZXR1cm4gPSB7XG4gIGNsZWFudXA6ICgpID0+IHZvaWQ7XG4gIGNvbnRleHQ6IFJvdXRpbmdDb250ZXh0VHlwZTxhbnk+O1xufTtcblxuLyoqXG4gKiBBIGN1c3RvbSByb3V0ZXIgYnVpbHQgZnJvbSB0aGUgc2FtZSBwcmltaXRpdmVzIGFzIHJlYWN0LXJvdXRlci4gRWFjaCBvYmplY3QgaW4gYHJvdXRlc2BcbiAqIGNvbnRhaW5zIGJvdGggYSBDb21wb25lbnQgYW5kIGEgcHJlcGFyZSgpIGZ1bmN0aW9uIHRoYXQgY2FuIHByZWxvYWQgZGF0YSBmb3IgdGhlIGNvbXBvbmVudC5cbiAqIFRoZSByb3V0ZXIgd2F0Y2hlcyBmb3IgY2hhbmdlcyB0byB0aGUgY3VycmVudCBsb2NhdGlvbiB2aWEgdGhlIGBoaXN0b3J5YCBwYWNrYWdlLCBtYXBzIHRoZVxuICogbG9jYXRpb24gdG8gdGhlIGNvcnJlc3BvbmRpbmcgcm91dGUgZW50cnksIGFuZCB0aGVuIHByZWxvYWRzIHRoZSBjb2RlIGFuZCBkYXRhIGZvciB0aGUgcm91dGUuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVJvdXRlcihcbiAgcm91dGVzOiBSb3V0ZTxhbnksIGFueT5bXSxcbik6IENyZWF0ZVJvdXRlclJldHVybiB7XG4gIC8vIEluaXRpYWxpemUgaGlzdG9yeVxuICBjb25zdCBoaXN0b3J5ID0gbmV3IEJyb3dzZXJIaXN0b3J5KCk7XG5cbiAgY29uc3QgZmxhdFJvdXRlcyA9IGJ1aWxkUm91dGVzKHJvdXRlcyk7XG5cbiAgLy8gRmluZCB0aGUgaW5pdGlhbCBtYXRjaCBhbmQgcHJlcGFyZSBpdFxuICBjb25zdCByb3V0ZSA9IGdldE1hdGNoZWRSb3V0ZShmbGF0Um91dGVzLCBoaXN0b3J5LmxvY2F0aW9uKTtcbiAgY29uc3QgcHJlcGFyZWRNYXRjaCA9IHByZXBhcmVNYXRjaChyb3V0ZSk7XG4gIGxldCBjdXJyZW50RW50cnk6IFJvdXRlRW50cnk8YW55PiA9IHtcbiAgICBmb3JjZVJlcmVuZGVyOiBmYWxzZSxcbiAgICBsb2NhdGlvbjogaGlzdG9yeS5sb2NhdGlvbixcbiAgICByb3V0ZSxcbiAgICBwcmVwYXJlZE1hdGNoLFxuICB9O1xuXG4gIC8vIG1haW50YWluIGEgc2V0IG9mIHN1YnNjcmliZXJzIHRvIHRoZSBhY3RpdmUgZW50cnlcbiAgbGV0IG5leHRJZCA9IDA7XG4gIGNvbnN0IHN1YnNjcmliZXJzID0gbmV3IE1hcDxudW1iZXIsIFN1YnNjcmliZUNhbGxiYWNrPGFueT4+KCk7XG5cbiAgLy8gTGlzdGVuIGZvciBsb2NhdGlvbiBjaGFuZ2VzLCBtYXRjaCB0byB0aGUgcm91dGUgZW50cnksIHByZXBhcmUgdGhlIGVudHJ5LFxuICAvLyBhbmQgbm90aWZ5IHN1YnNjcmliZXJzLiBOb3RlIHRoYXQgdGhpcyBwYXR0ZXJuIGVuc3VyZXMgdGhhdCBkYXRhLWxvYWRpbmdcbiAgLy8gb2NjdXJzICpvdXRzaWRlKiBvZiAtIGFuZCAqYmVmb3JlKiAtIHJlbmRlcmluZy5cbiAgY29uc3QgY2xlYW51cCA9IGhpc3Rvcnkuc3Vic2NyaWJlKChsb2NhdGlvbiwgZm9yY2VSZXJlbmRlcikgPT4ge1xuICAgIGlmIChcbiAgICAgIGZvcmNlUmVyZW5kZXJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eVxuICAgICkge1xuICAgIH0gZWxzZSBpZiAobG9jYXRpb24ucGF0aG5hbWUgPT09IGN1cnJlbnRFbnRyeS5sb2NhdGlvbi5wYXRobmFtZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByb3V0ZSA9IGdldE1hdGNoZWRSb3V0ZShmbGF0Um91dGVzLCBoaXN0b3J5LmxvY2F0aW9uKTtcbiAgICBjb25zdCBwcmVwYXJlZE1hdGNoID0gcHJlcGFyZU1hdGNoKHJvdXRlKTtcbiAgICBjb25zdCBuZXh0RW50cnk6IFJvdXRlRW50cnk8YW55PiA9IHtcbiAgICAgIGZvcmNlUmVyZW5kZXIsXG4gICAgICBsb2NhdGlvbixcbiAgICAgIHJvdXRlLFxuICAgICAgcHJlcGFyZWRNYXRjaCxcbiAgICB9O1xuICAgIGN1cnJlbnRFbnRyeSA9IG5leHRFbnRyeTtcbiAgICBzdWJzY3JpYmVycy5mb3JFYWNoKChjYWxsYmFjaykgPT4ge1xuICAgICAgY2FsbGJhY2sobmV4dEVudHJ5KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gVGhlIGFjdHVhbCBvYmplY3QgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0aGUgUm91dGluZ0NvbmV4dC5cbiAgY29uc3QgY29udGV4dDogUm91dGluZ0NvbnRleHRUeXBlPGFueT4gPSB7XG4gICAgaGlzdG9yeSxcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gY3VycmVudEVudHJ5O1xuICAgIH0sXG4gICAgcHJlbG9hZENvZGUocGF0aG5hbWUpIHtcbiAgICAgIC8vIFByZWxvYWQganVzdCB0aGUgY29kZSBmb3IgYSByb3V0ZSwgd2l0aG91dCBzdG9yaW5nIHRoZSByZXN1bHRcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBnZXRNYXRjaGVkUm91dGUoZmxhdFJvdXRlcywge1xuICAgICAgICAuLi53aW5kb3cubG9jYXRpb24sXG4gICAgICAgIHBhdGhuYW1lLFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChtYXRjaGVzID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbWF0Y2hlcy5yb3V0ZS5yb3V0ZXMuZm9yRWFjaCgoeyByZXNvdXJjZVBhZ2UgfSkgPT4ge1xuICAgICAgICBpZiAocmVzb3VyY2VQYWdlID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlc1xuICAgICAgICByZXNvdXJjZVBhZ2UubG9hZCgpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBwcmVsb2FkKHBhdGhuYW1lKSB7XG4gICAgICAvLyBQcmVsb2FkIHRoZSBjb2RlIGFuZCBkYXRhIGZvciBhIHJvdXRlLCB3aXRob3V0IHN0b3JpbmcgdGhlIHJlc3VsdFxuICAgICAgY29uc3QgbWF0Y2hlcyA9IGdldE1hdGNoZWRSb3V0ZShmbGF0Um91dGVzLCB7XG4gICAgICAgIC4uLndpbmRvdy5sb2NhdGlvbixcbiAgICAgICAgcGF0aG5hbWUsXG4gICAgICB9KTtcbiAgICAgIHByZXBhcmVNYXRjaChtYXRjaGVzKTtcbiAgICB9LFxuICAgIHN1YnNjcmliZShjYWxsYmFjaykge1xuICAgICAgbmV4dElkICs9IDE7XG4gICAgICBjb25zdCBpZCA9IG5leHRJZDtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLXN0eWxlXG4gICAgICBjb25zdCBkaXNwb3NlID0gKCkgPT4ge1xuICAgICAgICBzdWJzY3JpYmVycy5kZWxldGUoaWQpO1xuICAgICAgfTtcbiAgICAgIHN1YnNjcmliZXJzLnNldChpZCwgY2FsbGJhY2spO1xuICAgICAgcmV0dXJuIGRpc3Bvc2U7XG4gICAgfSxcbiAgfTtcblxuICAvLyBSZXR1cm4gYm90aCB0aGUgY29udGV4dCBvYmplY3QgYW5kIGEgY2xlYW51cCBmdW5jdGlvblxuICByZXR1cm4geyBjbGVhbnVwLCBjb250ZXh0IH07XG59XG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { default as createRouter } from './createRouter.js';
|
|
2
|
+
export { default as Link } from './Link.js';
|
|
3
|
+
export { default as RouteComponent } from './RouteComponent.js';
|
|
4
|
+
export { default as RouteComponentWrapper } from './RouteComponentWrapper.js';
|
|
5
|
+
export { default as RouterRenderer } from './RouterRenderer.js';
|
|
6
|
+
export { default as RoutingContext } from './RoutingContext.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { default as createRouter } from './createRouter.js';
|
|
2
|
+
export { default as Link } from './Link.js';
|
|
3
|
+
export { default as RouteComponent } from './RouteComponent.js';
|
|
4
|
+
export { default as RouteComponentWrapper } from './RouteComponentWrapper.js';
|
|
5
|
+
export { default as RouterRenderer } from './RouterRenderer.js';
|
|
6
|
+
export { default as RoutingContext } from './RoutingContext.js';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxJQUFJLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLElBQUksSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxPQUFPLElBQUksY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sSUFBSSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxPQUFPLElBQUksY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sSUFBSSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgY3JlYXRlUm91dGVyIH0gZnJvbSAnLi9jcmVhdGVSb3V0ZXIuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBMaW5rIH0gZnJvbSAnLi9MaW5rLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUm91dGVDb21wb25lbnQgfSBmcm9tICcuL1JvdXRlQ29tcG9uZW50LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUm91dGVDb21wb25lbnRXcmFwcGVyIH0gZnJvbSAnLi9Sb3V0ZUNvbXBvbmVudFdyYXBwZXIuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBSb3V0ZXJSZW5kZXJlciB9IGZyb20gJy4vUm91dGVyUmVuZGVyZXIuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBSb3V0aW5nQ29udGV4dCB9IGZyb20gJy4vUm91dGluZ0NvbnRleHQuanMnO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAGA,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,GACpC,MAAM,EAAE,CAUV;AAMD,wBAAgB,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,GAAG,MAAM,CAEhE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function onlyDefinedStyles(styles) {
|
|
2
|
+
const filteredStyles = [];
|
|
3
|
+
for (const style of styles) {
|
|
4
|
+
if (style != null) {
|
|
5
|
+
filteredStyles.push(style);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
return filteredStyles;
|
|
9
|
+
}
|
|
10
|
+
export function cx(styles) {
|
|
11
|
+
return onlyDefinedStyles(styles).join(' ');
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixNQUFxQztJQUVyQyxNQUFNLGNBQWMsR0FBYSxFQUFFLENBQUM7SUFFcEMsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUMzQixJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNsQixjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQztBQU1ELE1BQU0sVUFBVSxFQUFFLENBQUMsTUFBcUM7SUFDdEQsT0FBTyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmV0dXJucyBhIG5ldyBhcnJheSBjb250YWluaW5nIG9ubHkgdGhlIGRlZmluZWQgc3R5bGVzIGZyb20gdGhlIGlucHV0IGFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbmx5RGVmaW5lZFN0eWxlcyhcbiAgc3R5bGVzOiAoc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZClbXSxcbik6IHN0cmluZ1tdIHtcbiAgY29uc3QgZmlsdGVyZWRTdHlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCBzdHlsZSBvZiBzdHlsZXMpIHtcbiAgICBpZiAoc3R5bGUgIT0gbnVsbCkge1xuICAgICAgZmlsdGVyZWRTdHlsZXMucHVzaChzdHlsZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZpbHRlcmVkU3R5bGVzO1xufVxuXG4vKipcbiAqIENvbWJpbmVzIHRoZSBpbnB1dCBzdHlsZXMgaW50byBhIHNpbmdsZSBzdHJpbmcsIGZpbHRlcmluZyBvdXQgYW55IG51bGwgb3JcbiAqIHVuZGVmaW5lZCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjeChzdHlsZXM6IChzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKVtdKTogc3RyaW5nIHtcbiAgcmV0dXJuIG9ubHlEZWZpbmVkU3R5bGVzKHN0eWxlcykuam9pbignICcpO1xufVxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ParamData } from 'path-to-regexp';
|
|
2
|
+
import type { PrepareResult, PreparedMatch, Route, RouterMatchedRoute } from './types.js';
|
|
3
|
+
import type { FlatRoute } from './builder.js';
|
|
4
|
+
export declare function getMatchedRoute<TParams extends ParamData>(routes: FlatRoute<TParams>[], location: Location): RouterMatchedRoute<TParams> | null;
|
|
5
|
+
export declare function prepareMatch<TParams extends ParamData>(match: RouterMatchedRoute<TParams> | null): PreparedMatch<TParams>;
|
|
6
|
+
export declare function r<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData>(route: Route<TPrepared, TVariables>): Route<TPrepared, TVariables>;
|
|
7
|
+
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EAEb,KAAK,EACL,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAK9C,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EACvD,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,EAC5B,QAAQ,EAAE,QAAQ,GACjB,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,CAepC;AAKD,wBAAgB,YAAY,CAAC,OAAO,SAAS,SAAS,EACpD,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,GACxC,aAAa,CAAC,OAAO,CAAC,CA8CxB;AAKD,wBAAgB,CAAC,CACf,SAAS,SAAS,aAAa,EAC/B,UAAU,SAAS,SAAS,GAAG,SAAS,EACxC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAEnE"}
|
package/lib/esm/tools.js
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export function getMatchedRoute(routes, location) {
|
|
2
|
+
for (const route of routes) {
|
|
3
|
+
const match = route.matchFunction(location.pathname);
|
|
4
|
+
if (match !== false) {
|
|
5
|
+
const { path, params } = match;
|
|
6
|
+
return {
|
|
7
|
+
match,
|
|
8
|
+
route,
|
|
9
|
+
path,
|
|
10
|
+
params,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
export function prepareMatch(match) {
|
|
17
|
+
if (match == null) {
|
|
18
|
+
return {
|
|
19
|
+
match,
|
|
20
|
+
routes: [],
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
const matchedRoute = match.route;
|
|
24
|
+
const routes = match.route.routes.map((route) => {
|
|
25
|
+
const { path, prepare, resourcePage, render } = route;
|
|
26
|
+
let Component;
|
|
27
|
+
let prepared;
|
|
28
|
+
if (prepare != null) {
|
|
29
|
+
prepared = prepare({
|
|
30
|
+
match,
|
|
31
|
+
matchedRoute,
|
|
32
|
+
resourcePage,
|
|
33
|
+
variables: { ...match.params },
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
if (resourcePage != null) {
|
|
37
|
+
Component = resourcePage.get();
|
|
38
|
+
if (Component == null) {
|
|
39
|
+
resourcePage.load();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
path,
|
|
44
|
+
prepared,
|
|
45
|
+
redirectTo: matchedRoute.redirectTo ?? null,
|
|
46
|
+
render,
|
|
47
|
+
resourcePage,
|
|
48
|
+
};
|
|
49
|
+
});
|
|
50
|
+
return {
|
|
51
|
+
match,
|
|
52
|
+
routes,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export function r(route) {
|
|
56
|
+
return route;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZUEsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsTUFBNEIsRUFDNUIsUUFBa0I7SUFFbEIsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUMzQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRCxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNwQixNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztZQUMvQixPQUFPO2dCQUNMLEtBQUs7Z0JBQ0wsS0FBSztnQkFDTCxJQUFJO2dCQUNKLE1BQU07YUFDUCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFLRCxNQUFNLFVBQVUsWUFBWSxDQUMxQixLQUF5QztJQUV6QyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNsQixPQUFPO1lBQ0wsS0FBSztZQUNMLE1BQU0sRUFBRSxFQUFFO1NBQ1gsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBRWpDLE1BQU0sTUFBTSxHQUF5QixLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNwRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBRXRELElBQUksU0FBa0IsQ0FBQztRQUN2QixJQUFJLFFBQW1DLENBQUM7UUFFeEMsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7WUFDcEIsUUFBUSxHQUFHLE9BQU8sQ0FBQztnQkFDakIsS0FBSztnQkFDTCxZQUFZO2dCQUNaLFlBQVk7Z0JBRVosU0FBUyxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFO2FBQy9CLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLFlBQVksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN6QixTQUFTLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQy9CLElBQUksU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUV0QixZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEIsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPO1lBQ0wsSUFBSTtZQUNKLFFBQVE7WUFDUixVQUFVLEVBQUUsWUFBWSxDQUFDLFVBQVUsSUFBSSxJQUFJO1lBQzNDLE1BQU07WUFDTixZQUFZO1NBQ2IsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTztRQUNMLEtBQUs7UUFDTCxNQUFNO0tBQ1AsQ0FBQztBQUNKLENBQUM7QUFLRCxNQUFNLFVBQVUsQ0FBQyxDQUdmLEtBQW1DO0lBQ25DLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGFyYW1EYXRhIH0gZnJvbSAncGF0aC10by1yZWdleHAnO1xuXG5pbXBvcnQgdHlwZSB7XG4gIFByZXBhcmVSZXN1bHQsXG4gIFByZXBhcmVkTWF0Y2gsXG4gIFByZXBhcmVkTWF0Y2hSb3V0ZSxcbiAgUm91dGUsXG4gIFJvdXRlck1hdGNoZWRSb3V0ZSxcbn0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmltcG9ydCB0eXBlIHsgRmxhdFJvdXRlIH0gZnJvbSAnLi9idWlsZGVyLmpzJztcblxuLyoqXG4gKiBHZXQgdGhlIG1hdGNoZWQgcm91dGUgZm9yIHRoZSBnaXZlbiBsb2NhdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWF0Y2hlZFJvdXRlPFRQYXJhbXMgZXh0ZW5kcyBQYXJhbURhdGE+KFxuICByb3V0ZXM6IEZsYXRSb3V0ZTxUUGFyYW1zPltdLFxuICBsb2NhdGlvbjogTG9jYXRpb24sXG4pOiBSb3V0ZXJNYXRjaGVkUm91dGU8VFBhcmFtcz4gfCBudWxsIHtcbiAgZm9yIChjb25zdCByb3V0ZSBvZiByb3V0ZXMpIHtcbiAgICBjb25zdCBtYXRjaCA9IHJvdXRlLm1hdGNoRnVuY3Rpb24obG9jYXRpb24ucGF0aG5hbWUpO1xuICAgIGlmIChtYXRjaCAhPT0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IHsgcGF0aCwgcGFyYW1zIH0gPSBtYXRjaDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1hdGNoLFxuICAgICAgICByb3V0ZSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcGFyYW1zLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBMb2FkIHRoZSBkYXRhIGZvciB0aGUgbWF0Y2hlZCByb3V0ZSwgZ2l2ZW4gdGhlIHBhcmFtcyBleHRyYWN0ZWQgZnJvbSB0aGUgcm91dGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVNYXRjaDxUUGFyYW1zIGV4dGVuZHMgUGFyYW1EYXRhPihcbiAgbWF0Y2g6IFJvdXRlck1hdGNoZWRSb3V0ZTxUUGFyYW1zPiB8IG51bGwsXG4pOiBQcmVwYXJlZE1hdGNoPFRQYXJhbXM+IHtcbiAgaWYgKG1hdGNoID09IG51bGwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbWF0Y2gsXG4gICAgICByb3V0ZXM6IFtdLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBtYXRjaGVkUm91dGUgPSBtYXRjaC5yb3V0ZTtcblxuICBjb25zdCByb3V0ZXM6IFByZXBhcmVkTWF0Y2hSb3V0ZVtdID0gbWF0Y2gucm91dGUucm91dGVzLm1hcCgocm91dGUpID0+IHtcbiAgICBjb25zdCB7IHBhdGgsIHByZXBhcmUsIHJlc291cmNlUGFnZSwgcmVuZGVyIH0gPSByb3V0ZTtcblxuICAgIGxldCBDb21wb25lbnQ6IHVua25vd247XG4gICAgbGV0IHByZXBhcmVkOiBQcmVwYXJlUmVzdWx0IHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKHByZXBhcmUgIT0gbnVsbCkge1xuICAgICAgcHJlcGFyZWQgPSBwcmVwYXJlKHtcbiAgICAgICAgbWF0Y2gsXG4gICAgICAgIG1hdGNoZWRSb3V0ZSxcbiAgICAgICAgcmVzb3VyY2VQYWdlLFxuICAgICAgICAvLyBGaXggT2JqZWN0LmNyZWF0ZShudWxsKSBpc3N1ZSBpbiBwYXRoLXRvLXJlZ2V4cFxuICAgICAgICB2YXJpYWJsZXM6IHsgLi4ubWF0Y2gucGFyYW1zIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVzb3VyY2VQYWdlICE9IG51bGwpIHtcbiAgICAgIENvbXBvbmVudCA9IHJlc291cmNlUGFnZS5nZXQoKTtcbiAgICAgIGlmIChDb21wb25lbnQgPT0gbnVsbCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWZsb2F0aW5nLXByb21pc2VzXG4gICAgICAgIHJlc291cmNlUGFnZS5sb2FkKCk7IC8vIGVhZ2VybHkgbG9hZFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcGF0aCxcbiAgICAgIHByZXBhcmVkLFxuICAgICAgcmVkaXJlY3RUbzogbWF0Y2hlZFJvdXRlLnJlZGlyZWN0VG8gPz8gbnVsbCxcbiAgICAgIHJlbmRlcixcbiAgICAgIHJlc291cmNlUGFnZSxcbiAgICB9O1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIG1hdGNoLFxuICAgIHJvdXRlcyxcbiAgfTtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiB1c2VkIHRvIGFkZCB0eXBlc2NyaXB0IHR5cGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcjxcbiAgVFByZXBhcmVkIGV4dGVuZHMgUHJlcGFyZVJlc3VsdCxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSA9IFBhcmFtRGF0YSxcbj4ocm91dGU6IFJvdXRlPFRQcmVwYXJlZCwgVFZhcmlhYmxlcz4pOiBSb3V0ZTxUUHJlcGFyZWQsIFRWYXJpYWJsZXM+IHtcbiAgcmV0dXJuIHJvdXRlO1xufVxuIl19
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { ComponentType, ReactElement, ReactNode, JSX } from 'react';
|
|
2
|
+
import type { Match, MatchFunction, ParamData } from 'path-to-regexp';
|
|
3
|
+
import type { FlatRoute } from './builder.js';
|
|
4
|
+
import type { ResourcePage } from './ResourcePage.js';
|
|
5
|
+
import type { BrowserHistory } from './history/index.js';
|
|
6
|
+
export type FlatRouteInput<TVariables extends ParamData> = {
|
|
7
|
+
path: string;
|
|
8
|
+
redirectTo?: string;
|
|
9
|
+
matchFunction: MatchFunction<TVariables>;
|
|
10
|
+
routes: Route<any, any>[];
|
|
11
|
+
};
|
|
12
|
+
export type RouterMatchedRoute<TVariables extends ParamData> = {
|
|
13
|
+
match: Match<TVariables>;
|
|
14
|
+
params: TVariables;
|
|
15
|
+
path: string;
|
|
16
|
+
route: FlatRoute<TVariables>;
|
|
17
|
+
};
|
|
18
|
+
export type RouteReactComponent<TProps = Record<string, unknown>> = (props: TProps) => JSX.Element | null;
|
|
19
|
+
export type RouteRenderOpts<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData> = {
|
|
20
|
+
children: ReactNode;
|
|
21
|
+
Component?: RouteReactComponent;
|
|
22
|
+
prepared: TPrepared | undefined;
|
|
23
|
+
preparedRoute: PreparedMatchRoute;
|
|
24
|
+
route: FlatRoute<TVariables> | null;
|
|
25
|
+
};
|
|
26
|
+
export type RouteRender<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData> = (opts: RouteRenderOpts<TPrepared, TVariables>) => ReactElement<any> | null;
|
|
27
|
+
export type PreparedMatchRoute = {
|
|
28
|
+
path?: string;
|
|
29
|
+
prepared: PrepareResult | undefined;
|
|
30
|
+
render?: RouteRender<any, any>;
|
|
31
|
+
redirectTo: string | null;
|
|
32
|
+
resourcePage?: ResourcePage;
|
|
33
|
+
};
|
|
34
|
+
export type PreparedMatch<TVariables extends ParamData> = {
|
|
35
|
+
match: RouterMatchedRoute<TVariables> | null;
|
|
36
|
+
routes: PreparedMatchRoute[];
|
|
37
|
+
};
|
|
38
|
+
export type RouteEntry<TVariables extends ParamData> = {
|
|
39
|
+
preparedMatch: PreparedMatch<TVariables>;
|
|
40
|
+
location: Location;
|
|
41
|
+
route: RouterMatchedRoute<TVariables> | null;
|
|
42
|
+
forceRerender: boolean;
|
|
43
|
+
};
|
|
44
|
+
export type RouterRedirectStatus = 301 | 302;
|
|
45
|
+
export type MatchedRoute<TVariables extends ParamData> = {
|
|
46
|
+
match: RegExpExecArray;
|
|
47
|
+
route: FlatRoute<TVariables>;
|
|
48
|
+
};
|
|
49
|
+
export type Redirect = {
|
|
50
|
+
path?: string;
|
|
51
|
+
to: string;
|
|
52
|
+
status?: RouterRedirectStatus;
|
|
53
|
+
};
|
|
54
|
+
export type PrepareResult = Record<string, any>;
|
|
55
|
+
export type PrepareParams<TVariables extends ParamData> = {
|
|
56
|
+
match: RouterMatchedRoute<TVariables>;
|
|
57
|
+
matchedRoute: FlatRoute<TVariables>;
|
|
58
|
+
resourcePage?: ResourcePage;
|
|
59
|
+
variables: TVariables;
|
|
60
|
+
};
|
|
61
|
+
export type RoutePrepare<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData> = (params: PrepareParams<TVariables>) => TPrepared;
|
|
62
|
+
export type Route<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData> = {
|
|
63
|
+
children?: (Route<any, any> | Redirect)[];
|
|
64
|
+
resourcePage?: ResourcePage;
|
|
65
|
+
path?: string;
|
|
66
|
+
prepare?: RoutePrepare<TPrepared, TVariables>;
|
|
67
|
+
render?: RouteRender<TPrepared, TVariables>;
|
|
68
|
+
};
|
|
69
|
+
export type RouteComponentProps<TVariables extends ParamData> = {
|
|
70
|
+
children: ReactElement<any>;
|
|
71
|
+
routerContext: RoutingContextType<TVariables>;
|
|
72
|
+
route: Route<any, any>;
|
|
73
|
+
};
|
|
74
|
+
export type SubscribeCallback<TVariables extends ParamData> = (nextEntry: RouteEntry<TVariables>) => void;
|
|
75
|
+
export type RoutingContextType<TVariables extends ParamData> = {
|
|
76
|
+
history: BrowserHistory;
|
|
77
|
+
get: () => RouteEntry<TVariables>;
|
|
78
|
+
preloadCode: (pathname: string) => void;
|
|
79
|
+
preload: (pathname: string) => void;
|
|
80
|
+
subscribe: (callback: SubscribeCallback<TVariables>) => () => void;
|
|
81
|
+
};
|
|
82
|
+
export type ResourcePageReturn = {
|
|
83
|
+
default: ComponentType<any>;
|
|
84
|
+
} | ComponentType<any>;
|
|
85
|
+
export type ResourcePageLoader = () => Promise<ResourcePageReturn>;
|
|
86
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/types.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29tcG9uZW50VHlwZSwgUmVhY3RFbGVtZW50LCBSZWFjdE5vZGUsIEpTWCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgTWF0Y2gsIE1hdGNoRnVuY3Rpb24sIFBhcmFtRGF0YSB9IGZyb20gJ3BhdGgtdG8tcmVnZXhwJztcblxuaW1wb3J0IHR5cGUgeyBGbGF0Um91dGUgfSBmcm9tICcuL2J1aWxkZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZVBhZ2UgfSBmcm9tICcuL1Jlc291cmNlUGFnZS5qcyc7XG5pbXBvcnQgdHlwZSB7IEJyb3dzZXJIaXN0b3J5IH0gZnJvbSAnLi9oaXN0b3J5L2luZGV4LmpzJztcblxuZXhwb3J0IHR5cGUgRmxhdFJvdXRlSW5wdXQ8VFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YT4gPSB7XG4gIHBhdGg6IHN0cmluZztcbiAgcmVkaXJlY3RUbz86IHN0cmluZztcbiAgbWF0Y2hGdW5jdGlvbjogTWF0Y2hGdW5jdGlvbjxUVmFyaWFibGVzPjtcbiAgcm91dGVzOiBSb3V0ZTxhbnksIGFueT5bXTtcbn07XG5cbmV4cG9ydCB0eXBlIFJvdXRlck1hdGNoZWRSb3V0ZTxUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhPiA9IHtcbiAgbWF0Y2g6IE1hdGNoPFRWYXJpYWJsZXM+O1xuICBwYXJhbXM6IFRWYXJpYWJsZXM7XG4gIHBhdGg6IHN0cmluZztcbiAgcm91dGU6IEZsYXRSb3V0ZTxUVmFyaWFibGVzPjtcbn07XG5cbmV4cG9ydCB0eXBlIFJvdXRlUmVhY3RDb21wb25lbnQ8VFByb3BzID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+ID0gKFxuICBwcm9wczogVFByb3BzLFxuKSA9PiBKU1guRWxlbWVudCB8IG51bGw7XG5cbmV4cG9ydCB0eXBlIFJvdXRlUmVuZGVyT3B0czxcbiAgVFByZXBhcmVkIGV4dGVuZHMgUHJlcGFyZVJlc3VsdCxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSA9IFBhcmFtRGF0YSxcbj4gPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIENvbXBvbmVudD86IFJvdXRlUmVhY3RDb21wb25lbnQ7XG4gIHByZXBhcmVkOiBUUHJlcGFyZWQgfCB1bmRlZmluZWQ7XG4gIHByZXBhcmVkUm91dGU6IFByZXBhcmVkTWF0Y2hSb3V0ZTtcbiAgcm91dGU6IEZsYXRSb3V0ZTxUVmFyaWFibGVzPiB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBSb3V0ZVJlbmRlcjxcbiAgVFByZXBhcmVkIGV4dGVuZHMgUHJlcGFyZVJlc3VsdCxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSA9IFBhcmFtRGF0YSxcbj4gPSAob3B0czogUm91dGVSZW5kZXJPcHRzPFRQcmVwYXJlZCwgVFZhcmlhYmxlcz4pID0+IFJlYWN0RWxlbWVudDxhbnk+IHwgbnVsbDtcblxuZXhwb3J0IHR5cGUgUHJlcGFyZWRNYXRjaFJvdXRlID0ge1xuICBwYXRoPzogc3RyaW5nO1xuICBwcmVwYXJlZDogUHJlcGFyZVJlc3VsdCB8IHVuZGVmaW5lZDtcbiAgcmVuZGVyPzogUm91dGVSZW5kZXI8YW55LCBhbnk+O1xuICByZWRpcmVjdFRvOiBzdHJpbmcgfCBudWxsO1xuICByZXNvdXJjZVBhZ2U/OiBSZXNvdXJjZVBhZ2U7XG59O1xuXG5leHBvcnQgdHlwZSBQcmVwYXJlZE1hdGNoPFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGE+ID0ge1xuICBtYXRjaDogUm91dGVyTWF0Y2hlZFJvdXRlPFRWYXJpYWJsZXM+IHwgbnVsbDtcbiAgcm91dGVzOiBQcmVwYXJlZE1hdGNoUm91dGVbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFJvdXRlRW50cnk8VFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YT4gPSB7XG4gIHByZXBhcmVkTWF0Y2g6IFByZXBhcmVkTWF0Y2g8VFZhcmlhYmxlcz47XG4gIGxvY2F0aW9uOiBMb2NhdGlvbjtcbiAgcm91dGU6IFJvdXRlck1hdGNoZWRSb3V0ZTxUVmFyaWFibGVzPiB8IG51bGw7XG4gIGZvcmNlUmVyZW5kZXI6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBSb3V0ZXJSZWRpcmVjdFN0YXR1cyA9IDMwMSB8IDMwMjtcblxuZXhwb3J0IHR5cGUgTWF0Y2hlZFJvdXRlPFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGE+ID0ge1xuICBtYXRjaDogUmVnRXhwRXhlY0FycmF5O1xuICByb3V0ZTogRmxhdFJvdXRlPFRWYXJpYWJsZXM+O1xufTtcblxuZXhwb3J0IHR5cGUgUmVkaXJlY3QgPSB7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG4gIHN0YXR1cz86IFJvdXRlclJlZGlyZWN0U3RhdHVzO1xufTtcblxuZXhwb3J0IHR5cGUgUHJlcGFyZVJlc3VsdCA9IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbmV4cG9ydCB0eXBlIFByZXBhcmVQYXJhbXM8VFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YT4gPSB7XG4gIG1hdGNoOiBSb3V0ZXJNYXRjaGVkUm91dGU8VFZhcmlhYmxlcz47XG4gIG1hdGNoZWRSb3V0ZTogRmxhdFJvdXRlPFRWYXJpYWJsZXM+O1xuICByZXNvdXJjZVBhZ2U/OiBSZXNvdXJjZVBhZ2U7XG4gIHZhcmlhYmxlczogVFZhcmlhYmxlcztcbn07XG5cbmV4cG9ydCB0eXBlIFJvdXRlUHJlcGFyZTxcbiAgVFByZXBhcmVkIGV4dGVuZHMgUHJlcGFyZVJlc3VsdCxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSA9IFBhcmFtRGF0YSxcbj4gPSAocGFyYW1zOiBQcmVwYXJlUGFyYW1zPFRWYXJpYWJsZXM+KSA9PiBUUHJlcGFyZWQ7XG5cbmV4cG9ydCB0eXBlIFJvdXRlPFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0LFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhID0gUGFyYW1EYXRhLFxuPiA9IHtcbiAgY2hpbGRyZW4/OiAoUm91dGU8YW55LCBhbnk+IHwgUmVkaXJlY3QpW107XG4gIHJlc291cmNlUGFnZT86IFJlc291cmNlUGFnZTtcbiAgcGF0aD86IHN0cmluZztcbiAgcHJlcGFyZT86IFJvdXRlUHJlcGFyZTxUUHJlcGFyZWQsIFRWYXJpYWJsZXM+O1xuICByZW5kZXI/OiBSb3V0ZVJlbmRlcjxUUHJlcGFyZWQsIFRWYXJpYWJsZXM+O1xufTtcblxuZXhwb3J0IHR5cGUgUm91dGVDb21wb25lbnRQcm9wczxUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhPiA9IHtcbiAgY2hpbGRyZW46IFJlYWN0RWxlbWVudDxhbnk+O1xuICByb3V0ZXJDb250ZXh0OiBSb3V0aW5nQ29udGV4dFR5cGU8VFZhcmlhYmxlcz47XG4gIHJvdXRlOiBSb3V0ZTxhbnksIGFueT47XG59O1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpYmVDYWxsYmFjazxUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhPiA9IChcbiAgbmV4dEVudHJ5OiBSb3V0ZUVudHJ5PFRWYXJpYWJsZXM+LFxuKSA9PiB2b2lkO1xuXG5leHBvcnQgdHlwZSBSb3V0aW5nQ29udGV4dFR5cGU8VFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YT4gPSB7XG4gIGhpc3Rvcnk6IEJyb3dzZXJIaXN0b3J5O1xuICBnZXQ6ICgpID0+IFJvdXRlRW50cnk8VFZhcmlhYmxlcz47XG4gIHByZWxvYWRDb2RlOiAocGF0aG5hbWU6IHN0cmluZykgPT4gdm9pZDtcbiAgcHJlbG9hZDogKHBhdGhuYW1lOiBzdHJpbmcpID0+IHZvaWQ7XG4gIHN1YnNjcmliZTogKGNhbGxiYWNrOiBTdWJzY3JpYmVDYWxsYmFjazxUVmFyaWFibGVzPikgPT4gKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIFJlc291cmNlUGFnZVJldHVybiA9XG4gIHwgeyBkZWZhdWx0OiBDb21wb25lbnRUeXBlPGFueT4gfVxuICB8IENvbXBvbmVudFR5cGU8YW55PjtcblxuZXhwb3J0IHR5cGUgUmVzb3VyY2VQYWdlTG9hZGVyID0gKCkgPT4gUHJvbWlzZTxSZXNvdXJjZVBhZ2VSZXR1cm4+O1xuIl19
|