UNPKG

2.22 kBTypeScriptView Raw
1/*! *****************************************************************************
2Copyright (c) Microsoft Corporation.
3Licensed under the Apache License, Version 2.0.
4
5See LICENSE file in the project root for details.
6***************************************************************************** */
7export declare class LinkedListNode<T> {
8 value: T | undefined;
9 constructor(value?: T);
10 get list(): LinkedList<T> | undefined;
11 get previous(): LinkedListNode<T> | undefined;
12 get next(): LinkedListNode<T> | undefined;
13}
14export declare class LinkedList<T> {
15 private _head;
16 private _size;
17 constructor(iterable?: Iterable<T>);
18 get first(): LinkedListNode<T> | undefined;
19 get last(): LinkedListNode<T> | undefined;
20 get size(): number;
21 values(): Generator<T | undefined, void, unknown>;
22 nodes(): Generator<LinkedListNode<T>, void, unknown>;
23 drain(): Generator<T | undefined, void, unknown>;
24 find(value: T): LinkedListNode<T> | undefined;
25 findLast(value: T): LinkedListNode<T> | undefined;
26 has(value: T): boolean;
27 insertBefore(node: LinkedListNode<T>, value: T): LinkedListNode<T>;
28 insertNodeBefore(node: LinkedListNode<T>, newNode: LinkedListNode<T>): void;
29 insertAfter(node: LinkedListNode<T>, value: T): LinkedListNode<T>;
30 insertNodeAfter(node: LinkedListNode<T>, newNode: LinkedListNode<T>): void;
31 push(value?: T): LinkedListNode<T>;
32 pushNode(newNode: LinkedListNode<T>): void;
33 pop(): T | undefined;
34 popNode(): LinkedListNode<T> | undefined;
35 shift(): T | undefined;
36 shiftNode(): LinkedListNode<T> | undefined;
37 unshift(value?: T): LinkedListNode<T>;
38 unshiftNode(newNode: LinkedListNode<T>): void;
39 delete(value: T): boolean;
40 deleteNode(node: LinkedListNode<T> | undefined): boolean;
41 deleteAll(predicate: (value: T, node: LinkedListNode<T>, list: LinkedList<T>) => boolean, thisArg?: any): number;
42 clear(): void;
43 forEach(callback: (value: T, node: LinkedListNode<T>, list: LinkedList<T>) => void, thisArg?: any): void;
44 private _deleteNode;
45 private _insertNode;
46}
47export interface LinkedList<T> {
48 [Symbol.iterator](): Iterator<T>;
49}