command-queue-module
Version:
Create command queue proxies for modules
29 lines (22 loc) • 646 B
JavaScript
(function() {
function createCommandQueueModule(methodNames, load) {
const callQueue = [];
const proxyModule = {};
function defineMethod(name) {
proxyModule[name] = function() {
callQueue.push([name, this, [].slice.call(arguments)]);
};
}
methodNames.forEach(defineMethod);
function invoke(actualModule) {
function invokeCommand([name, _this, args]) {
actualModule[name].apply(_this, args);
}
callQueue.push = invokeCommand;
callQueue.forEach(invokeCommand);
}
load(invoke);
return proxyModule;
}
module.exports = createCommandQueueModule;
})();