-
Notifications
You must be signed in to change notification settings - Fork 86
/
getter.js
41 lines (30 loc) · 809 Bytes
/
getter.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import {merge} from './merge'
import {pick} from './pick'
import {type} from './type'
let holder = {}
/**
* Pass string to get value
* Pass array to get object of values
* Pass undefined to get all data
*/
export function getter(key) {
const typeKey = type(key)
if (typeKey === 'String') return holder[key]
if (typeKey === 'Array') return pick(key, holder)
return holder
}
export function setter(maybeKey, maybeValue) {
const typeKey = type(maybeKey)
const typeValue = type(maybeValue)
if (typeKey === 'String') {
if (typeValue === 'Function') {
return (holder[maybeKey] = maybeValue(holder[maybeKey]))
}
return (holder[maybeKey] = maybeValue)
}
if (typeKey !== 'Object') return
holder = merge(holder, maybeKey)
}
export function reset() {
holder = {}
}