index.js 786 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. 'use strict';
  2. var EventEmitter = require('events').EventEmitter;
  3. var sparklesNamespace = 'store@sparkles';
  4. var defaultNamespace = 'default';
  5. function getStore(){
  6. var store = global[sparklesNamespace];
  7. if(!store){
  8. store = global[sparklesNamespace] = {};
  9. }
  10. return store;
  11. }
  12. function getEmitter(namespace){
  13. var store = getStore();
  14. namespace = namespace || defaultNamespace;
  15. var ee = store[namespace];
  16. if(!ee){
  17. ee = store[namespace] = new EventEmitter();
  18. ee.setMaxListeners(0);
  19. ee.remove = function remove(){
  20. ee.removeAllListeners();
  21. delete store[namespace];
  22. };
  23. }
  24. return ee;
  25. }
  26. function exists(namespace){
  27. var store = getStore();
  28. return !!(store[namespace]);
  29. }
  30. module.exports = getEmitter;
  31. module.exports.exists = exists;