@toyz/loom 0.13.9 → 0.13.11
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/router/decorators.d.ts +12 -4
- package/dist/router/decorators.d.ts.map +1 -1
- package/dist/router/decorators.js +28 -8
- package/dist/router/decorators.js.map +1 -1
- package/dist/router/router.d.ts +8 -1
- package/dist/router/router.d.ts.map +1 -1
- package/dist/router/router.js +18 -3
- package/dist/router/router.js.map +1 -1
- package/package.json +1 -1
|
@@ -49,13 +49,21 @@ export declare const route: (pattern: string, opts?: RouteOptions | undefined) =
|
|
|
49
49
|
/**
|
|
50
50
|
* Mark a method as a named route guard.
|
|
51
51
|
*
|
|
52
|
+
* When used on a @service class, the guard automatically binds
|
|
53
|
+
* to the service instance, enabling @inject accessors to resolve.
|
|
54
|
+
*
|
|
52
55
|
* ```ts
|
|
53
|
-
* @
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
+
* @service
|
|
57
|
+
* class AuthGuards {
|
|
58
|
+
* @inject(AuthStore) accessor auth!: AuthStore;
|
|
59
|
+
*
|
|
60
|
+
* @guard("auth")
|
|
61
|
+
* checkAuth() {
|
|
62
|
+
* return this.auth.isLoggedIn ? true : "/login";
|
|
63
|
+
* }
|
|
56
64
|
* }
|
|
57
65
|
* ```
|
|
58
66
|
*/
|
|
59
|
-
export declare
|
|
67
|
+
export declare function guard(name?: string): (method: Function, context: ClassMethodDecoratorContext) => void;
|
|
60
68
|
export {};
|
|
61
69
|
//# sourceMappingURL=decorators.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/router/decorators.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,eAAO,MAAM,UAAU,eAA4B,CAAC;AACpD,eAAO,MAAM,cAAc,eAA8B,CAAC;AAI1D,UAAU,YAAY;IACpB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,KAAK,gHAqBjB,CAAC;AA0BF,UAAU,YAAY;IACpB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,KAAK,iHAgDjB,CAAC;AAWF
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/router/decorators.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,eAAO,MAAM,UAAU,eAA4B,CAAC;AACpD,eAAO,MAAM,cAAc,eAA8B,CAAC;AAI1D,UAAU,YAAY;IACpB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,KAAK,gHAqBjB,CAAC;AA0BF,UAAU,YAAY;IACpB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,KAAK,iHAgDjB,CAAC;AAWF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,IACzB,QAAQ,QAAQ,EAAE,SAAS,2BAA2B,UAgB/D"}
|
|
@@ -117,19 +117,39 @@ function _tagForCtor(ctor) {
|
|
|
117
117
|
return name;
|
|
118
118
|
return ctor.__loom_tag ?? ctor.name.toLowerCase();
|
|
119
119
|
}
|
|
120
|
-
// ── @guard (
|
|
120
|
+
// ── @guard (method decorator — raw TC39, not createDecorator) ──
|
|
121
121
|
/**
|
|
122
122
|
* Mark a method as a named route guard.
|
|
123
123
|
*
|
|
124
|
+
* When used on a @service class, the guard automatically binds
|
|
125
|
+
* to the service instance, enabling @inject accessors to resolve.
|
|
126
|
+
*
|
|
124
127
|
* ```ts
|
|
125
|
-
* @
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
+
* @service
|
|
129
|
+
* class AuthGuards {
|
|
130
|
+
* @inject(AuthStore) accessor auth!: AuthStore;
|
|
131
|
+
*
|
|
132
|
+
* @guard("auth")
|
|
133
|
+
* checkAuth() {
|
|
134
|
+
* return this.auth.isLoggedIn ? true : "/login";
|
|
135
|
+
* }
|
|
128
136
|
* }
|
|
129
137
|
* ```
|
|
130
138
|
*/
|
|
131
|
-
export
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
139
|
+
export function guard(name) {
|
|
140
|
+
return (method, context) => {
|
|
141
|
+
const key = String(context.name);
|
|
142
|
+
const guardName = name ?? key;
|
|
143
|
+
// Register immediately with the raw method (define-time)
|
|
144
|
+
guardRegistry.set(guardName, { method, key });
|
|
145
|
+
// When the owning class is instantiated, rebind to the live instance
|
|
146
|
+
// so @inject accessors (which need `this`) resolve correctly.
|
|
147
|
+
context.addInitializer(function () {
|
|
148
|
+
guardRegistry.set(guardName, {
|
|
149
|
+
method: method.bind(this),
|
|
150
|
+
key,
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
};
|
|
154
|
+
}
|
|
135
155
|
//# sourceMappingURL=decorators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/router/decorators.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/router/decorators.ts"],"names":[],"mappings":"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"}
|
package/dist/router/router.d.ts
CHANGED
|
@@ -25,6 +25,8 @@ export declare class LoomRouter {
|
|
|
25
25
|
private _previousTag;
|
|
26
26
|
/** Optional outlet reference for lifecycle dispatch */
|
|
27
27
|
private _outlet;
|
|
28
|
+
/** Last path processed by _resolve — used to deduplicate async event re-fires */
|
|
29
|
+
private _lastResolvedPath;
|
|
28
30
|
/** Register the outlet so lifecycle hooks can find rendered elements */
|
|
29
31
|
setOutlet(el: HTMLElement): void;
|
|
30
32
|
constructor(opts?: RouterOptions);
|
|
@@ -46,7 +48,12 @@ export declare class LoomRouter {
|
|
|
46
48
|
href(target: RouteTarget): string;
|
|
47
49
|
/** Resolve a RouteTarget to a path string */
|
|
48
50
|
private _resolvePath;
|
|
49
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Resolve the current URL against the route table and emit RouteChanged.
|
|
53
|
+
* Deduplicates: if the path hasn't changed since the last resolve, skip.
|
|
54
|
+
* This prevents double-resolution from async hashchange/popstate events
|
|
55
|
+
* that fire after go()/replace() already resolved the same path.
|
|
56
|
+
*/
|
|
50
57
|
private _resolve;
|
|
51
58
|
/**
|
|
52
59
|
* Run guards for the target route.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/router/router.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,KAAK,UAAU,EAAyB,MAAM,QAAQ,CAAC;AAQhE,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAED,mEAAmE;AACnE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAErF,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,qBAAa,UAAU;IACrB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAA6D;IAC7E,OAAO,CAAC,YAAY,CAAuB;IAC3C,uDAAuD;IACvD,OAAO,CAAC,OAAO,CAA4B;
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/router/router.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,KAAK,UAAU,EAAyB,MAAM,QAAQ,CAAC;AAQhE,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAED,mEAAmE;AACnE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAErF,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,qBAAa,UAAU;IACrB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAA6D;IAC7E,OAAO,CAAC,YAAY,CAAuB;IAC3C,uDAAuD;IACvD,OAAO,CAAC,OAAO,CAA4B;IAC3C,iFAAiF;IACjF,OAAO,CAAC,iBAAiB,CAAuB;IAEhD,wEAAwE;IACxE,SAAS,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;gBAIpB,IAAI,GAAE,aAAkB;IAIpC,8CAA8C;IAC9C,IAAI,OAAO,IAAI,QAAQ,CAAC,SAAS,CAAC,CAEjC;IAED,oEAAoE;IACpE,KAAK,IAAI,MAAM,IAAI;IAMnB,wCAAwC;IAClC,EAAE,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5C,qBAAqB;IACrB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,gDAAgD;IAC1C,OAAO,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjD,yBAAyB;IACzB,IAAI,IAAI,IAAI;IAIZ,4BAA4B;IAC5B,OAAO,IAAI,IAAI;IAIf,yCAAyC;IACzC,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM;IAIjC,6CAA6C;IAC7C,OAAO,CAAC,YAAY;IAKpB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;IA0DhB;;;;;;OAMG;YACW,YAAY;IAgD1B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;CAe7B"}
|
package/dist/router/router.js
CHANGED
|
@@ -18,6 +18,8 @@ export class LoomRouter {
|
|
|
18
18
|
_previousTag = null;
|
|
19
19
|
/** Optional outlet reference for lifecycle dispatch */
|
|
20
20
|
_outlet = null;
|
|
21
|
+
/** Last path processed by _resolve — used to deduplicate async event re-fires */
|
|
22
|
+
_lastResolvedPath = null;
|
|
21
23
|
/** Register the outlet so lifecycle hooks can find rendered elements */
|
|
22
24
|
setOutlet(el) {
|
|
23
25
|
this._outlet = el;
|
|
@@ -81,14 +83,25 @@ export class LoomRouter {
|
|
|
81
83
|
return target;
|
|
82
84
|
return buildPath(target.name, target.params);
|
|
83
85
|
}
|
|
84
|
-
/**
|
|
86
|
+
/**
|
|
87
|
+
* Resolve the current URL against the route table and emit RouteChanged.
|
|
88
|
+
* Deduplicates: if the path hasn't changed since the last resolve, skip.
|
|
89
|
+
* This prevents double-resolution from async hashchange/popstate events
|
|
90
|
+
* that fire after go()/replace() already resolved the same path.
|
|
91
|
+
*/
|
|
85
92
|
_resolve() {
|
|
86
93
|
const path = this.mode.read();
|
|
94
|
+
// Deduplicate — hashchange/popstate may fire asynchronously after
|
|
95
|
+
// go()/replace() already resolved this exact path.
|
|
96
|
+
if (path === this._lastResolvedPath)
|
|
97
|
+
return;
|
|
98
|
+
this._lastResolvedPath = path;
|
|
87
99
|
const match = matchRoute(path);
|
|
88
100
|
const previous = this._current.path;
|
|
89
101
|
const newTag = match?.entry.tag ?? null;
|
|
90
102
|
// ── Route lifecycle hooks ──
|
|
91
103
|
const tagChanged = this._previousTag !== newTag;
|
|
104
|
+
const pathChanged = previous !== path;
|
|
92
105
|
// Call @onRouteLeave on the old element
|
|
93
106
|
if (tagChanged && this._previousTag && this._outlet) {
|
|
94
107
|
const oldEl = this._outlet.shadowRoot?.querySelector(this._previousTag)
|
|
@@ -108,8 +121,10 @@ export class LoomRouter {
|
|
|
108
121
|
meta: match?.entry.meta ?? {},
|
|
109
122
|
};
|
|
110
123
|
bus.emit(new RouteChanged(path, this._current.params, previous, this._current.meta));
|
|
111
|
-
// Call @onRouteEnter on the new element (after DOM update via microtask)
|
|
112
|
-
|
|
124
|
+
// Call @onRouteEnter on the new element (after DOM update via microtask).
|
|
125
|
+
// Fires when the tag changed (new component) OR the path changed
|
|
126
|
+
// (same component, different params — e.g. /creator/alice → /creator/bob).
|
|
127
|
+
if ((tagChanged || pathChanged) && newTag && this._outlet) {
|
|
113
128
|
queueMicrotask(() => {
|
|
114
129
|
const newEl = this._outlet?.shadowRoot?.querySelector(newTag)
|
|
115
130
|
?? this._outlet?.querySelector(newTag);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/router/router.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAmB,QAAQ,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAgB7B,MAAM,OAAO,UAAU;IACZ,IAAI,CAAa;IAClB,QAAQ,GAAc,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACrE,YAAY,GAAkB,IAAI,CAAC;IAC3C,uDAAuD;IAC/C,OAAO,GAAuB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/router/router.ts"],"names":[],"mappings":"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"}
|