Fine-grained Proxy-backed deep reactive trees on aihu signals — lazy per-(object,key) tracking nodes, plain-assignment writes, mutate/reconcile.
isReactivefunction isReactive(value: unknown): booleanTrue for a proxy produced by `reactive()`.
mutatefunction mutate<T extends object>(target: T, recipe: (draft: T) => void): voidApply many writes as ONE flush.
reactivefunction reactive<T extends object>(source: T): TWrap a plain object/array in a fine-grained reactive tree.
reactiveComputedfunction reactiveComputed<T extends object>(fn: () => T): TA reactive object kept in sync with `fn()` by an effect + `reconcile`.
reactiveOmitfunction reactiveOmit<T extends object, K extends keyof T>(s: T, ...keys: K[]): Omit<T, K>Read-through view omitting a subset of keys — no copies, tracking is preserved.
reactivePickfunction reactivePick<T extends object, K extends keyof T>(s: T, ...keys: K[]): Pick<T, K>Read-through view over a subset of keys — no copies, tracking is preserved (each read forwards to the source proxy's own trap).
reconcilefunction reconcile<T extends object>(target: T, next: T, options?: ReconcileOptions): voidMerge `next` into `target` in place, preserving node identity for unchanged values and notifying ONLY changed paths.
toReactivefunction toReactive<T extends object>(source: Signal<T>): TSignal-of-object → reactive-looking view.
toSignalfunction toSignal<T extends object, K extends keyof T>(t: T, k: K): Signal<T[K]>Lens a single property as a signal tuple — the tree → tuple bridge.
toSignalsfunction toSignals<T extends object>(t: T): { [K in keyof T]: Signal<T[K]> }Every own key as a signal tuple.
unwrapfunction unwrap<T>(value: T): TThe raw object behind a reactive proxy (O(1), no traversal — writes unwrap, so the raw tree never contains proxies).