diff options
Diffstat (limited to 'node_modules/denque')
-rw-r--r-- | node_modules/denque/LICENSE | 13 | ||||
-rw-r--r-- | node_modules/denque/README.md | 362 | ||||
-rw-r--r-- | node_modules/denque/index.d.ts | 26 | ||||
-rw-r--r-- | node_modules/denque/index.js | 437 | ||||
-rw-r--r-- | node_modules/denque/package.json | 84 |
5 files changed, 0 insertions, 922 deletions
diff --git a/node_modules/denque/LICENSE b/node_modules/denque/LICENSE deleted file mode 100644 index fd22a2d..0000000 --- a/node_modules/denque/LICENSE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright (c) 2018 Mike Diarmid (Salakar) <mike.diarmid@gmail.com> - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this library except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/node_modules/denque/README.md b/node_modules/denque/README.md deleted file mode 100644 index 6821e0d..0000000 --- a/node_modules/denque/README.md +++ /dev/null @@ -1,362 +0,0 @@ -<p align="center"> - <a href="https://invertase.io"> - <img src="https://static.invertase.io/assets/invertase-logo-small.png"><br/> - </a> - <h2 align="center">Denque</h2> -</p> - -<p align="center"> - <a href="https://www.npmjs.com/package/denque"><img src="https://img.shields.io/npm/dm/denque.svg?style=flat-square" alt="NPM downloads"></a> - <a href="https://www.npmjs.com/package/denque"><img src="https://img.shields.io/npm/v/denque.svg?style=flat-square" alt="NPM version"></a> - <a href="https://travis-ci.org/Salakar/denque"><img src="https://travis-ci.org/invertase/denque.svg" alt="Build version"></a> - <a href="https://coveralls.io/github/invertase/denque?branch=master"><img src="https://coveralls.io/repos/github/invertase/denque/badge.svg?branch=master" alt="Build version"></a> - <a href="/LICENSE"><img src="https://img.shields.io/npm/l/denque.svg?style=flat-square" alt="License"></a> - <a href="https://discord.gg/C9aK28N"><img src="https://img.shields.io/discord/295953187817521152.svg?logo=discord&style=flat-square&colorA=7289da&label=discord" alt="Chat"></a> - <a href="https://twitter.com/invertaseio"><img src="https://img.shields.io/twitter/follow/invertaseio.svg?style=social&label=Follow" alt="Follow on Twitter"></a> -</p> - -Extremely fast and lightweight [double-ended queue](http://en.wikipedia.org/wiki/Double-ended_queue) implementation with zero dependencies. - -Double-ended queues can also be used as a: - -- [Stack](http://en.wikipedia.org/wiki/Stack_\(abstract_data_type\)) -- [Queue](http://en.wikipedia.org/wiki/Queue_\(data_structure\)) - -This implementation is currently the fastest available, even faster than `double-ended-queue`, see the [benchmarks](#benchmarks) - -Every queue operation is done at a constant `O(1)` - including random access from `.peekAt(index)`. - -**Works on all node versions >= v0.10** - -# Quick Start - - npm install denque - -```js -const Denque = require("denque"); - -const denque = new Denque([1,2,3,4]); -denque.shift(); // 1 -denque.pop(); // 4 -``` - - -# API - -- [`new Denque()`](#new-denque---denque) -- [`new Denque(Array items)`](#new-denquearray-items---denque) -- [`push(item)`](#pushitem---int) -- [`unshift(item)`](#unshiftitem---int) -- [`pop()`](#pop---dynamic) -- [`shift()`](#shift---dynamic) -- [`toArray()`](#toarray---array) -- [`peekBack()`](#peekback---dynamic) -- [`peekFront()`](#peekfront---dynamic) -- [`peekAt(int index)`](#peekAtint-index---dynamic) -- [`remove(int index, int count)`](#remove) -- [`removeOne(int index)`](#removeOne) -- [`splice(int index, int count, item1, item2, ...)`](#splice) -- [`isEmpty()`](#isempty---boolean) -- [`clear()`](#clear---void) - -#### `new Denque()` -> `Denque` - -Creates an empty double-ended queue with initial capacity of 4. - -```js -var denque = new Denque(); -denque.push(1); -denque.push(2); -denque.push(3); -denque.shift(); //1 -denque.pop(); //3 -``` - -<hr> - -#### `new Denque(Array items)` -> `Denque` - -Creates a double-ended queue from `items`. - -```js -var denque = new Denque([1,2,3,4]); -denque.shift(); // 1 -denque.pop(); // 4 -``` - -<hr> - - -#### `push(item)` -> `int` - -Push an item to the back of this queue. Returns the amount of items currently in the queue after the operation. - -```js -var denque = new Denque(); -denque.push(1); -denque.pop(); // 1 -denque.push(2); -denque.push(3); -denque.shift(); // 2 -denque.shift(); // 3 -``` - -<hr> - -#### `unshift(item)` -> `int` - -Unshift an item to the front of this queue. Returns the amount of items currently in the queue after the operation. - -```js -var denque = new Denque([2,3]); -denque.unshift(1); -denque.toString(); // "1,2,3" -denque.unshift(-2); -denque.toString(); // "-2,-1,0,1,2,3" -``` - -<hr> - - -#### `pop()` -> `dynamic` - -Pop off the item at the back of this queue. - -Note: The item will be removed from the queue. If you simply want to see what's at the back of the queue use [`peekBack()`](#peekback---dynamic) or [`.peekAt(-1)`](#peekAtint-index---dynamic). - -If the queue is empty, `undefined` is returned. If you need to differentiate between `undefined` values in the queue and `pop()` return value - -check the queue `.length` before popping. - -```js -var denque = new Denque([1,2,3]); -denque.pop(); // 3 -denque.pop(); // 2 -denque.pop(); // 1 -denque.pop(); // undefined -``` - -**Aliases:** `removeBack` - -<hr> - -#### `shift()` -> `dynamic` - -Shifts off the item at the front of this queue. - -Note: The item will be removed from the queue. If you simply want to see what's at the front of the queue use [`peekFront()`](#peekfront---dynamic) or [`.peekAt(0)`](#peekAtint-index---dynamic). - -If the queue is empty, `undefined` is returned. If you need to differentiate between `undefined` values in the queue and `shift()` return value - -check the queue `.length` before shifting. - -```js -var denque = new Denque([1,2,3]); -denque.shift(); // 1 -denque.shift(); // 2 -denque.shift(); // 3 -denque.shift(); // undefined -``` - -<hr> - -#### `toArray()` -> `Array` - -Returns the items in the queue as an array. Starting from the item in the front of the queue and ending to the item at the back of the queue. - -```js -var denque = new Denque([1,2,3]); -denque.push(4); -denque.unshift(0); -denque.toArray(); // [0,1,2,3,4] -``` - -<hr> - -#### `peekBack()` -> `dynamic` - -Returns the item that is at the back of this queue without removing it. - -If the queue is empty, `undefined` is returned. - -```js -var denque = new Denque([1,2,3]); -denque.push(4); -denque.peekBack(); // 4 -``` - -<hr> - -#### `peekFront()` -> `dynamic` - -Returns the item that is at the front of this queue without removing it. - -If the queue is empty, `undefined` is returned. - -```js -var denque = new Denque([1,2,3]); -denque.push(4); -denque.peekFront(); // 1 -``` - -<hr> - -#### `peekAt(int index)` -> `dynamic` - -Returns the item that is at the given `index` of this queue without removing it. - -The index is zero-based, so `.peekAt(0)` will return the item that is at the front, `.peekAt(1)` will return -the item that comes after and so on. - -The index can be negative to read items at the back of the queue. `.peekAt(-1)` returns the item that is at the back of the queue, -`.peekAt(-2)` will return the item that comes before and so on. - -Returns `undefined` if `index` is not a valid index into the queue. - -```js -var denque = new Denque([1,2,3]); -denque.peekAt(0); //1 -denque.peekAt(1); //2 -denque.peekAt(2); //3 - -denque.peekAt(-1); // 3 -denque.peekAt(-2); // 2 -denque.peekAt(-3); // 1 -``` - -**Note**: The implementation has O(1) random access using `.peekAt()`. - -**Aliases:** `get` - -<hr> - -#### `remove(int index, int count)` -> `array` - -Remove number of items from the specified index from the list. - -Returns array of removed items. - -Returns undefined if the list is empty. - -```js -var denque = new Denque([1,2,3,4,5,6,7]); -denque.remove(0,3); //[1,2,3] -denque.remove(1,2); //[5,6] -var denque1 = new Denque([1,2,3,4,5,6,7]); -denque1.remove(4, 100); //[5,6,7] -``` - -<hr> - -#### `removeOne(int index)` -> `dynamic` - -Remove and return the item at the specified index from the list. - -Returns undefined if the list is empty. - -```js -var denque = new Denque([1,2,3,4,5,6,7]); -denque.removeOne(4); // 5 -denque.removeOne(3); // 4 -denque1.removeOne(1); // 2 -``` - -<hr> - -#### `splice(int index, int count, item1, item2, ...)` -> `array` - -Native splice implementation. - -Remove number of items from the specified index from the list and/or add new elements. - -Returns array of removed items or empty array if count == 0. - -Returns undefined if the list is empty. - -```js -var denque = new Denque([1,2,3,4,5,6,7]); -denque.splice(denque.length, 0, 8, 9, 10); // [] -denque.toArray() // [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] -denque.splice(3, 3, 44, 55, 66); // [4,5,6] -denque.splice(5,4, 666,667,668,669); // [ 66, 7, 8, 9 ] -denque.toArray() // [ 1, 2, 3, 44, 55, 666, 667, 668, 669, 10 ] -``` - -<hr> - -#### `isEmpty()` -> `boolean` - -Return `true` if this queue is empty, `false` otherwise. - -```js -var denque = new Denque(); -denque.isEmpty(); // true -denque.push(1); -denque.isEmpty(); // false -``` - -<hr> - -#### `clear()` -> `void` - -Remove all items from this queue. Does not change the queue's capacity. - -```js -var denque = new Denque([1,2,3]); -denque.toString(); // "1,2,3" -denque.clear(); -denque.toString(); // "" -``` -<hr> - - -## Benchmarks - -#### Platform info: -``` -Darwin 17.0.0 x64 -Node.JS 9.4.0 -V8 6.2.414.46-node.17 -Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz × 8 -``` - -#### 1000 items in queue - - (3 x shift + 3 x push ops per 'op') - - denque x 64,365,425 ops/sec ±0.69% (92 runs sampled) - double-ended-queue x 26,646,882 ops/sec ±0.47% (94 runs sampled) - -#### 2 million items in queue - - (3 x shift + 3 x push ops per 'op') - - denque x 61,994,249 ops/sec ±0.26% (95 runs sampled) - double-ended-queue x 26,363,500 ops/sec ±0.42% (91 runs sampled) - -#### Splice - - (1 x splice per 'op') - initial size of 100,000 items - - denque.splice x 925,749 ops/sec ±22.29% (77 runs sampled) - native array splice x 7,777 ops/sec ±8.35% (50 runs sampled) - -#### Remove - - (1 x remove + 10 x push per 'op') - initial size of 100,000 items - - denque.remove x 2,635,275 ops/sec ±0.37% (95 runs sampled) - native array splice - Fails to complete: "JavaScript heap out of memory" - -#### Remove One - - (1 x removeOne + 10 x push per 'op') - initial size of 100,000 items - - denque.removeOne x 1,088,240 ops/sec ±0.21% (93 runs sampled) - native array splice x 5,300 ops/sec ±0.41% (96 runs sampled) - ---- - -Built and maintained with 💛 by [Invertase](https://invertase.io). - -- [💼 Hire Us](https://invertase.io/hire-us) -- [☕️ Sponsor Us](https://opencollective.com/react-native-firebase) -- [👩💻 Work With Us](https://invertase.io/jobs) diff --git a/node_modules/denque/index.d.ts b/node_modules/denque/index.d.ts deleted file mode 100644 index 803450f..0000000 --- a/node_modules/denque/index.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -declare class Denque<T = any> { - constructor(); - constructor(array: T[]); - - push(item: T): number; - unshift(item: T): number; - pop(): T | undefined; - removeBack(): T | undefined; - shift(): T | undefined; - peekBack(): T | undefined; - peekFront(): T | undefined; - peekAt(index: number): T | undefined; - get(index: number): T | undefined; - remove(index: number, count: number): T[]; - removeOne(index: number): T | undefined; - splice(index: number, count: number, ...item: T[]): T[] | undefined; - isEmpty(): boolean; - clear(): void; - - toString(): string; - toArray(): T[]; - - length: number; -} - -export = Denque; diff --git a/node_modules/denque/index.js b/node_modules/denque/index.js deleted file mode 100644 index 2f03136..0000000 --- a/node_modules/denque/index.js +++ /dev/null @@ -1,437 +0,0 @@ -'use strict'; - -/** - * Custom implementation of a double ended queue. - */ -function Denque(array) { - this._head = 0; - this._tail = 0; - this._capacityMask = 0x3; - this._list = new Array(4); - if (Array.isArray(array)) { - this._fromArray(array); - } -} - -/** - * ------------- - * PUBLIC API - * ------------- - */ - -/** - * Returns the item at the specified index from the list. - * 0 is the first element, 1 is the second, and so on... - * Elements at negative values are that many from the end: -1 is one before the end - * (the last element), -2 is two before the end (one before last), etc. - * @param index - * @returns {*} - */ -Denque.prototype.peekAt = function peekAt(index) { - var i = index; - // expect a number or return undefined - if ((i !== (i | 0))) { - return void 0; - } - var len = this.size(); - if (i >= len || i < -len) return undefined; - if (i < 0) i += len; - i = (this._head + i) & this._capacityMask; - return this._list[i]; -}; - -/** - * Alias for peakAt() - * @param i - * @returns {*} - */ -Denque.prototype.get = function get(i) { - return this.peekAt(i); -}; - -/** - * Returns the first item in the list without removing it. - * @returns {*} - */ -Denque.prototype.peek = function peek() { - if (this._head === this._tail) return undefined; - return this._list[this._head]; -}; - -/** - * Alias for peek() - * @returns {*} - */ -Denque.prototype.peekFront = function peekFront() { - return this.peek(); -}; - -/** - * Returns the item that is at the back of the queue without removing it. - * Uses peekAt(-1) - */ -Denque.prototype.peekBack = function peekBack() { - return this.peekAt(-1); -}; - -/** - * Returns the current length of the queue - * @return {Number} - */ -Object.defineProperty(Denque.prototype, 'length', { - get: function length() { - return this.size(); - } -}); - -/** - * Return the number of items on the list, or 0 if empty. - * @returns {number} - */ -Denque.prototype.size = function size() { - if (this._head === this._tail) return 0; - if (this._head < this._tail) return this._tail - this._head; - else return this._capacityMask + 1 - (this._head - this._tail); -}; - -/** - * Add an item at the beginning of the list. - * @param item - */ -Denque.prototype.unshift = function unshift(item) { - if (item === undefined) return this.size(); - var len = this._list.length; - this._head = (this._head - 1 + len) & this._capacityMask; - this._list[this._head] = item; - if (this._tail === this._head) this._growArray(); - if (this._head < this._tail) return this._tail - this._head; - else return this._capacityMask + 1 - (this._head - this._tail); -}; - -/** - * Remove and return the first item on the list, - * Returns undefined if the list is empty. - * @returns {*} - */ -Denque.prototype.shift = function shift() { - var head = this._head; - if (head === this._tail) return undefined; - var item = this._list[head]; - this._list[head] = undefined; - this._head = (head + 1) & this._capacityMask; - if (head < 2 && this._tail > 10000 && this._tail <= this._list.length >>> 2) this._shrinkArray(); - return item; -}; - -/** - * Add an item to the bottom of the list. - * @param item - */ -Denque.prototype.push = function push(item) { - if (item === undefined) return this.size(); - var tail = this._tail; - this._list[tail] = item; - this._tail = (tail + 1) & this._capacityMask; - if (this._tail === this._head) { - this._growArray(); - } - - if (this._head < this._tail) return this._tail - this._head; - else return this._capacityMask + 1 - (this._head - this._tail); -}; - -/** - * Remove and return the last item on the list. - * Returns undefined if the list is empty. - * @returns {*} - */ -Denque.prototype.pop = function pop() { - var tail = this._tail; - if (tail === this._head) return undefined; - var len = this._list.length; - this._tail = (tail - 1 + len) & this._capacityMask; - var item = this._list[this._tail]; - this._list[this._tail] = undefined; - if (this._head < 2 && tail > 10000 && tail <= len >>> 2) this._shrinkArray(); - return item; -}; - -/** - * Remove and return the item at the specified index from the list. - * Returns undefined if the list is empty. - * @param index - * @returns {*} - */ -Denque.prototype.removeOne = function removeOne(index) { - var i = index; - // expect a number or return undefined - if ((i !== (i | 0))) { - return void 0; - } - if (this._head === this._tail) return void 0; - var size = this.size(); - var len = this._list.length; - if (i >= size || i < -size) return void 0; - if (i < 0) i += size; - i = (this._head + i) & this._capacityMask; - var item = this._list[i]; - var k; - if (index < size / 2) { - for (k = index; k > 0; k--) { - this._list[i] = this._list[i = (i - 1 + len) & this._capacityMask]; - } - this._list[i] = void 0; - this._head = (this._head + 1 + len) & this._capacityMask; - } else { - for (k = size - 1 - index; k > 0; k--) { - this._list[i] = this._list[i = ( i + 1 + len) & this._capacityMask]; - } - this._list[i] = void 0; - this._tail = (this._tail - 1 + len) & this._capacityMask; - } - return item; -}; - -/** - * Remove number of items from the specified index from the list. - * Returns array of removed items. - * Returns undefined if the list is empty. - * @param index - * @param count - * @returns {array} - */ -Denque.prototype.remove = function remove(index, count) { - var i = index; - var removed; - var del_count = count; - // expect a number or return undefined - if ((i !== (i | 0))) { - return void 0; - } - if (this._head === this._tail) return void 0; - var size = this.size(); - var len = this._list.length; - if (i >= size || i < -size || count < 1) return void 0; - if (i < 0) i += size; - if (count === 1 || !count) { - removed = new Array(1); - removed[0] = this.removeOne(i); - return removed; - } - if (i === 0 && i + count >= size) { - removed = this.toArray(); - this.clear(); - return removed; - } - if (i + count > size) count = size - i; - var k; - removed = new Array(count); - for (k = 0; k < count; k++) { - removed[k] = this._list[(this._head + i + k) & this._capacityMask]; - } - i = (this._head + i) & this._capacityMask; - if (index + count === size) { - this._tail = (this._tail - count + len) & this._capacityMask; - for (k = count; k > 0; k--) { - this._list[i = (i + 1 + len) & this._capacityMask] = void 0; - } - return removed; - } - if (index === 0) { - this._head = (this._head + count + len) & this._capacityMask; - for (k = count - 1; k > 0; k--) { - this._list[i = (i + 1 + len) & this._capacityMask] = void 0; - } - return removed; - } - if (i < size / 2) { - this._head = (this._head + index + count + len) & this._capacityMask; - for (k = index; k > 0; k--) { - this.unshift(this._list[i = (i - 1 + len) & this._capacityMask]); - } - i = (this._head - 1 + len) & this._capacityMask; - while (del_count > 0) { - this._list[i = (i - 1 + len) & this._capacityMask] = void 0; - del_count--; - } - if (index < 0) this._tail = i; - } else { - this._tail = i; - i = (i + count + len) & this._capacityMask; - for (k = size - (count + index); k > 0; k--) { - this.push(this._list[i++]); - } - i = this._tail; - while (del_count > 0) { - this._list[i = (i + 1 + len) & this._capacityMask] = void 0; - del_count--; - } - } - if (this._head < 2 && this._tail > 10000 && this._tail <= len >>> 2) this._shrinkArray(); - return removed; -}; - -/** - * Native splice implementation. - * Remove number of items from the specified index from the list and/or add new elements. - * Returns array of removed items or empty array if count == 0. - * Returns undefined if the list is empty. - * - * @param index - * @param count - * @param {...*} [elements] - * @returns {array} - */ -Denque.prototype.splice = function splice(index, count) { - var i = index; - // expect a number or return undefined - if ((i !== (i | 0))) { - return void 0; - } - var size = this.size(); - if (i < 0) i += size; - if (i > size) return void 0; - if (arguments.length > 2) { - var k; - var temp; - var removed; - var arg_len = arguments.length; - var len = this._list.length; - var arguments_index = 2; - if (!size || i < size / 2) { - temp = new Array(i); - for (k = 0; k < i; k++) { - temp[k] = this._list[(this._head + k) & this._capacityMask]; - } - if (count === 0) { - removed = []; - if (i > 0) { - this._head = (this._head + i + len) & this._capacityMask; - } - } else { - removed = this.remove(i, count); - this._head = (this._head + i + len) & this._capacityMask; - } - while (arg_len > arguments_index) { - this.unshift(arguments[--arg_len]); - } - for (k = i; k > 0; k--) { - this.unshift(temp[k - 1]); - } - } else { - temp = new Array(size - (i + count)); - var leng = temp.length; - for (k = 0; k < leng; k++) { - temp[k] = this._list[(this._head + i + count + k) & this._capacityMask]; - } - if (count === 0) { - removed = []; - if (i != size) { - this._tail = (this._head + i + len) & this._capacityMask; - } - } else { - removed = this.remove(i, count); - this._tail = (this._tail - leng + len) & this._capacityMask; - } - while (arguments_index < arg_len) { - this.push(arguments[arguments_index++]); - } - for (k = 0; k < leng; k++) { - this.push(temp[k]); - } - } - return removed; - } else { - return this.remove(i, count); - } -}; - -/** - * Soft clear - does not reset capacity. - */ -Denque.prototype.clear = function clear() { - this._head = 0; - this._tail = 0; -}; - -/** - * Returns true or false whether the list is empty. - * @returns {boolean} - */ -Denque.prototype.isEmpty = function isEmpty() { - return this._head === this._tail; -}; - -/** - * Returns an array of all queue items. - * @returns {Array} - */ -Denque.prototype.toArray = function toArray() { - return this._copyArray(false); -}; - -/** - * ------------- - * INTERNALS - * ------------- - */ - -/** - * Fills the queue with items from an array - * For use in the constructor - * @param array - * @private - */ -Denque.prototype._fromArray = function _fromArray(array) { - for (var i = 0; i < array.length; i++) this.push(array[i]); -}; - -/** - * - * @param fullCopy - * @returns {Array} - * @private - */ -Denque.prototype._copyArray = function _copyArray(fullCopy) { - var newArray = []; - var list = this._list; - var len = list.length; - var i; - if (fullCopy || this._head > this._tail) { - for (i = this._head; i < len; i++) newArray.push(list[i]); - for (i = 0; i < this._tail; i++) newArray.push(list[i]); - } else { - for (i = this._head; i < this._tail; i++) newArray.push(list[i]); - } - return newArray; -}; - -/** - * Grows the internal list array. - * @private - */ -Denque.prototype._growArray = function _growArray() { - if (this._head) { - // copy existing data, head to end, then beginning to tail. - this._list = this._copyArray(true); - this._head = 0; - } - - // head is at 0 and array is now full, safe to extend - this._tail = this._list.length; - - this._list.length *= 2; - this._capacityMask = (this._capacityMask << 1) | 1; -}; - -/** - * Shrinks the internal list array. - * @private - */ -Denque.prototype._shrinkArray = function _shrinkArray() { - this._list.length >>>= 1; - this._capacityMask >>>= 1; -}; - - -module.exports = Denque; diff --git a/node_modules/denque/package.json b/node_modules/denque/package.json deleted file mode 100644 index a096ef3..0000000 --- a/node_modules/denque/package.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_from": "denque@^1.4.1", - "_id": "denque@1.4.1", - "_inBundle": false, - "_integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==", - "_location": "/denque", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "denque@^1.4.1", - "name": "denque", - "escapedName": "denque", - "rawSpec": "^1.4.1", - "saveSpec": null, - "fetchSpec": "^1.4.1" - }, - "_requiredBy": [ - "/mongodb" - ], - "_resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz", - "_shasum": "6744ff7641c148c3f8a69c307e51235c1f4a37cf", - "_spec": "denque@^1.4.1", - "_where": "/home/pruss/Dev/3-minute-website/node_modules/mongodb", - "author": { - "name": "Invertase", - "email": "oss@invertase.io", - "url": "http://github.com/invertase/" - }, - "bugs": { - "url": "https://github.com/invertase/denque/issues" - }, - "bundleDependencies": false, - "contributors": [ - { - "name": "Mike Diarmid", - "email": "mike@invertase.io", - "url": "Salakar" - } - ], - "deprecated": false, - "description": "The fastest javascript implementation of a double-ended queue. Maintains compatability with deque.", - "devDependencies": { - "benchmark": "^2.1.4", - "coveralls": "^2.13.3", - "double-ended-queue": "^2.1.0-0", - "istanbul": "^0.4.5", - "mocha": "^3.5.3", - "typescript": "^3.4.1" - }, - "engines": { - "node": ">=0.10" - }, - "homepage": "https://github.com/invertase/denque#readme", - "keywords": [ - "data-structure", - "data-structures", - "queue", - "double", - "end", - "ended", - "deque", - "denque", - "double-ended-queue" - ], - "license": "Apache-2.0", - "main": "index.js", - "name": "denque", - "repository": { - "type": "git", - "url": "git+https://github.com/invertase/denque.git" - }, - "scripts": { - "benchmark_2mil": "node benchmark/two_million", - "benchmark_remove": "node benchmark/remove", - "benchmark_removeOne": "node benchmark/removeOne", - "benchmark_splice": "node benchmark/splice", - "benchmark_thousand": "node benchmark/thousand", - "coveralls": "cat ./coverage/lcov.info | coveralls", - "test": "istanbul cover --report lcov _mocha && npm run typescript", - "typescript": "tsc --project ./test/type/tsconfig.json" - }, - "version": "1.4.1" -} |