UNPKG

impact-signal

Version:
56 lines (55 loc) 1.69 kB
export declare class ObserverContext { static stack: ObserverContext[]; static get current(): ObserverContext | undefined; private _getters; private _setters; private _onUpdate?; private _snapshot; get snapshot(): { signals: unknown[]; }; constructor(); registerGetter(signal: SignalTracker): void; registerSetter(signal: SignalTracker): void; /** * There is only a single subscriber to any ObserverContext */ subscribe(onUpdate: () => void): () => void; notify(): void; [Symbol.dispose](): void; } export declare class SignalTracker { getValue: () => unknown; private contexts; constructor(getValue: () => unknown); addContext(context: ObserverContext): void; removeContext(context: ObserverContext): void; notify(): void; } export type Signal<T> = T extends Promise<infer V> ? { get value(): ObservablePromise<V>; set value(promise: T); } : { value: T; }; export declare function signal<T>(): Signal<T | undefined>; export declare function signal<T>(initialValue: T): Signal<T>; type PendingPromise<T> = Promise<T> & { status: "pending"; }; type FulfilledPromise<T> = Promise<T> & { status: "fulfilled"; value: T; }; type RejectedPromise<T> = Promise<T> & { status: "rejected"; reason: unknown; }; type ObservablePromise<T> = PendingPromise<T> | FulfilledPromise<T> | RejectedPromise<T>; export declare function use<T>(promise: ObservablePromise<T>): T; export declare function derived<T>(cb: () => T): { readonly value: T; }; export declare function effect(cb: () => void): () => void; export declare function observer(): ObserverContext; export {};