{"version":3,"sources":["jsdelivr-header.js","/npm/@enkidevs/mongoose-cursor-pagination@1.0.1/lib/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aAEA,OAAO,eAAe,QAAS,aAAc,CAC3C,OAAO,IAGT,IAAI,SAAW,OAAO,QAAU,SAAU,GAAU,IAAK,IAAI,EAAI,EAAG,EAAI,UAAU,OAAQ,IAAK,CAAE,IAAI,EAAS,UAAU,GAAI,IAAK,IAAI,KAAO,EAAc,OAAO,UAAU,eAAe,KAAK,EAAQ,KAAQ,EAAO,GAAO,EAAO,GAAU,CAAE,OAAO,CAAQ,EAG/P,SAAS,iBAAiB,EAAQ,GAGhC,IAAI,IAFJ,EAAgB,GAAiB,CAAC,GAEJ,UAAY,EACtC,GAAY,EAAc,UAAY,IAEtC,EAAiB,CACnB,IAAK,EAAc,KAAO,MAC1B,KAAM,EAAc,OAAQ,EAC5B,OAAQ,EAAc,OAAS,GAC/B,KAAM,CAAC,GAGT,EAAO,QAAQ,SAAW,SAAU,EAAO,EAAS,GAClD,EAAQ,EAAQ,SAAS,CAAC,EAAG,GAAS,CAAC,GACvC,EAAU,GAAW,CAAC,GACd,OAAS,EAAQ,OAAS,EAAe,QACjD,EAAU,SAAS,CAAC,EAAG,EAAgB,IAE3B,MAAQ,GAAY,EAAQ,MAAQ,KAC9C,EAAQ,MAAQ,EAAe,OAGjC,IAAI,EAAW,EACX,EAAM,EAAS,IACf,EAAS,EAAS,OAClB,EAAW,EAAS,SACpB,EAAO,EAAS,KAChB,EAAQ,EAAS,MACjB,EAAO,EAAS,KAEhB,GAAU,GAEV,EAAQ,eAAiB,EAAQ,gBACnC,EAAM,GAAO,CAAC,EAEV,EAAQ,cACV,EAAM,GAAO,CAAE,IAAK,EAAQ,cAExB,EAAK,GAAO,IACd,EAAK,IAAQ,EACb,GAAU,KAGZ,EAAM,GAAO,CAAE,IAAK,EAAQ,eAExB,EAAK,IAAQ,IACf,EAAK,GAAO,EACZ,GAAU,KAKhB,IAAI,EAAU,KAAK,OAAO,MAAM,GAAO,OAAO,GAAQ,KAAK,GAAM,MAAM,EAAQ,GAAG,KAAK,GAQvF,OANI,GACF,GAAG,OAAO,GAAU,SAAQ,SAAU,GACpC,OAAO,EAAQ,SAAS,EAC1B,IAGK,IAAI,SAAQ,SAAU,EAAS,GACpC,OAAO,EAAQ,MAAK,SAAU,EAAO,GACnC,GAAI,EAOF,MANwB,mBAAb,GACT,cAAa,WACX,OAAO,EAAS,EAClB,IAGK,EAAO,GAIhB,IAAI,GADJ,EAAQ,GAAS,IACG,SAAW,EAAQ,EAEnC,GACF,EAAM,MAKR,IAAI,EAAU,CACZ,MAHF,EAAQ,EAAU,EAAM,UAAY,EAIlC,QAAS,GASX,MANwB,mBAAb,GACT,cAAa,WACX,OAAO,EAAS,KAAM,EACxB,IAGK,EAAQ,EACjB,GACF,GACF,CACF,CAlGA,QAAQ,QAAU","file":"/npm/@enkidevs/mongoose-cursor-pagination@1.0.1/lib/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@enkidevs/mongoose-cursor-pagination@1.0.1/lib/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = paginationPlugin;\nfunction paginationPlugin(schema, pluginOptions) {\n  pluginOptions = pluginOptions || {};\n\n  var minLimit = +pluginOptions.minLimit || 1;\n  var maxLimit = +pluginOptions.maxLimit || 100;\n\n  var defaultOptions = {\n    key: pluginOptions.key || '_id',\n    lean: pluginOptions.lean || false,\n    limit: +pluginOptions.limit || 20,\n    sort: {}\n  };\n\n  schema.statics.paginate = function (query, options, callback) {\n    query = query ? _extends({}, query) : {};\n    options = options || {};\n    options.limit = +options.limit || defaultOptions.limit;\n    options = _extends({}, defaultOptions, options);\n\n    if (options.limit > maxLimit || options.limit < minLimit) {\n      options.limit = defaultOptions.limit;\n    }\n\n    var _options = options,\n        key = _options.key,\n        select = _options.select,\n        populate = _options.populate,\n        lean = _options.lean,\n        limit = _options.limit,\n        sort = _options.sort;\n\n    var reverse = false;\n\n    if (options.startingAfter || options.endingBefore) {\n      query[key] = {};\n\n      if (options.endingBefore) {\n        query[key] = { $lt: options.endingBefore };\n\n        if (sort[key] > 0) {\n          sort[key] = -1;\n          reverse = true;\n        }\n      } else {\n        query[key] = { $gt: options.startingAfter };\n\n        if (sort[key] <= 0) {\n          sort[key] = 1;\n          reverse = true;\n        }\n      }\n    }\n\n    var promise = this.find().where(query).select(select).sort(sort).limit(limit + 1).lean(lean);\n\n    if (populate) {\n      [].concat(populate).forEach(function (item) {\n        return promise.populate(item);\n      });\n    }\n\n    return new Promise(function (resolve, reject) {\n      return promise.exec(function (error, items) {\n        if (error) {\n          if (typeof callback === 'function') {\n            setImmediate(function () {\n              return callback(error);\n            });\n          }\n\n          return reject(error);\n        }\n\n        items = items || [];\n        var hasMore = items.length === limit + 1;\n\n        if (hasMore) {\n          items.pop();\n        }\n\n        items = reverse ? items.reverse() : items;\n\n        var results = {\n          items: items,\n          hasMore: hasMore\n        };\n\n        if (typeof callback === 'function') {\n          setImmediate(function () {\n            return callback(null, results);\n          });\n        }\n\n        return resolve(results);\n      });\n    });\n  };\n}"]}