Files
GNX-mailEnterprise/frontend/node_modules/unload/dist/lib/index.js
Iliyan Angelov c67067a2a4 Mail
2025-09-14 23:24:25 +03:00

69 lines
1.4 KiB
JavaScript

"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.add = add;
exports.runAll = runAll;
exports.removeAll = removeAll;
exports.getSize = getSize;
exports["default"] = void 0;
var _detectNode = _interopRequireDefault(require("detect-node"));
var _browser = _interopRequireDefault(require("./browser.js"));
var _node = _interopRequireDefault(require("./node.js"));
var USE_METHOD = _detectNode["default"] ? _node["default"] : _browser["default"];
var LISTENERS = new Set();
var startedListening = false;
function startListening() {
if (startedListening) return;
startedListening = true;
USE_METHOD.add(runAll);
}
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;
}
function runAll() {
var promises = [];
LISTENERS.forEach(function (fn) {
promises.push(fn());
LISTENERS["delete"](fn);
});
return Promise.all(promises);
}
function removeAll() {
LISTENERS.clear();
}
function getSize() {
return LISTENERS.size;
}
var _default = {
add: add,
runAll: runAll,
removeAll: removeAll,
getSize: getSize
};
exports["default"] = _default;