med-notes/.pnpm-store/v10/files/0b/e4e9e09799b6acfd1b3e5a02265c2bb49d0e0770370befb80da5c79aefaad18c18e333e8bae445290fae75c5c94f1c09f7277b43364d9a6af3efed311e8826
2025-06-26 03:35:15 +00:00

83 lines
946 B
Plaintext

/**
* Store
*/
var evt = {};
/**
* Expose
*/
module.exports = {
/**
* On
*
* @param {String} key
* @param {Function} fn
* @api public
*/
on: function(key, fn) {
evt[key] || (evt[key] = []);
evt[key].push(fn);
},
/**
* Off
*
* @param {String} key
* @param {Function} fn
* @api public
*/
off: function(key, fn) {
var val = evt[key];
if(!val) return;
var i = val.indexOf(fn);
if(-1 == i) return;
val.splice(i, 1);
},
/**
* One
*
* @param {String} key
* @param {Mixed} val
* @api public
*/
one: function(key, val) {
var ref = evt[key];
if(!ref || !ref.length) return;
ref[0](val);
},
/**
* Emit
*
* @param {String} key
* @param {Mixed} val
* @api public
*/
emit: function(key, val) {
if(!evt[key]) return;
evt[key].forEach(emit);
function emit(fn) {
fn(val);
}
}
};