UNPKG

@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
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;