1 | import Promise from 'bluebird';
|
2 |
|
3 | import { clone, unapply, pipe, omit, flip, props } from 'ramda';
|
4 |
|
5 | export const ValueStore = () => {
|
6 | let val = null;
|
7 |
|
8 | return {
|
9 | get: () => clone(val),
|
10 | set: newVal => val = newVal
|
11 | };
|
12 | };
|
13 |
|
14 | export const ValueStoreMap = () => {
|
15 | const val = new Map();
|
16 |
|
17 | return {
|
18 | get: key => clone(val.get(key)),
|
19 | set: (key, newVal) => val.set(key, newVal)
|
20 | };
|
21 | };
|
22 |
|
23 | export const TimeOffset = ValueStore();
|
24 | export const dcList = ValueStoreMap();
|
25 |
|
26 | const flatProps = pipe(flip(props), unapply);
|
27 |
|
28 | export const AsyncStorage = () => {
|
29 | let store = {};
|
30 |
|
31 | const flatGet = flatProps(store);
|
32 | const set = obj => store = Object.assign({}, store, obj);
|
33 | const remove = keys => store = omit(keys, store);
|
34 | const clr = () => store = {};
|
35 | return {
|
36 | get: (...keys) => Promise.resolve(flatGet(...keys)),
|
37 | set: obj => Promise.resolve(set(obj)),
|
38 | remove: (...keys) => Promise.resolve(remove(keys)),
|
39 | clear: () => Promise.resolve(clr()),
|
40 | noPrefix: () => ({})
|
41 | };
|
42 | };
|
43 |
|
44 | export const PureStorage = AsyncStorage(); |
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
|
\ | No newline at end of file |