async-coord
Version:
Asynchronous coordination primitives for JavaScript and TypeScript
50 lines (49 loc) • 1.79 kB
TypeScript
export declare class LinkedListNode<T> {
value: T;
private _list;
private _previous;
private _next;
constructor(value?: T);
/** Gets the LinkedList for this node */
list: LinkedList<T>;
/** Gets the previous node in the list */
previous: LinkedListNode<T>;
/** Gets the next node in the list */
next: LinkedListNode<T>;
}
export declare class LinkedList<T> {
private _head;
private _cache;
private _size;
/** Gets the first node in the list */
first: LinkedListNode<T>;
/** Gets the last node in the list */
last: LinkedListNode<T>;
/** Gets the size of the list */
size: number;
addFirst(value: T): LinkedListNode<T>;
addNodeFirst(newNode: LinkedListNode<T>): void;
addLast(value: T): LinkedListNode<T>;
addNodeLast(newNode: LinkedListNode<T>): void;
addBefore(node: LinkedListNode<T>, value: T): LinkedListNode<T>;
addNodeBefore(node: LinkedListNode<T>, newNode: LinkedListNode<T>): void;
addAfter(node: LinkedListNode<T>, value: T): LinkedListNode<T>;
addNodeAfter(node: LinkedListNode<T>, newNode: LinkedListNode<T>): void;
has(value: T): boolean;
find(value: T): LinkedListNode<T>;
findLast(value: T): LinkedListNode<T>;
delete(value: T): boolean;
deleteNode(node: LinkedListNode<T>): void;
deleteFirst(): boolean;
deleteLast(): boolean;
removeFirst(): T;
removeLast(): T;
clear(): void;
forEach(callback: (value: T, node: LinkedListNode<T>, list: LinkedList<T>) => void): void;
private _checkNode(node);
private _checkNewNode(newNode);
private _insert(node, newNode);
private _insertEmpty(newNode);
private _delete(node);
private _invalidate(node);
}