UNPKG

1.35 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.set = set;
7
8var _es6Map = require('es6-map');
9
10var _es6Map2 = _interopRequireDefault(_es6Map);
11
12var _index = require('./index');
13
14function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
16function createGroupedArray(arr, groupSize) {
17 var groups = [];
18 for (var i = 0; i < arr.length; i += groupSize) {
19 groups.push(arr.slice(i, i + groupSize));
20 }
21 return groups;
22}
23
24function set(key, value) {
25 for (var _len = arguments.length, options = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
26 options[_key - 2] = arguments[_key];
27 }
28
29 var nx = options.indexOf('NX') !== -1;
30 var xx = options.indexOf('XX') !== -1;
31 var filteredOptions = options.filter(function (option) {
32 return option !== 'NX' && option !== 'XX';
33 });
34
35 if (nx && xx) throw new Error('ERR syntax error');
36 if (nx && this.data.has(key)) return null;
37 if (xx && !this.data.has(key)) return null;
38
39 this.data.set(key, value);
40
41 var expireOptions = new _es6Map2.default(createGroupedArray(filteredOptions, 2));
42 var ttlSeconds = expireOptions.get('EX') || expireOptions.get('PX') / 1000.0;
43
44 if (ttlSeconds) {
45 _index.expire.call(this, key, ttlSeconds);
46 } else {
47 this.expires.delete(key);
48 }
49
50 return 'OK';
51}
\No newline at end of file