realm-utils
Version:
Realm-js has a set of functionality that helps solving many problems or impediments related to Promises. Utilities live in this repository, apart from realm-js library. Typings included ### Install
94 lines (88 loc) • 4.19 kB
JavaScript
;
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
var utils_1 = require('./utils');
exports.Each = function (argv, cb) {
return new Promise(function (resolve, reject) {
var results = [];
var isObject = utils_1.Utils.isPlainObject(argv);
var isMap = utils_1.Utils.isMap(argv);
var isSet = utils_1.Utils.isSet(argv);
if (!argv) {
return resolve(results);
}
if (isMap || isSet) {
var _ret = function () {
var iterator = void 0;
if (isMap) {
var map = argv;
iterator = map.entries();
}
if (isSet) {
var set = argv;
iterator = set.values();
}
var index = -1;
var iterateMap = function iterateMap(data) {
index++;
if (data.done) {
return resolve(results);
}
var k = void 0,
v = void 0,
res = void 0;
if (isMap) {
var _data$value = _slicedToArray(data.value, 2);
k = _data$value[0];
v = _data$value[1];
res = cb.apply(undefined, [v, k]);
}
if (isSet) {
v = data.value;
res = cb(v);
}
if (utils_1.Utils.isPromise(res)) {
res.then(function (a) {
results.push(a);
iterateMap(iterator.next());
}).catch(reject);
} else {
results.push(res);
iterateMap(iterator.next());
}
};
iterateMap(iterator.next());
return {
v: void 0
};
}();
if ((typeof _ret === "undefined" ? "undefined" : _typeof(_ret)) === "object") return _ret.v;
}
var dataLength = isObject ? Object.keys(argv).length : argv.length;
var index = -1;
var iterate = function iterate() {
index++;
if (index < dataLength) {
var key = isObject ? Object.keys(argv)[index] : index;
var value = isObject ? argv[key] : argv[index];
if (utils_1.Utils.isPromise(value)) {
value.then(function (data) {
results.push(data);iterate();
}).catch(reject);
} else {
var res = cb.apply(undefined, [value, key]);
if (utils_1.Utils.isPromise(res)) {
res.then(function (a) {
results.push(a);
iterate();
}).catch(reject);
} else {
results.push(res);
iterate();
}
}
} else return resolve(results);
};
return iterate();
});
};