49 lines
890 B
JavaScript
49 lines
890 B
JavaScript
|
'use strict';
|
||
|
|
||
|
var EventEmitter = require('events').EventEmitter;
|
||
|
|
||
|
var sparklesNamespace = 'store@sparkles';
|
||
|
var defaultNamespace = 'default'
|
||
|
|
||
|
function getStore() {
|
||
|
var store = global[sparklesNamespace];
|
||
|
|
||
|
if (!store) {
|
||
|
Object.defineProperty(global, sparklesNamespace, {
|
||
|
value: {},
|
||
|
enumerable: false,
|
||
|
});
|
||
|
store = global[sparklesNamespace];
|
||
|
}
|
||
|
|
||
|
return store;
|
||
|
}
|
||
|
|
||
|
function getEmitter(namespace) {
|
||
|
var store = getStore();
|
||
|
|
||
|
namespace = namespace || defaultNamespace;
|
||
|
|
||
|
var ee = store[namespace];
|
||
|
|
||
|
if (!ee) {
|
||
|
ee = store[namespace] = new EventEmitter();
|
||
|
ee.setMaxListeners(0);
|
||
|
ee.remove = function remove() {
|
||
|
ee.removeAllListeners();
|
||
|
delete store[namespace];
|
||
|
};
|
||
|
}
|
||
|
|
||
|
return ee;
|
||
|
}
|
||
|
|
||
|
function exists(namespace) {
|
||
|
var store = getStore();
|
||
|
|
||
|
return !!store[namespace];
|
||
|
}
|
||
|
|
||
|
module.exports = getEmitter;
|
||
|
module.exports.exists = exists;
|