forked from bendrucker/weakmap-event
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
40 lines (32 loc) · 957 Bytes
/
index.js
File metadata and controls
40 lines (32 loc) · 957 Bytes
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
'use strict'
var Event = require('geval/event')
var createStore = require('weakmap-shim/create-store')
var createHashListener = require('./object')
var createArrayListener = require('./array')
module.exports = WeakmapEvent
function WeakmapEvent () {
var store = createStore()
listen.toHash = createHashListener(listen)
listen.toArray = createArrayListener(listen)
return {
broadcast,
listen
}
function broadcast (obj, value) {
if (arguments.length === 1) {
throw new Error('WeakmapEvent#broadcast expects arguments (obj, value)')
}
return getEvent(obj).broadcast(value, obj)
}
function listen (obj, fn) {
if (arguments.length === 1) {
throw new Error('WeakmapEvent#listen expects arguments (obj, listen)')
}
return getEvent(obj).listen(fn)
}
function getEvent (obj) {
var eventStore = store(obj)
eventStore.event = eventStore.event || Event()
return eventStore.event
}
}