mutts 1.0.8 → 1.0.9

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 (226) hide show
  1. package/README.md +19 -2
  2. package/dist/browser.cjs +1030 -4406
  3. package/dist/browser.cjs.map +1 -1
  4. package/dist/browser.d.ts +310 -573
  5. package/dist/browser.esm.js +18 -24
  6. package/dist/browser.esm.js.map +1 -1
  7. package/dist/chunks/{async-browser-CA0jPWIi.cjs → async-browser-lvzLOCgk.cjs} +17 -24
  8. package/dist/chunks/async-browser-lvzLOCgk.cjs.map +1 -0
  9. package/dist/chunks/{async-core-UqHzvJ-S.cjs → async-core-CRLKP3l-.cjs} +8 -4
  10. package/dist/chunks/async-core-CRLKP3l-.cjs.map +1 -0
  11. package/dist/chunks/{async-node-BYHuGTni.cjs → async-node-C3DeIb0y.cjs} +5 -12
  12. package/dist/chunks/async-node-C3DeIb0y.cjs.map +1 -0
  13. package/dist/chunks/index-2vea86wD.esm.js +3011 -0
  14. package/dist/chunks/index-2vea86wD.esm.js.map +1 -0
  15. package/dist/chunks/index-CtA2AWl3.esm.js +4376 -0
  16. package/dist/chunks/index-CtA2AWl3.esm.js.map +1 -0
  17. package/dist/chunks/index-VTO-b2vR.cjs +4461 -0
  18. package/dist/chunks/index-VTO-b2vR.cjs.map +1 -0
  19. package/dist/{reactive → debug}/debug.d.ts +19 -8
  20. package/dist/debug/debug.d.ts.map +1 -0
  21. package/dist/debug/index.d.ts +4 -0
  22. package/dist/debug/index.d.ts.map +1 -0
  23. package/dist/debug/lineage-panel.d.ts +5 -0
  24. package/dist/debug/lineage-panel.d.ts.map +1 -0
  25. package/dist/debug/lineage.d.ts +79 -0
  26. package/dist/debug/lineage.d.ts.map +1 -0
  27. package/dist/debug.cjs +35 -0
  28. package/dist/debug.cjs.map +1 -0
  29. package/dist/debug.d.ts +209 -0
  30. package/dist/debug.esm.js +2 -0
  31. package/dist/debug.esm.js.map +1 -0
  32. package/dist/index.d.ts +1 -13
  33. package/dist/mutts.umd.js +1 -1
  34. package/dist/mutts.umd.js.map +1 -1
  35. package/dist/mutts.umd.min.js +1 -1
  36. package/dist/mutts.umd.min.js.map +1 -1
  37. package/dist/node.cjs +65 -63
  38. package/dist/node.cjs.map +1 -1
  39. package/dist/node.d.ts +2 -1
  40. package/dist/node.esm.js +5 -11
  41. package/dist/node.esm.js.map +1 -1
  42. package/dist/{async → src/async}/browser.d.ts.map +1 -1
  43. package/dist/{async → src/async}/index.d.ts +2 -1
  44. package/dist/src/async/index.d.ts.map +1 -0
  45. package/dist/{async → src/async}/node.d.ts.map +1 -1
  46. package/dist/src/decorator.d.ts.map +1 -0
  47. package/dist/src/destroyable.d.ts.map +1 -0
  48. package/dist/src/entry-browser.d.ts.map +1 -0
  49. package/dist/src/entry-node.d.ts.map +1 -0
  50. package/dist/src/eventful.d.ts +20 -0
  51. package/dist/src/eventful.d.ts.map +1 -0
  52. package/dist/src/flavored.d.ts +33 -0
  53. package/dist/src/flavored.d.ts.map +1 -0
  54. package/dist/src/index.d.ts +14 -0
  55. package/dist/src/index.d.ts.map +1 -0
  56. package/dist/src/indexable.d.ts.map +1 -0
  57. package/dist/{introspection.d.ts → src/introspection.d.ts} +1 -1
  58. package/dist/src/introspection.d.ts.map +1 -0
  59. package/dist/src/iterableWeak.d.ts.map +1 -0
  60. package/dist/src/mixins.d.ts.map +1 -0
  61. package/dist/src/promiseChain.d.ts.map +1 -0
  62. package/dist/{reactive → src/reactive}/array.d.ts +9 -10
  63. package/dist/src/reactive/array.d.ts.map +1 -0
  64. package/dist/src/reactive/buffer.d.ts +120 -0
  65. package/dist/src/reactive/buffer.d.ts.map +1 -0
  66. package/dist/{reactive → src/reactive}/change.d.ts +2 -2
  67. package/dist/src/reactive/change.d.ts.map +1 -0
  68. package/dist/src/reactive/deep-touch.d.ts.map +1 -0
  69. package/dist/{reactive → src/reactive}/deep-watch-state.d.ts +3 -3
  70. package/dist/src/reactive/deep-watch-state.d.ts.map +1 -0
  71. package/dist/{reactive → src/reactive}/deep-watch.d.ts +2 -1
  72. package/dist/src/reactive/deep-watch.d.ts.map +1 -0
  73. package/dist/src/reactive/describe.d.ts +12 -0
  74. package/dist/src/reactive/describe.d.ts.map +1 -0
  75. package/dist/src/reactive/effect-context.d.ts +34 -0
  76. package/dist/src/reactive/effect-context.d.ts.map +1 -0
  77. package/dist/{reactive → src/reactive}/effects.d.ts +31 -18
  78. package/dist/src/reactive/effects.d.ts.map +1 -0
  79. package/dist/src/reactive/index.d.ts +19 -0
  80. package/dist/src/reactive/index.d.ts.map +1 -0
  81. package/dist/{reactive → src/reactive}/map.d.ts +0 -2
  82. package/dist/src/reactive/map.d.ts.map +1 -0
  83. package/dist/src/reactive/memoize.d.ts +28 -0
  84. package/dist/src/reactive/memoize.d.ts.map +1 -0
  85. package/dist/src/reactive/non-reactive-state.d.ts.map +1 -0
  86. package/dist/src/reactive/non-reactive.d.ts.map +1 -0
  87. package/dist/{reactive → src/reactive}/project.d.ts +1 -2
  88. package/dist/src/reactive/project.d.ts.map +1 -0
  89. package/dist/src/reactive/proxy-state.d.ts.map +1 -0
  90. package/dist/src/reactive/proxy.d.ts.map +1 -0
  91. package/dist/{reactive → src/reactive}/record.d.ts +2 -3
  92. package/dist/src/reactive/record.d.ts.map +1 -0
  93. package/dist/{reactive → src/reactive}/register.d.ts +61 -0
  94. package/dist/src/reactive/register.d.ts.map +1 -0
  95. package/dist/{reactive → src/reactive}/registry.d.ts +6 -5
  96. package/dist/src/reactive/registry.d.ts.map +1 -0
  97. package/dist/{reactive → src/reactive}/set.d.ts +0 -2
  98. package/dist/src/reactive/set.d.ts.map +1 -0
  99. package/dist/src/reactive/tracking.d.ts.map +1 -0
  100. package/dist/{reactive → src/reactive}/types.d.ts +69 -21
  101. package/dist/src/reactive/types.d.ts.map +1 -0
  102. package/dist/{reactive/interface.d.ts → src/reactive/watch.d.ts} +7 -23
  103. package/dist/src/reactive/watch.d.ts.map +1 -0
  104. package/dist/{std-decorators.d.ts → src/std-decorators.d.ts} +1 -6
  105. package/dist/src/std-decorators.d.ts.map +1 -0
  106. package/dist/src/utils.d.ts.map +1 -0
  107. package/dist/{zone.d.ts → src/zone.d.ts} +2 -2
  108. package/dist/src/zone.d.ts.map +1 -0
  109. package/dist/types-DaHFfhlN.d.ts +414 -0
  110. package/docs/ai/api-reference.md +1 -1
  111. package/docs/ai/manual.md +443 -17
  112. package/docs/events.md +57 -2
  113. package/docs/flavored.md +210 -0
  114. package/docs/reactive/advanced.md +2 -3
  115. package/docs/reactive/attend.md +143 -0
  116. package/docs/reactive/collections.md +55 -0
  117. package/docs/reactive/core.md +120 -4
  118. package/docs/reactive/debugging.md +8 -10
  119. package/docs/reactive/describe.md +85 -0
  120. package/docs/reactive/error-handling.md +121 -0
  121. package/docs/reactive/project.md +1 -1
  122. package/docs/reactive/scan.md +215 -0
  123. package/docs/reactive.md +2 -0
  124. package/docs/std-decorators.md +102 -51
  125. package/docs/zone.md +3 -7
  126. package/package.json +6 -1
  127. package/src/async/browser.ts +110 -106
  128. package/src/async/index.ts +15 -11
  129. package/src/async/node.ts +5 -17
  130. package/src/eventful.ts +82 -49
  131. package/src/flavored.ts +106 -0
  132. package/src/index.d.ts +12 -12
  133. package/src/index.ts +2 -2
  134. package/src/introspection.ts +1 -1
  135. package/src/reactive/array.ts +29 -36
  136. package/src/reactive/buffer.ts +187 -27
  137. package/src/reactive/change.ts +16 -23
  138. package/src/reactive/deep-touch.ts +19 -14
  139. package/src/reactive/deep-watch-state.ts +3 -3
  140. package/src/reactive/deep-watch.ts +7 -4
  141. package/src/reactive/describe.ts +39 -0
  142. package/src/reactive/effect-context.ts +69 -4
  143. package/src/reactive/effects.ts +445 -393
  144. package/src/reactive/index.ts +12 -15
  145. package/src/reactive/map.ts +9 -25
  146. package/src/reactive/memoize.ts +26 -3
  147. package/src/reactive/project.md +107 -0
  148. package/src/reactive/project.ts +48 -71
  149. package/src/reactive/proxy.ts +21 -3
  150. package/src/reactive/record.ts +30 -45
  151. package/src/reactive/register.ts +138 -19
  152. package/src/reactive/registry.ts +22 -9
  153. package/src/reactive/set.ts +8 -21
  154. package/src/reactive/tracking.ts +9 -12
  155. package/src/reactive/types.ts +104 -24
  156. package/src/reactive/{interface.ts → watch.ts} +29 -59
  157. package/src/std-decorators.ts +56 -17
  158. package/src/utils.ts +2 -3
  159. package/src/zone.ts +28 -24
  160. package/dist/async/index.d.ts.map +0 -1
  161. package/dist/chunks/async-browser-CA0jPWIi.cjs.map +0 -1
  162. package/dist/chunks/async-core-UqHzvJ-S.cjs.map +0 -1
  163. package/dist/chunks/async-node-BYHuGTni.cjs.map +0 -1
  164. package/dist/chunks/index-DhaOVusv.esm.js +0 -6411
  165. package/dist/chunks/index-DhaOVusv.esm.js.map +0 -1
  166. package/dist/decorator.d.ts.map +0 -1
  167. package/dist/destroyable.d.ts.map +0 -1
  168. package/dist/entry-browser.d.ts.map +0 -1
  169. package/dist/entry-node.d.ts.map +0 -1
  170. package/dist/eventful.d.ts +0 -18
  171. package/dist/eventful.d.ts.map +0 -1
  172. package/dist/index.d.ts.map +0 -1
  173. package/dist/indexable.d.ts.map +0 -1
  174. package/dist/introspection.d.ts.map +0 -1
  175. package/dist/iterableWeak.d.ts.map +0 -1
  176. package/dist/mixins.d.ts.map +0 -1
  177. package/dist/promiseChain.d.ts.map +0 -1
  178. package/dist/reactive/array.d.ts.map +0 -1
  179. package/dist/reactive/buffer.d.ts +0 -44
  180. package/dist/reactive/buffer.d.ts.map +0 -1
  181. package/dist/reactive/change.d.ts.map +0 -1
  182. package/dist/reactive/debug.d.ts.map +0 -1
  183. package/dist/reactive/deep-touch.d.ts.map +0 -1
  184. package/dist/reactive/deep-watch-state.d.ts.map +0 -1
  185. package/dist/reactive/deep-watch.d.ts.map +0 -1
  186. package/dist/reactive/effect-context.d.ts +0 -7
  187. package/dist/reactive/effect-context.d.ts.map +0 -1
  188. package/dist/reactive/effects.d.ts.map +0 -1
  189. package/dist/reactive/index.d.ts +0 -20
  190. package/dist/reactive/index.d.ts.map +0 -1
  191. package/dist/reactive/interface.d.ts.map +0 -1
  192. package/dist/reactive/map.d.ts.map +0 -1
  193. package/dist/reactive/memoize.d.ts +0 -5
  194. package/dist/reactive/memoize.d.ts.map +0 -1
  195. package/dist/reactive/non-reactive-state.d.ts.map +0 -1
  196. package/dist/reactive/non-reactive.d.ts.map +0 -1
  197. package/dist/reactive/project.d.ts.map +0 -1
  198. package/dist/reactive/proxy-state.d.ts.map +0 -1
  199. package/dist/reactive/proxy.d.ts.map +0 -1
  200. package/dist/reactive/record.d.ts.map +0 -1
  201. package/dist/reactive/register.d.ts.map +0 -1
  202. package/dist/reactive/registry.d.ts.map +0 -1
  203. package/dist/reactive/set.d.ts.map +0 -1
  204. package/dist/reactive/tracking.d.ts.map +0 -1
  205. package/dist/reactive/types.d.ts.map +0 -1
  206. package/dist/std-decorators.d.ts.map +0 -1
  207. package/dist/utils.d.ts.map +0 -1
  208. package/dist/zone.d.ts.map +0 -1
  209. package/src/reactive/debug.ts +0 -517
  210. /package/dist/{async → src/async}/browser.d.ts +0 -0
  211. /package/dist/{async → src/async}/node.d.ts +0 -0
  212. /package/dist/{decorator.d.ts → src/decorator.d.ts} +0 -0
  213. /package/dist/{destroyable.d.ts → src/destroyable.d.ts} +0 -0
  214. /package/dist/{entry-browser.d.ts → src/entry-browser.d.ts} +0 -0
  215. /package/dist/{entry-node.d.ts → src/entry-node.d.ts} +0 -0
  216. /package/dist/{indexable.d.ts → src/indexable.d.ts} +0 -0
  217. /package/dist/{iterableWeak.d.ts → src/iterableWeak.d.ts} +0 -0
  218. /package/dist/{mixins.d.ts → src/mixins.d.ts} +0 -0
  219. /package/dist/{promiseChain.d.ts → src/promiseChain.d.ts} +0 -0
  220. /package/dist/{reactive → src/reactive}/deep-touch.d.ts +0 -0
  221. /package/dist/{reactive → src/reactive}/non-reactive-state.d.ts +0 -0
  222. /package/dist/{reactive → src/reactive}/non-reactive.d.ts +0 -0
  223. /package/dist/{reactive → src/reactive}/proxy-state.d.ts +0 -0
  224. /package/dist/{reactive → src/reactive}/proxy.d.ts +0 -0
  225. /package/dist/{reactive → src/reactive}/tracking.d.ts +0 -0
  226. /package/dist/{utils.d.ts → src/utils.d.ts} +0 -0
@@ -1,9 +1,12 @@
1
- import { FunctionWrapper } from "../zone";
1
+ import type { FunctionWrapper } from '../zone';
2
+ export type EffectAccessEvents = {
3
+ triggered(event: string, ...args: any[]): void;
4
+ };
2
5
  /**
3
- * Dependency access passed to user callbacks within effects/watch
6
+ * Effect access passed to user callbacks within effects/watch
4
7
  * Provides functions to track dependencies and information about the effect execution
5
8
  */
6
- export interface DependencyAccess {
9
+ export interface EffectAccess {
7
10
  /**
8
11
  * Tracks dependencies in the current effect context
9
12
  * Use this for normal dependency tracking within the effect
@@ -55,9 +58,42 @@ export interface DependencyAccess {
55
58
  reaction: boolean;
56
59
  }
57
60
  /**
58
- * Type for effect cleanup functions
61
+ * Base type for effect callbacks - simple function without additional properties
59
62
  */
60
63
  export type ScopedCallback = () => void;
64
+ /**
65
+ * Type for effect cleanup functions with stopped state tracking
66
+ */
67
+ export type EffectCleanup = ScopedCallback & {
68
+ [stopped]: boolean;
69
+ };
70
+ export type StackFrame = {
71
+ functionName: string;
72
+ fileName: string;
73
+ lineNumber: number;
74
+ columnNumber: number;
75
+ raw: string;
76
+ };
77
+ export type EffectTracking = (obj: any, evolution: Evolution, prop: any, effect: EffectTrigger) => void;
78
+ /**
79
+ * Centralized node for all effect metadata and relationships
80
+ */
81
+ export interface EffectNode {
82
+ parent?: EffectTrigger;
83
+ children?: Set<EffectCleanup>;
84
+ cleanup?: ScopedCallback;
85
+ stopped?: boolean;
86
+ forwardThrow?: CatchFunction;
87
+ catchers?: CatchFunction[];
88
+ creationStack?: StackFrame[];
89
+ dependencyHook?: (obj: any, prop: any) => void;
90
+ trackers?: EffectTracking[];
91
+ isOpaque?: boolean;
92
+ }
93
+ /**
94
+ * Type for the `runEffect` function of an effect - argument-less function to call to trigger the effect
95
+ */
96
+ export type EffectTrigger = ScopedCallback;
61
97
  /**
62
98
  * Async execution mode for effects
63
99
  * - `cancel`: Cancel previous async execution when dependencies change (default)
@@ -80,6 +116,14 @@ export interface EffectOptions {
80
116
  * Use this for effects that depend on object identity (like memoize).
81
117
  */
82
118
  opaque?: boolean;
119
+ /**
120
+ * Used for debugging purpose. Provides a callback to be called every time a dependency is created.
121
+ */
122
+ dependencyHook?: (obj: any, prop: any) => void;
123
+ /**
124
+ * Used for debugging purpose. Provides a name for the effect.
125
+ */
126
+ name?: string;
83
127
  }
84
128
  /**
85
129
  * Type for property evolution events
@@ -125,6 +169,9 @@ export declare const stopped: unique symbol;
125
169
  * Symbol to access effect cleanup function
126
170
  */
127
171
  export declare const cleanup: unique symbol;
172
+ export declare const forwardThrow: unique symbol;
173
+ export type EffectCloser = (error?: any) => void;
174
+ export type CatchFunction = (error: any) => EffectCloser | undefined | void;
128
175
  /**
129
176
  * Context for a running projection item effect
130
177
  */
@@ -162,17 +209,14 @@ export type MaxReactionDebugInfo = {
162
209
  count: number;
163
210
  effect: string;
164
211
  };
165
- export type BrokenEffectsDebugInfo = {
166
- code: ReactiveErrorCode.BrokenEffects;
167
- cause: any;
168
- };
169
212
  export type GenericDebugInfo = {
170
213
  code: ReactiveErrorCode;
171
214
  causalChain?: string[];
172
- creationStack?: string;
215
+ creationStack?: string | any[];
216
+ lineage?: any[];
173
217
  [key: string]: any;
174
218
  };
175
- export type ReactiveDebugInfo = CycleDebugInfo | MaxDepthDebugInfo | MaxReactionDebugInfo | BrokenEffectsDebugInfo | GenericDebugInfo;
219
+ export type ReactiveDebugInfo = CycleDebugInfo | MaxDepthDebugInfo | MaxReactionDebugInfo | GenericDebugInfo;
176
220
  /**
177
221
  * Error class for reactive system errors
178
222
  */
@@ -219,13 +263,13 @@ export declare const options: {
219
263
  * @param props - The properties that changed
220
264
  * @param deps - The dependencies that changed
221
265
  */
222
- touched: (_obj: any, _evolution: Evolution, _props?: any[], _deps?: Set<ScopedCallback>) => void;
266
+ touched: (_obj: any, _evolution: Evolution, _props?: any[], _deps?: Set<EffectTrigger>) => void;
223
267
  /**
224
268
  * Debug purpose: called when an effect is skipped because it's already running
225
269
  * @param effect - The effect that is already running
226
270
  * @param runningChain - The array of effects from the detected one to the currently running one
227
271
  */
228
- skipRunningEffect: (_effect: ScopedCallback) => void;
272
+ skipRunningEffect: (_effect: EffectTrigger) => void;
229
273
  /**
230
274
  * Debug purpose: maximum effect chain (like call stack max depth)
231
275
  * Used to prevent infinite loops
@@ -267,20 +311,20 @@ export declare const options: {
267
311
  /**
268
312
  * How to handle cycles detected in effect batches.
269
313
  *
270
- * - `'none'` (Default): High-performance mode. Disables dependency graph maintenance and
314
+ * - `'production'` (Default): High-performance mode. Disables dependency graph maintenance and
271
315
  * Topological Sorting in favor of a simple FIFO queue. Use this for trustworthy, acyclic UI code.
272
- * Cycle detection is heuristic (uses execution counts).
316
+ * Cycle detection is heuristic (uses maxEffectChain execution counts).
273
317
  *
274
- * - `'throw'`: Traditional Topological Sorting. Guarantees dependency order and catches
275
- * circular dependencies mathematically before execution.
318
+ * - `'development'`: Maintains direct dependency graph for early cycle detection during edge creation.
319
+ * Catches cycles before effects execute via DFS check when adding edges. Throws immediately with
320
+ * basic path information. Good balance of debugging help with moderate overhead.
276
321
  *
277
- * - `'warn'`: Topological sorting, but logs a warning instead of throwing on cycles.
278
- * - `'break'`: Topological sorting, but silently breaks cycles.
279
- * - `'strict'`: Prevents cycle creation by checking the graph *during* dependency discovery.
322
+ * - `'debug'`: Full diagnostic mode with transitive closures and topological sorting.
323
+ * Provides detailed cycle path reporting. Highest overhead but most informative for bug hunting.
280
324
  *
281
- * @default 'none'
325
+ * @default 'production'
282
326
  */
283
- cycleHandling: "none" | "throw" | "warn" | "break" | "strict";
327
+ cycleHandling: "production" | "development" | "debug";
284
328
  /**
285
329
  * Internal flag used by memoization discrepancy detector to avoid counting calls in tests
286
330
  * @warning Do not modify this flag manually, this flag is given by the engine
@@ -372,5 +416,9 @@ export declare const options: {
372
416
  queueMicrotask: boolean;
373
417
  };
374
418
  };
419
+ type CallableOption = {
420
+ [K in keyof typeof options]: (typeof options)[K] extends ((...args: any[]) => any) | undefined ? K : never;
421
+ }[keyof typeof options];
422
+ export declare function optionCall<K extends CallableOption>(name: K, ...args: NonNullable<(typeof options)[K]> extends (...a: infer A) => unknown ? A : never): void;
375
423
  export { type State, nativeReactive, rootFunction };
376
424
  //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/reactive/types.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,MAAM,MAAM,kBAAkB,GAAG;IAChC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;CAC9C,CAAA;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC5B;;;;;;;;;;;OAWG;IACH,OAAO,EAAE,eAAe,CAAA;IACxB;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,EAAE,eAAe,CAAA;IACvB;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,EAAE,OAAO,CAAA;CACjB;AAID;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAA;AAEvC;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG;IAC5C,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAGD,MAAM,MAAM,UAAU,GAAG;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,KAAK,IAAI,CAAA;AAEvG;;GAEG;AACH,MAAM,WAAW,UAAU;IAEvB,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,QAAQ,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,CAAA;IAG7B,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,OAAO,CAAC,EAAE,OAAO,CAAA;IAGjB,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAA;IAG1B,aAAa,CAAC,EAAE,UAAU,EAAE,CAAA;IAC5B,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;IAG9C,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAA;IAG3B,QAAQ,CAAC,EAAE,OAAO,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,cAAc,CAAA;AAE1C;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAA;AAE9D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B;;;OAGG;IACH,SAAS,CAAC,EAAE,kBAAkB,CAAA;IAC9B;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;IAC9C;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACb;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,YAAY,CAAA;IAC1C,IAAI,EAAE,GAAG,CAAA;CACT,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACd,CAAA;AACD,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,cAAc,CAAA;AAEtD,KAAK,KAAK,GACP;IACA,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,KAAK,CAAA;CACV,GACD,EAAE,CAAA;AAGL,QAAA,MAAM,cAAc,eAA4B,CAAA;AAEhD;;GAEG;AACH,eAAO,MAAM,eAAe,eAAyB,CAAA;AACrD;;GAEG;AACH,eAAO,MAAM,oBAAoB,eAAkC,CAAA;AAEnE;;GAEG;AACH,eAAO,MAAM,QAAQ,eAAsB,CAAA;AAE3C;;GAEG;AACH,eAAO,MAAM,cAAc,eAA4B,CAAA;AAEvD;;GAEG;AACH,eAAO,MAAM,OAAO,eAAoB,CAAA;AAExC;;GAEG;AACH,eAAO,MAAM,OAAO,eAAoB,CAAA;AAExC,eAAO,MAAM,YAAY,eAAkB,CAAA;AAE3C,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;AAEhD,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,YAAY,GAAG,SAAS,GAAG,IAAI,CAAA;AAE3E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,MAAM,EAAE,GAAG,CAAA;IACX,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,MAAM,EAAE,GAAG,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC1B;AAGD,QAAA,MAAM,YAAY,eAA0B,CAAA;AAE5C;;GAEG;AACH,oBAAY,iBAAiB;IAC5B,aAAa,mBAAmB;IAChC,gBAAgB,uBAAuB;IACvC,mBAAmB,0BAA0B;IAC7C,eAAe,sBAAsB;IACrC,aAAa,mBAAmB;IAChC,aAAa,mBAAmB;CAChC;AAED,MAAM,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,iBAAiB,CAAC,aAAa,CAAA;IACrC,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,iBAAiB,CAAC,gBAAgB,CAAA;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,EAAE,CAAA;CACf,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,iBAAiB,CAAC,mBAAmB,CAAA;IAC3C,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,iBAAiB,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,GAAG,GAAG,EAAE,CAAA;IAC9B,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAC1B,cAAc,GACd,iBAAiB,GACjB,oBAAoB,GACpB,gBAAgB,CAAA;AAEnB;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;IAG/B,SAAS,CAAC,EAAE,iBAAiB;gBADpC,OAAO,EAAE,MAAM,EACR,SAAS,CAAC,EAAE,iBAAiB;IAMrC,IAAI,IAAI,IAAI,iBAAiB,GAAG,SAAS,CAExC;IAED,IAAI,KAAK,IAAI,GAAG,CAEf;CACD;AAGD;;GAEG;AACH,eAAO,MAAM,OAAO;IACnB;;;OAGG;qBACc,QAAQ;IACzB;;;OAGG;qBACc,QAAQ;IACzB;;;;OAIG;sBACe,QAAQ,EAAE,YAAY,QAAQ;IAChD;;;OAGG;2BACoB,QAAQ,EAAE;IACjC;;OAEG;;4BAEqB,QAAQ;IAChC;;;;;;OAMG;oBACa,GAAG,cAAc,SAAS,WAAW,GAAG,EAAE,UAAU,GAAG,CAAC,aAAa,CAAC;IACtF;;;;OAIG;iCAC0B,aAAa;IAC1C;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;;OAIG;uBAC2B,OAAO,GAAG,OAAO,GAAG,MAAM;IACxD;;;;;;;;;;;;;;;;;;OAkBG;8BAEA,CAAC,CACD,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,GAAG,EACV,EAAE,EAAE,QAAQ,EACZ,IAAI,EAAE,GAAG,EAAE,EACX,KAAK,EAAE,aAAa,GAAG,YAAY,KAC9B,IAAI,CAAC,GACV,SAAS;IACZ;;;;;;;;;;;;;;;OAeG;mBAC6B,YAAY,GAAG,aAAa,GAAG,OAAO;IACtE;;;OAGG;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;OAGG;;IAEH;;;;;OAKG;;IAEH;;;;;;;;;;;;;;;OAeG;eACoB,kBAAkB,GAAG,KAAK;oBAEjC,GAAG,EAAE;IAErB;;OAEG;;QAEF;;;WAGG;;QAEH;;;WAGG;;;IAIJ;;;;;OAKG;;QAEF;;;WAGG;;QAEH;;;WAGG;;QAEH;;;WAGG;;QAEH;;;WAGG;;;CAGJ,CAAA;AAGD,KAAK,cAAc,GAAG;KACpB,CAAC,IAAI,MAAM,OAAO,OAAO,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,SAAS,GAC3F,CAAC,GACD,KAAK;CACR,CAAC,MAAM,OAAO,OAAO,CAAC,CAAA;AAEvB,wBAAgB,UAAU,CAAC,CAAC,SAAS,cAAc,EAClD,IAAI,EAAE,CAAC,EACP,GAAG,IAAI,EAAE,WAAW,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,OAAO,GAAG,CAAC,GAAG,KAAK,GACtF,IAAI,CAQN;AAED,OAAO,EAAE,KAAK,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,CAAA"}
@@ -1,9 +1,5 @@
1
1
  import { type GenericClassDecorator } from '../decorator';
2
- import { type DependencyAccess, type ScopedCallback } from './types';
3
- /**
4
- * Symbol for accessing the cleanup function on cleaned objects
5
- */
6
- export declare const cleanup: unique symbol;
2
+ import { type EffectAccess, type EffectCleanup } from './types';
7
3
  /**
8
4
  * Options for the watch function
9
5
  */
@@ -20,9 +16,9 @@ export interface WatchOptions {
20
16
  * @param options - Watch options
21
17
  * @returns Cleanup function to stop watching
22
18
  */
23
- export declare function watch<T>(value: (dep: DependencyAccess) => T, changed: (value: T, oldValue?: T) => void, options?: Omit<WatchOptions, 'deep'> & {
19
+ export declare function watch<T>(value: (dep: EffectAccess) => T, changed: (value: T, oldValue?: T) => void, options?: Omit<WatchOptions, 'deep'> & {
24
20
  deep?: false;
25
- }): ScopedCallback;
21
+ }): EffectCleanup;
26
22
  /**
27
23
  * Watches a reactive value with deep watching enabled
28
24
  * @param value - Function that returns the value to watch
@@ -30,9 +26,9 @@ export declare function watch<T>(value: (dep: DependencyAccess) => T, changed: (
30
26
  * @param options - Watch options with deep watching enabled
31
27
  * @returns Cleanup function to stop watching
32
28
  */
33
- export declare function watch<T extends object | any[]>(value: (dep: DependencyAccess) => T, changed: (value: T, oldValue?: T) => void, options?: Omit<WatchOptions, 'deep'> & {
29
+ export declare function watch<T extends object | any[]>(value: (dep: EffectAccess) => T, changed: (value: T, oldValue?: T) => void, options?: Omit<WatchOptions, 'deep'> & {
34
30
  deep: true;
35
- }): ScopedCallback;
31
+ }): EffectCleanup;
36
32
  /**
37
33
  * Watches a reactive object directly
38
34
  * @param value - The reactive object to watch
@@ -40,7 +36,7 @@ export declare function watch<T extends object | any[]>(value: (dep: DependencyA
40
36
  * @param options - Watch options
41
37
  * @returns Cleanup function to stop watching
42
38
  */
43
- export declare function watch<T extends object | any[]>(value: T, changed: (value: T) => void, options?: WatchOptions): ScopedCallback;
39
+ export declare function watch<T extends object | any[]>(value: T, changed: (value: T) => void, options?: WatchOptions): EffectCleanup;
44
40
  declare function unreactiveApplication<T extends object>(...args: (keyof T)[]): GenericClassDecorator<T>;
45
41
  declare function unreactiveApplication<T extends object>(obj: T): T;
46
42
  /**
@@ -48,17 +44,5 @@ declare function unreactiveApplication<T extends object>(obj: T): T;
48
44
  * Prevents objects from being made reactive
49
45
  */
50
46
  export declare const unreactive: import("../decorator").LegacyClassDecorator<new (...args: any[]) => any> & import("../decorator").ModernClassDecorator<new (...args: any[]) => any> & typeof unreactiveApplication;
51
- export declare function cleanedBy<T extends object>(obj: T, cleanupFn: ScopedCallback): T & {
52
- [cleanup]: ScopedCallback;
53
- };
54
- /**
55
- * Creates a derived value that automatically recomputes when dependencies change
56
- * @param compute - Function that computes the derived value
57
- * @returns Object with value and cleanup function
58
- */
59
- export declare function derived<T>(compute: (dep: DependencyAccess) => T): {
60
- value: T;
61
- [cleanup]: ScopedCallback;
62
- };
63
47
  export {};
64
- //# sourceMappingURL=interface.d.ts.map
48
+ //# sourceMappingURL=watch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/reactive/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAOpE,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,aAAa,EAIlB,MAAM,SAAS,CAAA;AAKhB;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,+CAA+C;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,yCAAyC;IACzC,IAAI,CAAC,EAAE,OAAO,CAAA;CACd;AAED;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,CAAC,EACtB,KAAK,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,CAAC,EAC/B,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,IAAI,EACzC,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,GACrD,aAAa,CAAA;AAChB;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,GAAG,EAAE,EAC7C,KAAK,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,CAAC,EAC/B,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,IAAI,EACzC,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GACnD,aAAa,CAAA;AAChB;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,GAAG,EAAE,EAC7C,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EAC3B,OAAO,CAAC,EAAE,YAAY,GACpB,aAAa,CAAA;AAqFhB,iBAAS,qBAAqB,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAA;AAChG,iBAAS,qBAAqB,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;AAkB3D;;;GAGG;AACH,eAAO,MAAM,UAAU,oLAMrB,CAAA"}
@@ -1,4 +1,3 @@
1
- import { type GenericClassDecorator } from './decorator';
2
1
  /**
3
2
  * Decorator that caches the result of a getter method and only recomputes when dependencies change
4
3
  * Prevents circular dependencies and provides automatic cache invalidation
@@ -23,11 +22,7 @@ export declare function cache(object: Object, propertyKey: PropertyKey, value: a
23
22
  * @param descriptor - The descriptor properties to apply
24
23
  * @returns A class decorator that applies the descriptor to specified properties
25
24
  */
26
- export declare function describe(descriptor: {
27
- enumerable?: boolean;
28
- configurable?: boolean;
29
- writable?: boolean;
30
- }): <T>(...properties: (keyof T)[]) => GenericClassDecorator<T>;
25
+ export declare const descriptor: any;
31
26
  /**
32
27
  * Decorator that marks methods, properties, or classes as deprecated
33
28
  * Provides warning messages when deprecated items are used
@@ -0,0 +1 @@
1
+ {"version":3,"file":"std-decorators.d.ts","sourceRoot":"","sources":["../../src/std-decorators.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,eAAO,MAAM,MAAM,4JAuBjB,CAAA;AAEF;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,WAEhE;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,QAEzE;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU,KAyDtB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,oaA4BJ,MAAM;mBAgCR,GAAG,eAAe,WAAW,YAAY,MAAM;CAO/D,CAAA;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,yGAmBrC;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,yGAiCrC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,KAAK,YAAY,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,IAAI;KAChD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC5D,CAAA;AAED;;;;GAIG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAWnF;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,OAAO,CAQnD;AA0BD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAMnD;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAMnE;AACD,eAAO,MAAM,SAAS;aACZ,GAAG,QAAQ,GAAG,YAAY,GAAG;aAK7B,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,GAAG;CAiBlD,CAAA;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,WAGhD;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,2BAAiC,GAAG,OAAO,CAqI3F;AAGD,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,OAW3C;AAED,wBAAgB,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAc7D;AAED,wBAAgB,KAAK,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAOhE"}
@@ -2,11 +2,11 @@ export declare abstract class AZone<T> {
2
2
  abstract active?: T;
3
3
  protected enter(value?: T): unknown;
4
4
  protected leave(entered: unknown): void;
5
- with<R>(value: T, fn: () => R): R;
5
+ with<R>(value: T | undefined, fn: () => R): R;
6
6
  root<R>(fn: () => R): R;
7
7
  get zoned(): FunctionWrapper;
8
8
  }
9
- export type FunctionWrapper = <R>(fn?: () => R) => R;
9
+ export type FunctionWrapper = <R>(fn: () => R) => R;
10
10
  export declare class Zone<T> extends AZone<T> {
11
11
  active: T | undefined;
12
12
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zone.d.ts","sourceRoot":"","sources":["../../src/zone.ts"],"names":[],"mappings":"AAUA,8BAAsB,KAAK,CAAC,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACnB,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,OAAO;IAKnC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAGvC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAY7C,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAQvB,IAAI,KAAK,IAAI,eAAe,CAG3B;CACD;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;AAEnD,qBAAa,IAAI,CAAC,CAAC,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,GAAG,SAAS,CAAA;CACrB;AAED,KAAK,YAAY,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC;IAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;CAAE,CAAA;AAClE,qBAAa,WAAW,CAAC,CAAC,CAAE,SAAQ,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAU7C,OAAO,CAAC,UAAU;IAT9B,OAAO,CAAC,OAAO,CAAe;IAC9B,SAAgB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IAC1B,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO;IAGtB,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO;gBAIlC,UAAU,GAAE,KAAK,CAAC,CAAC,CAAiB;IAyBxD,IAAI,MAAM,IAGQ,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAD5C;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,EAG5C;CACD;AAED,qBAAa,cAAe,SAAQ,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;;gBAE1D,GAAG,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;IAItC,IAAI,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,GAAG,SAAS,CAIrD;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,GAAG,SAAS,EAEzD;IACD,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,GAAG,SAAS;IAQtD,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,GAAG,IAAI;IAGlD,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC;IAGrB,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC;IAGxB,KAAK;CAGL;AAED,eAAO,MAAM,SAAS,gBAAqC,CAAA"}