UNPKG

other-queue

Version:
185 lines (163 loc) 5.49 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define("queue", [], factory); else if(typeof exports === 'object') exports["queue"] = factory(); else root["queue"] = factory(); })(typeof self !== 'undefined' ? self : this, function() { return /******/ (() => { // webpackBootstrap /******/ "use strict"; /******/ var __webpack_modules__ = ({ /***/ "./src/index.js": /*!**********************!*\ !*** ./src/index.js ***! \**********************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => __WEBPACK_DEFAULT_EXPORT__ /* harmony export */ }); /* harmony import */ var _queue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./queue */ "./src/queue.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_queue__WEBPACK_IMPORTED_MODULE_0__.default); /***/ }), /***/ "./src/queue.js": /*!**********************!*\ !*** ./src/queue.js ***! \**********************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => /* binding */ Queue /* harmony export */ }); /** * @description Creates a queue based on an array, a queue is a first-in-first-out (FIFO) data structure * @module Queue * @author: Ahad Bokhari */ function Queue() { var queue = []; var offset = 0; /** * @public method * @description add an element to the queue * @param {*} item */ this.enqueue = function (item) { queue.push(item); }; /** * @public method * @description dequeue an element * @return {element} */ this.dequeue = function () { if (queue.length === 0) { return undefined; } var item = queue[offset]; if (++offset * 2 >= queue.length) { queue = queue.slice(offset); offset = 0; } return item; }; /** * @public method * @description see which element is next in line * @return {element} */ this.peek = function () { return queue.length > 0 ? queue[offset] : undefined; }; /** * @public helper method * @description gets length of queue * @return {element} */ this.getLength = function () { return queue.length - offset; }; /** * @public helper method * @description returns string representation of queue * @return {string} */ this.toString = function () { return queue.toString(); }; /** * @public helper method * @description returns true if empty, false if not * @return {boolean} */ this.isEmpty = function () { return queue.length === 0; }; } /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(__webpack_module_cache__[moduleId]) { /******/ return __webpack_module_cache__[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = (exports, definition) => { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop) /******/ })(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ (() => { /******/ // define __esModule on exports /******/ __webpack_require__.r = (exports) => { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ })(); /******/ /************************************************************************/ /******/ // module exports must be returned from runtime so entry inlining is disabled /******/ // startup /******/ // Load entry module and return exports /******/ return __webpack_require__("./src/index.js"); /******/ })() .default; }); //# sourceMappingURL=queue.js.map