sia-reactor 0.0.16 → 0.0.18

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/README.md CHANGED
@@ -39,7 +39,7 @@ Read [Chronicles](https://github.com/Tobi007-del/tmg-media-player/blob/main/CHRO
39
39
  - **I just need to use this fast**:
40
40
  Jump directly to [Getting Started](#getting-started) and [API Reference](#api-reference).
41
41
 
42
- ### Concept Snapshot
42
+ ### Quick Overview
43
43
 
44
44
  `sia-reactor` treats nested data like a programmable evented tree.
45
45
 
@@ -52,8 +52,8 @@ Jump directly to [Getting Started](#getting-started) and [API Reference](#api-re
52
52
  Semantic split recommendation:
53
53
  - `intent`: async/delayed requests.
54
54
  - `state`: granted facts.
55
- - `settings/config`: immediate user prefs.
56
- - `status`: read-only system facts.
55
+ - `settings/config (custom)`: immediate user prefs.
56
+ - `status (custom)`: read-only system facts.
57
57
 
58
58
  ```javascript
59
59
  import { reactive, intent } from 'sia-reactor';
@@ -137,16 +137,41 @@ state.set("player.volume", (val) => Math.min(val, 100));
137
137
  state.on("player.volume", (e) => console.log(e.value));
138
138
 
139
139
  state.player.volume = 150; // Triggers mediation, clamps to 100, fires listener.
140
+ state.__Reactor__ // Reference to the underlying reactor
140
141
  ```
141
142
 
142
143
  Alternatively, you can instantiate the `Reactor` class directly to keep the API separate from your data:
143
144
  ```javascript
144
145
  const reactor = new Reactor({ player: { volume: 50 } }, { debug: true, referenceTracking: true });
145
146
  reactor.core.player.volume = 100;
146
- const state = reactive(reactor); // Methods are now attached to the core and returned.
147
- state.__Reactor__ // Reference to the underlying reactor
148
147
  ```
149
148
 
149
+ ### Core Methods
150
+
151
+ All methods are available on `Reactor` instances or objects wrapped in `reactive()`.
152
+
153
+ #### **Mediators (Synchronous Gatekeepers)**
154
+ - **`set(path, callback, options)`**: Intercept memory writes. Return a value to modify it, or return `TERMINATOR` to block the write entirely.
155
+ - **`get(path, callback, options)`**: Intercept and format data during retrieval.
156
+ - **`delete(path, callback, options)`**: Intercept property deletion.
157
+
158
+ #### **Watchers (Synchronous Observers)**
159
+ - **`watch(path, callback, options)`**: Fires instantly after a mutation. Use strictly for critical internal engine syncing.
160
+
161
+ #### **Listeners (Asynchronous/Batched UI Observers)**
162
+ - **`on(path, callback, options)`**: Attach DOM-style event listeners. Supports `{ capture: true, depth: 1, once: true, immediate: true }`.
163
+ - **`once(path, callback, options)`**: Fires once and self-destructs.
164
+ - **`off(path, callback, options)`**: Removes a listener.
165
+
166
+ #### **Lifecycle & Utilities**
167
+ - **`tick(path)`**: Forces a synchronous flush of the batch queue for a specific path.
168
+ - **`stall(task)` / `nostall(task)`**: Manually stall the queue to wait for calculations before rendering.
169
+ - **`cascade(eventOrPayload, objectSafe)`**: Manually trigger deep-object event waves, bypassing strict unchanged-proxy traps. Perfect for dumping massive API payloads into the tree, `objectSafe` merges `value` with `oldValue`.
170
+ - **`snapshot(raw)`**: Generates a strict, structurally-shared, un-proxied clone of the current state tree.
171
+ - **`plugIn(new ReactorPlugin(config))`**: Allows extended behaviour with external logic.
172
+ - **`reset()`**: Clears all records bringing everything back to a clean slate.
173
+ - **`destroy()`**: Last resort destruction, nukes everything by nullifying it's properties for full disposal.
174
+
150
175
  ### Reactor Build Options
151
176
 
152
177
  These are some core build options accepted by `new Reactor(core, build)` and `reactive(core, build)`.
@@ -181,32 +206,6 @@ const data = reactive({
181
206
  });
182
207
  ```
183
208
 
184
- ### Core Methods
185
-
186
- All methods are available on `Reactor` instances or objects wrapped in `reactive()`.
187
-
188
- #### **Mediators (Synchronous Gatekeepers)**
189
- - **`set(path, callback, options)`**: Intercept memory writes. Return a value to modify it, or return `TERMINATOR` to block the write entirely.
190
- - **`get(path, callback, options)`**: Intercept and format data during retrieval.
191
- - **`delete(path, callback, options)`**: Intercept property deletion.
192
-
193
- #### **Watchers (Synchronous Observers)**
194
- - **`watch(path, callback, options)`**: Fires instantly after a mutation. Use strictly for critical internal engine syncing.
195
-
196
- #### **Listeners (Asynchronous/Batched UI Observers)**
197
- - **`on(path, callback, options)`**: Attach DOM-style event listeners. Supports `{ capture: true, depth: 1, once: true, immediate: true }`.
198
- - **`once(path, callback, options)`**: Fires once and self-destructs.
199
- - **`off(path, callback, options)`**: Removes a listener.
200
-
201
- #### **Lifecycle & Utilities**
202
- - **`tick(path)`**: Forces a synchronous flush of the batch queue for a specific path.
203
- - **`stall(task)` / `nostall(task)`**: Manually stall the queue to wait for calculations before rendering.
204
- - **`cascade(eventOrPayload, objectSafe)`**: Manually trigger deep-object event waves, bypassing strict unchanged-proxy traps. Perfect for dumping massive API payloads into the tree, `objectSafe` merges `value` with `oldValue`.
205
- - **`snapshot(raw)`**: Generates a strict, structurally-shared, un-proxied clone of the current state tree.
206
- - **`plugIn(new ReactorPlugin(config))`**: Allows extended behaviour with external logic.
207
- - **`reset()`**: Clears all records bringing everything back to a clean slate.
208
- - **`destroy()`**: Last resort destruction, nukes everything by nullifying it's properties for full disposal.
209
-
210
209
  ### Plugins: The Extension Port
211
210
 
212
211
  The `Reactor` is designed to be a lightweight core. Extended capabilities are attached via Plugins. It ships with a suite of built-in plugins for common architectural needs. like a Persist and TimeTravel plugin.
@@ -455,7 +454,7 @@ S.I.A. Reactor synthesizes core concepts from the heavyweights of web and media
455
454
  * **Video.js (VJS):** The philosophy of "Intent vs. State" MEDIATION, ensuring UI actions only commit when the underlying engine allows it.
456
455
  * **The Browser DOM:** Treating a raw JSON state tree like HTML nodes, complete with deep, path-based event bubbling.
457
456
  * **The JavaScript Event Loop:** Utilizing `queueMicrotask` to batch thousands of synchronous state mutations into a single, noiseless render tick.
458
- * **Vue & MobX:** Leveraging native ES6 Proxies for instant, deep reactivity without forcing clunky `get()` or `set()` wrapper functions.
457
+ * **Vue, MobX & Valtio:** Leveraging native ES6 Proxies for instant, deep reactivity without forcing clunky `get()` or `set()` wrapper functions.
459
458
 
460
459
  ---
461
460
 
@@ -1,5 +1,5 @@
1
1
  import { useLayoutEffect } from 'react';
2
- import { E as EffectOptions, R as Reactor, l as Reactive, W as WildPaths, o as PathValue } from '../index-jlxXiocy.cjs';
2
+ import { E as EffectOptions, R as Reactor, l as Reactive, W as WildPaths, o as PathValue } from '../index-JdV5I0R3.cjs';
3
3
 
4
4
  /** Isomorphic layout effect alias (`useLayoutEffect` in browser, `useEffect` otherwise). */
5
5
  declare const useISOLayoutEffect: typeof useLayoutEffect;
@@ -1,5 +1,5 @@
1
1
  import { useLayoutEffect } from 'react';
2
- import { E as EffectOptions, R as Reactor, l as Reactive, W as WildPaths, o as PathValue } from '../index-jlxXiocy.js';
2
+ import { E as EffectOptions, R as Reactor, l as Reactive, W as WildPaths, o as PathValue } from '../index-JdV5I0R3.js';
3
3
 
4
4
  /** Isomorphic layout effect alias (`useLayoutEffect` in browser, `useEffect` otherwise). */
5
5
  declare const useISOLayoutEffect: typeof useLayoutEffect;
@@ -1,5 +1,5 @@
1
- import { E as EffectOptions } from '../index-jlxXiocy.cjs';
2
- export { A as Autotracker, w as withTracker } from '../index-jlxXiocy.cjs';
1
+ import { E as EffectOptions } from '../index-JdV5I0R3.cjs';
2
+ export { A as Autotracker, w as withTracker } from '../index-JdV5I0R3.cjs';
3
3
 
4
4
  /**
5
5
  * Runs a reactive side effect in vanilla JavaScript.
@@ -1,5 +1,5 @@
1
- import { E as EffectOptions } from '../index-jlxXiocy.js';
2
- export { A as Autotracker, w as withTracker } from '../index-jlxXiocy.js';
1
+ import { E as EffectOptions } from '../index-JdV5I0R3.js';
2
+ export { A as Autotracker, w as withTracker } from '../index-JdV5I0R3.js';
3
3
 
4
4
  /**
5
5
  * Runs a reactive side effect in vanilla JavaScript.
@@ -21,16 +21,22 @@ type NoTraverse =
21
21
  | Inert<unknown>;
22
22
 
23
23
  /** Dot-path union for traversable keys in `T`. */
24
- type Paths<T, S extends string = ".", D extends number = RDepth> = [D] extends [0]
24
+ type Paths<T, S extends string = ".", D extends number = RDepth, Seen = never> = [
25
+ D
26
+ ] extends [0]
25
27
  ? never // Circuit Breaker Triggered
28
+ : T extends Seen
29
+ ? never // Cycle Guard Triggered
26
30
  : T extends NoTraverse
27
31
  ? never
28
32
  : T extends readonly (infer U)[]
29
- ? `${Extract<keyof T, number>}` | `${Extract<keyof T, number>}${S}${Paths<U, S, RPrev[D]>}`
33
+ ?
34
+ | `${Extract<keyof T, number>}`
35
+ | `${Extract<keyof T, number>}${S}${Paths<U, S, RPrev[D], Seen | T>}`
30
36
  : {
31
37
  [K in keyof T & (string | number)]: T[K] extends Primitive
32
38
  ? `${K}`
33
- : `${K}` | `${K}${S}${Paths<T[K], S, RPrev[D]>}`;
39
+ : `${K}` | `${K}${S}${Paths<T[K], S, RPrev[D], Seen | T>}`;
34
40
  }[keyof T & (string | number)];
35
41
  /** Wildcard path (`*`) or concrete dot-path. */
36
42
  type WildPaths<T, S extends string = "."> = "*" | Paths<T, S>;
@@ -113,14 +119,16 @@ type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (
113
119
  // --- "It's not that deep" WARRIORS ---
114
120
 
115
121
  /** Deep key union of `T` up to depth `D{10}`. */
116
- type DeepKeys<T, D extends number = RDepth> = [D] extends [0]
122
+ type DeepKeys<T, D extends number = RDepth, Seen = never> = [D] extends [0]
117
123
  ? never
124
+ : T extends Seen
125
+ ? never // Cycle Guard Triggered
118
126
  : T extends NoTraverse
119
127
  ? never
120
128
  : T extends readonly any[]
121
- ? DeepKeys<T[number], RPrev[D]>
129
+ ? DeepKeys<T[number], RPrev[D], Seen | T>
122
130
  : {
123
- [K in keyof T & (string | number)]: K | DeepKeys<T[K], RPrev[D]>;
131
+ [K in keyof T & (string | number)]: K | DeepKeys<T[K], RPrev[D], Seen | T>;
124
132
  }[keyof T & (string | number)];
125
133
 
126
134
  /** Recursive merge result type for `T1` and `T2` up to depth `D{10}`. */
@@ -724,8 +732,8 @@ declare abstract class BaseReactorPlugin<T extends object = any, Config = any, S
724
732
  get name(): string;
725
733
  protected ac: AbortController;
726
734
  readonly signal: AbortSignal;
727
- protected rtr: Reactor<T>;
728
- protected config: Config extends object ? Reactive<Config> : Config;
735
+ rtr: Reactor<T>;
736
+ config: Config extends object ? Reactive<Config> : Config;
729
737
  state: State extends object ? Reactive<State> : State;
730
738
  constructor(config?: Config, rtr?: Reactor<T>, state?: State);
731
739
  /** Entry point called to initialize plugin wiring. */
@@ -21,16 +21,22 @@ type NoTraverse =
21
21
  | Inert<unknown>;
22
22
 
23
23
  /** Dot-path union for traversable keys in `T`. */
24
- type Paths<T, S extends string = ".", D extends number = RDepth> = [D] extends [0]
24
+ type Paths<T, S extends string = ".", D extends number = RDepth, Seen = never> = [
25
+ D
26
+ ] extends [0]
25
27
  ? never // Circuit Breaker Triggered
28
+ : T extends Seen
29
+ ? never // Cycle Guard Triggered
26
30
  : T extends NoTraverse
27
31
  ? never
28
32
  : T extends readonly (infer U)[]
29
- ? `${Extract<keyof T, number>}` | `${Extract<keyof T, number>}${S}${Paths<U, S, RPrev[D]>}`
33
+ ?
34
+ | `${Extract<keyof T, number>}`
35
+ | `${Extract<keyof T, number>}${S}${Paths<U, S, RPrev[D], Seen | T>}`
30
36
  : {
31
37
  [K in keyof T & (string | number)]: T[K] extends Primitive
32
38
  ? `${K}`
33
- : `${K}` | `${K}${S}${Paths<T[K], S, RPrev[D]>}`;
39
+ : `${K}` | `${K}${S}${Paths<T[K], S, RPrev[D], Seen | T>}`;
34
40
  }[keyof T & (string | number)];
35
41
  /** Wildcard path (`*`) or concrete dot-path. */
36
42
  type WildPaths<T, S extends string = "."> = "*" | Paths<T, S>;
@@ -113,14 +119,16 @@ type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (
113
119
  // --- "It's not that deep" WARRIORS ---
114
120
 
115
121
  /** Deep key union of `T` up to depth `D{10}`. */
116
- type DeepKeys<T, D extends number = RDepth> = [D] extends [0]
122
+ type DeepKeys<T, D extends number = RDepth, Seen = never> = [D] extends [0]
117
123
  ? never
124
+ : T extends Seen
125
+ ? never // Cycle Guard Triggered
118
126
  : T extends NoTraverse
119
127
  ? never
120
128
  : T extends readonly any[]
121
- ? DeepKeys<T[number], RPrev[D]>
129
+ ? DeepKeys<T[number], RPrev[D], Seen | T>
122
130
  : {
123
- [K in keyof T & (string | number)]: K | DeepKeys<T[K], RPrev[D]>;
131
+ [K in keyof T & (string | number)]: K | DeepKeys<T[K], RPrev[D], Seen | T>;
124
132
  }[keyof T & (string | number)];
125
133
 
126
134
  /** Recursive merge result type for `T1` and `T2` up to depth `D{10}`. */
@@ -724,8 +732,8 @@ declare abstract class BaseReactorPlugin<T extends object = any, Config = any, S
724
732
  get name(): string;
725
733
  protected ac: AbortController;
726
734
  readonly signal: AbortSignal;
727
- protected rtr: Reactor<T>;
728
- protected config: Config extends object ? Reactive<Config> : Config;
735
+ rtr: Reactor<T>;
736
+ config: Config extends object ? Reactive<Config> : Config;
729
737
  state: State extends object ? Reactive<State> : State;
730
738
  constructor(config?: Config, rtr?: Reactor<T>, state?: State);
731
739
  /** Entry point called to initialize plugin wiring. */
package/dist/index.d.cts CHANGED
@@ -1 +1 @@
1
- export { C as CTX, q as ChildPaths, D as DeepKeys, r as DeepMerge, t as DeepPartial, u as DeepRequired, v as Deleter, x as DeleterRecord, y as DirectPayload, z as EVT_OPTS, F as EVT_WARN, E as EffectOptions, G as Getter, H as GetterRecord, I as INDIFFABLE, J as INERTIA, K as Inert, L as Intent, M as Listener, N as ListenerOptions, O as ListenerOptionsTuple, Q as ListenerRecord, S as Live, T as NIL, U as NOOP, V as PathBranch, X as PathBranchValue, Y as PathKey, Z as PathLeaf, o as PathValue, P as Paths, _ as Payload, $ as RAW, a0 as REJECTABLE, a as REvent, a1 as RTR_BATCH, a2 as RTR_LOG, l as Reactive, a3 as ReactivePreferences, R as Reactor, a4 as ReactorBuild, a5 as ReactorEvent, a6 as SSVERSION, a7 as Setter, a8 as SetterRecord, a9 as Stable, aa as State, ab as StrictPathKey, ac as SyncOptions, ad as SyncOptionsTuple, ae as TERMINATOR, af as Target, ag as Unflatten, ah as UnionToIntersection, ai as UpdatePayload, aj as VERSION, ak as Volatile, al as Watcher, am as WatcherRecord, W as WildPaths, an as getRaw, ao as getSnapshotVersion, ap as getVersion, aq as inert, ar as intent, as as isInert, at as isIntent, au as isVolatile, av as live, aw as methods, ax as reactive, ay as stable, az as state, aA as volatile } from './index-jlxXiocy.cjs';
1
+ export { C as CTX, q as ChildPaths, D as DeepKeys, r as DeepMerge, t as DeepPartial, u as DeepRequired, v as Deleter, x as DeleterRecord, y as DirectPayload, z as EVT_OPTS, F as EVT_WARN, E as EffectOptions, G as Getter, H as GetterRecord, I as INDIFFABLE, J as INERTIA, K as Inert, L as Intent, M as Listener, N as ListenerOptions, O as ListenerOptionsTuple, Q as ListenerRecord, S as Live, T as NIL, U as NOOP, V as PathBranch, X as PathBranchValue, Y as PathKey, Z as PathLeaf, o as PathValue, P as Paths, _ as Payload, $ as RAW, a0 as REJECTABLE, a as REvent, a1 as RTR_BATCH, a2 as RTR_LOG, l as Reactive, a3 as ReactivePreferences, R as Reactor, a4 as ReactorBuild, a5 as ReactorEvent, a6 as SSVERSION, a7 as Setter, a8 as SetterRecord, a9 as Stable, aa as State, ab as StrictPathKey, ac as SyncOptions, ad as SyncOptionsTuple, ae as TERMINATOR, af as Target, ag as Unflatten, ah as UnionToIntersection, ai as UpdatePayload, aj as VERSION, ak as Volatile, al as Watcher, am as WatcherRecord, W as WildPaths, an as getRaw, ao as getSnapshotVersion, ap as getVersion, aq as inert, ar as intent, as as isInert, at as isIntent, au as isVolatile, av as live, aw as methods, ax as reactive, ay as stable, az as state, aA as volatile } from './index-JdV5I0R3.cjs';
package/dist/index.d.ts CHANGED
@@ -1 +1 @@
1
- export { C as CTX, q as ChildPaths, D as DeepKeys, r as DeepMerge, t as DeepPartial, u as DeepRequired, v as Deleter, x as DeleterRecord, y as DirectPayload, z as EVT_OPTS, F as EVT_WARN, E as EffectOptions, G as Getter, H as GetterRecord, I as INDIFFABLE, J as INERTIA, K as Inert, L as Intent, M as Listener, N as ListenerOptions, O as ListenerOptionsTuple, Q as ListenerRecord, S as Live, T as NIL, U as NOOP, V as PathBranch, X as PathBranchValue, Y as PathKey, Z as PathLeaf, o as PathValue, P as Paths, _ as Payload, $ as RAW, a0 as REJECTABLE, a as REvent, a1 as RTR_BATCH, a2 as RTR_LOG, l as Reactive, a3 as ReactivePreferences, R as Reactor, a4 as ReactorBuild, a5 as ReactorEvent, a6 as SSVERSION, a7 as Setter, a8 as SetterRecord, a9 as Stable, aa as State, ab as StrictPathKey, ac as SyncOptions, ad as SyncOptionsTuple, ae as TERMINATOR, af as Target, ag as Unflatten, ah as UnionToIntersection, ai as UpdatePayload, aj as VERSION, ak as Volatile, al as Watcher, am as WatcherRecord, W as WildPaths, an as getRaw, ao as getSnapshotVersion, ap as getVersion, aq as inert, ar as intent, as as isInert, at as isIntent, au as isVolatile, av as live, aw as methods, ax as reactive, ay as stable, az as state, aA as volatile } from './index-jlxXiocy.js';
1
+ export { C as CTX, q as ChildPaths, D as DeepKeys, r as DeepMerge, t as DeepPartial, u as DeepRequired, v as Deleter, x as DeleterRecord, y as DirectPayload, z as EVT_OPTS, F as EVT_WARN, E as EffectOptions, G as Getter, H as GetterRecord, I as INDIFFABLE, J as INERTIA, K as Inert, L as Intent, M as Listener, N as ListenerOptions, O as ListenerOptionsTuple, Q as ListenerRecord, S as Live, T as NIL, U as NOOP, V as PathBranch, X as PathBranchValue, Y as PathKey, Z as PathLeaf, o as PathValue, P as Paths, _ as Payload, $ as RAW, a0 as REJECTABLE, a as REvent, a1 as RTR_BATCH, a2 as RTR_LOG, l as Reactive, a3 as ReactivePreferences, R as Reactor, a4 as ReactorBuild, a5 as ReactorEvent, a6 as SSVERSION, a7 as Setter, a8 as SetterRecord, a9 as Stable, aa as State, ab as StrictPathKey, ac as SyncOptions, ad as SyncOptionsTuple, ae as TERMINATOR, af as Target, ag as Unflatten, ah as UnionToIntersection, ai as UpdatePayload, aj as VERSION, ak as Volatile, al as Watcher, am as WatcherRecord, W as WildPaths, an as getRaw, ao as getSnapshotVersion, ap as getVersion, aq as inert, ar as intent, as as isInert, at as isIntent, au as isVolatile, av as live, aw as methods, ax as reactive, ay as stable, az as state, aA as volatile } from './index-JdV5I0R3.js';
@@ -1,5 +1,5 @@
1
- import { P as Paths, B as BaseReactorPlugin, R as Reactor, a as REvent } from './index-jlxXiocy.cjs';
2
- export { b as ReactorPluginConstructor } from './index-jlxXiocy.cjs';
1
+ import { P as Paths, B as BaseReactorPlugin, R as Reactor, a as REvent } from './index-JdV5I0R3.cjs';
2
+ export { b as ReactorPluginConstructor } from './index-JdV5I0R3.cjs';
3
3
 
4
4
  interface StorageAdapterConfig {
5
5
  debug: boolean;
package/dist/plugins.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { P as Paths, B as BaseReactorPlugin, R as Reactor, a as REvent } from './index-jlxXiocy.js';
2
- export { b as ReactorPluginConstructor } from './index-jlxXiocy.js';
1
+ import { P as Paths, B as BaseReactorPlugin, R as Reactor, a as REvent } from './index-JdV5I0R3.js';
2
+ export { b as ReactorPluginConstructor } from './index-JdV5I0R3.js';
3
3
 
4
4
  interface StorageAdapterConfig {
5
5
  debug: boolean;
package/dist/utils.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- export { c as canHandle, d as deepClone, e as deleteAny, g as getAny, f as getTrailRecords, i as inAny, h as isObj, j as isPOJO, m as mergeObjs, n as nuke, p as parseAnyObj, k as parseEvtOpts, s as setAny } from './index-jlxXiocy.cjs';
1
+ export { c as canHandle, d as deepClone, e as deleteAny, g as getAny, f as getTrailRecords, i as inAny, h as isObj, j as isPOJO, m as mergeObjs, n as nuke, p as parseAnyObj, k as parseEvtOpts, s as setAny } from './index-JdV5I0R3.cjs';
2
2
 
3
3
  declare function clamp(min: number | undefined, val: number, max?: number): number;
4
4
 
package/dist/utils.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { c as canHandle, d as deepClone, e as deleteAny, g as getAny, f as getTrailRecords, i as inAny, h as isObj, j as isPOJO, m as mergeObjs, n as nuke, p as parseAnyObj, k as parseEvtOpts, s as setAny } from './index-jlxXiocy.js';
1
+ export { c as canHandle, d as deepClone, e as deleteAny, g as getAny, f as getTrailRecords, i as inAny, h as isObj, j as isPOJO, m as mergeObjs, n as nuke, p as parseAnyObj, k as parseEvtOpts, s as setAny } from './index-JdV5I0R3.js';
2
2
 
3
3
  declare function clamp(min: number | undefined, val: number, max?: number): number;
4
4
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sia-reactor",
3
- "version": "0.0.16",
3
+ "version": "0.0.18",
4
4
  "description": "The Programmable Data DOM. A high-performance State Intent Architecture (S.I.A.) Engine with zero-allocation loops, event propagation, and structural sharing.",
5
5
  "author": "Oketade Oluwatobiloba <tobioketade007@gmail.com>",
6
6
  "license": "MIT",