UNPKG

reactronic

Version:

Reactronic - Transactional Reactive State Management

78 lines (77 loc) 2.88 kB
export type Extractor<T, Result> = (item: T) => Result; export type KeyExtractor<T> = Extractor<T, string | undefined>; export declare class LinkedList<T extends LinkedItem<T>> { readonly keyExtractor: KeyExtractor<T>; private isStrictOrder$; private map; items$: LinkedSubList<T>; private renovation$; constructor(keyExtractor: KeyExtractor<T>, isStrictOrder?: boolean); get isStrictOrder(): boolean; set isStrictOrder(value: boolean); get renovation(): LinkedListRenovation<T>; get isRenovationInProgress(): boolean; get count(): number; get firstItem(): T | undefined; get lastItem(): T | undefined; items(after?: T): Generator<T>; tryLookup(key: string): T | undefined; lookup(key: string): T; add(item: T, before?: T): void; move(item: T, before: T | undefined): void; remove(item: T): void; beginRenovation(diff?: Array<T>): LinkedListRenovation<T>; endRenovation(error?: unknown): LinkedListRenovation<T>; extractKey(item: T): string; static move$<T extends LinkedItem<T>>(list: LinkedList<T>, item: T, before: T | undefined): void; static remove$<T extends LinkedItem<T>>(list: LinkedList<T>, item: T): void; static removeKey$<T extends LinkedItem<T>>(list: LinkedList<T>, key: string): void; } export declare enum Mark { reaffirmed = 0, added = 1, moved = 2, removed = 3 } export declare class LinkedItem<T extends LinkedItem<T>> { private list$; private next$; private prev$; private status; constructor(); get list(): LinkedSubList<T> | undefined; get next(): T | undefined; get prev(): T | undefined; get mark(): Mark; get rank(): number; get isManagedExternally(): boolean; static setStatus$<T extends LinkedItem<T>>(item: T, mark: Mark, rank: number): void; static link$<T extends LinkedItem<T>>(list: LinkedSubList<T> | undefined, item: T, before: T | undefined): void; private static unlink; } export declare class LinkedSubList<T extends LinkedItem<T>> { count: number; first?: T; last?: T; items(after?: T): Generator<T>; clear(): void; grab(from: LinkedSubList<T>, join: boolean): void; } export declare class LinkedListRenovation<T extends LinkedItem<T>> { readonly list: LinkedList<T>; readonly diff: Array<T> | undefined; private former; private expected; private absent; constructor(list: LinkedList<T>, former: LinkedSubList<T>, diff?: Array<T>); tryLookup(key: string): T | undefined; tryReaffirm(key: string, resolution?: { isDuplicate: boolean; }, error?: string): T | undefined; thisIsAdded(item: T, before?: T): T; thisIsModified(item: T): void; thisIsMoved(item: T, before: T | undefined): void; thisIsRemoved(item: T): void; get lostItemCount(): number; lostItems(): Generator<T>; }