@furystack/shades 10.0.5 → 11.0.0
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/esm/compile-route.d.ts +2 -0
- package/esm/compile-route.d.ts.map +1 -0
- package/esm/compile-route.js +4 -0
- package/esm/compile-route.js.map +1 -0
- package/esm/components/lazy-load.d.ts +2 -2
- package/esm/components/lazy-load.d.ts.map +1 -1
- package/esm/components/lazy-load.spec.js +2 -2
- package/esm/components/lazy-load.spec.js.map +1 -1
- package/esm/components/link-to-route.d.ts +1 -1
- package/esm/components/link-to-route.d.ts.map +1 -1
- package/esm/components/link-to-route.js +3 -3
- package/esm/components/link-to-route.js.map +1 -1
- package/esm/components/route-link.d.ts +2 -2
- package/esm/components/route-link.d.ts.map +1 -1
- package/esm/components/router.d.ts +4 -4
- package/esm/components/router.d.ts.map +1 -1
- package/esm/components/router.js +4 -4
- package/esm/components/router.js.map +1 -1
- package/esm/components/router.spec.js +1 -1
- package/esm/components/router.spec.js.map +1 -1
- package/esm/index.d.ts +5 -4
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +5 -4
- package/esm/index.js.map +1 -1
- package/esm/models/render-options.d.ts +2 -2
- package/esm/models/render-options.d.ts.map +1 -1
- package/esm/models/shade-component.d.ts.map +1 -1
- package/esm/services/location-service.d.ts +9 -10
- package/esm/services/location-service.d.ts.map +1 -1
- package/esm/services/location-service.js +41 -38
- package/esm/services/location-service.js.map +1 -1
- package/esm/services/location-service.spec.js +28 -20
- package/esm/services/location-service.spec.js.map +1 -1
- package/esm/services/resource-manager.d.ts +4 -5
- package/esm/services/resource-manager.d.ts.map +1 -1
- package/esm/services/resource-manager.js +18 -5
- package/esm/services/resource-manager.js.map +1 -1
- package/esm/services/resource-manager.spec.js +55 -7
- package/esm/services/resource-manager.spec.js.map +1 -1
- package/esm/services/screen-service.d.ts +1 -2
- package/esm/services/screen-service.d.ts.map +1 -1
- package/esm/services/screen-service.js +1 -1
- package/esm/services/screen-service.js.map +1 -1
- package/esm/shade-component.d.ts +5 -5
- package/esm/shade-component.d.ts.map +1 -1
- package/esm/shade-component.js +8 -5
- package/esm/shade-component.js.map +1 -1
- package/esm/shade-resources.integration.spec.js +6 -5
- package/esm/shade-resources.integration.spec.js.map +1 -1
- package/esm/shade.d.ts +1 -1
- package/esm/shade.d.ts.map +1 -1
- package/esm/shade.js +5 -5
- package/esm/shade.js.map +1 -1
- package/esm/shades.integration.spec.js +79 -4
- package/esm/shades.integration.spec.js.map +1 -1
- package/esm/styled-element.d.ts.map +1 -1
- package/esm/styled-shade.d.ts.map +1 -1
- package/esm/styled-shade.js +13 -7
- package/esm/styled-shade.js.map +1 -1
- package/package.json +8 -8
- package/src/compile-route.ts +6 -0
- package/src/components/lazy-load.spec.tsx +3 -3
- package/src/components/link-to-route.tsx +4 -4
- package/src/components/router.spec.tsx +1 -1
- package/src/components/router.tsx +7 -7
- package/src/index.ts +5 -4
- package/src/models/render-options.ts +2 -2
- package/src/services/location-service.spec.ts +34 -22
- package/src/services/location-service.tsx +51 -45
- package/src/services/resource-manager.spec.ts +74 -7
- package/src/services/resource-manager.ts +29 -10
- package/src/services/screen-service.ts +1 -2
- package/src/shade-component.ts +16 -12
- package/src/shade-resources.integration.spec.tsx +7 -5
- package/src/shade.ts +6 -6
- package/src/shades.integration.spec.tsx +107 -4
- package/src/styled-shade.ts +13 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-route.d.ts","sourceRoot":"","sources":["../src/compile-route.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,MAAM,OAAO,MAAM,UAAU,CAAC,WAAgD,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { compile } from 'path-to-regexp';
|
|
2
|
+
const stringifyObjectValues = (params) => Object.fromEntries(Object.entries(params).map(([key, value]) => [key, value?.toString()]));
|
|
3
|
+
export const compileRoute = (url, params) => compile(url)(stringifyObjectValues(params));
|
|
4
|
+
//# sourceMappingURL=compile-route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-route.js","sourceRoot":"","sources":["../src/compile-route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAExC,MAAM,qBAAqB,GAAG,CAAC,MAA2B,EAAE,EAAE,CAC5D,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAA;AAE5F,MAAM,CAAC,MAAM,YAAY,GAAG,CAAmB,GAAW,EAAE,MAAS,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAA"}
|
|
@@ -8,6 +8,6 @@ export interface LazyLoadState {
|
|
|
8
8
|
error?: unknown;
|
|
9
9
|
}
|
|
10
10
|
export declare const LazyLoad: (props: LazyLoadProps & Omit<Partial<HTMLElement>, "style"> & {
|
|
11
|
-
style?: Partial<CSSStyleDeclaration
|
|
12
|
-
}, children?: import("../index.js").ChildrenList
|
|
11
|
+
style?: Partial<CSSStyleDeclaration>;
|
|
12
|
+
}, children?: import("../index.js").ChildrenList) => JSX.Element;
|
|
13
13
|
//# sourceMappingURL=lazy-load.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazy-load.d.ts","sourceRoot":"","sources":["../../src/components/lazy-load.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,GAAG,CAAC,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,KAAK,GAAG,CAAC,OAAO,CAAA;IAC1D,SAAS,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,eAAO,MAAM,QAAQ;;
|
|
1
|
+
{"version":3,"file":"lazy-load.d.ts","sourceRoot":"","sources":["../../src/components/lazy-load.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,GAAG,CAAC,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,KAAK,GAAG,CAAC,OAAO,CAAA;IAC1D,SAAS,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,eAAO,MAAM,QAAQ;;qDAsCk4Q,IAAK,OAAO,AADj6Q,CAAA"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TextDecoder, TextEncoder } from 'util';
|
|
2
2
|
global.TextEncoder = TextEncoder;
|
|
3
3
|
global.TextDecoder = TextDecoder;
|
|
4
4
|
import { Injector } from '@furystack/inject';
|
|
5
5
|
import { sleepAsync } from '@furystack/utils';
|
|
6
6
|
import { LazyLoad } from './lazy-load.js';
|
|
7
|
-
import {
|
|
7
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
8
8
|
import { initializeShadeRoot } from '../initialize.js';
|
|
9
9
|
import { createComponent } from '../shade-component.js';
|
|
10
10
|
describe('Lazy Load', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazy-load.spec.js","sourceRoot":"","sources":["../../src/components/lazy-load.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAE/C,MAAM,CAAC,WAAW,GAAG,WAAW,CAAA;AAChC,MAAM,CAAC,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"lazy-load.spec.js","sourceRoot":"","sources":["../../src/components/lazy-load.spec.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link-to-route.d.ts","sourceRoot":"","sources":["../../src/components/link-to-route.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"link-to-route.d.ts","sourceRoot":"","sources":["../../src/components/link-to-route.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAG9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAExC,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,EAAE,IAAI;IAC3C,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IACf,MAAM,EAAE,CAAC,CAAA;CACV,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;AAE5C,eAAO,MAAM,WAAW,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,YAAY,KAAK,GAAG,CAAC,OAWnG,CAAA"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Shade } from '../shade.js';
|
|
1
|
+
import { compileRoute } from '../compile-route.js';
|
|
3
2
|
import { createComponent } from '../shade-component.js';
|
|
3
|
+
import { Shade } from '../shade.js';
|
|
4
4
|
export const LinkToRoute = Shade({
|
|
5
5
|
shadowDomName: 'link-to-route',
|
|
6
6
|
elementBase: HTMLAnchorElement,
|
|
7
7
|
elementBaseName: 'a',
|
|
8
8
|
render: ({ props, element, children }) => {
|
|
9
9
|
const { route, params } = props;
|
|
10
|
-
const url =
|
|
10
|
+
const url = compileRoute(route.url, params);
|
|
11
11
|
element.setAttribute('href', url);
|
|
12
12
|
return createComponent(createComponent, null, children);
|
|
13
13
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link-to-route.js","sourceRoot":"","sources":["../../src/components/link-to-route.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"link-to-route.js","sourceRoot":"","sources":["../../src/components/link-to-route.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAQnC,MAAM,CAAC,MAAM,WAAW,GAAuF,KAAK,CAAC;IACnH,aAAa,EAAE,eAAe;IAC9B,WAAW,EAAE,iBAAiB;IAC9B,eAAe,EAAE,GAAG;IACpB,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QACvC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;QAE/B,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAC3C,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QACjC,OAAO,uCAAG,QAAQ,CAAI,CAAA;IACxB,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { PartialElement } from '../models/partial-element.js';
|
|
2
2
|
export type RouteLinkProps = PartialElement<Omit<HTMLAnchorElement, 'onclick'>>;
|
|
3
3
|
export declare const RouteLink: (props: Omit<Partial<Omit<HTMLAnchorElement, "onclick">>, "style"> & {
|
|
4
|
-
style?: Partial<CSSStyleDeclaration
|
|
5
|
-
} & Omit<Partial<HTMLElement>, "style">, children?: import("../index.js").ChildrenList
|
|
4
|
+
style?: Partial<CSSStyleDeclaration>;
|
|
5
|
+
} & Omit<Partial<HTMLElement>, "style">, children?: import("../index.js").ChildrenList) => JSX.Element;
|
|
6
6
|
//# sourceMappingURL=route-link.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-link.d.ts","sourceRoot":"","sources":["../../src/components/route-link.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAIlE,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAA;AAE/E,eAAO,MAAM,SAAS;;
|
|
1
|
+
{"version":3,"file":"route-link.d.ts","sourceRoot":"","sources":["../../src/components/route-link.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAIlE,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAA;AAE/E,eAAO,MAAM,SAAS;;2FAqB26R,IAAK,OAAO,AAD38R,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { MatchOptions, MatchResult } from 'path-to-regexp';
|
|
2
2
|
import type { RenderOptions } from '../models/render-options.js';
|
|
3
3
|
export interface Route<TMatchResult extends object> {
|
|
4
4
|
url: string;
|
|
@@ -6,7 +6,7 @@ export interface Route<TMatchResult extends object> {
|
|
|
6
6
|
currentUrl: string;
|
|
7
7
|
match: MatchResult<TMatchResult>;
|
|
8
8
|
}) => JSX.Element;
|
|
9
|
-
routingOptions?:
|
|
9
|
+
routingOptions?: MatchOptions;
|
|
10
10
|
onVisit?: (options: RenderOptions<unknown>) => Promise<void>;
|
|
11
11
|
onLeave?: (options: RenderOptions<unknown>) => Promise<void>;
|
|
12
12
|
}
|
|
@@ -21,6 +21,6 @@ export interface RouterState {
|
|
|
21
21
|
jsx: JSX.Element;
|
|
22
22
|
}
|
|
23
23
|
export declare const Router: (props: RouterProps & Omit<Partial<HTMLElement>, "style"> & {
|
|
24
|
-
style?: Partial<CSSStyleDeclaration
|
|
25
|
-
}, children?: import("../index.js").ChildrenList
|
|
24
|
+
style?: Partial<CSSStyleDeclaration>;
|
|
25
|
+
}, children?: import("../index.js").ChildrenList) => JSX.Element;
|
|
26
26
|
//# sourceMappingURL=router.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/components/router.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/components/router.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAG/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAKhE,MAAM,WAAW,KAAK,CAAC,YAAY,SAAS,MAAM;IAChD,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAA;IAC7F,cAAc,CAAC,EAAE,YAAY,CAAA;IAC7B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7D;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,mBAAmB,CAAA;IAC3B,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;IACzB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;IAC/B,iBAAiB,CAAC,EAAE,GAAG,CAAA;IACvB,GAAG,EAAE,GAAG,CAAC,OAAO,CAAA;CACjB;AACD,eAAO,MAAM,MAAM;;qDAuD84N,IAAK,OAAO,AAD36N,CAAA"}
|
package/esm/components/router.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createComponent } from '../shade-component.js';
|
|
3
|
-
import { LocationService } from '../services/location-service.js';
|
|
1
|
+
import { ObservableAlreadyDisposedError } from '@furystack/utils';
|
|
4
2
|
import { match } from 'path-to-regexp';
|
|
5
3
|
import { Lock } from 'semaphore-async-await';
|
|
6
|
-
import {
|
|
4
|
+
import { LocationService } from '../services/location-service.js';
|
|
5
|
+
import { createComponent } from '../shade-component.js';
|
|
6
|
+
import { Shade } from '../shade.js';
|
|
7
7
|
export const Router = Shade({
|
|
8
8
|
shadowDomName: 'shade-router',
|
|
9
9
|
render: (options) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/components/router.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/components/router.tsx"],"names":[],"mappings":"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"}
|
|
@@ -37,7 +37,7 @@ describe('Router', () => {
|
|
|
37
37
|
createComponent(RouteLink, { id: "x", href: "/route-x" }, "x"),
|
|
38
38
|
createComponent(Router, { routes: [
|
|
39
39
|
{ url: '/route-a', component: () => createComponent("div", { id: "content" }, "route-a"), onVisit, onLeave },
|
|
40
|
-
{ url: '/route-b/:id?', component: ({ match }) => createComponent("div", { id: "content" },
|
|
40
|
+
{ url: '/route-b{/:id}?', component: ({ match }) => createComponent("div", { id: "content" },
|
|
41
41
|
"route-b",
|
|
42
42
|
match.params.id) },
|
|
43
43
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.spec.js","sourceRoot":"","sources":["../../src/components/router.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAE/C,MAAM,CAAC,WAAW,GAAG,WAAW,CAAA;AAChC,MAAM,CAAC,WAAW,GAAG,WAAkB,CAAA;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,uBAAuB,CAAA;IACnD,CAAC,CAAC,CAAA;IACF,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;QAEhC,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;QACvB,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;QACvB,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;QAE3B,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAA;QAC/B,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAmB,CAAA;QAErE,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;QAE7B,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;QAEpF,mBAAmB,CAAC;YAClB,QAAQ;YACR,WAAW;YACX,UAAU,EAAE,CACV;gBACE,gBAAC,SAAS,IAAC,EAAE,EAAC,MAAM,EAAC,IAAI,EAAC,GAAG,WAEjB;gBACZ,gBAAC,SAAS,IAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,UAAU,QAErB;gBACZ,gBAAC,SAAS,IAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,UAAU,QAErB;gBACZ,gBAAC,SAAS,IAAC,EAAE,EAAC,WAAW,EAAC,IAAI,EAAC,cAAc,gBAEjC;gBACZ,gBAAC,SAAS,IAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,UAAU,QAErB;gBACZ,gBAAC,SAAS,IAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,UAAU,QAErB;gBACZ,gBAAC,MAAM,IACL,MAAM,EAAE;wBACN,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,yBAAK,EAAE,EAAC,SAAS,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE;wBACvF,EAAE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"router.spec.js","sourceRoot":"","sources":["../../src/components/router.spec.tsx"],"names":[],"mappings":"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"}
|
package/esm/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
export * from './compile-route.js';
|
|
2
|
+
export * from './components/index.js';
|
|
3
|
+
export * from './initialize.js';
|
|
4
|
+
export * from './models/index.js';
|
|
1
5
|
export * from './services/index.js';
|
|
2
|
-
import './jsx.js';
|
|
3
6
|
export * from './shade-component.js';
|
|
4
7
|
export * from './shade.js';
|
|
5
|
-
export * from './models/index.js';
|
|
6
|
-
export * from './components/index.js';
|
|
7
|
-
export * from './initialize.js';
|
|
8
8
|
export * from './styled-element.js';
|
|
9
9
|
export * from './styled-shade.js';
|
|
10
|
+
import './jsx.js';
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
package/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,YAAY,CAAA;AAC1B,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,OAAO,UAAU,CAAA"}
|
package/esm/index.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
export * from './compile-route.js';
|
|
2
|
+
export * from './components/index.js';
|
|
3
|
+
export * from './initialize.js';
|
|
4
|
+
export * from './models/index.js';
|
|
1
5
|
export * from './services/index.js';
|
|
2
|
-
import './jsx.js';
|
|
3
6
|
export * from './shade-component.js';
|
|
4
7
|
export * from './shade.js';
|
|
5
|
-
export * from './models/index.js';
|
|
6
|
-
export * from './components/index.js';
|
|
7
|
-
export * from './initialize.js';
|
|
8
8
|
export * from './styled-element.js';
|
|
9
9
|
export * from './styled-shade.js';
|
|
10
|
+
import './jsx.js';
|
|
10
11
|
//# sourceMappingURL=index.js.map
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,YAAY,CAAA;AAC1B,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,OAAO,UAAU,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Injector } from '@furystack/inject';
|
|
2
|
+
import type { ObservableValue, ValueObserverOptions } from '@furystack/utils';
|
|
2
3
|
import type { ChildrenList } from './children-list.js';
|
|
3
|
-
import type { Disposable, ObservableValue, ValueObserverOptions } from '@furystack/utils';
|
|
4
4
|
import type { PartialElement } from './partial-element.js';
|
|
5
5
|
export type RenderOptions<TProps, TElementBase extends HTMLElement = HTMLElement> = {
|
|
6
6
|
readonly props: TProps & PartialElement<TElementBase>;
|
|
@@ -14,7 +14,7 @@ export type RenderOptions<TProps, TElementBase extends HTMLElement = HTMLElement
|
|
|
14
14
|
* @param factory A factory method for creating the disposable resource
|
|
15
15
|
* @returns The Disposable instance
|
|
16
16
|
*/
|
|
17
|
-
useDisposable: <T extends Disposable>(key: string, factory: () => T) => T;
|
|
17
|
+
useDisposable: <T extends Disposable | AsyncDisposable>(key: string, factory: () => T) => T;
|
|
18
18
|
/**
|
|
19
19
|
*
|
|
20
20
|
* @param key The key for caching the observable value
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-options.d.ts","sourceRoot":"","sources":["../../src/models/render-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"render-options.d.ts","sourceRoot":"","sources":["../../src/models/render-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1D,MAAM,MAAM,aAAa,CAAC,MAAM,EAAE,YAAY,SAAS,WAAW,GAAG,WAAW,IAAI;IAClF,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAAC,YAAY,CAAC,CAAA;IACrD,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5B;;;;;OAKG;IACH,aAAa,EAAE,CAAC,CAAC,SAAS,UAAU,GAAG,eAAe,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAE3F;;;;;;OAMG;IACH,aAAa,EAAE,CAAC,CAAC,EACf,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,EAC9B,OAAO,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG;QAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAA;KAAE,KACrE,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;IAEhD;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;IAE1F;;;;;OAKG;IACH,cAAc,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;IAEhG;;;;;;OAMG;IACH,cAAc,EAAE,CAAC,CAAC,EAChB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,CAAC,EACf,WAAW,CAAC,EAAE,OAAO,KAClB,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;CACjD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shade-component.d.ts","sourceRoot":"","sources":["../../src/models/shade-component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,KAAK,GAAG,CAAC,OAAO,CAAA;AAE/F;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,QAAS,GAAG
|
|
1
|
+
{"version":3,"file":"shade-component.d.ts","sourceRoot":"","sources":["../../src/models/shade-component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,KAAK,GAAG,CAAC,OAAO,CAAA;AAE/F;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,QAAS,GAAG,KAAG,GAAG,IAAI,cAAc,CAAC,GAAG,CAEpE,CAAA"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import type { Disposable } from '@furystack/utils';
|
|
2
|
-
import { ObservableValue } from '@furystack/utils';
|
|
3
1
|
import { type Injector } from '@furystack/inject';
|
|
4
|
-
import { deserializeQueryString, serializeToQueryString } from '@furystack/rest';
|
|
2
|
+
import { deserializeQueryString as defaultDeserializeQueryString, serializeToQueryString as defaultSerializeToQueryString } from '@furystack/rest';
|
|
3
|
+
import { ObservableValue } from '@furystack/utils';
|
|
5
4
|
export declare class LocationService implements Disposable {
|
|
6
|
-
|
|
7
|
-
deserializeQueryString: (fullQueryString: string) =>
|
|
8
|
-
|
|
5
|
+
private readonly serializeToQueryString;
|
|
6
|
+
readonly deserializeQueryString: (fullQueryString: string) => Record<string, unknown>;
|
|
7
|
+
constructor(serializeToQueryString?: <T extends object>(queryObject: T) => string, deserializeQueryString?: (fullQueryString: string) => Record<string, unknown>);
|
|
8
|
+
private originalPushState;
|
|
9
|
+
private originalReplaceState;
|
|
10
|
+
[Symbol.dispose](): void;
|
|
9
11
|
/**
|
|
10
12
|
* Observable value that will be updated when the location pathname (e.g. /page/1) changes
|
|
11
13
|
*/
|
|
@@ -29,11 +31,8 @@ export declare class LocationService implements Disposable {
|
|
|
29
31
|
* @returns An observable with the current value (or default value) of the search param
|
|
30
32
|
*/
|
|
31
33
|
useSearchParam<T>(key: string, defaultValue: T): ObservableValue<T>;
|
|
32
|
-
private pushStateTracer;
|
|
33
|
-
private replaceStateTracer;
|
|
34
34
|
private popStateListener;
|
|
35
35
|
private hashChangeListener;
|
|
36
|
-
constructor();
|
|
37
36
|
}
|
|
38
|
-
export declare const useCustomSearchStateSerializer: (injector: Injector, serialize: typeof
|
|
37
|
+
export declare const useCustomSearchStateSerializer: (injector: Injector, serialize: typeof defaultSerializeToQueryString, deserialize: typeof defaultDeserializeQueryString) => void;
|
|
39
38
|
//# sourceMappingURL=location-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"location-service.d.ts","sourceRoot":"","sources":["../../src/services/location-service.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"location-service.d.ts","sourceRoot":"","sources":["../../src/services/location-service.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EACL,sBAAsB,IAAI,6BAA6B,EACvD,sBAAsB,IAAI,6BAA6B,EACxD,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,qBACa,eAAgB,YAAW,UAAU;IAE9C,OAAO,CAAC,QAAQ,CAAC,sBAAsB;aAEvB,sBAAsB;gBAFrB,sBAAsB,+CAAgC,EAEvD,sBAAsB,uDAAgC;IAoBxE,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,OAAO,CAAC,oBAAoB,CAAoC;IAEzD,CAAC,MAAM,CAAC,OAAO,CAAC;IAYvB;;OAEG;IACI,qBAAqB,0BAAuD;IAEnF;;OAEG;IACI,qBAAqB,0BAAsD;IAElF;;OAEG;IACI,uBAAuB,0BAA+C;IAEtE,mCAAmC,EAAE,eAAe,CAAC,GAAG,CAAC,CAAA;IAEzD,4BAA4B,mDAEjC;IAEK,WAAW,aAIL;IAEb,SAAgB,sBAAsB,oCAA0C;IAEhF;;;;;OAKG;IACI,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IA+BrD,OAAO,CAAC,gBAAgB,CAEvB;IAED,OAAO,CAAC,kBAAkB,CAEb;CACd;AAED,eAAO,MAAM,8BAA8B,aAC/B,QAAQ,aACP,OAAO,6BAA6B,eAClC,OAAO,6BAA6B,SAQlD,CAAA"}
|
|
@@ -7,21 +7,40 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
|
-
import { ObservableValue, Trace } from '@furystack/utils';
|
|
11
10
|
import { Injectable } from '@furystack/inject';
|
|
12
|
-
import { deserializeQueryString, serializeToQueryString } from '@furystack/rest';
|
|
11
|
+
import { deserializeQueryString as defaultDeserializeQueryString, serializeToQueryString as defaultSerializeToQueryString, } from '@furystack/rest';
|
|
12
|
+
import { ObservableValue } from '@furystack/utils';
|
|
13
13
|
let LocationService = class LocationService {
|
|
14
|
-
serializeToQueryString
|
|
15
|
-
deserializeQueryString
|
|
16
|
-
|
|
14
|
+
serializeToQueryString;
|
|
15
|
+
deserializeQueryString;
|
|
16
|
+
constructor(serializeToQueryString = defaultSerializeToQueryString, deserializeQueryString = defaultDeserializeQueryString) {
|
|
17
|
+
this.serializeToQueryString = serializeToQueryString;
|
|
18
|
+
this.deserializeQueryString = deserializeQueryString;
|
|
19
|
+
window.addEventListener('popstate', this.popStateListener);
|
|
20
|
+
window.addEventListener('hashchange', this.hashChangeListener);
|
|
21
|
+
this.onDeserializedLocationSearchChanged = new ObservableValue(this.deserializeQueryString(location.search));
|
|
22
|
+
this.originalPushState = window.history.pushState.bind(window.history);
|
|
23
|
+
window.history.pushState = ((...args) => {
|
|
24
|
+
this.originalPushState(...args);
|
|
25
|
+
this.updateState();
|
|
26
|
+
}).bind(this);
|
|
27
|
+
this.originalReplaceState = window.history.replaceState.bind(window.history);
|
|
28
|
+
window.history.replaceState = ((...args) => {
|
|
29
|
+
this.originalReplaceState(...args);
|
|
30
|
+
this.updateState();
|
|
31
|
+
}).bind(this);
|
|
32
|
+
}
|
|
33
|
+
originalPushState;
|
|
34
|
+
originalReplaceState;
|
|
35
|
+
[Symbol.dispose]() {
|
|
17
36
|
window.removeEventListener('popstate', this.popStateListener);
|
|
18
37
|
window.removeEventListener('hashchange', this.hashChangeListener);
|
|
19
|
-
this.
|
|
20
|
-
this.
|
|
21
|
-
this.
|
|
22
|
-
this.
|
|
23
|
-
this.
|
|
24
|
-
this.
|
|
38
|
+
this.onLocationPathChanged[Symbol.dispose]();
|
|
39
|
+
this.onLocationSearchChanged[Symbol.dispose]();
|
|
40
|
+
this.onDeserializedLocationSearchChanged[Symbol.dispose]();
|
|
41
|
+
this.locationDeserializerObserver[Symbol.dispose]();
|
|
42
|
+
window.history.pushState = this.originalPushState;
|
|
43
|
+
window.history.replaceState = this.originalReplaceState;
|
|
25
44
|
}
|
|
26
45
|
/**
|
|
27
46
|
* Observable value that will be updated when the location pathname (e.g. /page/1) changes
|
|
@@ -30,18 +49,18 @@ let LocationService = class LocationService {
|
|
|
30
49
|
/**
|
|
31
50
|
* Observable value that will be updated when the location hash (e.g. #hash) changes
|
|
32
51
|
*/
|
|
33
|
-
onLocationHashChanged = new ObservableValue(location.hash);
|
|
52
|
+
onLocationHashChanged = new ObservableValue(location.hash.replace('#', ''));
|
|
34
53
|
/**
|
|
35
54
|
* Observable value that will be updated when the location search (e.g. ?search=1) changes
|
|
36
55
|
*/
|
|
37
56
|
onLocationSearchChanged = new ObservableValue(location.search);
|
|
38
|
-
onDeserializedLocationSearchChanged
|
|
57
|
+
onDeserializedLocationSearchChanged;
|
|
39
58
|
locationDeserializerObserver = this.onLocationSearchChanged.subscribe((search) => {
|
|
40
59
|
this.onDeserializedLocationSearchChanged.setValue(this.deserializeQueryString(search));
|
|
41
60
|
});
|
|
42
61
|
updateState = (() => {
|
|
43
62
|
this.onLocationPathChanged.setValue(location.pathname);
|
|
44
|
-
this.onLocationHashChanged.setValue(location.hash);
|
|
63
|
+
this.onLocationHashChanged.setValue(location.hash.replace('#', ''));
|
|
45
64
|
this.onLocationSearchChanged.setValue(location.search);
|
|
46
65
|
}).bind(this);
|
|
47
66
|
searchParamObservables = new Map();
|
|
@@ -76,39 +95,23 @@ let LocationService = class LocationService {
|
|
|
76
95
|
}
|
|
77
96
|
return existing;
|
|
78
97
|
}
|
|
79
|
-
pushStateTracer;
|
|
80
|
-
replaceStateTracer;
|
|
81
98
|
popStateListener = (_ev) => {
|
|
82
99
|
this.updateState();
|
|
83
100
|
};
|
|
84
|
-
hashChangeListener = (_ev) => {
|
|
101
|
+
hashChangeListener = ((_ev) => {
|
|
85
102
|
this.updateState();
|
|
86
|
-
};
|
|
87
|
-
constructor() {
|
|
88
|
-
window.addEventListener('popstate', this.popStateListener);
|
|
89
|
-
window.addEventListener('hashchange', this.hashChangeListener);
|
|
90
|
-
this.pushStateTracer = Trace.method({
|
|
91
|
-
object: history,
|
|
92
|
-
method: history.pushState,
|
|
93
|
-
isAsync: false,
|
|
94
|
-
onFinished: () => this.updateState(),
|
|
95
|
-
});
|
|
96
|
-
this.replaceStateTracer = Trace.method({
|
|
97
|
-
object: history,
|
|
98
|
-
method: history.replaceState,
|
|
99
|
-
isAsync: false,
|
|
100
|
-
onFinished: () => this.updateState(),
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
+
}).bind(this);
|
|
103
104
|
};
|
|
104
105
|
LocationService = __decorate([
|
|
105
106
|
Injectable({ lifetime: 'singleton' }),
|
|
106
|
-
__metadata("design:paramtypes", [])
|
|
107
|
+
__metadata("design:paramtypes", [Object, Object])
|
|
107
108
|
], LocationService);
|
|
108
109
|
export { LocationService };
|
|
109
110
|
export const useCustomSearchStateSerializer = (injector, serialize, deserialize) => {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
if (injector.cachedSingletons.has(LocationService)) {
|
|
112
|
+
throw new Error('useCustomSearchStateSerializer must be called before the LocationService is instantiated');
|
|
113
|
+
}
|
|
114
|
+
const locationService = new LocationService(serialize, deserialize);
|
|
115
|
+
injector.setExplicitInstance(locationService, LocationService);
|
|
113
116
|
};
|
|
114
117
|
//# sourceMappingURL=location-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"location-service.js","sourceRoot":"","sources":["../../src/services/location-service.tsx"],"names":[],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"location-service.js","sourceRoot":"","sources":["../../src/services/location-service.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TextDecoder, TextEncoder } from 'util';
|
|
2
2
|
global.TextEncoder = TextEncoder;
|
|
3
3
|
global.TextDecoder = TextDecoder;
|
|
4
4
|
import { Injector } from '@furystack/inject';
|
|
5
|
-
import { using } from '@furystack/utils';
|
|
6
5
|
import { deserializeQueryString, serializeToQueryString, serializeValue } from '@furystack/rest';
|
|
6
|
+
import { usingAsync } from '@furystack/utils';
|
|
7
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
7
8
|
import { LocationService, useCustomSearchStateSerializer } from './location-service.js';
|
|
8
|
-
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
9
9
|
describe('LocationService', () => {
|
|
10
10
|
beforeEach(() => {
|
|
11
11
|
document.body.innerHTML = '<div id="root"></div>';
|
|
@@ -13,14 +13,14 @@ describe('LocationService', () => {
|
|
|
13
13
|
afterEach(() => {
|
|
14
14
|
document.body.innerHTML = '';
|
|
15
15
|
});
|
|
16
|
-
it('Shuld be constructed', () => {
|
|
17
|
-
|
|
16
|
+
it('Shuld be constructed', async () => {
|
|
17
|
+
await usingAsync(new Injector(), async (i) => {
|
|
18
18
|
const s = i.getInstance(LocationService);
|
|
19
19
|
expect(s).toBeInstanceOf(LocationService);
|
|
20
20
|
});
|
|
21
21
|
});
|
|
22
|
-
it('Shuld update state on events', () => {
|
|
23
|
-
|
|
22
|
+
it('Shuld update state on events', async () => {
|
|
23
|
+
await usingAsync(new Injector(), async (i) => {
|
|
24
24
|
const onLocaionChanged = vi.fn();
|
|
25
25
|
const s = i.getInstance(LocationService);
|
|
26
26
|
s.onLocationPathChanged.subscribe(onLocaionChanged);
|
|
@@ -37,8 +37,8 @@ describe('LocationService', () => {
|
|
|
37
37
|
});
|
|
38
38
|
});
|
|
39
39
|
describe('useSearchParam', () => {
|
|
40
|
-
it('Should create observables lazily', () => {
|
|
41
|
-
|
|
40
|
+
it('Should create observables lazily', async () => {
|
|
41
|
+
await usingAsync(new Injector(), async (i) => {
|
|
42
42
|
const service = i.getInstance(LocationService);
|
|
43
43
|
const observables = service.searchParamObservables;
|
|
44
44
|
const testSearchParam = service.useSearchParam('test', null);
|
|
@@ -51,23 +51,23 @@ describe('LocationService', () => {
|
|
|
51
51
|
expect(testSearchParam3).not.toBe(testSearchParam2);
|
|
52
52
|
});
|
|
53
53
|
});
|
|
54
|
-
it('Should return the default value, if not present in the query string', () => {
|
|
55
|
-
|
|
54
|
+
it('Should return the default value, if not present in the query string', async () => {
|
|
55
|
+
await usingAsync(new Injector(), async (i) => {
|
|
56
56
|
const service = i.getInstance(LocationService);
|
|
57
57
|
const testSearchParam = service.useSearchParam('test', { value: 'foo' });
|
|
58
58
|
expect(testSearchParam.getValue()).toEqual({ value: 'foo' });
|
|
59
59
|
});
|
|
60
60
|
});
|
|
61
|
-
it('Should return the value from the query string', () => {
|
|
62
|
-
|
|
61
|
+
it('Should return the value from the query string', async () => {
|
|
62
|
+
await usingAsync(new Injector(), async (i) => {
|
|
63
63
|
const service = i.getInstance(LocationService);
|
|
64
64
|
history.pushState(null, '', `/loc1?test=${serializeValue(1)}`);
|
|
65
65
|
const testSearchParam = service.useSearchParam('test', 123);
|
|
66
66
|
expect(testSearchParam.getValue()).toBe(1);
|
|
67
67
|
});
|
|
68
68
|
});
|
|
69
|
-
it('should update the observable value on push / replace states', () => {
|
|
70
|
-
|
|
69
|
+
it('should update the observable value on push / replace states', async () => {
|
|
70
|
+
await usingAsync(new Injector(), async (i) => {
|
|
71
71
|
const service = i.getInstance(LocationService);
|
|
72
72
|
history.pushState(null, '', `/loc1?test=${serializeValue(1)}`);
|
|
73
73
|
const testSearchParam = service.useSearchParam('test', 234);
|
|
@@ -76,8 +76,8 @@ describe('LocationService', () => {
|
|
|
76
76
|
expect(testSearchParam.getValue()).toBe('2');
|
|
77
77
|
});
|
|
78
78
|
});
|
|
79
|
-
it('Should update the URL based on search value change', () => {
|
|
80
|
-
|
|
79
|
+
it('Should update the URL based on search value change', async () => {
|
|
80
|
+
await usingAsync(new Injector(), async (i) => {
|
|
81
81
|
const service = i.getInstance(LocationService);
|
|
82
82
|
history.pushState(null, '', `/loc1?test=${serializeValue('2')}`);
|
|
83
83
|
const testSearchParam = service.useSearchParam('test', '');
|
|
@@ -85,13 +85,21 @@ describe('LocationService', () => {
|
|
|
85
85
|
expect(location.search).toBe('?test=IjIi');
|
|
86
86
|
});
|
|
87
87
|
});
|
|
88
|
-
it('Should use custom serializer
|
|
89
|
-
|
|
88
|
+
it('Should throw an error when trying to use a custom serializer after LocationService has been instantiated', async () => {
|
|
89
|
+
await usingAsync(new Injector(), async (i) => {
|
|
90
90
|
const customSerializer = vi.fn((value) => serializeToQueryString(value));
|
|
91
91
|
const customDeserializer = vi.fn((value) => deserializeQueryString(value));
|
|
92
|
+
i.getInstance(LocationService);
|
|
93
|
+
expect(() => useCustomSearchStateSerializer(i, customSerializer, customDeserializer)).toThrowError('useCustomSearchStateSerializer must be called before the LocationService is instantiated');
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
it('Should use custom serializer and deserializer', async () => {
|
|
97
|
+
await usingAsync(new Injector(), async (i) => {
|
|
98
|
+
const customSerializer = vi.fn((value) => serializeToQueryString(value));
|
|
99
|
+
const customDeserializer = vi.fn((value) => deserializeQueryString(value));
|
|
100
|
+
useCustomSearchStateSerializer(i, customSerializer, customDeserializer);
|
|
92
101
|
const locationService = i.getInstance(LocationService);
|
|
93
102
|
const testSearchParam = locationService.useSearchParam('test', { value: 'foo' });
|
|
94
|
-
useCustomSearchStateSerializer(i, customSerializer, customDeserializer);
|
|
95
103
|
testSearchParam.setValue({ value: 'bar' });
|
|
96
104
|
expect(customSerializer).toBeCalledWith({ test: { value: 'bar' } });
|
|
97
105
|
expect(customDeserializer).toBeCalledWith('?test=eyJ2YWx1ZSI6ImJhciJ9');
|