ymlgen
Version:
A generator for YML/YAML files
48 lines • 1.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createCallbackGroup = void 0;
const createCallbackGroup = () => {
const callbacks = [];
let called = 0;
return {
size: () => callbacks.length,
called: () => called,
add(callback) {
callbacks.push(callback);
let active = true;
return () => {
if (!active) {
return;
}
active = false;
const index = callbacks.indexOf(callback);
if (index !== -1) {
callbacks.splice(index, 1);
}
};
},
clear() {
callbacks.length = 0;
},
call(...args) {
if (!callbacks.length) {
return;
}
// optimize performance
if (args.length > 2) {
callbacks.slice().forEach((callback) => callback(...args));
}
else if (args.length === 2) {
callbacks.slice().forEach((callback) => callback(args[0], args[1]));
}
else if (args.length === 1) {
callbacks.slice().forEach((callback) => callback(args[0]));
}
else {
callbacks.slice().forEach((callback) => callback());
}
},
};
};
exports.createCallbackGroup = createCallbackGroup;
//# sourceMappingURL=createCallbackGroup.js.map