@toyz/loom 0.19.3 → 0.19.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app.d.ts +1 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +11 -1
- package/dist/app.js.map +1 -1
- package/dist/bus.d.ts +8 -0
- package/dist/bus.d.ts.map +1 -1
- package/dist/bus.js +20 -0
- package/dist/bus.js.map +1 -1
- package/dist/event.d.ts +17 -0
- package/dist/event.d.ts.map +1 -1
- package/dist/event.js +19 -0
- package/dist/event.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/lifecycle.d.ts +46 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +36 -0
- package/dist/lifecycle.js.map +1 -0
- package/dist/router/router.d.ts +6 -2
- package/dist/router/router.d.ts.map +1 -1
- package/dist/router/router.js +9 -2
- package/dist/router/router.js.map +1 -1
- package/package.json +1 -1
package/dist/app.d.ts
CHANGED
|
@@ -63,7 +63,7 @@ declare class LoomApp {
|
|
|
63
63
|
* 4. Register all @component custom elements
|
|
64
64
|
*/
|
|
65
65
|
start(): Promise<void>;
|
|
66
|
-
/** Tear down — stop render loop */
|
|
66
|
+
/** Tear down — call stop() on lifecycle-aware services (reverse order), then stop render loop */
|
|
67
67
|
stop(): void;
|
|
68
68
|
/** Whether the app has been started */
|
|
69
69
|
get started(): boolean;
|
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAO,KAAK,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAO,KAAK,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAStC,cAAM,OAAO;IACX,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,UAAU,CAAyD;IAC3E,OAAO,CAAC,QAAQ,CAAS;IAIzB,gEAAgE;IAChE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAE5D,2CAA2C;IAC3C,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAEzC,uCAAuC;IACvC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAIvD;;;;;;;;;OASG;IACH,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAC5B,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI;IA6BzC,+DAA+D;IAC/D,eAAe,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IAIhC,wDAAwD;IACxD,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,QAAQ,CAAA;KAAE,GAAG,IAAI;IAIvE,gEAAgE;IAChE,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,GAAG,IAAI;IAW3D,6DAA6D;IAC7D,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;IAQzB,6EAA6E;IAC7E,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC;IAM9C,sEAAsE;IACtE,OAAO,CAAC,aAAa;IAWrB;;;;;;OAMG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkD5B,iGAAiG;IACjG,IAAI,IAAI,IAAI;IAUZ,uCAAuC;IACvC,IAAI,OAAO,IAAI,OAAO,CAErB;CACF;AAED,qDAAqD;AACrD,eAAO,MAAM,GAAG,SAAgB,CAAC;AACjC,YAAY,EAAE,OAAO,EAAE,CAAC"}
|
package/dist/app.js
CHANGED
|
@@ -17,6 +17,7 @@ import { renderLoop } from "./render-loop";
|
|
|
17
17
|
import { INJECT_PARAMS, ON_HANDLERS, SERVICE_NAME } from "./decorators/symbols";
|
|
18
18
|
import { bus } from "./bus";
|
|
19
19
|
import { LoomResult } from "./result";
|
|
20
|
+
import { hasStart, hasStop } from "./lifecycle";
|
|
20
21
|
class LoomApp {
|
|
21
22
|
providers = new Map();
|
|
22
23
|
services = [];
|
|
@@ -135,6 +136,9 @@ class LoomApp {
|
|
|
135
136
|
bus.on(handler.type, (e) => instance[handler.key](e));
|
|
136
137
|
}
|
|
137
138
|
}
|
|
139
|
+
// LoomLifecycle — auto-call start() if the service implements it
|
|
140
|
+
if (hasStart(instance))
|
|
141
|
+
await instance.start();
|
|
138
142
|
}
|
|
139
143
|
// 2. Run @factory methods on instantiated services
|
|
140
144
|
for (const { fn, method, key } of this.factories) {
|
|
@@ -153,8 +157,14 @@ class LoomApp {
|
|
|
153
157
|
}
|
|
154
158
|
this._started = true;
|
|
155
159
|
}
|
|
156
|
-
/** Tear down — stop render loop */
|
|
160
|
+
/** Tear down — call stop() on lifecycle-aware services (reverse order), then stop render loop */
|
|
157
161
|
stop() {
|
|
162
|
+
// LoomLifecycle — call stop() in reverse registration order
|
|
163
|
+
for (const Svc of [...this.services].reverse()) {
|
|
164
|
+
const instance = this.providers.get(Svc);
|
|
165
|
+
if (instance && hasStop(instance))
|
|
166
|
+
instance.stop();
|
|
167
|
+
}
|
|
158
168
|
renderLoop.stop();
|
|
159
169
|
this._started = false;
|
|
160
170
|
}
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,GAAG,EAAkC,MAAM,OAAO,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,GAAG,EAAkC,MAAM,OAAO,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAQhD,MAAM,OAAO;IACH,SAAS,GAAG,IAAI,GAAG,EAAY,CAAC;IAChC,QAAQ,GAAU,EAAE,CAAC;IACrB,SAAS,GAAkB,EAAE,CAAC;IAC9B,UAAU,GAAsD,EAAE,CAAC;IACnE,QAAQ,GAAG,KAAK,CAAC;IAEzB,gEAAgE;IAEhE,gEAAgE;IAChE,EAAE,CAAI,IAAoB,EAAE,OAAmB,IAAgB,OAAO,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAE9F,2CAA2C;IAC3C,IAAI,CAAsB,KAAQ,IAAU,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE9D,uCAAuC;IACvC,GAAG,CAAI,IAAoB,EAAE,OAAmB,IAAU,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAgBnF,GAAG,CAAC,UAAe,EAAE,QAAc;QACjC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,oCAAoC;YACpC,IAAI,OAAO,QAAQ,KAAK,UAAU,IAAI,QAAQ,CAAC,SAAS,EAAE,WAAW,KAAK,QAAQ,EAAE,CAAC;gBACnF,gEAAgE;gBAChE,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;gBACnE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;YAC5C,IAAI,UAAU,CAAC,SAAS,EAAE,WAAW,KAAK,UAAU,EAAE,CAAC;gBACrD,kCAAkC;gBAClC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,UAAU,EAAE,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,6BAA6B;gBAC7B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;gBAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,kCAAkC;YAClC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4CAA4C;IAE5C,+DAA+D;IAC/D,eAAe,CAAC,IAAS;QACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,wDAAwD;IACxD,eAAe,CAAC,GAAQ,EAAE,IAAsC;QAC9D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,gEAAgE;IAChE,QAAQ,CAAC,GAAW,EAAE,IAA8B;QAClD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,qEAAqE;QACrE,oEAAoE;QACpE,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9C,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,mBAAmB;IAEnB,6DAA6D;IAC7D,GAAG,CAAU,GAAQ;QACnB,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,CAAM,CAAC;IAChB,CAAC;IAED,6EAA6E;IAC7E,KAAK,CAAU,GAAQ;QACrB,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,UAAU,CAAC,EAAE,CAAC,CAAM,CAAC,CAAC;QAClD,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,0BAA0B,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,sEAAsE;IAC9D,aAAa,CAAC,KAAU,EAAE,MAAc;QAC9C,MAAM,IAAI,GACR,KAAK,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI;aAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;aAClC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,kBAAkB;IAElB;;;;;;OAMG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE1B,2DAA2D;QAC3D,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;gBAC9D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YAC5C,CAAC;YACD,wEAAwE;YACxE,MAAM,OAAO,GAAuB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAC1D,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YACvD,CAAC;YACD,oDAAoD;YACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzC,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;gBACtD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;oBACtB,yCAAyC;oBACzC,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5F,CAAC;qBAAM,CAAC;oBACN,8BAA8B;oBAC9B,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;YACD,iEAAiE;YACjE,IAAI,QAAQ,CAAC,QAAQ,CAAC;gBAAE,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjD,CAAC;QAED,mDAAmD;QACnD,KAAK,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjD,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;YAC1B,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,UAAU,CAAC,KAAK,EAAE,CAAC;QAEnB,yCAAyC;QACzC,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC5C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,iGAAiG;IACjG,IAAI;QACF,4DAA4D;QAC5D,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzC,IAAI,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;gBAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrD,CAAC;QACD,UAAU,CAAC,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,uCAAuC;IACvC,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF;AAED,qDAAqD;AACrD,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,OAAO,EAAE,CAAC"}
|
package/dist/bus.d.ts
CHANGED
|
@@ -16,6 +16,11 @@ export type Constructor<T = any> = new (...args: any[]) => T;
|
|
|
16
16
|
export type Handler<T> = (data: T) => void;
|
|
17
17
|
export declare class EventBus {
|
|
18
18
|
private listeners;
|
|
19
|
+
/**
|
|
20
|
+
* Frame-scoped dedup cache — cleared after the current synchronous flush drains.
|
|
21
|
+
* Only populated when an event returns a non-undefined dedupeKey.
|
|
22
|
+
*/
|
|
23
|
+
private _seen;
|
|
19
24
|
/** Subscribe to a typed event. Returns unsubscribe function. */
|
|
20
25
|
on<T>(type: Constructor<T>, handler: Handler<T>): () => void;
|
|
21
26
|
/** Subscribe for a single event — auto-unsubscribes after first fire. */
|
|
@@ -31,6 +36,9 @@ export declare class EventBus {
|
|
|
31
36
|
* Emit a typed event — dispatches to all handlers of that class,
|
|
32
37
|
* then walks the prototype chain to dispatch to parent event handlers.
|
|
33
38
|
* Respects event.cancelled — stops both handler iteration and parent walk.
|
|
39
|
+
*
|
|
40
|
+
* Frame-scoped dedup: if event.dedupeKey is non-undefined, only the first
|
|
41
|
+
* emission with that key per synchronous flush reaches handlers.
|
|
34
42
|
*/
|
|
35
43
|
emit<T extends LoomEvent>(event: T): void;
|
|
36
44
|
/** Remove a specific handler */
|
package/dist/bus.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bus.d.ts","sourceRoot":"","sources":["../src/bus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7D,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AAE3C,qBAAa,QAAQ;IACnB,OAAO,CAAC,SAAS,CAA6C;IAE9D,gEAAgE;IAChE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAO5D,yEAAyE;IACzE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAK9D;;;OAGG;IACH,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAgBzE
|
|
1
|
+
{"version":3,"file":"bus.d.ts","sourceRoot":"","sources":["../src/bus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7D,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AAE3C,qBAAa,QAAQ;IACnB,OAAO,CAAC,SAAS,CAA6C;IAE9D;;;OAGG;IACH,OAAO,CAAC,KAAK,CAA4B;IAEzC,gEAAgE;IAChE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAO5D,yEAAyE;IACzE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAK9D;;;OAGG;IACH,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAgBzE;;;;;;;OAOG;IACH,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IA0BzC,gCAAgC;IAChC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAIvD,kDAAkD;IAClD,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAIpC,2BAA2B;IAC3B,KAAK,IAAI,IAAI;CAGd;AAED,8EAA8E;AAC9E,eAAO,IAAI,GAAG,UAAiB,CAAC;AAEhC,+CAA+C;AAC/C,wBAAgB,MAAM,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAExC"}
|
package/dist/bus.js
CHANGED
|
@@ -13,6 +13,11 @@
|
|
|
13
13
|
*/
|
|
14
14
|
export class EventBus {
|
|
15
15
|
listeners = new Map();
|
|
16
|
+
/**
|
|
17
|
+
* Frame-scoped dedup cache — cleared after the current synchronous flush drains.
|
|
18
|
+
* Only populated when an event returns a non-undefined dedupeKey.
|
|
19
|
+
*/
|
|
20
|
+
_seen = null;
|
|
16
21
|
/** Subscribe to a typed event. Returns unsubscribe function. */
|
|
17
22
|
on(type, handler) {
|
|
18
23
|
if (!this.listeners.has(type))
|
|
@@ -50,8 +55,23 @@ export class EventBus {
|
|
|
50
55
|
* Emit a typed event — dispatches to all handlers of that class,
|
|
51
56
|
* then walks the prototype chain to dispatch to parent event handlers.
|
|
52
57
|
* Respects event.cancelled — stops both handler iteration and parent walk.
|
|
58
|
+
*
|
|
59
|
+
* Frame-scoped dedup: if event.dedupeKey is non-undefined, only the first
|
|
60
|
+
* emission with that key per synchronous flush reaches handlers.
|
|
53
61
|
*/
|
|
54
62
|
emit(event) {
|
|
63
|
+
// Frame-scoped dedup — opt-in via dedupeKey on the event
|
|
64
|
+
const key = event.dedupeKey;
|
|
65
|
+
if (key !== undefined) {
|
|
66
|
+
if (!this._seen) {
|
|
67
|
+
this._seen = new Set();
|
|
68
|
+
// Clear after the current synchronous flush drains
|
|
69
|
+
queueMicrotask(() => { this._seen = null; });
|
|
70
|
+
}
|
|
71
|
+
if (this._seen.has(key))
|
|
72
|
+
return;
|
|
73
|
+
this._seen.add(key);
|
|
74
|
+
}
|
|
55
75
|
let ctor = event.constructor;
|
|
56
76
|
while (ctor && ctor !== Object) {
|
|
57
77
|
const handlers = this.listeners.get(ctor);
|
package/dist/bus.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bus.js","sourceRoot":"","sources":["../src/bus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,MAAM,OAAO,QAAQ;IACX,SAAS,GAAG,IAAI,GAAG,EAAkC,CAAC;IAE9D,gEAAgE;IAChE,EAAE,CAAI,IAAoB,EAAE,OAAmB;QAC7C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACnE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QACtC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACjB,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,yEAAyE;IACzE,IAAI,CAAI,IAAoB,EAAE,OAAmB;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,OAAO,CAAI,IAAoB,EAAE,IAA2B;QAC1D,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACxC,IAAI,KAAgD,CAAC;YACrD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;gBACrC,IAAI,KAAK;oBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YACH,IAAI,IAAI,EAAE,OAAO,EAAE,CAAC;gBAClB,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBACtB,KAAK,EAAE,CAAC;oBACR,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,qBAAqB,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;gBAC/E,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"bus.js","sourceRoot":"","sources":["../src/bus.ts"],"names":[],"mappings":"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"}
|
package/dist/event.d.ts
CHANGED
|
@@ -17,8 +17,25 @@ export declare abstract class LoomEvent {
|
|
|
17
17
|
cancelled: boolean;
|
|
18
18
|
/** Stop dispatching to remaining handlers and parent event types */
|
|
19
19
|
cancel(): void;
|
|
20
|
+
/**
|
|
21
|
+
* Optional dedup key — override in a subclass to enable frame-scoped deduplication.
|
|
22
|
+
* If two events with the same dedupeKey are emitted in the same synchronous flush,
|
|
23
|
+
* only the first reaches handlers. Cleared after the current microtask drains.
|
|
24
|
+
*
|
|
25
|
+
* ```ts
|
|
26
|
+
* class ThemeChanged extends LoomEvent {
|
|
27
|
+
* constructor(public theme: string) { super(); }
|
|
28
|
+
* override get dedupeKey() { return `theme:${this.theme}`; }
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* Return `undefined` (default) to disable dedup for this event.
|
|
33
|
+
*/
|
|
34
|
+
get dedupeKey(): string | undefined;
|
|
20
35
|
/** Construct and emit this event through the global bus */
|
|
21
36
|
static dispatch<T extends LoomEvent>(this: new (...args: unknown[]) => T, ...args: ConstructorParameters<typeof this>): void;
|
|
37
|
+
/** Construct this event without emitting — useful for building, inspecting, or cloning before dispatch */
|
|
38
|
+
static create<T extends LoomEvent>(this: new (...args: unknown[]) => T, ...args: ConstructorParameters<typeof this>): T;
|
|
22
39
|
/** Shallow clone with optional overrides */
|
|
23
40
|
clone(overrides?: Partial<this>): this;
|
|
24
41
|
/** Type guard — `if (SomeEvent.is(event))` */
|
package/dist/event.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../src/event.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGzC,8BAAsB,SAAS;IAC7B,+BAA+B;IAC/B,QAAQ,CAAC,SAAS,SAAc;IAEhC,iFAAiF;IACjF,SAAS,UAAS;IAElB,oEAAoE;IACpE,MAAM,IAAI,IAAI;IAEd,2DAA2D;IAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,SAAS,EACjC,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EACnC,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,IAAI,CAAC,GAC1C,IAAI;IAIP,4CAA4C;IAC5C,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAQtC,8CAA8C;IAC9C,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,SAAS,EAC3B,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,CAAC;IAIb,iDAAiD;IACjD,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAQjC,4BAA4B;IAC5B,QAAQ,IAAI,MAAM;CAGnB"}
|
|
1
|
+
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../src/event.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGzC,8BAAsB,SAAS;IAC7B,+BAA+B;IAC/B,QAAQ,CAAC,SAAS,SAAc;IAEhC,iFAAiF;IACjF,SAAS,UAAS;IAElB,oEAAoE;IACpE,MAAM,IAAI,IAAI;IAEd;;;;;;;;;;;;;OAaG;IACH,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAAsB;IAEzD,2DAA2D;IAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,SAAS,EACjC,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EACnC,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,IAAI,CAAC,GAC1C,IAAI;IAIP,0GAA0G;IAC1G,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,SAAS,EAC/B,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EACnC,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,IAAI,CAAC,GAC1C,CAAC;IAIJ,4CAA4C;IAC5C,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAQtC,8CAA8C;IAC9C,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,SAAS,EAC3B,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,CAAC;IAIb,iDAAiD;IACjD,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAQjC,4BAA4B;IAC5B,QAAQ,IAAI,MAAM;CAGnB"}
|
package/dist/event.js
CHANGED
|
@@ -17,10 +17,29 @@ export class LoomEvent {
|
|
|
17
17
|
cancelled = false;
|
|
18
18
|
/** Stop dispatching to remaining handlers and parent event types */
|
|
19
19
|
cancel() { this.cancelled = true; }
|
|
20
|
+
/**
|
|
21
|
+
* Optional dedup key — override in a subclass to enable frame-scoped deduplication.
|
|
22
|
+
* If two events with the same dedupeKey are emitted in the same synchronous flush,
|
|
23
|
+
* only the first reaches handlers. Cleared after the current microtask drains.
|
|
24
|
+
*
|
|
25
|
+
* ```ts
|
|
26
|
+
* class ThemeChanged extends LoomEvent {
|
|
27
|
+
* constructor(public theme: string) { super(); }
|
|
28
|
+
* override get dedupeKey() { return `theme:${this.theme}`; }
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* Return `undefined` (default) to disable dedup for this event.
|
|
33
|
+
*/
|
|
34
|
+
get dedupeKey() { return undefined; }
|
|
20
35
|
/** Construct and emit this event through the global bus */
|
|
21
36
|
static dispatch(...args) {
|
|
22
37
|
bus.emit(new this(...args));
|
|
23
38
|
}
|
|
39
|
+
/** Construct this event without emitting — useful for building, inspecting, or cloning before dispatch */
|
|
40
|
+
static create(...args) {
|
|
41
|
+
return new this(...args);
|
|
42
|
+
}
|
|
24
43
|
/** Shallow clone with optional overrides */
|
|
25
44
|
clone(overrides) {
|
|
26
45
|
return Object.assign(Object.create(Object.getPrototypeOf(this)), this, overrides);
|
package/dist/event.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.js","sourceRoot":"","sources":["../src/event.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,MAAM,OAAgB,SAAS;IAC7B,+BAA+B;IACtB,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEhC,iFAAiF;IACjF,SAAS,GAAG,KAAK,CAAC;IAElB,oEAAoE;IACpE,MAAM,KAAW,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC;IAEzC,2DAA2D;IAC3D,MAAM,CAAC,QAAQ,CAEb,GAAG,IAAwC;QAE3C,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,4CAA4C;IAC5C,KAAK,CAAC,SAAyB;QAC7B,OAAO,MAAM,CAAC,MAAM,CAClB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAC1C,IAAI,EACJ,SAAS,CACV,CAAC;IACJ,CAAC;IAED,8CAA8C;IAC9C,MAAM,CAAC,EAAE,CAEP,KAAc;QAEd,OAAO,KAAK,YAAY,IAAI,CAAC;IAC/B,CAAC;IAED,iDAAiD;IACjD,MAAM;QACJ,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,GAAG,CAAC,GAAG,CAAC,GAAI,IAA2C,CAAC,GAAG,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,4BAA4B;IAC5B,QAAQ;QACN,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC;IACtE,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"event.js","sourceRoot":"","sources":["../src/event.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,MAAM,OAAgB,SAAS;IAC7B,+BAA+B;IACtB,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEhC,iFAAiF;IACjF,SAAS,GAAG,KAAK,CAAC;IAElB,oEAAoE;IACpE,MAAM,KAAW,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC;IAEzC;;;;;;;;;;;;;OAaG;IACH,IAAI,SAAS,KAAyB,OAAO,SAAS,CAAC,CAAC,CAAC;IAEzD,2DAA2D;IAC3D,MAAM,CAAC,QAAQ,CAEb,GAAG,IAAwC;QAE3C,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,0GAA0G;IAC1G,MAAM,CAAC,MAAM,CAEX,GAAG,IAAwC;QAE3C,OAAO,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,4CAA4C;IAC5C,KAAK,CAAC,SAAyB;QAC7B,OAAO,MAAM,CAAC,MAAM,CAClB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAC1C,IAAI,EACJ,SAAS,CACV,CAAC;IACJ,CAAC;IAED,8CAA8C;IAC9C,MAAM,CAAC,EAAE,CAEP,KAAc;QAEd,OAAO,KAAK,YAAY,IAAI,CAAC;IAC/B,CAAC;IAED,iDAAiD;IACjD,MAAM;QACJ,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,GAAG,CAAC,GAAG,CAAC,GAAI,IAA2C,CAAC,GAAG,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,4BAA4B;IAC5B,QAAQ;QACN,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC;IACtE,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -24,4 +24,5 @@ export { reactive, prop, computed, watch, store } from "./store";
|
|
|
24
24
|
export { LoomElement, component, query, queryAll, styles, dynamicCss, type LoomHtmlQuery, type LoomHtmlQueryAll, catch_, suspend, mount, unmount, event, observer, interval, timeout, debounce, throttle, animationFrame, } from "./element";
|
|
25
25
|
export { on, emit, createDecorator, createSymbol, LoomSymbol, SYMBOL_REGISTRY } from "./decorators";
|
|
26
26
|
export { LoomResult } from "./result";
|
|
27
|
+
export type { LoomLifecycle } from "./lifecycle";
|
|
27
28
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,YAAY,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGrC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGlD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGpD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAIhD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIjE,OAAO,EACL,WAAW,EACX,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAC9C,KAAK,aAAa,EAAE,KAAK,gBAAgB,EACzC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAC/B,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,GACtD,MAAM,WAAW,CAAC;AAInB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpG,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,YAAY,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGrC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGlD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGpD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAIhD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIjE,OAAO,EACL,WAAW,EACX,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAC9C,KAAK,aAAa,EAAE,KAAK,gBAAgB,EACzC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAC/B,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,GACtD,MAAM,WAAW,CAAC;AAInB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpG,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loom — LoomLifecycle interface
|
|
3
|
+
*
|
|
4
|
+
* Opt-in service lifecycle contract. Services that implement this interface
|
|
5
|
+
* will have their `start()` and/or `stop()` methods called automatically
|
|
6
|
+
* by `app.start()` and `app.stop()`.
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* @service("ws")
|
|
10
|
+
* class WebSocketService implements LoomLifecycle<"start" | "stop"> {
|
|
11
|
+
* start() { this.ws.connect(); }
|
|
12
|
+
* stop() { this.ws.disconnect(); }
|
|
13
|
+
* }
|
|
14
|
+
*
|
|
15
|
+
* // No manual call needed in main.ts — app.start() handles it.
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* The generic parameter enforces which hooks the service declares.
|
|
19
|
+
* Hooks not in T become `never` — calling them is a compile-time error.
|
|
20
|
+
*
|
|
21
|
+
* ```ts
|
|
22
|
+
* class AnalyticsService implements LoomLifecycle<"start"> {
|
|
23
|
+
* start() { this.track("app_boot"); }
|
|
24
|
+
* // stop() is `never` — calling it won't compile
|
|
25
|
+
* }
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export type LifecycleHook = "start" | "stop";
|
|
29
|
+
/**
|
|
30
|
+
* Service lifecycle interface.
|
|
31
|
+
*
|
|
32
|
+
* @template T - The lifecycle hooks this service supports ("start" | "stop" or either alone).
|
|
33
|
+
*/
|
|
34
|
+
export type LoomLifecycle<T extends LifecycleHook> = {
|
|
35
|
+
start: "start" extends T ? () => void | Promise<void> : never;
|
|
36
|
+
stop: "stop" extends T ? () => void | Promise<void> : never;
|
|
37
|
+
};
|
|
38
|
+
/** Type guard — returns true if the value has a callable `start` method */
|
|
39
|
+
export declare function hasStart(v: unknown): v is {
|
|
40
|
+
start: () => void | Promise<void>;
|
|
41
|
+
};
|
|
42
|
+
/** Type guard — returns true if the value has a callable `stop` method */
|
|
43
|
+
export declare function hasStop(v: unknown): v is {
|
|
44
|
+
stop: () => void | Promise<void>;
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;AAE7C;;;;GAIG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,aAAa,IAAI;IACnD,KAAK,EAAE,OAAO,SAAS,CAAC,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC9D,IAAI,EAAG,MAAM,SAAU,CAAC,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;CAC/D,CAAC;AAEF,2EAA2E;AAC3E,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI;IAAE,KAAK,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAE/E;AAED,0EAA0E;AAC1E,wBAAgB,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI;IAAE,IAAI,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAE7E"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loom — LoomLifecycle interface
|
|
3
|
+
*
|
|
4
|
+
* Opt-in service lifecycle contract. Services that implement this interface
|
|
5
|
+
* will have their `start()` and/or `stop()` methods called automatically
|
|
6
|
+
* by `app.start()` and `app.stop()`.
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* @service("ws")
|
|
10
|
+
* class WebSocketService implements LoomLifecycle<"start" | "stop"> {
|
|
11
|
+
* start() { this.ws.connect(); }
|
|
12
|
+
* stop() { this.ws.disconnect(); }
|
|
13
|
+
* }
|
|
14
|
+
*
|
|
15
|
+
* // No manual call needed in main.ts — app.start() handles it.
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* The generic parameter enforces which hooks the service declares.
|
|
19
|
+
* Hooks not in T become `never` — calling them is a compile-time error.
|
|
20
|
+
*
|
|
21
|
+
* ```ts
|
|
22
|
+
* class AnalyticsService implements LoomLifecycle<"start"> {
|
|
23
|
+
* start() { this.track("app_boot"); }
|
|
24
|
+
* // stop() is `never` — calling it won't compile
|
|
25
|
+
* }
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
/** Type guard — returns true if the value has a callable `start` method */
|
|
29
|
+
export function hasStart(v) {
|
|
30
|
+
return typeof v?.start === "function";
|
|
31
|
+
}
|
|
32
|
+
/** Type guard — returns true if the value has a callable `stop` method */
|
|
33
|
+
export function hasStop(v) {
|
|
34
|
+
return typeof v?.stop === "function";
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAcH,2EAA2E;AAC3E,MAAM,UAAU,QAAQ,CAAC,CAAU;IACjC,OAAO,OAAQ,CAAS,EAAE,KAAK,KAAK,UAAU,CAAC;AACjD,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,OAAO,CAAC,CAAU;IAChC,OAAO,OAAQ,CAAS,EAAE,IAAI,KAAK,UAAU,CAAC;AAChD,CAAC"}
|
package/dist/router/router.d.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Register via app.use(new LoomRouter({ mode: "hash" }))
|
|
6
6
|
*/
|
|
7
7
|
import { type RouterMode } from "./mode";
|
|
8
|
+
import type { LoomLifecycle } from "../lifecycle";
|
|
8
9
|
export interface RouterOptions {
|
|
9
10
|
mode?: "hash" | "history";
|
|
10
11
|
}
|
|
@@ -19,10 +20,11 @@ export interface RouteInfo {
|
|
|
19
20
|
tag: string | null;
|
|
20
21
|
meta: Record<string, unknown>;
|
|
21
22
|
}
|
|
22
|
-
export declare class LoomRouter {
|
|
23
|
+
export declare class LoomRouter implements LoomLifecycle<"start" | "stop"> {
|
|
23
24
|
readonly mode: RouterMode;
|
|
24
25
|
private _current;
|
|
25
26
|
private _previousTag;
|
|
27
|
+
private _cleanup;
|
|
26
28
|
/** Optional outlet reference for lifecycle dispatch */
|
|
27
29
|
private _outlet;
|
|
28
30
|
/** Register the outlet so lifecycle hooks can find rendered elements */
|
|
@@ -31,7 +33,9 @@ export declare class LoomRouter {
|
|
|
31
33
|
/** Current route info (read-only snapshot) */
|
|
32
34
|
get current(): Readonly<RouteInfo>;
|
|
33
35
|
/** Start listening for URL changes and resolve the initial route */
|
|
34
|
-
start():
|
|
36
|
+
start(): void;
|
|
37
|
+
/** Stop listening for URL changes (called automatically by app.stop()) */
|
|
38
|
+
stop(): void;
|
|
35
39
|
/** Navigate to a path or named route */
|
|
36
40
|
go(target: RouteTarget): Promise<void>;
|
|
37
41
|
/** Alias for go() */
|
|
@@ -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;
|
|
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;AAOhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,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,UAAW,YAAW,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC;IAChE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAA6D;IAC7E,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,QAAQ,CAA6B;IAC7C,uDAAuD;IACvD,OAAO,CAAC,OAAO,CAA4B;IAE3C,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,IAAI;IAMb,0EAA0E;IAC1E,IAAI,IAAI,IAAI;IAKZ,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,4EAA4E;IAC5E,OAAO,CAAC,QAAQ;IAqDhB;;;;;;OAMG;YACW,YAAY;IAwD1B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAgB5B;;;;;;OAMG;IACH,OAAO,CAAC,yBAAyB;CAiBlC"}
|
package/dist/router/router.js
CHANGED
|
@@ -16,6 +16,7 @@ export class LoomRouter {
|
|
|
16
16
|
mode;
|
|
17
17
|
_current = { path: "/", params: {}, tag: null, meta: {} };
|
|
18
18
|
_previousTag = null;
|
|
19
|
+
_cleanup = null;
|
|
19
20
|
/** Optional outlet reference for lifecycle dispatch */
|
|
20
21
|
_outlet = null;
|
|
21
22
|
/** Register the outlet so lifecycle hooks can find rendered elements */
|
|
@@ -31,9 +32,15 @@ export class LoomRouter {
|
|
|
31
32
|
}
|
|
32
33
|
/** Start listening for URL changes and resolve the initial route */
|
|
33
34
|
start() {
|
|
34
|
-
|
|
35
|
+
if (this._cleanup)
|
|
36
|
+
return; // already started
|
|
37
|
+
this._cleanup = this.mode.listen(() => this._resolve());
|
|
35
38
|
this._resolve();
|
|
36
|
-
|
|
39
|
+
}
|
|
40
|
+
/** Stop listening for URL changes (called automatically by app.stop()) */
|
|
41
|
+
stop() {
|
|
42
|
+
this._cleanup?.();
|
|
43
|
+
this._cleanup = null;
|
|
37
44
|
}
|
|
38
45
|
/** Navigate to a path or named route */
|
|
39
46
|
async go(target) {
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/router/router.ts"],"names":[],"mappings":"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"}
|