@rutter/bottleneck
Version:
Distributed task scheduler and rate limiter
39 lines (37 loc) • 941 B
text/coffeescript
class DLList
constructor: (, ) ->
= null
= null
= 0
push: (value) ->
++
?()
node = { value, prev: , next: null }
if ?
.next = node
= node
else = = node
undefined
shift: () ->
if not ? then return
else
--
?()
value = .value
if ( = .next)?
.prev = null
else
= null
value
first: () -> if ? then .value
getArray: () ->
node =
while node? then (ref = node; node = node.next; ref.value)
forEachShift: (cb) ->
node =
while node? then (cb node; node = )
undefined
debug: () ->
node =
while node? then (ref = node; node = node.next; { value: ref.value, prev: ref.prev?.value, next: ref.next?.value })
module.exports = DLList