Page MenuHomec4science

index.js
No OneTemporary

File Metadata

Created
Sat, Feb 15, 08:55

index.js

import isNode from 'detect-node';
import BrowserMethod from './browser.js';
import NodeMethod from './node.js';
var USE_METHOD = isNode ? NodeMethod : BrowserMethod;
var LISTENERS = new Set();
var startedListening = false;
function startListening() {
if (startedListening) return;
startedListening = true;
USE_METHOD.add(runAll);
}
export function add(fn) {
startListening();
if (typeof fn !== 'function') throw new Error('Listener is no function');
LISTENERS.add(fn);
var addReturn = {
remove: function remove() {
return LISTENERS["delete"](fn);
},
run: function run() {
LISTENERS["delete"](fn);
return fn();
}
};
return addReturn;
}
export function runAll() {
var promises = [];
LISTENERS.forEach(function (fn) {
promises.push(fn());
LISTENERS["delete"](fn);
});
return Promise.all(promises);
}
export function removeAll() {
LISTENERS.clear();
}
export function getSize() {
return LISTENERS.size;
}
export default {
add: add,
runAll: runAll,
removeAll: removeAll,
getSize: getSize
};

Event Timeline