@furystack/shades 12.2.5 → 12.3.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.
Files changed (42) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/esm/components/nested-router.d.ts +33 -0
  3. package/esm/components/nested-router.d.ts.map +1 -1
  4. package/esm/components/nested-router.js +3 -0
  5. package/esm/components/nested-router.js.map +1 -1
  6. package/esm/components/nested-router.spec.js +100 -18
  7. package/esm/components/nested-router.spec.js.map +1 -1
  8. package/esm/services/index.d.ts +2 -0
  9. package/esm/services/index.d.ts.map +1 -1
  10. package/esm/services/index.js +2 -0
  11. package/esm/services/index.js.map +1 -1
  12. package/esm/services/route-match-service.d.ts +12 -0
  13. package/esm/services/route-match-service.d.ts.map +1 -0
  14. package/esm/services/route-match-service.js +24 -0
  15. package/esm/services/route-match-service.js.map +1 -0
  16. package/esm/services/route-match-service.spec.d.ts +2 -0
  17. package/esm/services/route-match-service.spec.d.ts.map +1 -0
  18. package/esm/services/route-match-service.spec.js +120 -0
  19. package/esm/services/route-match-service.spec.js.map +1 -0
  20. package/esm/services/route-meta-utils.d.ts +57 -0
  21. package/esm/services/route-meta-utils.d.ts.map +1 -0
  22. package/esm/services/route-meta-utils.js +64 -0
  23. package/esm/services/route-meta-utils.js.map +1 -0
  24. package/esm/services/route-meta-utils.spec.d.ts +2 -0
  25. package/esm/services/route-meta-utils.spec.d.ts.map +1 -0
  26. package/esm/services/route-meta-utils.spec.js +217 -0
  27. package/esm/services/route-meta-utils.spec.js.map +1 -0
  28. package/esm/shade.d.ts.map +1 -1
  29. package/esm/shade.js +12 -1
  30. package/esm/shade.js.map +1 -1
  31. package/esm/shade.spec.js +93 -2
  32. package/esm/shade.spec.js.map +1 -1
  33. package/package.json +1 -1
  34. package/src/components/nested-router.spec.tsx +140 -35
  35. package/src/components/nested-router.tsx +38 -0
  36. package/src/services/index.ts +2 -0
  37. package/src/services/route-match-service.spec.ts +45 -0
  38. package/src/services/route-match-service.ts +17 -0
  39. package/src/services/route-meta-utils.spec.ts +243 -0
  40. package/src/services/route-meta-utils.ts +85 -0
  41. package/src/shade.spec.tsx +112 -2
  42. package/src/shade.ts +11 -1
@@ -0,0 +1,120 @@
1
+ var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
2
+ if (value !== null && value !== void 0) {
3
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
4
+ var dispose, inner;
5
+ if (async) {
6
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
7
+ dispose = value[Symbol.asyncDispose];
8
+ }
9
+ if (dispose === void 0) {
10
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
11
+ dispose = value[Symbol.dispose];
12
+ if (async) inner = dispose;
13
+ }
14
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
15
+ if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
16
+ env.stack.push({ value: value, dispose: dispose, async: async });
17
+ }
18
+ else if (async) {
19
+ env.stack.push({ async: true });
20
+ }
21
+ return value;
22
+ };
23
+ var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
24
+ return function (env) {
25
+ function fail(e) {
26
+ env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
27
+ env.hasError = true;
28
+ }
29
+ var r, s = 0;
30
+ function next() {
31
+ while (r = env.stack.pop()) {
32
+ try {
33
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
34
+ if (r.dispose) {
35
+ var result = r.dispose.call(r.value);
36
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
37
+ }
38
+ else s |= 1;
39
+ }
40
+ catch (e) {
41
+ fail(e);
42
+ }
43
+ }
44
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
45
+ if (env.hasError) throw env.error;
46
+ }
47
+ return next();
48
+ };
49
+ })(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
50
+ var e = new Error(message);
51
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
+ });
53
+ import { describe, expect, it, vi } from 'vitest';
54
+ import { RouteMatchService } from './route-match-service.js';
55
+ describe('RouteMatchService', () => {
56
+ it('should start with an empty match chain', () => {
57
+ const env_1 = { stack: [], error: void 0, hasError: false };
58
+ try {
59
+ const service = __addDisposableResource(env_1, new RouteMatchService(), false);
60
+ expect(service.currentMatchChain.getValue()).toEqual([]);
61
+ }
62
+ catch (e_1) {
63
+ env_1.error = e_1;
64
+ env_1.hasError = true;
65
+ }
66
+ finally {
67
+ __disposeResources(env_1);
68
+ }
69
+ });
70
+ it('should update the match chain', () => {
71
+ const env_2 = { stack: [], error: void 0, hasError: false };
72
+ try {
73
+ const service = __addDisposableResource(env_2, new RouteMatchService(), false);
74
+ const chain = [
75
+ {
76
+ route: { component: () => ({}) },
77
+ match: { path: '/about', params: {} },
78
+ },
79
+ ];
80
+ service.currentMatchChain.setValue(chain);
81
+ expect(service.currentMatchChain.getValue()).toBe(chain);
82
+ }
83
+ catch (e_2) {
84
+ env_2.error = e_2;
85
+ env_2.hasError = true;
86
+ }
87
+ finally {
88
+ __disposeResources(env_2);
89
+ }
90
+ });
91
+ it('should notify subscribers on match chain change', () => {
92
+ const env_3 = { stack: [], error: void 0, hasError: false };
93
+ try {
94
+ const service = __addDisposableResource(env_3, new RouteMatchService(), false);
95
+ const listener = vi.fn();
96
+ const _subscription = __addDisposableResource(env_3, service.currentMatchChain.subscribe(listener), false);
97
+ const chain = [
98
+ {
99
+ route: { meta: { title: 'Home' }, component: () => ({}) },
100
+ match: { path: '/', params: {} },
101
+ },
102
+ ];
103
+ service.currentMatchChain.setValue(chain);
104
+ expect(listener).toHaveBeenCalledWith(chain);
105
+ }
106
+ catch (e_3) {
107
+ env_3.error = e_3;
108
+ env_3.hasError = true;
109
+ }
110
+ finally {
111
+ __disposeResources(env_3);
112
+ }
113
+ });
114
+ it('should dispose the observable on service disposal', () => {
115
+ const service = new RouteMatchService();
116
+ service[Symbol.dispose]();
117
+ expect(() => service.currentMatchChain.setValue([])).toThrow();
118
+ });
119
+ });
120
+ //# sourceMappingURL=route-match-service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-match-service.spec.js","sourceRoot":"","sources":["../../src/services/route-match-service.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5D,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;;;YAChD,MAAM,OAAO,kCAAG,IAAI,iBAAiB,EAAE,QAAA,CAAA;YACvC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;;;;;;;;;KACzD,CAAC,CAAA;IAEF,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;;;YACvC,MAAM,OAAO,kCAAG,IAAI,iBAAiB,EAAE,QAAA,CAAA;YACvC,MAAM,KAAK,GAAsB;gBAC/B;oBACE,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAgB,EAAE;oBAC/C,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;iBACtC;aACF,CAAA;YACD,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YACzC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;;;;;;;;;KACzD,CAAC,CAAA;IAEF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;;;YACzD,MAAM,OAAO,kCAAG,IAAI,iBAAiB,EAAE,QAAA,CAAA;YACvC,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;YACxB,MAAM,aAAa,kCAAG,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAA,CAAA;YAEnE,MAAM,KAAK,GAAsB;gBAC/B;oBACE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAgB,EAAE;oBACxE,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;iBACjC;aACF,CAAA;YACD,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YAEzC,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;;;;;;;;;KAC7C,CAAC,CAAA;IAEF,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAA;QACvC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;QAEzB,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;IAChE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,57 @@
1
+ import type { Injector } from '@furystack/inject';
2
+ import type { MatchChainEntry, NestedRoute, NestedRouteMeta } from '../components/nested-router.js';
3
+ /**
4
+ * Resolves the title for a single match chain entry.
5
+ * If the title is a function, it is called with `{ match, injector }` (supports async).
6
+ * @param entry - A matched route entry from the match chain
7
+ * @param injector - The injector instance to pass to dynamic title resolvers
8
+ * @returns The resolved title string, or undefined if no title is configured
9
+ */
10
+ export declare const resolveRouteTitle: (entry: MatchChainEntry, injector: Injector) => Promise<string | undefined>;
11
+ /**
12
+ * Resolves all titles from a match chain in parallel.
13
+ * @param chain - The match chain from outermost to innermost route
14
+ * @param injector - The injector instance to pass to dynamic title resolvers
15
+ * @returns An array of resolved titles (some may be undefined if no title is configured)
16
+ */
17
+ export declare const resolveRouteTitles: (chain: MatchChainEntry[], injector: Injector) => Promise<Array<string | undefined>>;
18
+ /**
19
+ * Composes resolved titles into a single document title string.
20
+ * Filters out undefined entries before joining.
21
+ * @param titles - Array of resolved titles (may contain undefined)
22
+ * @param options - Formatting options
23
+ * @param options.separator - String placed between title segments (default: `' - '`)
24
+ * @param options.prefix - Optional app name prepended before all segments
25
+ * @returns The composed title string
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * buildDocumentTitle(['Media', 'Movies', 'Superman'], { prefix: 'My App', separator: ' / ' })
30
+ * // => 'My App / Media / Movies / Superman'
31
+ *
32
+ * buildDocumentTitle(['Settings', undefined, 'Profile'])
33
+ * // => 'Settings - Profile'
34
+ * ```
35
+ */
36
+ export declare const buildDocumentTitle: (titles: Array<string | undefined>, options?: {
37
+ separator?: string;
38
+ prefix?: string;
39
+ }) => string;
40
+ /**
41
+ * A node in a navigation tree extracted from route definitions.
42
+ */
43
+ export type NavTreeNode = {
44
+ pattern: string;
45
+ fullPath: string;
46
+ meta?: NestedRouteMeta;
47
+ children?: NavTreeNode[];
48
+ };
49
+ /**
50
+ * Extracts a navigation tree from route definitions.
51
+ * Useful for rendering sidebar navigation or sitemap-like structures.
52
+ * @param routes - The route definitions to extract from
53
+ * @param parentPath - The parent path prefix (used internally for recursion)
54
+ * @returns An array of navigation tree nodes
55
+ */
56
+ export declare const extractNavTree: (routes: Record<string, NestedRoute<unknown>>, parentPath?: string) => NavTreeNode[];
57
+ //# sourceMappingURL=route-meta-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-meta-utils.d.ts","sourceRoot":"","sources":["../../src/services/route-meta-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAEnG;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAU,OAAO,eAAe,EAAE,UAAU,QAAQ,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAI9G,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,eAAe,EAAE,EACxB,UAAU,QAAQ,KACjB,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAEnC,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,EACjC,UAAU;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,KAChD,MAIF,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAA;CACzB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,MAAM,KAAG,WAAW,EAU7G,CAAA"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Resolves the title for a single match chain entry.
3
+ * If the title is a function, it is called with `{ match, injector }` (supports async).
4
+ * @param entry - A matched route entry from the match chain
5
+ * @param injector - The injector instance to pass to dynamic title resolvers
6
+ * @returns The resolved title string, or undefined if no title is configured
7
+ */
8
+ export const resolveRouteTitle = async (entry, injector) => {
9
+ const title = entry.route.meta?.title;
10
+ if (typeof title === 'function')
11
+ return await title({ match: entry.match, injector });
12
+ return title;
13
+ };
14
+ /**
15
+ * Resolves all titles from a match chain in parallel.
16
+ * @param chain - The match chain from outermost to innermost route
17
+ * @param injector - The injector instance to pass to dynamic title resolvers
18
+ * @returns An array of resolved titles (some may be undefined if no title is configured)
19
+ */
20
+ export const resolveRouteTitles = async (chain, injector) => {
21
+ return Promise.all(chain.map((entry) => resolveRouteTitle(entry, injector)));
22
+ };
23
+ /**
24
+ * Composes resolved titles into a single document title string.
25
+ * Filters out undefined entries before joining.
26
+ * @param titles - Array of resolved titles (may contain undefined)
27
+ * @param options - Formatting options
28
+ * @param options.separator - String placed between title segments (default: `' - '`)
29
+ * @param options.prefix - Optional app name prepended before all segments
30
+ * @returns The composed title string
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * buildDocumentTitle(['Media', 'Movies', 'Superman'], { prefix: 'My App', separator: ' / ' })
35
+ * // => 'My App / Media / Movies / Superman'
36
+ *
37
+ * buildDocumentTitle(['Settings', undefined, 'Profile'])
38
+ * // => 'Settings - Profile'
39
+ * ```
40
+ */
41
+ export const buildDocumentTitle = (titles, options) => {
42
+ const { separator = ' - ', prefix } = options ?? {};
43
+ const parts = titles.filter((t) => t != null);
44
+ return prefix ? [prefix, ...parts].join(separator) : parts.join(separator);
45
+ };
46
+ /**
47
+ * Extracts a navigation tree from route definitions.
48
+ * Useful for rendering sidebar navigation or sitemap-like structures.
49
+ * @param routes - The route definitions to extract from
50
+ * @param parentPath - The parent path prefix (used internally for recursion)
51
+ * @returns An array of navigation tree nodes
52
+ */
53
+ export const extractNavTree = (routes, parentPath) => {
54
+ return Object.entries(routes).map(([pattern, route]) => {
55
+ const fullPath = parentPath ? `${parentPath === '/' ? '' : parentPath}${pattern}` : pattern;
56
+ return {
57
+ pattern,
58
+ fullPath,
59
+ meta: route.meta,
60
+ children: route.children ? extractNavTree(route.children, fullPath) : undefined,
61
+ };
62
+ });
63
+ };
64
+ //# sourceMappingURL=route-meta-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-meta-utils.js","sourceRoot":"","sources":["../../src/services/route-meta-utils.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,KAAsB,EAAE,QAAkB,EAA+B,EAAE;IACjH,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAA;IACrC,IAAI,OAAO,KAAK,KAAK,UAAU;QAAE,OAAO,MAAM,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;IACrF,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,KAAwB,EACxB,QAAkB,EACkB,EAAE;IACtC,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;AAC9E,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,MAAiC,EACjC,OAAiD,EACzC,EAAE;IACV,MAAM,EAAE,SAAS,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;IACnD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAA;IAC1D,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC5E,CAAC,CAAA;AAYD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAA4C,EAAE,UAAmB,EAAiB,EAAE;IACjH,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE;QACrD,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;QAC3F,OAAO;YACL,OAAO;YACP,QAAQ;YACR,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;SAChF,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=route-meta-utils.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-meta-utils.spec.d.ts","sourceRoot":"","sources":["../../src/services/route-meta-utils.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,217 @@
1
+ import { Injector } from '@furystack/inject';
2
+ import { describe, expect, it } from 'vitest';
3
+ import { buildDocumentTitle, extractNavTree, resolveRouteTitle, resolveRouteTitles } from './route-meta-utils.js';
4
+ describe('resolveRouteTitle', () => {
5
+ const injector = new Injector();
6
+ it('should return undefined when no meta is configured', async () => {
7
+ const entry = {
8
+ route: { component: () => ({}) },
9
+ match: { path: '/about', params: {} },
10
+ };
11
+ expect(await resolveRouteTitle(entry, injector)).toBeUndefined();
12
+ });
13
+ it('should return undefined when meta has no title', async () => {
14
+ const entry = {
15
+ route: { meta: {}, component: () => ({}) },
16
+ match: { path: '/about', params: {} },
17
+ };
18
+ expect(await resolveRouteTitle(entry, injector)).toBeUndefined();
19
+ });
20
+ it('should return a static string title', async () => {
21
+ const entry = {
22
+ route: { meta: { title: 'About' }, component: () => ({}) },
23
+ match: { path: '/about', params: {} },
24
+ };
25
+ expect(await resolveRouteTitle(entry, injector)).toBe('About');
26
+ });
27
+ it('should resolve a synchronous function title', async () => {
28
+ const entry = {
29
+ route: {
30
+ meta: { title: ({ match }) => `User ${match.params.id}` },
31
+ component: () => ({}),
32
+ },
33
+ match: { path: '/users/42', params: { id: '42' } },
34
+ };
35
+ expect(await resolveRouteTitle(entry, injector)).toBe('User 42');
36
+ });
37
+ it('should resolve an async function title', async () => {
38
+ const entry = {
39
+ route: {
40
+ meta: {
41
+ title: async ({ match }) => {
42
+ const { id } = match.params;
43
+ return `Movie ${id}`;
44
+ },
45
+ },
46
+ component: () => ({}),
47
+ },
48
+ match: { path: '/movies/7', params: { id: '7' } },
49
+ };
50
+ expect(await resolveRouteTitle(entry, injector)).toBe('Movie 7');
51
+ });
52
+ it('should pass the injector to the title resolver', async () => {
53
+ const entry = {
54
+ route: {
55
+ meta: {
56
+ title: ({ injector: inj }) => (inj instanceof Injector ? 'has-injector' : 'no-injector'),
57
+ },
58
+ component: () => ({}),
59
+ },
60
+ match: { path: '/test', params: {} },
61
+ };
62
+ expect(await resolveRouteTitle(entry, injector)).toBe('has-injector');
63
+ });
64
+ });
65
+ describe('resolveRouteTitles', () => {
66
+ const injector = new Injector();
67
+ it('should resolve all titles in a mixed chain', async () => {
68
+ const chain = [
69
+ {
70
+ route: { meta: { title: 'Media' }, component: () => ({}) },
71
+ match: { path: '/media', params: {} },
72
+ },
73
+ {
74
+ route: { meta: { title: 'Movies' }, component: () => ({}) },
75
+ match: { path: '/movies', params: {} },
76
+ },
77
+ {
78
+ route: {
79
+ meta: { title: async ({ match }) => `Movie ${match.params.id}` },
80
+ component: () => ({}),
81
+ },
82
+ match: { path: '/7', params: { id: '7' } },
83
+ },
84
+ ];
85
+ const titles = await resolveRouteTitles(chain, injector);
86
+ expect(titles).toEqual(['Media', 'Movies', 'Movie 7']);
87
+ });
88
+ it('should return an empty array for an empty chain', async () => {
89
+ const titles = await resolveRouteTitles([], injector);
90
+ expect(titles).toEqual([]);
91
+ });
92
+ it('should include undefined for entries without titles', async () => {
93
+ const chain = [
94
+ {
95
+ route: { meta: { title: 'Root' }, component: () => ({}) },
96
+ match: { path: '/', params: {} },
97
+ },
98
+ {
99
+ route: { component: () => ({}) },
100
+ match: { path: '/child', params: {} },
101
+ },
102
+ ];
103
+ const titles = await resolveRouteTitles(chain, injector);
104
+ expect(titles).toEqual(['Root', undefined]);
105
+ });
106
+ });
107
+ describe('buildDocumentTitle', () => {
108
+ it('should join titles with default separator', () => {
109
+ expect(buildDocumentTitle(['Media', 'Movies'])).toBe('Media - Movies');
110
+ });
111
+ it('should filter out undefined entries', () => {
112
+ expect(buildDocumentTitle(['Media', undefined, 'Movies'])).toBe('Media - Movies');
113
+ });
114
+ it('should use a custom separator', () => {
115
+ expect(buildDocumentTitle(['Media', 'Movies', 'Superman'], { separator: ' / ' })).toBe('Media / Movies / Superman');
116
+ });
117
+ it('should prepend a prefix', () => {
118
+ expect(buildDocumentTitle(['Media', 'Movies'], { prefix: 'My App' })).toBe('My App - Media - Movies');
119
+ });
120
+ it('should combine prefix and custom separator', () => {
121
+ expect(buildDocumentTitle(['Media', 'Movies', 'Superman'], { prefix: 'My App', separator: ' / ' })).toBe('My App / Media / Movies / Superman');
122
+ });
123
+ it('should return empty string for empty titles', () => {
124
+ expect(buildDocumentTitle([])).toBe('');
125
+ });
126
+ it('should return only prefix when all titles are undefined', () => {
127
+ expect(buildDocumentTitle([undefined, undefined], { prefix: 'My App' })).toBe('My App');
128
+ });
129
+ it('should return prefix alone when titles is empty', () => {
130
+ expect(buildDocumentTitle([], { prefix: 'My App' })).toBe('My App');
131
+ });
132
+ });
133
+ describe('extractNavTree', () => {
134
+ it('should extract a flat route tree', () => {
135
+ const routes = {
136
+ '/about': { meta: { title: 'About' }, component: () => ({}) },
137
+ '/contact': { meta: { title: 'Contact' }, component: () => ({}) },
138
+ };
139
+ const tree = extractNavTree(routes);
140
+ expect(tree).toEqual([
141
+ { pattern: '/about', fullPath: '/about', meta: { title: 'About' }, children: undefined },
142
+ { pattern: '/contact', fullPath: '/contact', meta: { title: 'Contact' }, children: undefined },
143
+ ]);
144
+ });
145
+ it('should extract nested routes recursively', () => {
146
+ const routes = {
147
+ '/media': {
148
+ meta: { title: 'Media' },
149
+ component: () => ({}),
150
+ children: {
151
+ '/movies': { meta: { title: 'Movies' }, component: () => ({}) },
152
+ '/music': { meta: { title: 'Music' }, component: () => ({}) },
153
+ },
154
+ },
155
+ };
156
+ const tree = extractNavTree(routes);
157
+ expect(tree).toHaveLength(1);
158
+ expect(tree[0].pattern).toBe('/media');
159
+ expect(tree[0].fullPath).toBe('/media');
160
+ expect(tree[0].children).toHaveLength(2);
161
+ expect(tree[0].children[0]).toEqual({
162
+ pattern: '/movies',
163
+ fullPath: '/media/movies',
164
+ meta: { title: 'Movies' },
165
+ children: undefined,
166
+ });
167
+ expect(tree[0].children[1]).toEqual({
168
+ pattern: '/music',
169
+ fullPath: '/media/music',
170
+ meta: { title: 'Music' },
171
+ children: undefined,
172
+ });
173
+ });
174
+ it('should handle root "/" parent path correctly', () => {
175
+ const routes = {
176
+ '/': {
177
+ meta: { title: 'Home' },
178
+ component: () => ({}),
179
+ children: {
180
+ '/settings': { meta: { title: 'Settings' }, component: () => ({}) },
181
+ },
182
+ },
183
+ };
184
+ const tree = extractNavTree(routes);
185
+ expect(tree[0].fullPath).toBe('/');
186
+ expect(tree[0].children[0].fullPath).toBe('/settings');
187
+ });
188
+ it('should compute correct fullPath for deeply nested routes (3+ levels)', () => {
189
+ const routes = {
190
+ '/a': {
191
+ meta: { title: 'A' },
192
+ component: () => ({}),
193
+ children: {
194
+ '/b': {
195
+ meta: { title: 'B' },
196
+ component: () => ({}),
197
+ children: {
198
+ '/c': { meta: { title: 'C' }, component: () => ({}) },
199
+ },
200
+ },
201
+ },
202
+ },
203
+ };
204
+ const tree = extractNavTree(routes);
205
+ expect(tree[0].fullPath).toBe('/a');
206
+ expect(tree[0].children[0].fullPath).toBe('/a/b');
207
+ expect(tree[0].children[0].children[0].fullPath).toBe('/a/b/c');
208
+ });
209
+ it('should include routes without meta', () => {
210
+ const routes = {
211
+ '/hidden': { component: () => ({}) },
212
+ };
213
+ const tree = extractNavTree(routes);
214
+ expect(tree[0].meta).toBeUndefined();
215
+ });
216
+ });
217
+ //# sourceMappingURL=route-meta-utils.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-meta-utils.spec.js","sourceRoot":"","sources":["../../src/services/route-meta-utils.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"shade.d.ts","sourceRoot":"","sources":["../src/shade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGtD,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAS/F,MAAM,MAAM,YAAY,CAAC,MAAM,EAAE,YAAY,SAAS,WAAW,IAAI;IACnE;;;;;OAKG;IACH,aAAa,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,GAAG,CAAC,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;IAErF;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;IAEzC;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAEpC;;;;;;;;;;;;;;;;OAgBG;IACH,GAAG,CAAC,EAAE,SAAS,CAAA;CAChB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAI,MAAM,EAAE,YAAY,SAAS,WAAW,GAAG,WAAW,EAC1E,GAAG,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,MA6W7B,OAAO,MAAM,GAAG,cAAc,CAAC,YAAY,CAAC,EAAE,WAAW,YAAY,KAgB9D,GAAG,CAAC,OAEpB,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,QAAO,OAAO,CAAC,IAAI,CAA4D,CAAA"}
1
+ {"version":3,"file":"shade.d.ts","sourceRoot":"","sources":["../src/shade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGtD,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAS/F,MAAM,MAAM,YAAY,CAAC,MAAM,EAAE,YAAY,SAAS,WAAW,IAAI;IACnE;;;;;OAKG;IACH,aAAa,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,GAAG,CAAC,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;IAErF;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;IAEzC;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAEpC;;;;;;;;;;;;;;;;OAgBG;IACH,GAAG,CAAC,EAAE,SAAS,CAAA;CAChB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAI,MAAM,EAAE,YAAY,SAAS,WAAW,GAAG,WAAW,EAC1E,GAAG,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,MAuX7B,OAAO,MAAM,GAAG,cAAc,CAAC,YAAY,CAAC,EAAE,WAAW,YAAY,KAgB9D,GAAG,CAAC,OAEpB,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,QAAO,OAAO,CAAC,IAAI,CAA4D,CAAA"}
package/esm/shade.js CHANGED
@@ -42,10 +42,17 @@ export const Shade = (o) => {
42
42
  * Cached ref objects keyed by the user-provided key string.
43
43
  */
44
44
  _refs = new Map();
45
+ /**
46
+ * Set to true once disconnectedCallback fires. Prevents ghost re-renders
47
+ * triggered by observable changes during async disposal.
48
+ */
49
+ _disconnected = false;
45
50
  connectedCallback() {
51
+ this._disconnected = false;
46
52
  this._performUpdate();
47
53
  }
48
54
  async disconnectedCallback() {
55
+ this._disconnected = true;
49
56
  this._refs.clear();
50
57
  this._prevVTree = null;
51
58
  this._prevHostProps = null;
@@ -151,10 +158,12 @@ export const Shade = (o) => {
151
158
  * runs are coalesced into a single render pass.
152
159
  */
153
160
  updateComponent() {
161
+ if (this._disconnected)
162
+ return;
154
163
  if (!this._updateScheduled) {
155
164
  this._updateScheduled = true;
156
165
  queueMicrotask(() => {
157
- if (!this._updateScheduled)
166
+ if (!this._updateScheduled || this._disconnected)
158
167
  return;
159
168
  this._updateScheduled = false;
160
169
  this._performUpdate();
@@ -167,6 +176,8 @@ export const Shade = (o) => {
167
176
  * in a single call frame rather than cascading across microtask ticks.
168
177
  */
169
178
  updateComponentSync() {
179
+ if (this._disconnected)
180
+ return;
170
181
  this._updateScheduled = false;
171
182
  this._performUpdate();
172
183
  }
package/esm/shade.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"shade.js","sourceRoot":"","sources":["../src/shade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shade.js","sourceRoot":"","sources":["../src/shade.ts"],"names":[],"mappings":"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"}