ts-prime
Version:
A utility library for JavaScript and Typescript.
48 lines (47 loc) • 1.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var _reduceLazy_1 = require("./_reduceLazy");
var purry_1 = require("./purry");
function flattenDeep() {
return purry_1.purry(_flattenDeep, arguments, flattenDeep.lazy);
}
exports.flattenDeep = flattenDeep;
function _flattenDeep(items) {
return _reduceLazy_1._reduceLazy(items, flattenDeep.lazy());
}
function _flattenDeepValue(value) {
if (!Array.isArray(value)) {
return value;
}
var ret = [];
value.forEach(function (item) {
if (Array.isArray(item)) {
ret.push.apply(ret, flattenDeep(item));
}
else {
ret.push(item);
}
});
return ret;
}
(function (flattenDeep) {
function lazy() {
return function (value) {
var next = _flattenDeepValue(value);
if (Array.isArray(next)) {
return {
done: false,
hasNext: true,
hasMany: true,
next: next,
};
}
return {
done: false,
hasNext: true,
next: next,
};
};
}
flattenDeep.lazy = lazy;
})(flattenDeep = exports.flattenDeep || (exports.flattenDeep = {}));