UNPKG

substate

Version:

Pub/Sub pattern with State Management

50 lines 1.69 kB
import type { IPubSub } from '../PubSub/PubSub.interface'; import type { TState, TSyncConfig, TUpdateMiddleware } from './interfaces'; interface ISyncInstance { unsync: () => void; } interface ISubstateConfig<TSubstateState extends TState = TState> { name?: string; afterUpdate?: TUpdateMiddleware[]; beforeUpdate?: TUpdateMiddleware[]; currentState?: number; stateStorage?: TSubstateState[]; defaultDeep?: boolean; maxHistorySize?: number; state?: TSubstateState; } interface ISubstate<TSubstateState extends TState = TState> extends IPubSub { name?: string; afterUpdate: TUpdateMiddleware[]; beforeUpdate: TUpdateMiddleware[]; currentState: number; stateStorage: TSubstateState[]; defaultDeep: boolean; maxHistorySize: number; taggedStates: Map<string, { stateIndex: number; state: TSubstateState; }>; getState(index: number): TSubstateState; getCurrentState(): TSubstateState; getProp(prop: string): unknown; resetState(): void; updateState(action: Partial<TSubstateState>): void; sync(config: TSyncConfig): ISyncInstance; clearHistory(): void; limitHistory(maxSize: number): void; getMemoryUsage(): { stateCount: number; taggedCount: number; estimatedSizeKB: number | null; }; getTaggedState(tag: string): TSubstateState | undefined; getAvailableTags(): string[]; jumpToTag(tag: string): void; removeTag(tag: string): void; clearTags(): void; hasMiddleware: boolean; hasTaggedStates: boolean; } export type { ISubstate, ISubstateConfig, ISyncInstance }; //# sourceMappingURL=Substate.interface.d.ts.map