Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download
Views: 39538
1
###
2
Very, very simple key:value store.
3
4
The keys can be arbitrary json-able objects.
5
A frozen copy of the object is saved in the key:value store,
6
so it won't get mutated.
7
###
8
9
json = require('json-stable-stringify')
10
11
exports.key_value_store = ->
12
return new KeyValueStore()
13
14
class KeyValueStore
15
constructor: ->
16
@_data = {}
17
18
set: (key, value) =>
19
if not @_data?
20
throw Error("closed")
21
if value.freeze? # supported by modern browsers
22
value = value.freeze() # so doesn't get mutated
23
@_data[json(key)] = value
24
25
get: (key) =>
26
if not @_data?
27
throw Error("closed")
28
@_data[json(key)]
29
30
delete: (key) =>
31
if not @_data?
32
throw Error("closed")
33
delete @_data[json(key)]
34
35
close: =>
36
delete @_data
37