vue-app-sdk
Version:
47 lines (46 loc) • 2.05 kB
JavaScript
;
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
const _LodashWrapper = require("./_LodashWrapper.cjs");
const _flatRest = require("./_flatRest.cjs");
const _getData = require("./_getData.cjs");
const _getFuncName = require("./_getFuncName.cjs");
const isArray = require("./isArray.cjs");
const _isLaziable = require("./_isLaziable.cjs");
var FUNC_ERROR_TEXT = "Expected a function";
var WRAP_CURRY_FLAG = 8, WRAP_PARTIAL_FLAG = 32, WRAP_ARY_FLAG = 128, WRAP_REARG_FLAG = 256;
function createFlow(fromRight) {
return _flatRest.default(function(funcs) {
var length = funcs.length, index = length, prereq = _LodashWrapper.default.prototype.thru;
while (index--) {
var func = funcs[index];
if (typeof func != "function") {
throw new TypeError(FUNC_ERROR_TEXT);
}
if (prereq && !wrapper && _getFuncName.default(func) == "wrapper") {
var wrapper = new _LodashWrapper.default([], true);
}
}
index = wrapper ? index : length;
while (++index < length) {
func = funcs[index];
var funcName = _getFuncName.default(func), data = funcName == "wrapper" ? _getData.default(func) : void 0;
if (data && _isLaziable.default(data[0]) && data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && !data[4].length && data[9] == 1) {
wrapper = wrapper[_getFuncName.default(data[0])].apply(wrapper, data[3]);
} else {
wrapper = func.length == 1 && _isLaziable.default(func) ? wrapper[funcName]() : wrapper.thru(func);
}
}
return function() {
var args = arguments, value = args[0];
if (wrapper && args.length == 1 && isArray.default(value)) {
return wrapper.plant(value).value();
}
var index2 = 0, result = length ? funcs[index2].apply(this, args) : value;
while (++index2 < length) {
result = funcs[index2].call(this, result);
}
return result;
};
});
}
exports.default = createFlow;