slavery-js
Version:
A simple clustering app that allows you to scale an application on multiple thread, containers or machines
1 lines • 4.2 kB
Source Map (JSON)
{"version":3,"sources":["../../src/utils/Queue.ts"],"sourcesContent":["class Queue<T> {\n private items: T[] = [];\n\n constructor( items: T[] = [] ) {\n if(items.length > 0)\n this.items = items\n else\n this.items = []\n }\n\n enqueue(item: T) {\n // push item to the end of the queue\n this.items.push(item)\n return true;\n }\n\n dequeue(): T | false {\n // remove item from the beginning of the queue\n if(this.items.length > 0) {\n const item = this.items.shift()\n if(item === undefined) return false;\n return item;\n }\n return false;\n }\n\n next(): T | false {\n // dequeue and enqueue\n if(this.items.length > 0) {\n const item = this.items.shift()\n if(item) {\n this.items.push(item)\n return item\n }\n }\n return false;\n }\n\n // remove value while maintaining order\n removeAt( index: number) : T | false {\n if (index > -1 && index < this.items.length) {\n return this.items.splice(index, 1)[0];\n }else {\n return false;\n }\n }\n\n indexOf(item: T) : number {\n return this.items.indexOf(item);\n }\n\n remove(item: T) : T | false {\n const index = this.items.indexOf(item);\n if (index > -1) {\n return this.items.splice(index, 1)[0];\n }else {\n return false;\n }\n }\n\n peek(): T | false {\n return this.items[0]\n }\n\n printQueue() : T[] {\n return this.items;\n }\n\n // return array of items in the order they were added\n toArray() : T[] {\n return this.items;\n }\n\n // return object of items in the order they were added\n toObject() : object {\n let obj: { [key: string]: T } = {};\n this.items.forEach( (item, index) => {\n obj[index] = item;\n });\n return obj;\n }\n\n // get the size of the queue\n size() : number {\n return this.items.length;\n }\n\n // lenght of the queue\n length() : number {\n return this.items.length;\n }\n\n // check if queue is empty\n isEmpty() : boolean {\n return this.items.length === 0;\n }\n\n // clear the queue\n clear = () => this.items = [];\n\n // synonyms\n pop = this.dequeue;\n push = this.enqueue;\n shift = this.dequeue;\n unshift = this.enqueue;\n front = this.peek;\n end = this.next;\n}\n\nexport default Queue;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAM,MAAS;AAAA,EAGX,YAAa,QAAa,CAAC,GAAI;AAF/B,wBAAQ,SAAa,CAAC;AAiGtB;AAAA,iCAAQ,MAAM,KAAK,QAAQ,CAAC;AAG5B;AAAA,+BAAO,KAAK;AACZ,gCAAO,KAAK;AACZ,iCAAQ,KAAK;AACb,mCAAU,KAAK;AACf,iCAAQ,KAAK;AACb,+BAAM,KAAK;AAtGP,QAAG,MAAM,SAAS;AACd,WAAK,QAAQ;AAAA;AAEb,WAAK,QAAQ,CAAC;AAAA,EACtB;AAAA,EAEA,QAAQ,MAAS;AAEb,SAAK,MAAM,KAAK,IAAI;AACpB,WAAO;AAAA,EACX;AAAA,EAEA,UAAqB;AAEjB,QAAG,KAAK,MAAM,SAAS,GAAG;AACtB,YAAM,OAAO,KAAK,MAAM,MAAM;AAC9B,UAAG,SAAS,OAAW,QAAO;AAC9B,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AAAA,EAEA,OAAkB;AAEd,QAAG,KAAK,MAAM,SAAS,GAAG;AACtB,YAAM,OAAO,KAAK,MAAM,MAAM;AAC9B,UAAG,MAAM;AACL,aAAK,MAAM,KAAK,IAAI;AACpB,eAAO;AAAA,MACX;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA;AAAA,EAGA,SAAU,OAA2B;AACjC,QAAI,QAAQ,MAAM,QAAQ,KAAK,MAAM,QAAQ;AACzC,aAAO,KAAK,MAAM,OAAO,OAAO,CAAC,EAAE,CAAC;AAAA,IACxC,OAAM;AACF,aAAO;AAAA,IACX;AAAA,EACJ;AAAA,EAEA,QAAQ,MAAkB;AACtB,WAAO,KAAK,MAAM,QAAQ,IAAI;AAAA,EAClC;AAAA,EAEA,OAAO,MAAqB;AACxB,UAAM,QAAQ,KAAK,MAAM,QAAQ,IAAI;AACrC,QAAI,QAAQ,IAAI;AACZ,aAAO,KAAK,MAAM,OAAO,OAAO,CAAC,EAAE,CAAC;AAAA,IACxC,OAAM;AACF,aAAO;AAAA,IACX;AAAA,EACJ;AAAA,EAEA,OAAkB;AACd,WAAO,KAAK,MAAM,CAAC;AAAA,EACvB;AAAA,EAEA,aAAmB;AACf,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA,EAGA,UAAgB;AACZ,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA,EAGA,WAAoB;AAChB,QAAI,MAA4B,CAAC;AACjC,SAAK,MAAM,QAAS,CAAC,MAAM,UAAU;AACjC,UAAI,KAAK,IAAI;AAAA,IACjB,CAAC;AACD,WAAO;AAAA,EACX;AAAA;AAAA,EAGA,OAAgB;AACZ,WAAO,KAAK,MAAM;AAAA,EACtB;AAAA;AAAA,EAGA,SAAkB;AACd,WAAO,KAAK,MAAM;AAAA,EACtB;AAAA;AAAA,EAGA,UAAoB;AAChB,WAAO,KAAK,MAAM,WAAW;AAAA,EACjC;AAYJ;AAEA,IAAO,gBAAQ;","names":[]}