@amadeus-it-group/tansu
Version:
tansu is a lightweight, push-based framework-agnostic state management library. It borrows the ideas and APIs originally designed and implemented by Svelte stores and extends them with computed and batch.
27 lines (26 loc) • 836 B
TypeScript
import type { SignalStore, SubscribableStore } from '../types';
export interface Consumer {
markDirty(): void;
}
export declare const enum RawStoreFlags {
NONE = 0,
HAS_VISIBLE_ONUSE = 1,
START_USE_CALLED = 2,
FLUSH_PLANNED = 4,
COMPUTING = 8,
DIRTY = 16
}
export interface BaseLink<T> {
producer: RawStore<T, BaseLink<T>>;
skipMarkDirty?: boolean;
}
export interface RawStore<T, Link extends BaseLink<T> = BaseLink<T>> extends SignalStore<T>, SubscribableStore<T> {
readonly flags: RawStoreFlags;
newLink(consumer: Consumer): Link;
registerConsumer(link: Link): Link;
unregisterConsumer(link: Link): void;
updateValue(): void;
isLinkUpToDate(link: Link): boolean;
updateLink(link: Link): T;
}
export declare const updateLinkProducerValue: <T>(link: BaseLink<T>) => void;