resig.js
Version:
Universal reactive signal library with complete platform features: signals, animations, CRDTs, scheduling, DOM integration. Works identically across React, SolidJS, Svelte, Vue, and Qwik.
49 lines (48 loc) • 1.85 kB
TypeScript
import { MutableSignal as Signal } from '../core/signal';
import { Effect } from '../core/effect';
/**
* React Hooks for Signal-Σ - NO dependency arrays needed!
* All hooks use useSyncExternalStore for automatic re-renders
*/
export declare function useSignal<T>(initialValue: T): [T, (value: T) => void];
export declare function useComputed<T>(compute: () => T): T;
export declare function useEffect<T>(initialValue: T): [T, (value: T) => void, Effect<T>];
export declare function useMachine<S, A>(initialState: S, reducer: (state: S, action: A) => S): [S, (action: A) => void];
export declare function useFetch<T>(fetcher: () => Promise<T>): [
{
data?: T;
loading: boolean;
error?: Error;
},
() => void,
(n: number) => void
];
export declare function useDerived<T>(derive: () => T): T;
export declare function useValidatedSignal<T>(initialValue: T, validator: (value: T) => boolean, onError?: (value: T) => void): [T, (value: T) => void, boolean];
export declare function useDebouncedSignal<T>(initialValue: T, delay: number): [T, (value: T) => void, T];
export declare function usePersistentSignal<T>(key: string, initialValue: T): [T, (value: T) => void];
export declare function useAsyncSignal<T>(asyncFn: () => Promise<T>, initialValue?: T): [
{
data?: T;
loading: boolean;
error?: Error;
},
() => void,
(value: T) => void
];
export declare function useAsyncComputed<T>(asyncCompute: () => Promise<T>, deps?: unknown[]): {
data?: T;
loading: boolean;
error?: Error;
};
export declare function useAsyncComputedSignal<T>(asyncCompute: () => Promise<T>, deps?: unknown[]): Signal<{
data?: T;
loading: boolean;
error?: Error;
}> & {
_set: (value: {
data?: T;
loading: boolean;
error?: Error;
}) => void;
};