#Spinal Queue Spec This specification declares the interface for the "spinal" queue in `PowerQueue`. We allready have two implementations the [MicroQueue](https://github.com/zcfs/Meteor-micro-queue) and [ReactiveList](https://github.com/zcfs/Meteor-reactive-list) #SpinalQueue Provides a simple reactive list interface #### new SpinalQueue(lifo)  Anywhere #### - __Arguments__ * __lifo__ *{boolean}* Set the order of the queue default is `fifo` - Example: ```js var list = new SpinalQueue(); list.insert(1, { text: 'Hello id: 1' }); list.insert(2, { text: 'Hello id: 2' }); list.insert(3, { text: 'Hello id: 3' }); list.update(2, { text: 'Updated 2'}); list.remove(1); list.forEach(function(value, key) { console.log('GOT: ' + value.text); }, true); // Set noneReactive = true, default behaviour is reactive // Return from Template: Template.hello.list = function() { return list.fetch(); }; ``` - #### *SpinalQueue*.length()  Anywhere #### - *This method __length__ is defined in `SpinalQueue`* __Returns__ *{number}* __(is reactive)__ Length of the reactive list - #### *SpinalQueue*.reset()  Anywhere #### - *This method __reset__ is defined in `SpinalQueue`* - #### *SpinalQueue*.update(key, value)  Anywhere #### - *This method __update__ is defined in `SpinalQueue`* __Arguments__ * __key__ *{string|number}* Key to update * __value__ *{any}* Update with this value > Note: Method is currently not used by `PowerQueue` - #### *SpinalQueue*.insert(key, value)  Anywhere #### - *This method __insert__ is defined in `SpinalQueue`* __Arguments__ * __key__ *{string|number}* Key to insert * __value__ *{any}* Insert item with this value - #### *SpinalQueue*.remove(key)  Anywhere #### - *This method __remove__ is defined in `SpinalQueue`* __Arguments__ * __key__ *{string|number}* Key to remove - #### *SpinalQueue*.getLastItem()  Anywhere #### - *This method __getLastItem__ is defined in `SpinalQueue`* __Returns__ *{any}* Pops last item from the list - removes the item from the list > Note: Method is currently not used by `PowerQueue` - #### *SpinalQueue*.getFirstItem()  Anywhere #### - *This method __getFirstItem__ is defined in `SpinalQueue`* __Returns__ *{any}* Pops first item from the list - removes the item from the list #### *SpinalQueue*.forEach(f, [noneReactive], [reverse])  Anywhere #### - *This method __forEach__ is defined in `SpinalQueue`* __Arguments__ * __f__ *{function}* Callback `funciton(value, key)` * __noneReactive__ *{boolean}* (Optional = false) Set true if want to disable reactivity - #### *SpinalQueue*.forEachReverse(f, [noneReactive])  Anywhere #### - *This method __forEachReverse__ is defined in `SpinalQueue`* __Arguments__ * __f__ *{function}* Callback `funciton(value, key)` * __noneReactive__ *{boolean}* (Optional = false) Set true if want to disable reactivity - #### *SpinalQueue*.fetch([noneReactive])  Anywhere #### - *This method __fetch__ is defined in `SpinalQueue`* __Arguments__ * __noneReactive__ *{boolean}* (Optional = false) Set true if want to disable reactivity - __Returns__ *{array}* __(is reactive)__ List of items -