index.js 794 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;