UNPKG

mobdb

Version:

MarsDB is a lightweight client-side MongoDB-like database, Promise based, written in ES6

60 lines (44 loc) 1.78 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.joinAll = undefined; var _checkTypes = require('check-types'); var _checkTypes2 = _interopRequireDefault(_checkTypes); var _map2 = require('fast.js/map'); var _map3 = _interopRequireDefault(_map2); var _bind2 = require('fast.js/function/bind'); var _bind3 = _interopRequireDefault(_bind2); var _invariant = require('invariant'); var _invariant2 = _interopRequireDefault(_invariant); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var joinAll = exports.joinAll = { method: function method(joinFn) { (0, _invariant2.default)(typeof joinFn === 'function', 'joinAll(...): argument must be a function'); this._addPipeline('joinAll', joinFn); return this; }, process: function process(docs, pipeObj, cursor) { var i = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0; var len = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; var updatedFn = cursor._propagateUpdate ? (0, _bind3.default)(cursor._propagateUpdate, cursor) : function () {}; var res = pipeObj.value(docs, updatedFn, i, len); res = _checkTypes2.default.array(res) ? res : [res]; res = (0, _map3.default)(res, function (val) { var cursorPromise = void 0; if (val && val.joinAll) { // instanceof Cursor cursorPromise = val.exec(); } else if (_checkTypes2.default.object(val) && val.cursor && val.then) { cursorPromise = val; } if (cursorPromise) { cursor._trackChildCursorPromise(cursorPromise); } return cursorPromise || val; }); return Promise.all(res).then(function () { return docs; }); } };