{"id":44784,"library":"double-ended-queue","title":"double-ended-queue (Deque)","description":"Extremely fast double-ended queue (deque) implementation in JavaScript, version 2.1.0-0. Uses a circular buffer for O(1) operations on both ends, including random access via .get(). Outperforms native Array for shift/unshift even with V8's small array optimization. Suitable as stack, queue, or deque. No dependencies. Last release was a pre-release; library may be in maintenance mode.","status":"maintenance","version":"2.1.0-0","language":"javascript","source_language":"en","source_url":"git://github.com/petkaantonov/deque","tags":["javascript","data-structure","data-structures","queue","deque","double-ended-queue"],"install":[{"cmd":"npm install double-ended-queue","lang":"bash","label":"npm"},{"cmd":"yarn add double-ended-queue","lang":"bash","label":"yarn"},{"cmd":"pnpm add double-ended-queue","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"Default import works in both ESM and CJS. The package does not ship TypeScript types.","wrong":"const Deque = require('double-ended-queue')","symbol":"Deque","correct":"import Deque from 'double-ended-queue'"},{"note":"CommonJS require returns the constructor directly, not an object.","wrong":"const { Deque } = require('double-ended-queue')","symbol":"Deque","correct":"const Deque = require('double-ended-queue')"}],"quickstart":{"code":"var Deque = require('double-ended-queue');\n\nvar deque = new Deque([1,2,3,4]);\nconsole.log(deque.shift()); //1\nconsole.log(deque.pop());   //4\n\n// Using as a queue\ndeque.enqueue(5);\nconsole.log(deque.dequeue()); //5\n\n// Random access\nvar deque2 = new Deque(['a','b','c']);\nconsole.log(deque2.get(1)); //b","lang":"javascript","description":"Quick start: create a deque from an array, demonstrate shift/pop, enqueue/dequeue, and random access via .get()."},"warnings":[{"fix":"Use an array literal when intending to pass a single numeric element: new Deque([5])","message":"Constructor with number creates empty deque with that capacity, not a deque with that number as element.","severity":"gotcha","affected_versions":">=2.0.0"},{"fix":"Check the return value for undefined or use .isEmpty() before accessing.","message":"The .get() method returns undefined for out-of-bounds indices, not an error.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"If you intend to create a deque with one element, pass an array literal.","message":"The 'Deque' constructor also accepts a single number as capacity; calling with a single number creates an empty deque with that internal capacity.","severity":"deprecated","affected_versions":">=1.0.0"}],"env_vars":null,"search_vec":"'-0':18 '1':25 '2.1.0':17 'access':32 'array':37,45 'buffer':22 'circular':21 'data':70,73 'data-structur':69,72 'depend':54 'dequ':5,12,52,76 'doubl':2,9,78 'double-end':8 'double-ended-queu':1,77 'end':3,10,29,79 'even':40 'extrem':6 'fast':7 'get':34 'implement':13 'includ':30 'javascript':15,68 'last':55 'librari':62 'mainten':66 'may':63 'mode':67 'nativ':36 'o':24 'oper':26 'optim':46 'outperform':35 'pre':60 'pre-releas':59 'queue':4,11,50,75,80 'random':31 'releas':56,61 'shift/unshift':39 'small':44 'stack':49 'structur':71,74 'suitabl':47 'use':19 'v8':42 'version':16 'via':33","created_at":"2026-06-07T12:51:49.778704+00:00","updated_at":"2026-06-07T12:51:49.778704+00:00","problems":[{"fix":"Always use new Deque(...) or extend Deque properly.","cause":"Calling Deque as a regular function (e.g., Deque()) instead of with 'new'.","error":"TypeError: Class constructor Deque cannot be invoked without 'new'"},{"fix":"Run 'npm install double-ended-queue' in your project root.","cause":"Package not installed or not in node_modules.","error":"Cannot find module 'double-ended-queue'"},{"fix":"Use 'var Deque = require(\"double-ended-queue\");' (CommonJS) or proper ESM import.","cause":"CommonJS require not used or incorrect import syntax.","error":"Deque is not defined"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/petkaantonov/deque","github":"git://github.com/petkaantonov/deque","docs":null,"changelog":null,"pypi":null,"npm":"double-ended-queue","openapi_spec":null,"status_page":null,"smithery":null,"categories":["devops","storage"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-07","next_check":"2026-09-05","install_tag":null}}