Skip to content

nskazki/mstorage

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

55 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

mstorage

npm i -S mstorage

Special serializer and deserializer for mstorage: mstorage-restore

import { KV } from 'mstorage'
import assert from 'assert'

var kv = new KV()
var key = { a: 'a' }
var val = [ 1, 2 ]
kv.set(key, val)

console.log(kv.has(key))
console.log(kv.hasByValue(val))
console.log(kv.get(key))
console.log(kv.getByValue(val))
import { Queue } from 'mstorage'
import assert from 'assert'

var q = new Queue()
var id1 = q.add({ 1: 1 })
var id2 = q.add({ 2: 2 })
q.toTail(id1)
var next = q.next()
assert.deepEqual(next, { 2: 2 })
import { HashVault } from 'mstorage'
import assert from 'assert'

var array = []
for (var index = 0; index !== 1e6; index++) 
    array.push({ 1: index })

var hv = new HashVault(array)
assert(hv.exists({ 1: 100 }))
assert(hv.exists({ 1: 10000 }))
assert(hv.exists({ 1: 10000000 }))

Methods

KV

Queue

HashVault

KV

Key-Value storage

drop - erase storage [πŸ›¨]

var kv = new KV()
kv.set('a', 1)
kv.drop()
assert.equal(kv.size(), 0)
var kv1 = new KV()
var kv2 = new KV()

kv1.set('a', 1)
kv2.copy(kv1)

assert.deepEqual(kv1.keys(), kv2.keys())

dump & restore [πŸ›¨]

var kv1 = new KV()
var kv2 = new KV()

kv1.set('a', 1)
var str = JSON.stringify(kv1.dump())
// or just call JSON.stringify(kv1)
kv2.restore(JSON.parse(str))
// WARNING! all null keys and values will be replaced to undefined

assert.deepEqual(kv1.keys(), kv2.keys())

keys - return list of keys [πŸ›¨]

var kv = new KV()
kv.set('a', 1)
assert.deepEqual(kv.keys(), [ 'a' ])

values - return list of values [πŸ›¨]

var kv = new KV()
kv.set('a', 1)
assert.deepEqual(kv.values(), [ 1 ])
var kv = new KV()
kv.set('a', 1)
assert(kv.has('a'))

hasByValue alias for exists [πŸ›¨]

var kv = new KV()
kv.set('a', 1)
assert(kv.hasByValue(1))
var kv = new KV()
kv.set('a', 1)
assert.equal(kv.get('a'), 1)

getByValue alias for id [πŸ›¨]

var kv = new KV()
kv.set('a', 1)
assert.equal(kv.getByValue(1), 'a')

set alias for add [πŸ›¨]

var kv = new KV()
kv.set('a', 1)
assert.equal(kv.get('a'), 1)
var kv = new KV()
kv.set('a', 1)
kv.del('a')
assert.equal(kv.size(), 0)

delByValue [πŸ›¨]

var kv = new KV()
kv.set('a', 1)
kv.delByValue(1)
assert.equal(kv.size(), 0)
var kv = new KV()
kv.set('a', 1)
assert.equal(kv.size(), 1)

Queue

var q = new Queue()
q.add(1)
q.drop()
assert.equal(q.size(), 0)
var q1 = new Queue()
var q2 = new Queue()

q1.add(1)
q2.copy(q1)

assert.deepEqual(q1.all(), q2.all())

dump & restore [πŸ›¨]

var q1 = new Queue()
var q2 = new Queue()

q1.add(1)
var str = JSON.stringify(q1.dump())
// or just call JSON.stringify(q1)
q2.restore(JSON.parse(str))
// WARNING! all null values will be replaced to undefined

assert.deepEqual(q1.all(), q2.all())

each alias for forEach [πŸ›¨]

var q = new Queue()
q.add(1)
q.add(2)
q.each(console.log)
var q = new Queue()
q.add(1)
q.add(2)
q.map(el => el+1)
assert.deepEqual(q.all(), [ 2, 3 ])
var q = new Queue()
q.add(1)
assert.equal(q.size(), 1)

replace [πŸ›¨]

var q = new Queue()
var id1 = q.add(1)
q.replace(id1, 2)
assert.equal(q.get(id1), 2)
var q = new Queue()
var id = q.add(1)
q.del(id)
assert.equal(q.size(), 0)

delByValue [πŸ›¨]

var q = new Queue()
q.add(1)
q.delByValue(1)
assert.equal(q.size(), 0)
var q = new Queue()
var id = q.add(1)
assert(q.has(id))

hasByValue alias for exists [πŸ›¨]

var q = new Queue()
q.add(1)
assert(q.hasByValue(1))
var q = new Queue()
var id = q.add(1)
assert.equal(q.get(id), 1)

getByValue alias for id [πŸ›¨]

var q = new Queue()
var id = q.add(1)
assert.equal(q.getByValue(1), id)
var q = new Queue()
q.add(1)
q.add(2)
assert.deepEqual(q.all(), [ 1, 2 ])

shuffle [πŸ›¨]

var q = new Queue()
q.add(1)
q.add(2)
console.log(q.shuffle())

next alias for shift [πŸ›¨]

var q = new Queue()
q.add(1)
q.add(2)
assert.equal(q.next(), 1)
assert.equal(q.next(), 2)
assert.equal(q.size(), 0)

last alias for pop [πŸ›¨]

var q = new Queue()
q.add(1)
q.add(2)
assert.equal(q.last(), 2)
assert.equal(q.last(), 1)
assert.equal(q.size(), 0)

toTail [πŸ›¨]

var q = new Queue()
var id1 = q.add(1)
var id2 = q.add(2)
q.toTail(id1)
assert.equal(q.next(), 2)

toHead [πŸ›¨]

var q = new Queue()
var id1 = q.add(1)
var id2 = q.add(2)
q.toHead(id2)
assert.equal(q.next(), 2)
var q = new Queue()
q.add(1)
assert.equal(q.size(), 1)

HashVault

storage of sorted hashes

var hv = new HashVault()
var array = [ 1, 2, 3, 4, 5 ]
hv.init(array)
assert.equal(hv.size(), array.length)
var hv = new HashVault()
hv.add(1)
hv.drop()
assert.equal(hv.size(), 0)

copy alias for restore [πŸ›¨]

var hv1 = new HashVault()
var hv2 = new HashVault()

hv1.add(1)
hv1.add(2)

hv2.copy(hv1)
assert.equal(hv1.size(), hv2.size())

dump & restore [πŸ›¨]

var hv1 = new HashVault()
var hv2 = new HashVault()

hv1.add(1)
hv1.add(2)

var str = JSON.stringify(hv1.dump())
// or just call JSON.stringify(hv1)
hv2.copy(JSON.parse(str))

assert.ok(hv2.exists(1))
assert.ok(hv2.exists(2))

getByValue alias for id [πŸ›¨]

var hv = new HashVault()
var id = hv.add(1)
assert.equal(hv.getByValue(1), id)
var hv = new HashVault()
hv.add(1)
assert.equal(hv.size(), 1)
var hv = new HashVault()
var id = hv.add(1)
hv.del(id)
assert.equal(hv.size(), 0)

delByValue [πŸ›¨]

var hv = new HashVault()
hv.add(1)
hv.delByValue(1)
assert.equal(hv.size(), 0)
var hv = new HashVault()
var id = hv.add(1)
assert(hv.has(id))

hasByValue alias for exists [πŸ›¨]

var hv = new HashVault()
hv.add(1)
assert(hv.hasByValue(1))
var hv = new HashVault()
hv.add(1)
assert.equal(hv.size(), 1)