UNPKG

@brozeph/mongoose-middleware

Version:

Middleware for mongoose that makes filtering, sorting, pagination and projection chainable and simple to apply

52 lines (41 loc) 1.63 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault"); var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property"); _Object$defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/typeof")); var _isArray = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/array/is-array")); var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys")); function mergeFilters(base, model) { (0, _keys["default"])(model).forEach(function (key) { if (!base[key]) { // base[key] is not present base[key] = model[key]; } else if ((0, _isArray["default"])(base[key])) { // base[key] is an array if ((0, _isArray["default"])(model[key])) { base[key] = base[key].concat(model[key]); } else { base[key].push(model[key]); } } else if ((0, _isArray["default"])(model[key])) { model[key].push(base[key]); base[key] = model[key]; } else if ((0, _typeof2["default"])(base[key]) !== 'object') { base[key] = [base[key], model[key]]; // turn into array } else { // base[key] is likely JSON if ((0, _typeof2["default"])(model[key]) === 'object') { base[key] = mergeFilters(base[key], model[key]); } // if base[key] is an object, and model[key], ignore } }); return base; } var _default = { mergeFilters: mergeFilters }; exports["default"] = _default; //# sourceMappingURL=utils.js.map