@wavelengthusaf/client-router 0.0.2 → 0.0.3
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/dist/elements/RouteElement.d.ts +11 -0
- package/dist/elements/RouteElement.d.ts.map +1 -0
- package/dist/elements/RouteElement.js +44 -0
- package/dist/elements/RouteElement.js.map +1 -0
- package/dist/elements/RouterElement.d.ts +12 -0
- package/dist/elements/RouterElement.d.ts.map +1 -0
- package/dist/elements/RouterElement.js +70 -0
- package/dist/elements/RouterElement.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/models/CompiledRoute.d.ts +7 -0
- package/dist/models/CompiledRoute.d.ts.map +1 -0
- package/dist/models/CompiledRoute.js +2 -0
- package/dist/models/CompiledRoute.js.map +1 -0
- package/dist/models/MatchedRoute.d.ts +7 -0
- package/dist/models/MatchedRoute.d.ts.map +1 -0
- package/dist/models/MatchedRoute.js +2 -0
- package/dist/models/MatchedRoute.js.map +1 -0
- package/dist/models/RouteComponent.d.ts +6 -0
- package/dist/models/RouteComponent.d.ts.map +1 -0
- package/dist/models/RouteComponent.js +2 -0
- package/dist/models/RouteComponent.js.map +1 -0
- package/dist/models/RouteContext.d.ts +7 -0
- package/dist/models/RouteContext.d.ts.map +1 -0
- package/dist/models/RouteContext.js +2 -0
- package/dist/models/RouteContext.js.map +1 -0
- package/dist/models/RouteDefinition.d.ts +6 -0
- package/dist/models/RouteDefinition.d.ts.map +1 -0
- package/dist/models/RouteDefinition.js +2 -0
- package/dist/models/RouteDefinition.js.map +1 -0
- package/dist/models/RouteGuard.d.ts +3 -0
- package/dist/models/RouteGuard.d.ts.map +1 -0
- package/dist/models/RouteGuard.js +2 -0
- package/dist/models/RouteGuard.js.map +1 -0
- package/dist/models/RouteParams.d.ts +4 -0
- package/dist/models/RouteParams.d.ts.map +1 -0
- package/dist/models/RouteParams.js +2 -0
- package/dist/models/RouteParams.js.map +1 -0
- package/dist/models/index.d.ts +9 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +2 -0
- package/dist/models/index.js.map +1 -0
- package/dist/router/Router.d.ts +20 -0
- package/dist/router/Router.d.ts.map +1 -0
- package/dist/router/Router.js +158 -0
- package/dist/router/Router.js.map +1 -0
- package/dist/utils/compileRoute.d.ts +3 -0
- package/dist/utils/compileRoute.d.ts.map +1 -0
- package/dist/utils/compileRoute.js +30 -0
- package/dist/utils/compileRoute.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/matchRoute.d.ts +3 -0
- package/dist/utils/matchRoute.d.ts.map +1 -0
- package/dist/utils/matchRoute.js +25 -0
- package/dist/utils/matchRoute.js.map +1 -0
- package/package.json +1 -1
- package/dist/elements/__tests__/RouteElement.test.d.ts +0 -0
- package/dist/elements/__tests__/RouteElement.test.d.ts.map +0 -0
- package/dist/elements/__tests__/RouteElement.test.js +0 -77
- package/dist/elements/__tests__/RouteElement.test.js.map +0 -0
- package/dist/elements/__tests__/RouterElement.test.d.ts +0 -0
- package/dist/elements/__tests__/RouterElement.test.d.ts.map +0 -0
- package/dist/elements/__tests__/RouterElement.test.js +0 -0
- package/dist/elements/__tests__/RouterElement.test.js.map +0 -0
- package/dist/prettier.config.d.ts +0 -0
- package/dist/prettier.config.d.ts.map +0 -0
- package/dist/router/__tests__/Router.test.d.ts +0 -0
- package/dist/router/__tests__/Router.test.d.ts.map +0 -0
- package/dist/router/__tests__/Router.test.js +0 -0
- package/dist/router/__tests__/Router.test.js.map +0 -0
- package/dist/src/elements/RouteElement.d.ts +0 -11
- package/dist/src/elements/RouteElement.d.ts.map +0 -1
- package/dist/src/elements/RouterElement.d.ts +0 -12
- package/dist/src/elements/RouterElement.d.ts.map +0 -1
- package/dist/src/elements/__tests__/RouteElement.test.d.ts +0 -0
- package/dist/src/elements/__tests__/RouteElement.test.d.ts.map +0 -0
- package/dist/src/elements/__tests__/RouterElement.test.d.ts +0 -0
- package/dist/src/elements/__tests__/RouterElement.test.d.ts.map +0 -0
- package/dist/src/index.d.ts +0 -6
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/models/CompiledRoute.d.ts +0 -7
- package/dist/src/models/CompiledRoute.d.ts.map +0 -1
- package/dist/src/models/MatchedRoute.d.ts +0 -7
- package/dist/src/models/MatchedRoute.d.ts.map +0 -1
- package/dist/src/models/RouteComponent.d.ts +0 -6
- package/dist/src/models/RouteComponent.d.ts.map +0 -1
- package/dist/src/models/RouteContext.d.ts +0 -7
- package/dist/src/models/RouteContext.d.ts.map +0 -1
- package/dist/src/models/RouteDefinition.d.ts +0 -6
- package/dist/src/models/RouteDefinition.d.ts.map +0 -1
- package/dist/src/models/RouteGuard.d.ts +0 -3
- package/dist/src/models/RouteGuard.d.ts.map +0 -1
- package/dist/src/models/RouteParams.d.ts +0 -4
- package/dist/src/models/RouteParams.d.ts.map +0 -1
- package/dist/src/models/index.d.ts +0 -9
- package/dist/src/models/index.d.ts.map +0 -1
- package/dist/src/router/Router.d.ts +0 -20
- package/dist/src/router/Router.d.ts.map +0 -1
- package/dist/src/router/__tests__/Router.test.d.ts +0 -0
- package/dist/src/router/__tests__/Router.test.d.ts.map +0 -0
- package/dist/src/stories/RouterElement.stories.d.ts +0 -0
- package/dist/src/stories/RouterElement.stories.d.ts.map +0 -0
- package/dist/src/stories/RouterElement.stories.test.d.ts +0 -0
- package/dist/src/stories/RouterElement.stories.test.d.ts.map +0 -0
- package/dist/src/utils/__tests__/compileRoute.test.d.ts +0 -0
- package/dist/src/utils/__tests__/compileRoute.test.d.ts.map +0 -0
- package/dist/src/utils/__tests__/matchRoute.test.d.ts +0 -0
- package/dist/src/utils/__tests__/matchRoute.test.d.ts.map +0 -0
- package/dist/src/utils/compileRoute.d.ts +0 -3
- package/dist/src/utils/compileRoute.d.ts.map +0 -1
- package/dist/src/utils/index.d.ts +0 -4
- package/dist/src/utils/index.d.ts.map +0 -1
- package/dist/src/utils/matchRoute.d.ts +0 -3
- package/dist/src/utils/matchRoute.d.ts.map +0 -1
- package/dist/stories/RouterElement.stories.d.ts +0 -0
- package/dist/stories/RouterElement.stories.d.ts.map +0 -0
- package/dist/stories/RouterElement.stories.js +0 -0
- package/dist/stories/RouterElement.stories.js.map +0 -0
- package/dist/utils/__tests__/compileRoute.test.d.ts +0 -0
- package/dist/utils/__tests__/compileRoute.test.d.ts.map +0 -0
- package/dist/utils/__tests__/compileRoute.test.js +0 -0
- package/dist/utils/__tests__/compileRoute.test.js.map +0 -0
- package/dist/utils/__tests__/matchRoute.test.d.ts +0 -0
- package/dist/utils/__tests__/matchRoute.test.d.ts.map +0 -0
- package/dist/utils/__tests__/matchRoute.test.js +0 -0
- package/dist/utils/__tests__/matchRoute.test.js.map +0 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { RouteDefinition } from '../models/index.js';
|
|
2
|
+
export interface RouteElementEnv {
|
|
3
|
+
document?: Document;
|
|
4
|
+
}
|
|
5
|
+
export declare class RouteElement extends HTMLElement {
|
|
6
|
+
static readonly tag = "wavelength-route";
|
|
7
|
+
get path(): string;
|
|
8
|
+
get componentTag(): string;
|
|
9
|
+
toDefinition(env?: RouteElementEnv): RouteDefinition | null;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=RouteElement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouteElement.d.ts","sourceRoot":"","sources":["../../src/elements/RouteElement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,qBAAa,YAAa,SAAQ,WAAW;IAC3C,gBAAuB,GAAG,sBAAsB;IAEhD,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAEM,YAAY,CAAC,GAAG,GAAE,eAAoB,GAAG,eAAe,GAAG,IAAI;CAyCvE"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export class RouteElement extends HTMLElement {
|
|
2
|
+
static tag = 'wavelength-route';
|
|
3
|
+
get path() {
|
|
4
|
+
return this.getAttribute('path') ?? '*';
|
|
5
|
+
}
|
|
6
|
+
get componentTag() {
|
|
7
|
+
return this.getAttribute('component') ?? '';
|
|
8
|
+
}
|
|
9
|
+
toDefinition(env = {}) {
|
|
10
|
+
const tag = this.componentTag;
|
|
11
|
+
const doc = env.document;
|
|
12
|
+
if (!tag) {
|
|
13
|
+
console.warn(`[route] Missing 'component' attribute on path="${this.path}"`);
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
if (!doc) {
|
|
17
|
+
return {
|
|
18
|
+
path: this.path,
|
|
19
|
+
routeComponent: {
|
|
20
|
+
mount() { },
|
|
21
|
+
unmount() { },
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
const routeComponent = {
|
|
26
|
+
mount: (container, routeContext) => {
|
|
27
|
+
const element = doc.createElement(tag);
|
|
28
|
+
element.routeContext = routeContext;
|
|
29
|
+
container.appendChild(element);
|
|
30
|
+
},
|
|
31
|
+
unmount: () => {
|
|
32
|
+
// optional: future cleanup hook
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
return {
|
|
36
|
+
path: this.path,
|
|
37
|
+
routeComponent,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (!customElements.get(RouteElement.tag)) {
|
|
42
|
+
customElements.define(RouteElement.tag, RouteElement);
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=RouteElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouteElement.js","sourceRoot":"","sources":["../../src/elements/RouteElement.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,YAAa,SAAQ,WAAW;IACpC,MAAM,CAAU,GAAG,GAAG,kBAAkB,CAAC;IAEhD,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;IAC1C,CAAC;IAED,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC;IAEM,YAAY,CAAC,MAAuB,EAAE;QAC3C,MAAM,GAAG,GAAW,IAAI,CAAC,YAAY,CAAC;QACtC,MAAM,GAAG,GAAyB,GAAG,CAAC,QAAQ,CAAC;QAE/C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,CAAC,IAAI,CACR,kDAAkD,IAAI,CAAC,IAAI,GAAG,CACjE,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,cAAc,EAAE;oBACd,KAAK,KAAI,CAAC;oBACV,OAAO,KAAI,CAAC;iBACb;aACF,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAmB;YACrC,KAAK,EAAE,CAAC,SAAsB,EAAE,YAA0B,EAAE,EAAE;gBAC5D,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,CAEpC,CAAC;gBAEF,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;gBAEpC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,EAAE,GAAG,EAAE;gBACZ,gCAAgC;YAClC,CAAC;SACF,CAAC;QAEF,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,cAAc;SACf,CAAC;IACJ,CAAC;;AAGH,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;IAC1C,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class RouterElement extends HTMLElement {
|
|
2
|
+
#private;
|
|
3
|
+
static readonly tag = "wavelength-router";
|
|
4
|
+
static get observedAttributes(): string[];
|
|
5
|
+
connectedCallback(): void;
|
|
6
|
+
disconnectedCallback(): void;
|
|
7
|
+
attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
|
|
8
|
+
navigate(path: string): void;
|
|
9
|
+
replace(path: string): void;
|
|
10
|
+
back(): void;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=RouterElement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouterElement.d.ts","sourceRoot":"","sources":["../../src/elements/RouterElement.ts"],"names":[],"mappings":"AAIA,qBAAa,aAAc,SAAQ,WAAW;;IAC5C,gBAAuB,GAAG,uBAAuB;IAIjD,WAAkB,kBAAkB,IAAI,MAAM,EAAE,CAE/C;IAEM,iBAAiB,IAAI,IAAI;IAIzB,oBAAoB,IAAI,IAAI;IAI5B,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAK9F,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI5B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,IAAI,IAAI,IAAI;CA0DpB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Router } from '../router/Router.js';
|
|
2
|
+
export class RouterElement extends HTMLElement {
|
|
3
|
+
static tag = 'wavelength-router';
|
|
4
|
+
#router;
|
|
5
|
+
static get observedAttributes() {
|
|
6
|
+
return ['hash-mode', 'guard'];
|
|
7
|
+
}
|
|
8
|
+
connectedCallback() {
|
|
9
|
+
this.#bootstrap();
|
|
10
|
+
}
|
|
11
|
+
disconnectedCallback() {
|
|
12
|
+
this.#teardown();
|
|
13
|
+
}
|
|
14
|
+
attributeChangedCallback(name, oldValue, newValue) {
|
|
15
|
+
if (!this.isConnected || oldValue === newValue)
|
|
16
|
+
return;
|
|
17
|
+
this.#bootstrap();
|
|
18
|
+
}
|
|
19
|
+
navigate(path) {
|
|
20
|
+
this.#router?.navigate(path);
|
|
21
|
+
}
|
|
22
|
+
replace(path) {
|
|
23
|
+
this.#router?.replace(path);
|
|
24
|
+
}
|
|
25
|
+
back() {
|
|
26
|
+
this.#router?.back();
|
|
27
|
+
}
|
|
28
|
+
#bootstrap() {
|
|
29
|
+
this.#teardown();
|
|
30
|
+
const routes = this.#collectRoutes();
|
|
31
|
+
if (routes.length === 0) {
|
|
32
|
+
console.warn('[wavelength-router] No <wavelength-route> children found.');
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const guard = this.#resolveGuard();
|
|
36
|
+
this.#router = new Router(routes, {
|
|
37
|
+
outlet: this,
|
|
38
|
+
hashMode: this.hasAttribute('hash-mode'),
|
|
39
|
+
...(guard ? { beforeEach: guard } : {}),
|
|
40
|
+
}, {
|
|
41
|
+
window: window,
|
|
42
|
+
document: document,
|
|
43
|
+
});
|
|
44
|
+
this.#router.start();
|
|
45
|
+
}
|
|
46
|
+
#teardown() {
|
|
47
|
+
this.#router?.destroy();
|
|
48
|
+
}
|
|
49
|
+
#collectRoutes() {
|
|
50
|
+
const routeElements = Array.from(this.querySelectorAll('wavelength-route'));
|
|
51
|
+
return routeElements
|
|
52
|
+
.map((routeElement) => routeElement.toDefinition({ document }))
|
|
53
|
+
.filter((routeDefinition) => routeDefinition !== null);
|
|
54
|
+
}
|
|
55
|
+
#resolveGuard() {
|
|
56
|
+
const guardName = this.getAttribute('guard');
|
|
57
|
+
if (!guardName)
|
|
58
|
+
return undefined;
|
|
59
|
+
const fn = window[guardName];
|
|
60
|
+
if (typeof fn !== 'function') {
|
|
61
|
+
console.warn(`[wavelength-router] Guard "${guardName}" not found on window.`);
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
return fn;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (!customElements.get(RouterElement.tag)) {
|
|
68
|
+
customElements.define(RouterElement.tag, RouterElement);
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=RouterElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouterElement.js","sourceRoot":"","sources":["../../src/elements/RouterElement.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,MAAM,OAAO,aAAc,SAAQ,WAAW;IACrC,MAAM,CAAU,GAAG,GAAG,mBAAmB,CAAC;IAEjD,OAAO,CAAU;IAEV,MAAM,KAAK,kBAAkB;QAClC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IAEM,iBAAiB;QACtB,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEM,oBAAoB;QACzB,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAEM,wBAAwB,CAAC,IAAY,EAAE,QAAuB,EAAE,QAAuB;QAC5F,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,QAAQ,KAAK,QAAQ;YAAE,OAAO;QACvD,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEM,QAAQ,CAAC,IAAY;QAC1B,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEM,OAAO,CAAC,IAAY;QACzB,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;IACvB,CAAC;IAED,UAAU;QACR,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,MAAM,MAAM,GAAsB,IAAI,CAAC,cAAc,EAAE,CAAC;QAExD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAA0B,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1D,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CACrB,MAAM,EACN;YACE,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;YACxC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxC,EACD;YACE,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,QAAQ;SACnB,CACJ,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,SAAS;QACP,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;IAC1B,CAAC;IAED,cAAc;QACZ,MAAM,aAAa,GAAmB,KAAK,CAAC,IAAI,CAC5C,IAAI,CAAC,gBAAgB,CAAe,kBAAkB,CAAC,CAC1D,CAAC;QAEF,OAAO,aAAa;aACf,GAAG,CAAC,CAAC,YAA0B,EAAE,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;aAC5E,MAAM,CAAC,CAAC,eAAuC,EAAsC,EAAE,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC;IACzH,CAAC;IAED,aAAa;QACX,MAAM,SAAS,GAAkB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC;QAEjC,MAAM,EAAE,GAAa,MAA6C,CAAC,SAAS,CAAC,CAAC;QAE9E,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,8BAA8B,SAAS,wBAAwB,CAAC,CAAC;YAC9E,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,EAAgB,CAAC;IAC1B,CAAC;;AAGH,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;IAC3C,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AAC1D,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { Router } from './router/Router.js';
|
|
2
|
+
export { RouterElement } from './elements/RouterElement.js';
|
|
3
|
+
export { RouteElement } from './elements/RouteElement.js';
|
|
4
|
+
export type { RouteComponent, RouteContext, RouteDefinition, RouteGuard, RouteParams, CompiledRoute, MatchedRoute, } from './models/index.ts';
|
|
5
|
+
export { compileRoute, matchRoute } from './utils/index.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,YAAY,EACV,cAAc,EACd,YAAY,EACZ,eAAe,EACf,UAAU,EACV,WAAW,EACX,aAAa,EACb,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAY1D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompiledRoute.d.ts","sourceRoot":"","sources":["../../src/models/CompiledRoute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,eAAe,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompiledRoute.js","sourceRoot":"","sources":["../../src/models/CompiledRoute.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MatchedRoute.d.ts","sourceRoot":"","sources":["../../src/models/MatchedRoute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,eAAe,CAAC;IACjC,WAAW,EAAE,WAAW,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MatchedRoute.js","sourceRoot":"","sources":["../../src/models/MatchedRoute.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouteComponent.d.ts","sourceRoot":"","sources":["../../src/models/RouteComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3D,OAAO,CAAC,IAAI,IAAI,CAAC;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouteComponent.js","sourceRoot":"","sources":["../../src/models/RouteComponent.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouteContext.d.ts","sourceRoot":"","sources":["../../src/models/RouteContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,eAAe,CAAC;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouteContext.js","sourceRoot":"","sources":["../../src/models/RouteContext.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouteDefinition.d.ts","sourceRoot":"","sources":["../../src/models/RouteDefinition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,cAAc,CAAC;CAChC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouteDefinition.js","sourceRoot":"","sources":["../../src/models/RouteDefinition.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouteGuard.d.ts","sourceRoot":"","sources":["../../src/models/RouteGuard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,MAAM,UAAU,GAAG,CACvB,EAAE,EAAE,YAAY,EAChB,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,KAC9B,IAAI,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouteGuard.js","sourceRoot":"","sources":["../../src/models/RouteGuard.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouteParams.d.ts","sourceRoot":"","sources":["../../src/models/RouteParams.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouteParams.js","sourceRoot":"","sources":["../../src/models/RouteParams.ts"],"names":[],"mappings":""}
|
package/dist/models/index.d.ts
CHANGED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CompiledRoute } from './CompiledRoute.js';
|
|
2
|
+
import type { MatchedRoute } from './MatchedRoute.js';
|
|
3
|
+
import type { RouteComponent } from './RouteComponent.js';
|
|
4
|
+
import type { RouteContext } from './RouteContext.js';
|
|
5
|
+
import type { RouteDefinition } from './RouteDefinition.js';
|
|
6
|
+
import type { RouteGuard } from './RouteGuard.js';
|
|
7
|
+
import type { RouteParams } from './RouteParams.js';
|
|
8
|
+
export type { CompiledRoute, MatchedRoute, RouteComponent, RouteContext, RouteDefinition, RouteGuard, RouteParams, };
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,YAAY,EACV,aAAa,EACb,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,eAAe,EACf,UAAU,EACV,WAAW,GACZ,CAAC"}
|
package/dist/models/index.js
CHANGED
package/dist/models/index.js.map
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":""}
|
package/dist/router/Router.d.ts
CHANGED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { RouteDefinition, RouteGuard } from '../models/index.js';
|
|
2
|
+
export interface RouterEnv {
|
|
3
|
+
window?: Window;
|
|
4
|
+
document?: Document;
|
|
5
|
+
}
|
|
6
|
+
export interface RouterOptions {
|
|
7
|
+
outlet?: HTMLElement;
|
|
8
|
+
hashMode?: boolean;
|
|
9
|
+
beforeEach?: RouteGuard;
|
|
10
|
+
}
|
|
11
|
+
export declare class Router {
|
|
12
|
+
#private;
|
|
13
|
+
constructor(routeDefinitions: RouteDefinition[], routerOptions?: RouterOptions, env?: RouterEnv);
|
|
14
|
+
start(): void;
|
|
15
|
+
destroy(): void;
|
|
16
|
+
navigate(path: string): void;
|
|
17
|
+
replace(path: string): void;
|
|
18
|
+
back(): void;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=Router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../src/router/Router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,eAAe,EACf,UAAU,EACX,MAAM,oBAAoB,CAAC;AAG5B,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,qBAAa,MAAM;;gBAYf,gBAAgB,EAAE,eAAe,EAAE,EACnC,aAAa,GAAE,aAAkB,EACjC,GAAG,GAAE,SAAc;IAoBd,KAAK,IAAI,IAAI;IAab,OAAO,IAAI,IAAI;IAUf,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAY5B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAY3B,IAAI,IAAI,IAAI;CA0HpB"}
|
package/dist/router/Router.js
CHANGED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { compileRoute, matchRoute } from '../utils/index.js';
|
|
2
|
+
export class Router {
|
|
3
|
+
#compiledRoutes;
|
|
4
|
+
#hashMode;
|
|
5
|
+
#outlet;
|
|
6
|
+
#beforeEach;
|
|
7
|
+
#currentComponent;
|
|
8
|
+
#window;
|
|
9
|
+
#document;
|
|
10
|
+
#isStarted = false;
|
|
11
|
+
constructor(routeDefinitions, routerOptions = {}, env = {}) {
|
|
12
|
+
this.#compiledRoutes = routeDefinitions.map(compileRoute);
|
|
13
|
+
this.#hashMode = routerOptions.hashMode ?? false;
|
|
14
|
+
if (routerOptions.beforeEach !== undefined) {
|
|
15
|
+
this.#beforeEach = routerOptions.beforeEach;
|
|
16
|
+
}
|
|
17
|
+
if (env.window !== undefined) {
|
|
18
|
+
this.#window = env.window;
|
|
19
|
+
}
|
|
20
|
+
if (env.document !== undefined) {
|
|
21
|
+
this.#document = env.document;
|
|
22
|
+
}
|
|
23
|
+
this.#outlet = routerOptions.outlet ?? this.#document?.body ?? undefined;
|
|
24
|
+
}
|
|
25
|
+
start() {
|
|
26
|
+
if (!this.#window?.addEventListener || !this.#document?.addEventListener) {
|
|
27
|
+
throw new Error('[Router] Invalid environment: missing DOM APIs');
|
|
28
|
+
}
|
|
29
|
+
if (this.#isStarted)
|
|
30
|
+
return;
|
|
31
|
+
this.#bindEvents();
|
|
32
|
+
this.#resolve();
|
|
33
|
+
this.#isStarted = true;
|
|
34
|
+
}
|
|
35
|
+
destroy() {
|
|
36
|
+
if (!this.#window || !this.#document)
|
|
37
|
+
return;
|
|
38
|
+
this.#window.removeEventListener('popstate', this.#handlePopState);
|
|
39
|
+
this.#document.removeEventListener('click', this.#handleClick);
|
|
40
|
+
this.#currentComponent?.unmount?.();
|
|
41
|
+
this.#isStarted = false;
|
|
42
|
+
}
|
|
43
|
+
navigate(path) {
|
|
44
|
+
if (!this.#window)
|
|
45
|
+
return;
|
|
46
|
+
if (this.#hashMode) {
|
|
47
|
+
this.#window.location.hash = path;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
this.#window.history.pushState(null, '', path);
|
|
51
|
+
}
|
|
52
|
+
this.#resolve();
|
|
53
|
+
}
|
|
54
|
+
replace(path) {
|
|
55
|
+
if (!this.#window)
|
|
56
|
+
return;
|
|
57
|
+
if (this.#hashMode) {
|
|
58
|
+
this.#window.location.replace('#' + path);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
this.#window.history.replaceState(null, '', path);
|
|
62
|
+
}
|
|
63
|
+
this.#resolve();
|
|
64
|
+
}
|
|
65
|
+
back() {
|
|
66
|
+
this.#window?.history.back();
|
|
67
|
+
}
|
|
68
|
+
#bindEvents() {
|
|
69
|
+
this.#window.addEventListener('popstate', this.#handlePopState);
|
|
70
|
+
this.#document.addEventListener('click', this.#handleClick);
|
|
71
|
+
}
|
|
72
|
+
#handlePopState = () => {
|
|
73
|
+
this.#resolve();
|
|
74
|
+
};
|
|
75
|
+
#handleClick = (event) => {
|
|
76
|
+
const target = event.target;
|
|
77
|
+
const anchor = target?.closest?.('a');
|
|
78
|
+
if (!anchor)
|
|
79
|
+
return;
|
|
80
|
+
if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey)
|
|
81
|
+
return;
|
|
82
|
+
if (anchor.target === '_blank')
|
|
83
|
+
return;
|
|
84
|
+
const href = anchor.getAttribute('href');
|
|
85
|
+
if (!href)
|
|
86
|
+
return;
|
|
87
|
+
if (href.startsWith('http') ||
|
|
88
|
+
href.startsWith('//') ||
|
|
89
|
+
href.startsWith('mailto:') ||
|
|
90
|
+
href.startsWith('tel:')) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
event.preventDefault();
|
|
94
|
+
this.navigate(href);
|
|
95
|
+
};
|
|
96
|
+
#currentPath() {
|
|
97
|
+
if (!this.#window)
|
|
98
|
+
return '/';
|
|
99
|
+
if (this.#hashMode) {
|
|
100
|
+
const hash = this.#window.location.hash.slice(1);
|
|
101
|
+
return hash || '/';
|
|
102
|
+
}
|
|
103
|
+
return this.#window.location.pathname || '/';
|
|
104
|
+
}
|
|
105
|
+
#currentQuery() {
|
|
106
|
+
if (!this.#window)
|
|
107
|
+
return new URLSearchParams();
|
|
108
|
+
if (this.#hashMode) {
|
|
109
|
+
const hash = this.#window.location.hash;
|
|
110
|
+
const queryIndex = hash.indexOf('?');
|
|
111
|
+
if (queryIndex >= 0) {
|
|
112
|
+
return new URLSearchParams(hash.slice(queryIndex));
|
|
113
|
+
}
|
|
114
|
+
return new URLSearchParams();
|
|
115
|
+
}
|
|
116
|
+
return new URLSearchParams(this.#window.location.search);
|
|
117
|
+
}
|
|
118
|
+
#mount(routeComponent, routeContext) {
|
|
119
|
+
if (!this.#outlet)
|
|
120
|
+
return;
|
|
121
|
+
this.#currentComponent?.unmount?.();
|
|
122
|
+
this.#outlet.replaceChildren();
|
|
123
|
+
routeComponent.mount(this.#outlet, routeContext);
|
|
124
|
+
this.#currentComponent = routeComponent;
|
|
125
|
+
}
|
|
126
|
+
#resolve() {
|
|
127
|
+
const pathname = this.#currentPath();
|
|
128
|
+
const query = this.#currentQuery();
|
|
129
|
+
const match = matchRoute(this.#compiledRoutes, pathname);
|
|
130
|
+
if (!match) {
|
|
131
|
+
console.warn(`[Router] No route matched: ${pathname}`);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
const context = {
|
|
135
|
+
path: pathname,
|
|
136
|
+
routeParams: match.routeParams,
|
|
137
|
+
query,
|
|
138
|
+
};
|
|
139
|
+
if (!this.#beforeEach) {
|
|
140
|
+
this.#mount(match.routeDefinition.routeComponent, context);
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
let redirected = false;
|
|
144
|
+
const next = (redirect) => {
|
|
145
|
+
if (redirected)
|
|
146
|
+
return;
|
|
147
|
+
redirected = true;
|
|
148
|
+
if (redirect && redirect !== context.path) {
|
|
149
|
+
this.navigate(redirect);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
this.#mount(match.routeDefinition.routeComponent, context);
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
this.#beforeEach(context, next);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=Router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Router.js","sourceRoot":"","sources":["../../src/router/Router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compileRoute.d.ts","sourceRoot":"","sources":["../../src/utils/compileRoute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAMzE,wBAAgB,YAAY,CAAC,eAAe,EAAE,eAAe,GAAG,aAAa,CA8B5E"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
function escapeRegex(str) {
|
|
2
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
3
|
+
}
|
|
4
|
+
export function compileRoute(routeDefinition) {
|
|
5
|
+
const paramNames = [];
|
|
6
|
+
if (routeDefinition.path === '*') {
|
|
7
|
+
return {
|
|
8
|
+
routeDefinition,
|
|
9
|
+
pattern: /^.*$/,
|
|
10
|
+
paramNames,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
const pattern = routeDefinition.path
|
|
14
|
+
.split('/')
|
|
15
|
+
.map((segment) => {
|
|
16
|
+
const match = /^:([a-zA-Z_]\w*)$/.exec(segment);
|
|
17
|
+
if (match) {
|
|
18
|
+
paramNames.push(match[1]);
|
|
19
|
+
return '([^/]+)';
|
|
20
|
+
}
|
|
21
|
+
return escapeRegex(segment);
|
|
22
|
+
})
|
|
23
|
+
.join('\\/');
|
|
24
|
+
return {
|
|
25
|
+
routeDefinition,
|
|
26
|
+
pattern: new RegExp(`^${pattern}$`),
|
|
27
|
+
paramNames,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=compileRoute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compileRoute.js","sourceRoot":"","sources":["../../src/utils/compileRoute.ts"],"names":[],"mappings":"AAEA,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,eAAgC;IAC3D,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,IAAI,eAAe,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;QACjC,OAAO;YACL,eAAe;YACf,OAAO,EAAE,MAAM;YACf,UAAU;SACX,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI;SAC/B,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACb,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAElD,IAAI,KAAK,EAAE,CAAC;YACV,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;YAC3B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC,CAAC;SACD,IAAI,CAAC,KAAK,CAAC,CAAC;IAEjB,OAAO;QACL,eAAe;QACf,OAAO,EAAE,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC;QACnC,UAAU;KACX,CAAC;AACJ,CAAC"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/utils/index.js
CHANGED
package/dist/utils/index.js.map
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matchRoute.d.ts","sourceRoot":"","sources":["../../src/utils/matchRoute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EAEb,MAAM,oBAAoB,CAAC;AAE5B,wBAAgB,UAAU,CACtB,cAAc,EAAE,aAAa,EAAE,EAC/B,QAAQ,EAAE,MAAM,GACjB,YAAY,GAAG,IAAI,CA2BrB"}
|
package/dist/utils/matchRoute.js
CHANGED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export function matchRoute(compiledRoutes, pathname) {
|
|
2
|
+
for (const compiledRoute of compiledRoutes) {
|
|
3
|
+
const match = compiledRoute.pattern.exec(pathname);
|
|
4
|
+
if (!match)
|
|
5
|
+
continue;
|
|
6
|
+
const routeParams = {};
|
|
7
|
+
compiledRoute.paramNames.forEach((name, i) => {
|
|
8
|
+
const value = match[i + 1];
|
|
9
|
+
if (value === undefined)
|
|
10
|
+
return;
|
|
11
|
+
try {
|
|
12
|
+
routeParams[name] = decodeURIComponent(value);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
routeParams[name] = value;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
return {
|
|
19
|
+
routeDefinition: compiledRoute.routeDefinition,
|
|
20
|
+
routeParams,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=matchRoute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matchRoute.js","sourceRoot":"","sources":["../../src/utils/matchRoute.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,UAAU,CACtB,cAA+B,EAC/B,QAAgB;IAElB,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;QAC3C,MAAM,KAAK,GAA4B,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE5E,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,MAAM,WAAW,GAAgB,EAAE,CAAC;QAEpC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,KAAK,GAAuB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAE/C,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO;YAEhC,IAAI,CAAC;gBACH,WAAW,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAChD,CAAC;YAAC,MAAM,CAAC;gBACP,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,eAAe,EAAE,aAAa,CAAC,eAAe;YAC9C,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it, vi, beforeEach } from 'vitest';
|
|
2
|
-
import { RouteElement } from '../RouteElement.ts';
|
|
3
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4
|
-
describe('RouteElement', () => {
|
|
5
|
-
beforeEach(() => {
|
|
6
|
-
if (!customElements.get(RouteElement.tag)) {
|
|
7
|
-
customElements.define(RouteElement.tag, RouteElement);
|
|
8
|
-
}
|
|
9
|
-
document.body.innerHTML = '';
|
|
10
|
-
});
|
|
11
|
-
describe('Attribute Accessors & toDefinition Logic', () => {
|
|
12
|
-
it.each([
|
|
13
|
-
{
|
|
14
|
-
it: 'returns default path "*" if attribute is missing',
|
|
15
|
-
html: `<wavelength-route component="my-view"></wavelength-route>`,
|
|
16
|
-
expectedPath: '*',
|
|
17
|
-
expectedTag: 'my-view'
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
it: 'extracts specified path and component tag',
|
|
21
|
-
html: `<wavelength-route path="/home" component="home-view"></wavelength-route>`,
|
|
22
|
-
expectedPath: '/home',
|
|
23
|
-
expectedTag: 'home-view'
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
it: 'returns null and warns if component attribute is missing',
|
|
27
|
-
html: `<wavelength-route path="/error"></wavelength-route>`,
|
|
28
|
-
expectedPath: '/error',
|
|
29
|
-
expectedTag: '',
|
|
30
|
-
shouldBeNull: true
|
|
31
|
-
}
|
|
32
|
-
])('$it', ({ html, expectedPath, expectedTag, shouldBeNull }) => {
|
|
33
|
-
document.body.innerHTML = html;
|
|
34
|
-
const el = document.querySelector('wavelength-route');
|
|
35
|
-
const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
|
|
36
|
-
expect(el.path).toBe(expectedPath);
|
|
37
|
-
expect(el.componentTag).toBe(expectedTag);
|
|
38
|
-
const def = el.toDefinition({ document });
|
|
39
|
-
if (shouldBeNull) {
|
|
40
|
-
expect(def).toBeNull();
|
|
41
|
-
expect(warnSpy).toHaveBeenCalled();
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
expect(def?.path).toBe(expectedPath);
|
|
45
|
-
expect(def?.routeComponent).toBeDefined();
|
|
46
|
-
}
|
|
47
|
-
warnSpy.mockRestore();
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
describe('SSR / Environment Resilience', () => {
|
|
51
|
-
it('returns a no-op component if document is missing', () => {
|
|
52
|
-
const el = document.createElement('wavelength-route');
|
|
53
|
-
el.setAttribute('component', 'test-view');
|
|
54
|
-
const def = el.toDefinition({});
|
|
55
|
-
expect(def?.path).toBe('*');
|
|
56
|
-
expect(def?.routeComponent.mount).toBeInstanceOf(Function);
|
|
57
|
-
expect(() => def?.routeComponent.mount({}, {})).not.toThrow();
|
|
58
|
-
expect(() => def?.routeComponent.unmount?.()).not.toThrow();
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
describe('RouteComponent Mounting Logic', () => {
|
|
62
|
-
it('properly creates element and injects context on mount', () => {
|
|
63
|
-
const el = document.createElement('wavelength-route');
|
|
64
|
-
el.setAttribute('component', 'user-profile');
|
|
65
|
-
const def = el.toDefinition({ document });
|
|
66
|
-
const container = document.createElement('div');
|
|
67
|
-
const mockContext = { path: '/user/1', routeParams: { id: '1' }, query: new URLSearchParams() };
|
|
68
|
-
def?.routeComponent.mount(container, mockContext);
|
|
69
|
-
const renderedElement = container.querySelector('user-profile');
|
|
70
|
-
expect(renderedElement).toBeDefined();
|
|
71
|
-
expect(renderedElement.routeContext).toEqual(mockContext);
|
|
72
|
-
expect(def?.routeComponent.unmount).toBeDefined();
|
|
73
|
-
def?.routeComponent.unmount?.();
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
//# sourceMappingURL=RouteElement.test.js.map
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { RouteDefinition } from '../models/index.ts';
|
|
2
|
-
export interface RouteElementEnv {
|
|
3
|
-
document?: Document;
|
|
4
|
-
}
|
|
5
|
-
export declare class RouteElement extends HTMLElement {
|
|
6
|
-
static readonly tag = "wavelength-route";
|
|
7
|
-
get path(): string;
|
|
8
|
-
get componentTag(): string;
|
|
9
|
-
toDefinition(env?: RouteElementEnv): RouteDefinition | null;
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=RouteElement.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RouteElement.d.ts","sourceRoot":"","sources":["../../../src/elements/RouteElement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,qBAAa,YAAa,SAAQ,WAAW;IAC3C,gBAAuB,GAAG,sBAAsB;IAEhD,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAEM,YAAY,CAAC,GAAG,GAAE,eAAoB,GAAG,eAAe,GAAG,IAAI;CAyCvE"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export declare class RouterElement extends HTMLElement {
|
|
2
|
-
#private;
|
|
3
|
-
static readonly tag = "wavelength-router";
|
|
4
|
-
static get observedAttributes(): string[];
|
|
5
|
-
connectedCallback(): void;
|
|
6
|
-
disconnectedCallback(): void;
|
|
7
|
-
attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
|
|
8
|
-
navigate(path: string): void;
|
|
9
|
-
replace(path: string): void;
|
|
10
|
-
back(): void;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=RouterElement.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RouterElement.d.ts","sourceRoot":"","sources":["../../../src/elements/RouterElement.ts"],"names":[],"mappings":"AAIA,qBAAa,aAAc,SAAQ,WAAW;;IAC5C,gBAAuB,GAAG,uBAAuB;IAIjD,WAAkB,kBAAkB,IAAI,MAAM,EAAE,CAE/C;IAEM,iBAAiB,IAAI,IAAI;IAIzB,oBAAoB,IAAI,IAAI;IAI5B,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAK9F,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI5B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,IAAI,IAAI,IAAI;CA0DpB"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/src/index.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { Router } from './router/Router.ts';
|
|
2
|
-
export { RouterElement } from './elements/RouterElement.ts';
|
|
3
|
-
export { RouteElement } from './elements/RouteElement.ts';
|
|
4
|
-
export type { RouteComponent, RouteContext, RouteDefinition, RouteGuard, RouteParams, CompiledRoute, MatchedRoute, } from './models/index.ts';
|
|
5
|
-
export { compileRoute, matchRoute } from './utils/index.ts';
|
|
6
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,YAAY,EACV,cAAc,EACd,YAAY,EACZ,eAAe,EACf,UAAU,EACV,WAAW,EACX,aAAa,EACb,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CompiledRoute.d.ts","sourceRoot":"","sources":["../../../src/models/CompiledRoute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,eAAe,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MatchedRoute.d.ts","sourceRoot":"","sources":["../../../src/models/MatchedRoute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,eAAe,CAAC;IACjC,WAAW,EAAE,WAAW,CAAC;CAC1B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RouteComponent.d.ts","sourceRoot":"","sources":["../../../src/models/RouteComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3D,OAAO,CAAC,IAAI,IAAI,CAAC;CAClB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RouteContext.d.ts","sourceRoot":"","sources":["../../../src/models/RouteContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,eAAe,CAAC;CACxB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RouteDefinition.d.ts","sourceRoot":"","sources":["../../../src/models/RouteDefinition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,cAAc,CAAC;CAChC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RouteGuard.d.ts","sourceRoot":"","sources":["../../../src/models/RouteGuard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,MAAM,UAAU,GAAG,CACvB,EAAE,EAAE,YAAY,EAChB,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,KAC9B,IAAI,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RouteParams.d.ts","sourceRoot":"","sources":["../../../src/models/RouteParams.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { CompiledRoute } from './CompiledRoute.ts';
|
|
2
|
-
import type { MatchedRoute } from './MatchedRoute.ts';
|
|
3
|
-
import type { RouteComponent } from './RouteComponent.ts';
|
|
4
|
-
import type { RouteContext } from './RouteContext.ts';
|
|
5
|
-
import type { RouteDefinition } from './RouteDefinition.ts';
|
|
6
|
-
import type { RouteGuard } from './RouteGuard.ts';
|
|
7
|
-
import type { RouteParams } from './RouteParams.ts';
|
|
8
|
-
export type { CompiledRoute, MatchedRoute, RouteComponent, RouteContext, RouteDefinition, RouteGuard, RouteParams, };
|
|
9
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,YAAY,EACV,aAAa,EACb,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,eAAe,EACf,UAAU,EACV,WAAW,GACZ,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { RouteDefinition, RouteGuard } from '../models/index.ts';
|
|
2
|
-
export interface RouterEnv {
|
|
3
|
-
window?: Window;
|
|
4
|
-
document?: Document;
|
|
5
|
-
}
|
|
6
|
-
export interface RouterOptions {
|
|
7
|
-
outlet?: HTMLElement;
|
|
8
|
-
hashMode?: boolean;
|
|
9
|
-
beforeEach?: RouteGuard;
|
|
10
|
-
}
|
|
11
|
-
export declare class Router {
|
|
12
|
-
#private;
|
|
13
|
-
constructor(routeDefinitions: RouteDefinition[], routerOptions?: RouterOptions, env?: RouterEnv);
|
|
14
|
-
start(): void;
|
|
15
|
-
destroy(): void;
|
|
16
|
-
navigate(path: string): void;
|
|
17
|
-
replace(path: string): void;
|
|
18
|
-
back(): void;
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=Router.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../../src/router/Router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,eAAe,EACf,UAAU,EACX,MAAM,oBAAoB,CAAC;AAG5B,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,qBAAa,MAAM;;gBAYf,gBAAgB,EAAE,eAAe,EAAE,EACnC,aAAa,GAAE,aAAkB,EACjC,GAAG,GAAE,SAAc;IAoBd,KAAK,IAAI,IAAI;IAab,OAAO,IAAI,IAAI;IAUf,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAY5B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAY3B,IAAI,IAAI,IAAI;CA0HpB"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compileRoute.d.ts","sourceRoot":"","sources":["../../../src/utils/compileRoute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAMzE,wBAAgB,YAAY,CAAC,eAAe,EAAE,eAAe,GAAG,aAAa,CA8B5E"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"matchRoute.d.ts","sourceRoot":"","sources":["../../../src/utils/matchRoute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EAEb,MAAM,oBAAoB,CAAC;AAE5B,wBAAgB,UAAU,CACtB,cAAc,EAAE,aAAa,EAAE,EAC/B,QAAQ,EAAE,MAAM,GACjB,YAAY,GAAG,IAAI,CA2BrB"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|