UNPKG

reactronic

Version:

Reactronic - Transactional Reactive State Management

73 lines (72 loc) 2.69 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 keyOf: 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 isRenovationInProgress(): boolean; get count(): number; items(): Generator<T>; lookup(key: string | undefined): T | undefined; 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): void; 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 | undefined): void; } export declare enum Mark { prolonged = 0, added = 1, modified = 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(): 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>); lookup(key: string | undefined): T | undefined; tryToProlong(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>; }