1.0.0 • Published 3 years ago

nv-data-stack v1.0.0

Weekly downloads
4
License
ISC
Repository
-
Last release
3 years ago

nv-data-stack

  • nv-data-stack is very simple util of STACK List
  • only support 5 action : push/pop/push_some/pop_some/clear
  • just a array-like object, the only different is it attach event for each-action
  • two mode: fixed / unlimited
  • in fixed: push will trigger auto-drop when reach-max-size, simulate the stack-overflow
  • in unlimited, will NOT trigger drop,others same
  • fixed performance is better,coz it only USE Array push when INIT

install

  • npm install nv-data-stack

usage

const {Fixed,Unlimited,EVENT_DICT} = require("nv-data-stack")

fixed mode

const {Fixed,EVENT_DICT} = require("nv-data-stack")
const {E,ET} = require("nv-facutil-event");

###init

//oet is for notification

var oet = new ET()
oet.addEventListener(EVENT_DICT.push,(r)=>{console.log("push one: ",r,r.data)})
oet.addEventListener(EVENT_DICT.push_some,(r)=>{console.log("push some: ",r,r.data)})
oet.addEventListener(EVENT_DICT.drop,(r)=>{console.log("dropped one: ",r,r.data)})
oet.addEventListener(EVENT_DICT.drop_some,(r)=>{console.log("dropped some: ",r,r.data)})

var fixed = new Fixed(6,oet)

//iet is for feedback from who use the pop/pop_some 
fixed.iet.addEventListener(EVENT_DICT.pop,(r)=>{console.log("popped one: ",r,r.data)})
fixed.iet.addEventListener(EVENT_DICT.pop_some,(r)=>{console.log("popped some: ",r,r.data)})

> fixed.max_size
6
> fixed.length
0
>    

push

>     fixed.push('A')
push one:  E {
  type: 'push',
  defaultPrevented: false,
  cancelable: false,
  timeStamp: 10950.433631896973
} A
undefined
>     fixed.push_some('B','C','D','E')
push some:  E {
  type: 'push_some',
  defaultPrevented: false,
  cancelable: false,
  timeStamp: 12509.81013584137
} [ 'B', 'C', 'D', 'E' ]
undefined
> fixed
[ 'A', 'B', 'C', 'D', 'E' ]
>

fixed.push('F')
fixed.length
> fixed.push('G')
dropped one:  E {
  type: 'drop',
  defaultPrevented: false,
  cancelable: false,
  timeStamp: 73309.54272389412
} G
undefined
> fixed
[ 'A', 'B', 'C', 'D', 'E', 'F' ]
> fixed.dropped
'G'
>

>     fixed.push_some('I','H')
dropped some:  E {
  type: 'drop_some',
  defaultPrevented: false,
  cancelable: false,
  timeStamp: 98528.9359588623
} [ 'I', 'H' ]
push some:  E {
  type: 'push_some',
  defaultPrevented: false,
  cancelable: false,
  timeStamp: 98532.67016887665
} [ 'I', 'H' ]
undefined
>     fixed.dropped
[ 'I', 'H' ]
>     fixed
[ 'A', 'B', 'C', 'D', 'E', 'F' ]
>

pop

>     fixed.pop()
popped one:  E {
  type: 'pop',
  defaultPrevented: false,
  cancelable: false,
  timeStamp: 119138.81831097603
} F
'F'
>     fixed
[ 'A', 'B', 'C', 'D', 'E' ]
>

>     fixed.pop_some(2)
popped some:  E {
  type: 'pop_some',
  defaultPrevented: false,
  cancelable: false,
  timeStamp: 134834.49794387817
} [ 'D', 'E' ]
[ 'D', 'E' ]
>     fixed
[ 'A', 'B', 'C' ]
>

clear

fixed.clear()
> fixed.lefted_length
6
> fixed
[]
> fixed.length
0
>

unlimited mode

const {Unlimited,EVENT_DICT} = require("nv-data-stack")
const {E,ET} = require("nv-facutil-event");

###init

//oet is for notification 
var oet = new ET()
oet.addEventListener(EVENT_DICT.push,(r)=>{console.log("push one: ",r,r.data)})
oet.addEventListener(EVENT_DICT.push_some,(r)=>{console.log("push some: ",r,r.data)})


var unlimited = new Unlimited(oet)

//iet is for feedback 
unlimited.iet.addEventListener(EVENT_DICT.pop,(r)=>{console.log("popped one: ",r,r.data)})
unlimited.iet.addEventListener(EVENT_DICT.pop_some,(r)=>{console.log("popped some: ",r,r.data)})

push

unlimited.push('A')
push one:  E {
  type: 'push',
  defaultPrevented: false,
  cancelable: false,
  timeStamp: 19640.83587384224
} A

unlimited.push_some('B','C','D')
push some:  E {
  type: 'push_some',
  defaultPrevented: false,
  cancelable: false,
  timeStamp: 38873.77540683746
} [ 'B', 'C', 'D' ]

> unlimited
[ 'A', 'B', 'C', 'D' ]
>

pop

unlimited.pop();
popped one:  E {
  type: 'pop',
  defaultPrevented: false,
  cancelable: false,
  timeStamp: 75995.04537796974
} D
'D'

unlimited.pop_some(2)
popped some:  E {
  type: 'pop_some',
  defaultPrevented: false,
  cancelable: false,
  timeStamp: 94956.76220583916
} [ 'B', 'C' ]
[ 'B', 'C' ]
>

> unlimited
[ 'A' ]
>

clear

> unlimited.clear()
undefined
> unlimited
[]
>

METHODS

fixed

fixed.clear                 fixed.constructor           fixed.dropped
fixed.get_item              fixed.iet                   fixed.lefted_length
fixed.length                fixed.lst_index             fixed.max_size
fixed.oet                   fixed.pop                   fixed.pop_some
fixed.push                  fixed.push_some
fixed[Symbol.iterator]

unlimited

unlimited.clear                 unlimited.constructor           unlimited.get_item
unlimited.iet                   unlimited.length                unlimited.lst_index
unlimited.oet                   unlimited.pop                   unlimited.pop_some
unlimited.push                  unlimited.push_some
unlimited[Symbol.iterator]

LICENSE

  • ISC