@toyz/loom 0.15.2 → 0.15.4

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.
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Loom — @provide / @consume context (TC39 Stage 3)
3
+ *
4
+ * Cross-shadow-DOM data sharing using the W3C Context Protocol.
5
+ * Class-based keys (like @service), auto-instantiation, reactive updates.
6
+ *
7
+ * ```ts
8
+ * class ThemeContext {
9
+ * mode: "dark" | "light" = "dark";
10
+ * primary = "#818cf8";
11
+ * }
12
+ *
13
+ * // Provider (ancestor)
14
+ * @provide(ThemeContext) accessor theme!: ThemeContext;
15
+ *
16
+ * // Consumer (any descendant — crosses shadow boundaries)
17
+ * @consume(ThemeContext) accessor theme!: ThemeContext;
18
+ * ```
19
+ */
20
+ /**
21
+ * W3C Context Protocol event.
22
+ * Dispatched by consumers, intercepted by providers.
23
+ *
24
+ * `composed: true` lets it cross shadow DOM boundaries.
25
+ */
26
+ export declare class ContextRequestEvent<T = unknown> extends Event {
27
+ /** The context key (class constructor, string, or symbol) */
28
+ readonly context: unknown;
29
+ /** Callback the provider calls with the current value */
30
+ readonly callback: ContextCallback<T>;
31
+ /** Whether to subscribe to future updates (default: true) */
32
+ readonly subscribe: boolean;
33
+ constructor(
34
+ /** The context key (class constructor, string, or symbol) */
35
+ context: unknown,
36
+ /** Callback the provider calls with the current value */
37
+ callback: ContextCallback<T>,
38
+ /** Whether to subscribe to future updates (default: true) */
39
+ subscribe?: boolean);
40
+ }
41
+ export type ContextCallback<T> = (value: T, unsubscribe: () => void) => void;
42
+ /**
43
+ * @provide(Key) — Provide a context value to descendants.
44
+ *
45
+ * If Key is a class constructor and no initial value is set,
46
+ * the decorator auto-instantiates via `new Key()`.
47
+ *
48
+ * ```ts
49
+ * @provide(ThemeContext) accessor theme!: ThemeContext;
50
+ * ```
51
+ */
52
+ export declare function provide<T>(key: (new () => T) | string | symbol): <This extends object>(target: ClassAccessorDecoratorTarget<This, T>, context: ClassAccessorDecoratorContext<This, T>) => ClassAccessorDecoratorResult<This, T>;
53
+ /**
54
+ * @consume(Key) — Consume a context value from the nearest provider ancestor.
55
+ *
56
+ * The accessor is automatically typed from the Key if it's a class constructor.
57
+ * Updates reactively when the provider changes the value.
58
+ *
59
+ * ```ts
60
+ * @consume(ThemeContext) accessor theme!: ThemeContext;
61
+ * ```
62
+ */
63
+ export declare function consume<T>(key: (new () => T) | string | symbol): <This extends object>(_target: ClassAccessorDecoratorTarget<This, T>, context: ClassAccessorDecoratorContext<This, T>) => ClassAccessorDecoratorResult<This, T>;
64
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/element/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AASH;;;;;GAKG;AACH,qBAAa,mBAAmB,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,KAAK;IAEnD,6DAA6D;aAC7C,OAAO,EAAE,OAAO;IAChC,yDAAyD;aACzC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;IAC5C,6DAA6D;aAC7C,SAAS,EAAE,OAAO;;IALlC,6DAA6D;IAC7C,OAAO,EAAE,OAAO;IAChC,yDAAyD;IACzC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;IAC5C,6DAA6D;IAC7C,SAAS,GAAE,OAAc;CAIhD;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;AAI7E;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,IACnD,IAAI,SAAS,MAAM,EACvB,QAAQ,4BAA4B,CAAC,IAAI,EAAE,CAAC,CAAC,EAC7C,SAAS,6BAA6B,CAAC,IAAI,EAAE,CAAC,CAAC,KAChD,4BAA4B,CAAC,IAAI,EAAE,CAAC,CAAC,CAsF3C;AAID;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,IACnD,IAAI,SAAS,MAAM,EACvB,SAAS,4BAA4B,CAAC,IAAI,EAAE,CAAC,CAAC,EAC9C,SAAS,6BAA6B,CAAC,IAAI,EAAE,CAAC,CAAC,KAChD,4BAA4B,CAAC,IAAI,EAAE,CAAC,CAAC,CAgD3C"}
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Loom — @provide / @consume context (TC39 Stage 3)
3
+ *
4
+ * Cross-shadow-DOM data sharing using the W3C Context Protocol.
5
+ * Class-based keys (like @service), auto-instantiation, reactive updates.
6
+ *
7
+ * ```ts
8
+ * class ThemeContext {
9
+ * mode: "dark" | "light" = "dark";
10
+ * primary = "#818cf8";
11
+ * }
12
+ *
13
+ * // Provider (ancestor)
14
+ * @provide(ThemeContext) accessor theme!: ThemeContext;
15
+ *
16
+ * // Consumer (any descendant — crosses shadow boundaries)
17
+ * @consume(ThemeContext) accessor theme!: ThemeContext;
18
+ * ```
19
+ */
20
+ import { CONNECT_HOOKS } from "../decorators/symbols";
21
+ // ── Context Request Event ──
22
+ const CONTEXT_REQUEST = "context-request";
23
+ /**
24
+ * W3C Context Protocol event.
25
+ * Dispatched by consumers, intercepted by providers.
26
+ *
27
+ * `composed: true` lets it cross shadow DOM boundaries.
28
+ */
29
+ export class ContextRequestEvent extends Event {
30
+ context;
31
+ callback;
32
+ subscribe;
33
+ constructor(
34
+ /** The context key (class constructor, string, or symbol) */
35
+ context,
36
+ /** Callback the provider calls with the current value */
37
+ callback,
38
+ /** Whether to subscribe to future updates (default: true) */
39
+ subscribe = true) {
40
+ super(CONTEXT_REQUEST, { bubbles: true, composed: true });
41
+ this.context = context;
42
+ this.callback = callback;
43
+ this.subscribe = subscribe;
44
+ }
45
+ }
46
+ // ── @provide ──
47
+ /**
48
+ * @provide(Key) — Provide a context value to descendants.
49
+ *
50
+ * If Key is a class constructor and no initial value is set,
51
+ * the decorator auto-instantiates via `new Key()`.
52
+ *
53
+ * ```ts
54
+ * @provide(ThemeContext) accessor theme!: ThemeContext;
55
+ * ```
56
+ */
57
+ export function provide(key) {
58
+ return (target, context) => {
59
+ const storageKey = Symbol(`ctx:provide:${String(context.name)}`);
60
+ const subscribersKey = Symbol(`ctx:subs:${String(context.name)}`);
61
+ context.addInitializer(function () {
62
+ const self = this;
63
+ const hooks = CONNECT_HOOKS.from(self);
64
+ const hook = (el) => {
65
+ const host = el;
66
+ // Auto-instantiate class key if no value set
67
+ if (host[storageKey] === undefined && typeof key === "function") {
68
+ host[storageKey] = new key();
69
+ }
70
+ // Subscriber list for reactive updates
71
+ if (!host[subscribersKey])
72
+ host[subscribersKey] = new Set();
73
+ const subs = host[subscribersKey];
74
+ // Listen for context requests from descendants
75
+ const handler = (e) => {
76
+ const req = e;
77
+ if (req.context !== key)
78
+ return;
79
+ // Stop propagation so nearest provider wins
80
+ e.stopPropagation();
81
+ const currentValue = host[storageKey];
82
+ if (req.subscribe) {
83
+ // Subscriber — store callback for future updates
84
+ const cb = req.callback;
85
+ subs.add(cb);
86
+ // Provide unsubscribe function
87
+ const unsub = () => subs.delete(cb);
88
+ cb(currentValue, unsub);
89
+ }
90
+ else {
91
+ // One-shot read
92
+ req.callback(currentValue, () => { });
93
+ }
94
+ };
95
+ host.addEventListener(CONTEXT_REQUEST, handler);
96
+ return () => {
97
+ host.removeEventListener(CONTEXT_REQUEST, handler);
98
+ subs.clear();
99
+ };
100
+ };
101
+ if (!hooks)
102
+ CONNECT_HOOKS.set(self, [hook]);
103
+ else
104
+ hooks.push(hook);
105
+ });
106
+ return {
107
+ init(value) {
108
+ // Capture initial accessor value into our storage
109
+ this[storageKey] = value;
110
+ return value;
111
+ },
112
+ get() {
113
+ const self = this;
114
+ if (self[storageKey] === undefined && typeof key === "function") {
115
+ self[storageKey] = new key();
116
+ }
117
+ return self[storageKey];
118
+ },
119
+ set(value) {
120
+ const self = this;
121
+ self[storageKey] = value;
122
+ // Notify all subscribed consumers
123
+ const subs = self[subscribersKey];
124
+ if (subs) {
125
+ for (const cb of subs) {
126
+ cb(value, () => subs.delete(cb));
127
+ }
128
+ }
129
+ // Schedule re-render
130
+ self.scheduleUpdate?.();
131
+ },
132
+ };
133
+ };
134
+ }
135
+ // ── @consume ──
136
+ /**
137
+ * @consume(Key) — Consume a context value from the nearest provider ancestor.
138
+ *
139
+ * The accessor is automatically typed from the Key if it's a class constructor.
140
+ * Updates reactively when the provider changes the value.
141
+ *
142
+ * ```ts
143
+ * @consume(ThemeContext) accessor theme!: ThemeContext;
144
+ * ```
145
+ */
146
+ export function consume(key) {
147
+ return (_target, context) => {
148
+ const storageKey = Symbol(`ctx:consume:${String(context.name)}`);
149
+ const unsubKey = Symbol(`ctx:unsub:${String(context.name)}`);
150
+ context.addInitializer(function () {
151
+ const self = this;
152
+ const hooks = CONNECT_HOOKS.from(self);
153
+ const hook = (el) => {
154
+ const host = el;
155
+ // Callback from provider
156
+ const callback = (value, unsubscribe) => {
157
+ host[storageKey] = value;
158
+ host[unsubKey] = unsubscribe;
159
+ host.scheduleUpdate?.();
160
+ };
161
+ // Defer dispatch so ancestor providers are connected first.
162
+ // Same pattern @slot uses — parent connectedCallback may not
163
+ // have fired yet when both connect in the same tick.
164
+ queueMicrotask(() => {
165
+ host.dispatchEvent(new ContextRequestEvent(key, callback, true));
166
+ });
167
+ return () => {
168
+ // Unsubscribe from provider on disconnect
169
+ const unsub = host[unsubKey];
170
+ unsub?.();
171
+ host[unsubKey] = undefined;
172
+ };
173
+ };
174
+ if (!hooks)
175
+ CONNECT_HOOKS.set(self, [hook]);
176
+ else
177
+ hooks.push(hook);
178
+ });
179
+ return {
180
+ get() {
181
+ return this[storageKey];
182
+ },
183
+ set(value) {
184
+ this[storageKey] = value;
185
+ },
186
+ };
187
+ };
188
+ }
189
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/element/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,8BAA8B;AAE9B,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,OAAO,mBAAiC,SAAQ,KAAK;IAGnC;IAEA;IAEA;IANpB;IACI,6DAA6D;IAC7C,OAAgB;IAChC,yDAAyD;IACzC,QAA4B;IAC5C,6DAA6D;IAC7C,YAAqB,IAAI;QAEzC,KAAK,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAN1C,YAAO,GAAP,OAAO,CAAS;QAEhB,aAAQ,GAAR,QAAQ,CAAoB;QAE5B,cAAS,GAAT,SAAS,CAAgB;IAG7C,CAAC;CACJ;AAID,iBAAiB;AAEjB;;;;;;;;;GASG;AACH,MAAM,UAAU,OAAO,CAAI,GAAoC;IAC3D,OAAO,CACH,MAA6C,EAC7C,OAA+C,EACV,EAAE;QACvC,MAAM,UAAU,GAAG,MAAM,CAAC,eAAe,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjE,MAAM,cAAc,GAAG,MAAM,CAAC,YAAY,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAElE,OAAO,CAAC,cAAc,CAAC;YACnB,MAAM,IAAI,GAAG,IAAc,CAAC;YAC5B,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAA2D,CAAC;YAEjG,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,EAAE;gBACxB,MAAM,IAAI,GAAG,EAAyD,CAAC;gBAEvE,6CAA6C;gBAC7C,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,SAAS,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;oBAC9D,IAAI,CAAC,UAAU,CAAC,GAAG,IAAK,GAAmB,EAAE,CAAC;gBAClD,CAAC;gBAED,uCAAuC;gBACvC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;oBAAE,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,GAAG,EAAsB,CAAC;gBAChF,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAA4B,CAAC;gBAE7D,+CAA+C;gBAC/C,MAAM,OAAO,GAAG,CAAC,CAAQ,EAAE,EAAE;oBACzB,MAAM,GAAG,GAAG,CAA2B,CAAC;oBACxC,IAAI,GAAG,CAAC,OAAO,KAAK,GAAG;wBAAE,OAAO;oBAEhC,4CAA4C;oBAC5C,CAAC,CAAC,eAAe,EAAE,CAAC;oBAEpB,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAM,CAAC;oBAE3C,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;wBAChB,iDAAiD;wBACjD,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC;wBACxB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBAEb,+BAA+B;wBAC/B,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;wBACpC,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;oBAC5B,CAAC;yBAAM,CAAC;wBACJ,gBAAgB;wBAChB,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;oBAC1C,CAAC;gBACL,CAAC,CAAC;gBAED,IAAoB,CAAC,gBAAgB,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;gBAEjE,OAAO,GAAG,EAAE;oBACP,IAAoB,CAAC,mBAAmB,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;oBACpE,IAAI,CAAC,KAAK,EAAE,CAAC;gBACjB,CAAC,CAAC;YACN,CAAC,CAAC;YAEF,IAAI,CAAC,KAAK;gBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;;gBACvC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,OAAO;YACH,IAAI,CAAa,KAAQ;gBACrB,kDAAkD;gBACjD,IAA2C,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;gBACjE,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,GAAG;gBACC,MAAM,IAAI,GAAG,IAA0C,CAAC;gBACxD,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,SAAS,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;oBAC9D,IAAI,CAAC,UAAU,CAAC,GAAG,IAAK,GAAmB,EAAE,CAAC;gBAClD,CAAC;gBACD,OAAO,IAAI,CAAC,UAAU,CAAM,CAAC;YACjC,CAAC;YACD,GAAG,CAAa,KAAQ;gBACpB,MAAM,IAAI,GAAG,IAA0C,CAAC;gBACxD,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;gBAEzB,kCAAkC;gBAClC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAwC,CAAC;gBACzE,IAAI,IAAI,EAAE,CAAC;oBACP,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;wBACpB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;oBACrC,CAAC;gBACL,CAAC;gBAED,qBAAqB;gBACpB,IAA+B,CAAC,cAAc,EAAE,EAAE,CAAC;YACxD,CAAC;SACJ,CAAC;IACN,CAAC,CAAC;AACN,CAAC;AAED,iBAAiB;AAEjB;;;;;;;;;GASG;AACH,MAAM,UAAU,OAAO,CAAI,GAAoC;IAC3D,OAAO,CACH,OAA8C,EAC9C,OAA+C,EACV,EAAE;QACvC,MAAM,UAAU,GAAG,MAAM,CAAC,eAAe,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE7D,OAAO,CAAC,cAAc,CAAC;YACnB,MAAM,IAAI,GAAG,IAAc,CAAC;YAC5B,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAA2D,CAAC;YAEjG,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,EAAE;gBACxB,MAAM,IAAI,GAAG,EAAyD,CAAC;gBAEvE,yBAAyB;gBACzB,MAAM,QAAQ,GAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;oBACxD,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;oBACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC;oBAC7B,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC5B,CAAC,CAAC;gBAEF,4DAA4D;gBAC5D,6DAA6D;gBAC7D,qDAAqD;gBACrD,cAAc,CAAC,GAAG,EAAE;oBAChB,IAAI,CAAC,aAAa,CACd,IAAI,mBAAmB,CAAI,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAClD,CAAC;gBACN,CAAC,CAAC,CAAC;gBAEH,OAAO,GAAG,EAAE;oBACR,0CAA0C;oBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAA6B,CAAC;oBACzD,KAAK,EAAE,EAAE,CAAC;oBACV,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;gBAC/B,CAAC,CAAC;YACN,CAAC,CAAC;YAEF,IAAI,CAAC,KAAK;gBAAE,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;;gBACvC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,OAAO;YACH,GAAG;gBACC,OAAQ,IAA2C,CAAC,UAAU,CAAM,CAAC;YACzE,CAAC;YACD,GAAG,CAAa,KAAQ;gBACnB,IAA2C,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;YACrE,CAAC;SACJ,CAAC;IACN,CAAC,CAAC;AACN,CAAC"}
@@ -18,4 +18,8 @@ export { transition } from "./transition";
18
18
  export type { TransitionOptions } from "./transition";
19
19
  export { hotkey } from "./hotkey";
20
20
  export type { HotkeyOptions } from "./hotkey";
21
+ export { log, LogTransport, ConsoleTransport, resetLogTransport } from "./log";
22
+ export type { LogEntry, LogLevel, LogOptions } from "./log";
23
+ export { provide, consume, ContextRequestEvent } from "./context";
24
+ export type { ContextCallback } from "./context";
21
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/element/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AASxC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGlE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG9D,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGjC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAG7G,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAGjE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG1C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG/B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGtD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/element/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AASxC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGlE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG9D,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGjC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAG7G,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAGjE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG1C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG/B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGtD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC/E,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAG5D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAClE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC"}
@@ -30,4 +30,8 @@ export { slot } from "./slots";
30
30
  export { transition } from "./transition";
31
31
  // Hotkey decorator
32
32
  export { hotkey } from "./hotkey";
33
+ // Log decorator + transport
34
+ export { log, LogTransport, ConsoleTransport, resetLogTransport } from "./log";
35
+ // Context: provide/consume across shadow boundaries
36
+ export { provide, consume, ContextRequestEvent } from "./context";
33
37
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/element/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,kEAAkE;AAClE,gEAAgE;AAChE,0DAA0D;AAC1D,8DAA8D;AAC9D,4DAA4D;AAE5D,qBAAqB;AACrB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAElE,uBAAuB;AACvB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE9D,kBAAkB;AAClB,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,qBAAqB;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,oBAAoB;AACpB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAA8B,MAAM,UAAU,CAAC;AAE7G,iBAAiB;AACjB,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,yBAAyB;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,iBAAiB;AACjB,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,uBAAuB;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,mBAAmB;AACnB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/element/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,kEAAkE;AAClE,gEAAgE;AAChE,0DAA0D;AAC1D,8DAA8D;AAC9D,4DAA4D;AAE5D,qBAAqB;AACrB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAElE,uBAAuB;AACvB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE9D,kBAAkB;AAClB,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,qBAAqB;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,oBAAoB;AACpB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAA8B,MAAM,UAAU,CAAC;AAE7G,iBAAiB;AACjB,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,yBAAyB;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,iBAAiB;AACjB,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,uBAAuB;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,mBAAmB;AACnB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,4BAA4B;AAC5B,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAG/E,oDAAoD;AACpD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Loom — @log decorator + LogTransport (TC39 Stage 3)
3
+ *
4
+ * Pluggable structured logging for Loom components.
5
+ * Same transport pattern as RpcTransport in loom-rpc.
6
+ *
7
+ * ```ts
8
+ * // Register a transport
9
+ * app.use(LogTransport, new ConsoleTransport());
10
+ *
11
+ * // Decorate methods
12
+ * @log
13
+ * open() { this.isOpen = true; }
14
+ *
15
+ * @log("warn")
16
+ * dangerousAction() { ... }
17
+ *
18
+ * @log({ level: "debug", label: "Search" })
19
+ * onInput(e: Event) { ... }
20
+ * ```
21
+ */
22
+ export type LogLevel = "debug" | "info" | "warn" | "error";
23
+ export interface LogEntry {
24
+ /** Log severity */
25
+ level: LogLevel;
26
+ /** Component tag name (e.g. "doc-search") */
27
+ component: string;
28
+ /** Method name that was called */
29
+ method: string;
30
+ /** Custom label (from options) */
31
+ label?: string;
32
+ /** Arguments passed to the method */
33
+ args: unknown[];
34
+ /** Return value (sync methods only — async resolves before logging) */
35
+ result?: unknown;
36
+ /** Error thrown by the method */
37
+ error?: Error;
38
+ /** Execution time in milliseconds */
39
+ duration: number;
40
+ /** Timestamp (Date.now()) */
41
+ timestamp: number;
42
+ }
43
+ export interface LogOptions {
44
+ /** Log level (default: "info") */
45
+ level?: LogLevel;
46
+ /** Custom label shown in log output */
47
+ label?: string;
48
+ /** Include method arguments in the log entry (default: true) */
49
+ includeArgs?: boolean;
50
+ /**
51
+ * Selectively redact args. Supports:
52
+ * - `[0, 2]` — fully redact args at those indices
53
+ * - `{ 0: ["password", "token"] }` — redact nested keys in object arg at index 0
54
+ * - `{ 0: true }` — fully redact arg at index 0
55
+ * - `{ 1: ["user.email", "user.ssn"] }` — dot-path for nested objects
56
+ */
57
+ skipArgs?: number[] | Record<number, true | string[]>;
58
+ }
59
+ /**
60
+ * Abstract log transport — implement this to control where logs go.
61
+ *
62
+ * Registered as a DI service via `app.use(LogTransport, impl)`.
63
+ *
64
+ * ```ts
65
+ * app.use(LogTransport, new ConsoleTransport());
66
+ * ```
67
+ */
68
+ export declare abstract class LogTransport {
69
+ abstract send(entry: LogEntry): void;
70
+ }
71
+ /**
72
+ * Default console transport — styled, color-coded output.
73
+ *
74
+ * ```ts
75
+ * app.use(LogTransport, new ConsoleTransport());
76
+ * ```
77
+ */
78
+ export declare class ConsoleTransport extends LogTransport {
79
+ send(entry: LogEntry): void;
80
+ }
81
+ /** Reset cached transport (for testing or hot-reload) */
82
+ export declare function resetLogTransport(): void;
83
+ /**
84
+ * @log — Structured method logging via pluggable LogTransport.
85
+ *
86
+ * Wraps the decorated method to capture args, return value, errors,
87
+ * and execution duration. Sends a LogEntry through the registered
88
+ * LogTransport. No-op if no transport is registered.
89
+ *
90
+ * Supports sync and async methods — async methods log after resolution.
91
+ *
92
+ * ```ts
93
+ * @log // level: "info"
94
+ * open() { ... }
95
+ *
96
+ * @log("warn") // level shorthand
97
+ * danger() { ... }
98
+ *
99
+ * @log({ level: "debug" }) // full options
100
+ * tick() { ... }
101
+ * ```
102
+ */
103
+ export declare function log(method: Function, context: ClassMethodDecoratorContext): void;
104
+ export declare function log(level: LogLevel): (method: Function, context: ClassMethodDecoratorContext) => void;
105
+ export declare function log(options: LogOptions): (method: Function, context: ClassMethodDecoratorContext) => void;
106
+ //# sourceMappingURL=log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/element/log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,QAAQ;IACrB,mBAAmB;IACnB,KAAK,EAAE,QAAQ,CAAC;IAChB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iCAAiC;IACjC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACvB,kCAAkC;IAClC,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE,CAAC,CAAC;CACzD;AAID;;;;;;;;GAQG;AACH,8BAAsB,YAAY;IAC9B,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;CACvC;AAED;;;;;;GAMG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAC9C,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;CAgB9B;AAcD,yDAAyD;AACzD,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAID;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,GAAG,CACf,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,2BAA2B,GACrC,IAAI,CAAC;AACR,wBAAgB,GAAG,CACf,KAAK,EAAE,QAAQ,GAChB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,2BAA2B,KAAK,IAAI,CAAC;AACpE,wBAAgB,GAAG,CACf,OAAO,EAAE,UAAU,GACpB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,2BAA2B,KAAK,IAAI,CAAC"}
@@ -0,0 +1,218 @@
1
+ /**
2
+ * Loom — @log decorator + LogTransport (TC39 Stage 3)
3
+ *
4
+ * Pluggable structured logging for Loom components.
5
+ * Same transport pattern as RpcTransport in loom-rpc.
6
+ *
7
+ * ```ts
8
+ * // Register a transport
9
+ * app.use(LogTransport, new ConsoleTransport());
10
+ *
11
+ * // Decorate methods
12
+ * @log
13
+ * open() { this.isOpen = true; }
14
+ *
15
+ * @log("warn")
16
+ * dangerousAction() { ... }
17
+ *
18
+ * @log({ level: "debug", label: "Search" })
19
+ * onInput(e: Event) { ... }
20
+ * ```
21
+ */
22
+ import { app } from "../app";
23
+ // ── Transport ──
24
+ /**
25
+ * Abstract log transport — implement this to control where logs go.
26
+ *
27
+ * Registered as a DI service via `app.use(LogTransport, impl)`.
28
+ *
29
+ * ```ts
30
+ * app.use(LogTransport, new ConsoleTransport());
31
+ * ```
32
+ */
33
+ export class LogTransport {
34
+ }
35
+ /**
36
+ * Default console transport — styled, color-coded output.
37
+ *
38
+ * ```ts
39
+ * app.use(LogTransport, new ConsoleTransport());
40
+ * ```
41
+ */
42
+ export class ConsoleTransport extends LogTransport {
43
+ send(entry) {
44
+ const tag = entry.label
45
+ ? `[${entry.component}:${entry.label}]`
46
+ : `[${entry.component}]`;
47
+ const parts = [
48
+ `${tag} ${entry.method}()`,
49
+ ];
50
+ if (entry.args.length > 0)
51
+ parts.push("args:", entry.args);
52
+ if (entry.error)
53
+ parts.push("error:", entry.error);
54
+ else if (entry.result !== undefined)
55
+ parts.push("→", entry.result);
56
+ parts.push(`(${entry.duration.toFixed(1)}ms)`);
57
+ console[entry.level](...parts);
58
+ }
59
+ }
60
+ // ── Cached transport resolution ──
61
+ let _transport = false; // false = unchecked
62
+ function getTransport() {
63
+ if (_transport === false) {
64
+ const result = app.maybe(LogTransport);
65
+ _transport = result.ok ? result.unwrap() : null;
66
+ }
67
+ return _transport;
68
+ }
69
+ /** Reset cached transport (for testing or hot-reload) */
70
+ export function resetLogTransport() {
71
+ _transport = false;
72
+ }
73
+ export function log(methodOrLevelOrOpts, context) {
74
+ // Direct decoration: @log (no parentheses)
75
+ if (typeof methodOrLevelOrOpts === "function" && context) {
76
+ return applyLog(methodOrLevelOrOpts, context, {});
77
+ }
78
+ // Called with args: @log("warn") or @log({ level, label })
79
+ const opts = typeof methodOrLevelOrOpts === "string"
80
+ ? { level: methodOrLevelOrOpts }
81
+ : methodOrLevelOrOpts;
82
+ return (method, ctx) => {
83
+ return applyLog(method, ctx, opts);
84
+ };
85
+ }
86
+ // ── Arg sanitization ──
87
+ const REDACTED = "[redacted]";
88
+ function sanitizeArgs(args, includeArgs, skipArgs) {
89
+ if (!includeArgs)
90
+ return [];
91
+ if (!skipArgs)
92
+ return args;
93
+ // Array form: [0, 2] — fully redact those indices
94
+ if (Array.isArray(skipArgs)) {
95
+ return args.map((arg, i) => skipArgs.includes(i) ? REDACTED : arg);
96
+ }
97
+ // Record form: { 0: true, 1: ["password", "user.email"] }
98
+ return args.map((arg, i) => {
99
+ const rule = skipArgs[i];
100
+ if (rule === undefined)
101
+ return arg;
102
+ if (rule === true)
103
+ return REDACTED;
104
+ // rule is string[] — redact nested keys from a cloned object
105
+ if (typeof arg !== "object" || arg === null)
106
+ return arg;
107
+ const clone = deepClone(arg);
108
+ for (const path of rule) {
109
+ redactPath(clone, path);
110
+ }
111
+ return clone;
112
+ });
113
+ }
114
+ function deepClone(obj) {
115
+ if (typeof obj !== "object" || obj === null)
116
+ return obj;
117
+ if (Array.isArray(obj))
118
+ return obj.map(deepClone);
119
+ const out = {};
120
+ for (const k of Object.keys(obj)) {
121
+ out[k] = deepClone(obj[k]);
122
+ }
123
+ return out;
124
+ }
125
+ function redactPath(obj, path) {
126
+ const parts = path.split(".");
127
+ let target = obj;
128
+ for (let i = 0; i < parts.length - 1; i++) {
129
+ target = target?.[parts[i]];
130
+ if (typeof target !== "object" || target === null)
131
+ return;
132
+ }
133
+ const last = parts[parts.length - 1];
134
+ if (target && last in target) {
135
+ target[last] = REDACTED;
136
+ }
137
+ }
138
+ function applyLog(method, context, opts) {
139
+ const methodName = String(context.name);
140
+ const level = opts.level ?? "info";
141
+ const label = opts.label;
142
+ const includeArgs = opts.includeArgs !== false;
143
+ const skipArgs = opts.skipArgs;
144
+ // Replace the method on the prototype via addInitializer
145
+ context.addInitializer(function () {
146
+ const original = this[methodName].bind(this);
147
+ const component = this.tagName?.toLowerCase() ?? "unknown";
148
+ this[methodName] = function (...args) {
149
+ const transport = getTransport();
150
+ if (!transport)
151
+ return original(...args);
152
+ const start = performance.now();
153
+ const timestamp = Date.now();
154
+ let result;
155
+ try {
156
+ result = original(...args);
157
+ }
158
+ catch (err) {
159
+ const duration = performance.now() - start;
160
+ transport.send({
161
+ level: "error",
162
+ component,
163
+ method: methodName,
164
+ label,
165
+ args: sanitizeArgs(args, includeArgs, skipArgs),
166
+ error: err instanceof Error ? err : new Error(String(err)),
167
+ duration,
168
+ timestamp,
169
+ });
170
+ throw err;
171
+ }
172
+ // Async support — log after promise resolves/rejects
173
+ if (result instanceof Promise) {
174
+ return result.then((resolved) => {
175
+ const duration = performance.now() - start;
176
+ transport.send({
177
+ level,
178
+ component,
179
+ method: methodName,
180
+ label,
181
+ args: sanitizeArgs(args, includeArgs, skipArgs),
182
+ result: resolved,
183
+ duration,
184
+ timestamp,
185
+ });
186
+ return resolved;
187
+ }, (err) => {
188
+ const duration = performance.now() - start;
189
+ transport.send({
190
+ level: "error",
191
+ component,
192
+ method: methodName,
193
+ label,
194
+ args: sanitizeArgs(args, includeArgs, skipArgs),
195
+ error: err instanceof Error ? err : new Error(String(err)),
196
+ duration,
197
+ timestamp,
198
+ });
199
+ throw err;
200
+ });
201
+ }
202
+ // Sync — log immediately
203
+ const duration = performance.now() - start;
204
+ transport.send({
205
+ level,
206
+ component,
207
+ method: methodName,
208
+ label,
209
+ args: sanitizeArgs(args, includeArgs, skipArgs),
210
+ result,
211
+ duration,
212
+ timestamp,
213
+ });
214
+ return result;
215
+ };
216
+ });
217
+ }
218
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/element/log.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -21,8 +21,8 @@ export { service, resolveServiceName, inject, factory } from "./di";
21
21
  export { SERVICE_NAME } from "./decorators/symbols";
22
22
  /** @deprecated Use `@watch(Service)` or `@watch(Service, "prop")` instead. Will be removed in v1.0. */
23
23
  export { watch as watchService } from "./di";
24
- export { LoomElement, component, query, queryAll, styles, catch_, suspend, mount, unmount, event, observer, interval, timeout, debounce, throttle, animationFrame, form, lazy, slot, transition, hotkey, } from "./element";
25
- export type { FormState, FormSchema, FieldSchema, LazyOptions, TransitionOptions, HotkeyOptions } from "./element";
24
+ export { LoomElement, component, query, queryAll, styles, catch_, suspend, mount, unmount, event, observer, interval, timeout, debounce, throttle, animationFrame, form, lazy, slot, transition, hotkey, log, LogTransport, ConsoleTransport, provide, consume, ContextRequestEvent, } from "./element";
25
+ export type { FormState, FormSchema, FieldSchema, LazyOptions, TransitionOptions, HotkeyOptions, LogEntry, LogLevel, LogOptions, ContextCallback } from "./element";
26
26
  export { transform, createTransform, typed, typedTransformer, toNumber, toBoolean, toDate, toJSON, toTrimmed, toInt, toFloat, } from "./transform";
27
27
  export type { TransformSchema } from "./transform";
28
28
  export { on, emit, createDecorator, createSymbol, LoomSymbol, SYMBOL_REGISTRY } from "./decorators";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;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;AAKhD,OAAO,EACL,QAAQ,EAAE,eAAe,EACzB,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EACvE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAC5C,KAAK,EACL,KAAK,GACN,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,UAAU,EAAE,OAAO,EAAE,YAAY,EACjC,cAAc,EAAE,aAAa,EAAE,cAAc,GAC9C,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,uGAAuG;AACvG,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,MAAM,CAAC;AAG7C,OAAO,EACL,WAAW,EACX,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAClC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAC/B,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EACrD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,GACrC,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAGnH,OAAO,EACL,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,GAC/D,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpG,OAAO,EACL,UAAU,EACV,YAAY,EACZ,KAAK,EACL,KAAK,EACL,KAAK,EACL,UAAU,EACV,MAAM,EACN,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG5F,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzD,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG9E,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -26,7 +26,7 @@ export { SERVICE_NAME } from "./decorators/symbols";
26
26
  /** @deprecated Use `@watch(Service)` or `@watch(Service, "prop")` instead. Will be removed in v1.0. */
27
27
  export { watch as watchService } from "./di";
28
28
  // Element: base class, element decorators
29
- export { LoomElement, component, query, queryAll, styles, catch_, suspend, mount, unmount, event, observer, interval, timeout, debounce, throttle, animationFrame, form, lazy, slot, transition, hotkey, } from "./element";
29
+ export { LoomElement, component, query, queryAll, styles, catch_, suspend, mount, unmount, event, observer, interval, timeout, debounce, throttle, animationFrame, form, lazy, slot, transition, hotkey, log, LogTransport, ConsoleTransport, provide, consume, ContextRequestEvent, } from "./element";
30
30
  // Transform: value transforms
31
31
  export { transform, createTransform, typed, typedTransformer, toNumber, toBoolean, toDate, toJSON, toTrimmed, toInt, toFloat, } from "./transform";
32
32
  // Decorators: event decorators + factory
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,kBAAkB;AAClB,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAG5B,eAAe;AACf,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAG9C,MAAM;AACN,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAG5B,eAAe;AACf,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,wDAAwD;AACxD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEpD,cAAc;AACd,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,0BAA0B;AAE1B,qCAAqC;AACrC,OAAO,EACL,QAAQ,EAAE,eAAe,EACzB,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EACvE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAC5C,KAAK,EACL,KAAK,GACN,MAAM,SAAS,CAAC;AAMjB,mCAAmC;AACnC,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,uGAAuG;AACvG,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,MAAM,CAAC;AAE7C,0CAA0C;AAC1C,OAAO,EACL,WAAW,EACX,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAClC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAC/B,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EACrD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,GACrC,MAAM,WAAW,CAAC;AAGnB,8BAA8B;AAC9B,OAAO,EACL,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,GAC/D,MAAM,aAAa,CAAC;AAGrB,yCAAyC;AACzC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpG,SAAS;AACT,OAAO,EACL,UAAU,EACV,YAAY,EACZ,KAAK,EACL,KAAK,EACL,KAAK,EACL,UAAU,EACV,MAAM,EACN,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,UAAU,CAAC;AAGlB,oDAAoD;AACpD,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGzD,cAAc;AACd,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,kBAAkB;AAClB,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAG5B,eAAe;AACf,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAG9C,MAAM;AACN,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAG5B,eAAe;AACf,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,wDAAwD;AACxD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEpD,cAAc;AACd,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,0BAA0B;AAE1B,qCAAqC;AACrC,OAAO,EACL,QAAQ,EAAE,eAAe,EACzB,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EACvE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAC5C,KAAK,EACL,KAAK,GACN,MAAM,SAAS,CAAC;AAMjB,mCAAmC;AACnC,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,uGAAuG;AACvG,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,MAAM,CAAC;AAE7C,0CAA0C;AAC1C,OAAO,EACL,WAAW,EACX,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAClC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAC/B,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EACrD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EACpC,GAAG,EAAE,YAAY,EAAE,gBAAgB,EACnC,OAAO,EAAE,OAAO,EAAE,mBAAmB,GACtC,MAAM,WAAW,CAAC;AAGnB,8BAA8B;AAC9B,OAAO,EACL,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,GAC/D,MAAM,aAAa,CAAC;AAGrB,yCAAyC;AACzC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpG,SAAS;AACT,OAAO,EACL,UAAU,EACV,YAAY,EACZ,KAAK,EACL,KAAK,EACL,KAAK,EACL,UAAU,EACV,MAAM,EACN,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,UAAU,CAAC;AAGlB,oDAAoD;AACpD,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGzD,cAAc;AACd,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toyz/loom",
3
- "version": "0.15.2",
3
+ "version": "0.15.4",
4
4
  "type": "module",
5
5
  "description": "Decorator-driven web component framework with reactive state, DOM morphing, DI, and JSX",
6
6
  "license": "MIT",