/// var plugins = { beautylog: require("beautylog"), Q: require("q"), through: require("through2") }; module.exports = function (functionsToExecuteArg, executionModeArg) { if (executionModeArg === void 0) { executionModeArg = 'forEach'; } //important vars var executionMode = executionModeArg; //can be forEach or atEnd var functionsToExecute = functionsToExecuteArg; var promiseArray = []; var runFunction = function (functionArg) { var returnValue = functionArg(); if (typeof returnValue !== "undefined" && typeof returnValue.then !== "undefined") { promiseArray.push(returnValue); } }; var checkAndRunFunction = function () { if (typeof functionsToExecute === "function") { runFunction(functionsToExecute); } else if (Array.isArray(functionsToExecute)) { for (var anyFunction in functionsToExecute) { runFunction(functionsToExecute[anyFunction]); } } else { plugins.beautylog.error('gulp-callfunction: something is strange with the given arguments'); } return plugins.Q.all(promiseArray); }; var hasExecutedOnce = false; var forEach = function (file, enc, cb) { switch (executionMode) { case "forEach": checkAndRunFunction().then(function () { cb(null, file); }); break; case "forFirst": !hasExecutedOnce ? checkAndRunFunction().then(function () { cb(null, file); }) : cb(null, file); hasExecutedOnce = true; break; case "atEnd": cb(null, file); break; default: break; } }; var atEnd = function (cb) { if (executionMode === "atEnd") { checkAndRunFunction().then(function () { cb(); }); } else { cb(); } }; return plugins.through.obj(forEach, atEnd); }; //# sourceMappingURL=data:application/json;base64,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SUFBSSxDQUFDO2dCQUN2QixFQUFFLEVBQUUsQ0FBQztZQUNULENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ0osRUFBRSxFQUFFLENBQUM7UUFDVCxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBQ0YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBQyxLQUFLLENBQUMsQ0FBQztBQUM5QyxDQUFDLENBQUMiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwidHlwaW5ncy9tYWluLmQudHNcIiAvPlxuXG52YXIgcGx1Z2lucyA9IHtcbiAgICBiZWF1dHlsb2c6IHJlcXVpcmUoXCJiZWF1dHlsb2dcIiksXG4gICAgUTogcmVxdWlyZShcInFcIiksXG4gICAgdGhyb3VnaDogcmVxdWlyZShcInRocm91Z2gyXCIpXG59XG5cblxuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZ1bmN0aW9uc1RvRXhlY3V0ZUFyZzphbnl8YW55W10sZXhlY3V0aW9uTW9kZUFyZzpzdHJpbmcgPSAnZm9yRWFjaCcpIHtcbiAgICAvL2ltcG9ydGFudCB2YXJzXG4gICAgbGV0IGV4ZWN1dGlvbk1vZGUgPSBleGVjdXRpb25Nb2RlQXJnOyAvL2NhbiBiZSBmb3JFYWNoIG9yIGF0RW5kXG4gICAgbGV0IGZ1bmN0aW9uc1RvRXhlY3V0ZSA9IGZ1bmN0aW9uc1RvRXhlY3V0ZUFyZztcbiAgICBsZXQgcHJvbWlzZUFycmF5ID0gW107XG4gICAgbGV0IHJ1bkZ1bmN0aW9uID0gZnVuY3Rpb24oZnVuY3Rpb25Bcmcpe1xuICAgICAgICBsZXQgcmV0dXJuVmFsdWUgPSBmdW5jdGlvbkFyZygpO1xuICAgICAgICBpZiAodHlwZW9mIHJldHVyblZhbHVlICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiByZXR1cm5WYWx1ZS50aGVuICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICBwcm9taXNlQXJyYXkucHVzaChyZXR1cm5WYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgbGV0IGNoZWNrQW5kUnVuRnVuY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZnVuY3Rpb25zVG9FeGVjdXRlID09PSBcImZ1bmN0aW9uXCIgKSB7XG4gICAgICAgICAgICBydW5GdW5jdGlvbihmdW5jdGlvbnNUb0V4ZWN1dGUpO1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZnVuY3Rpb25zVG9FeGVjdXRlKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgYW55RnVuY3Rpb24gaW4gZnVuY3Rpb25zVG9FeGVjdXRlKSB7XG4gICAgICAgICAgICAgICAgcnVuRnVuY3Rpb24oZnVuY3Rpb25zVG9FeGVjdXRlW2FueUZ1bmN0aW9uXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwbHVnaW5zLmJlYXV0eWxvZy5lcnJvcignZ3VscC1jYWxsZnVuY3Rpb246IHNvbWV0aGluZyBpcyBzdHJhbmdlIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwbHVnaW5zLlEuYWxsKHByb21pc2VBcnJheSk7XG4gICAgfTtcblxuICAgIGxldCBoYXNFeGVjdXRlZE9uY2UgPSBmYWxzZTtcbiAgICBsZXQgZm9yRWFjaCA9IGZ1bmN0aW9uIChmaWxlLCBlbmMsIGNiKSB7IC8vdGhlIGZvckVhY2ggZnVuY3Rpb24gaXMgY2FsbGVkIGZvciBldmVyeSBjaHVua1xuICAgICAgICBzd2l0Y2ggKGV4ZWN1dGlvbk1vZGUpe1xuICAgICAgICAgICAgY2FzZSBcImZvckVhY2hcIjpcbiAgICAgICAgICAgICAgICBjaGVja0FuZFJ1bkZ1bmN0aW9uKCkudGhlbihmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICBjYihudWxsLCBmaWxlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJmb3JGaXJzdFwiOlxuICAgICAgICAgICAgICAgICFoYXNFeGVjdXRlZE9uY2UgPyBjaGVja0FuZFJ1bkZ1bmN0aW9uKCkudGhlbihmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICBjYihudWxsLCBmaWxlKTtcbiAgICAgICAgICAgICAgICB9KSA6IGNiKG51bGwsIGZpbGUpO1xuICAgICAgICAgICAgICAgIGhhc0V4ZWN1dGVkT25jZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiYXRFbmRcIjpcbiAgICAgICAgICAgICAgICBjYihudWxsLCBmaWxlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgbGV0IGF0RW5kID0gZnVuY3Rpb24oY2IpIHtcbiAgICAgICAgaWYgKGV4ZWN1dGlvbk1vZGUgPT09IFwiYXRFbmRcIikge1xuICAgICAgICAgICAgY2hlY2tBbmRSdW5GdW5jdGlvbigpLnRoZW4oZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBjYigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYigpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gcGx1Z2lucy50aHJvdWdoLm9iaihmb3JFYWNoLGF0RW5kKTtcbn07XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=