diff options
Diffstat (limited to 'tools/node_modules/eslint/node_modules/yocto-queue/index.js')
-rw-r--r-- | tools/node_modules/eslint/node_modules/yocto-queue/index.js | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/tools/node_modules/eslint/node_modules/yocto-queue/index.js b/tools/node_modules/eslint/node_modules/yocto-queue/index.js new file mode 100644 index 0000000000..2f3e6dcd72 --- /dev/null +++ b/tools/node_modules/eslint/node_modules/yocto-queue/index.js @@ -0,0 +1,68 @@ +class Node { + /// value; + /// next; + + constructor(value) { + this.value = value; + + // TODO: Remove this when targeting Node.js 12. + this.next = undefined; + } +} + +class Queue { + // TODO: Use private class fields when targeting Node.js 12. + // #_head; + // #_tail; + // #_size; + + constructor() { + this.clear(); + } + + enqueue(value) { + const node = new Node(value); + + if (this._head) { + this._tail.next = node; + this._tail = node; + } else { + this._head = node; + this._tail = node; + } + + this._size++; + } + + dequeue() { + const current = this._head; + if (!current) { + return; + } + + this._head = this._head.next; + this._size--; + return current.value; + } + + clear() { + this._head = undefined; + this._tail = undefined; + this._size = 0; + } + + get size() { + return this._size; + } + + * [Symbol.iterator]() { + let current = this._head; + + while (current) { + yield current.value; + current = current.next; + } + } +} + +module.exports = Queue; |