/** * @class Stack * @util */ class Stack { constructor(initial = []) { /** * Items collection. * * @type {Array} */ this.items = initial; } /** * Add new item or items at the back of the stack. * * @param {*} items An item to add. */ push(...items) { this.items.push(...items); } /** * Remove the last element from the stack and returns it. * * @returns {*} */ pop() { return this.items.pop(); } /** * Return the last element from the stack (without modification stack). * * @returns {*} */ peek() { return this.isEmpty() ? void 0 : this.items[this.items.length - 1]; } /** * Check if the stack is empty. * * @returns {Boolean} */ isEmpty() { return !this.size(); } /** * Return number of elements in the stack. * * @returns {Number} */ size() { return this.items.length; } } export default Stack;