UNPKG

reactronic

Version:

Reactronic - Transactional Reactive State Management

67 lines (66 loc) 2.62 kB
export type GetListItemKey<T = unknown> = (item: T) => string | undefined; export type ReconciliationListReader<T> = { readonly isStrict: boolean; readonly count: number; readonly countOfAdded: number; readonly countOfRemoved: number; readonly isReconciliationInProgress: boolean; lookup(key: string): LinkedItem<T> | undefined; firstItem(): LinkedItem<T> | undefined; lastItem(): LinkedItem<T> | undefined; items(onlyAfter?: LinkedItem<T>): Generator<LinkedItem<T>>; itemsAdded(clear?: boolean): Generator<LinkedItem<T>>; itemsRemoved(clear?: boolean): Generator<LinkedItem<T>>; isAdded(item: LinkedItem<T>): boolean; isMoved(item: LinkedItem<T>): boolean; isRemoved(item: LinkedItem<T>): boolean; isActual(item: LinkedItem<T>): boolean; isExternal(item: LinkedItem<T>): boolean; }; export type LinkedItem<T> = { readonly instance: T; readonly index: number; readonly next?: LinkedItem<T>; readonly prev?: LinkedItem<T>; aux?: LinkedItem<T>; }; export declare class ReconciliationList<T> implements ReconciliationListReader<T> { readonly getKey: GetListItemKey<T>; private strict; private map; private tag; private actual; private added; private removed; private lastNotFoundKey; private strictNextItem?; constructor(getKey: GetListItemKey<T>, strict?: boolean); get isStrict(): boolean; set isStrict(value: boolean); get count(): number; get countOfAdded(): number; get countOfRemoved(): number; get isReconciliationInProgress(): boolean; lookup(key: string | undefined): LinkedItem<T> | undefined; tryReuse(key: string, resolution?: { isDuplicate: boolean; }, error?: string): LinkedItem<T> | undefined; add(instance: T): LinkedItem<T>; remove(item: LinkedItem<T>): void; move(item: LinkedItem<T>, after: LinkedItem<T>): void; beginReconciliation(): void; endReconciliation(error?: unknown): void; clearAddedAndRemoved(): void; firstItem(): LinkedItem<T> | undefined; lastItem(): LinkedItem<T> | undefined; items(onlyAfter?: LinkedItem<T>): Generator<LinkedItem<T>>; itemsAdded(clear?: boolean): Generator<LinkedItem<T>>; itemsRemoved(clear?: boolean): Generator<LinkedItem<T>>; isAdded(item: LinkedItem<T>): boolean; isMoved(item: LinkedItem<T>): boolean; isRemoved(item: LinkedItem<T>): boolean; isActual(item: LinkedItem<T>): boolean; isExternal(item: LinkedItem<T>): boolean; markAsMoved(item: LinkedItem<T>): void; static createItem<T>(instance: T): LinkedItem<T>; }