UNPKG

ioredis-mock

Version:

This library emulates ioredis by performing all operations in-memory.

69 lines (53 loc) 1.61 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.zrangebyscore = zrangebyscore; var _es6Map = require('es6-map'); var _es6Map2 = _interopRequireDefault(_es6Map); var _arrayFrom = require('array-from'); var _arrayFrom2 = _interopRequireDefault(_arrayFrom); var _lodash = require('lodash'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function parseLimit(input) { var str = '' + input; var strict = false; if (str[0] === '(') { str = str.substr(1, str.length); strict = true; } else if (str === '-inf') { return { value: -Infinity, isStrict: true }; } else if (str === '+inf') { return { value: +Infinity, isStrict: true }; } return { value: parseInt(str, 10), isStrict: strict }; } function filterPredicate(min, max) { return function (it) { if (it.score < min.value || min.isStrict && it.score === min.value) { return false; } if (it.score > max.value || max.isStrict && it.score === max.value) { return false; } return true; }; } function zrangebyscore(key, inputMin, inputMax) { var map = this.data.get(key); if (!map) { return []; } if (this.data.has(key) && !(this.data.get(key) instanceof _es6Map2.default)) { return []; } var min = parseLimit(inputMin); var max = parseLimit(inputMax); var filteredArray = (0, _lodash.filter)((0, _arrayFrom2.default)(map.values()), filterPredicate(min, max)); return (0, _lodash.orderBy)(filteredArray, 'score').map(function (it) { return it.value; }); }