UNPKG

1.47 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _es6Promisify = require('es6-promisify');
8
9var _es6Promisify2 = _interopRequireDefault(_es6Promisify);
10
11var _crypto = require('crypto');
12
13var _crypto2 = _interopRequireDefault(_crypto);
14
15function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
17function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
18
19var sha1 = function sha1(text) {
20 var hash = _crypto2.default.createHash('sha1');
21 return hash.update(text).digest('hex');
22};
23
24var map = new Map();
25
26var runLua = (0, _es6Promisify2.default)(function (redisClient, luaScript, _ref, cb) {
27 var keys = _ref.keys,
28 argv = _ref.argv;
29
30 var nonEmptyKeys = keys || [];
31 var nonEmptyArgv = argv || [];
32
33 var hashOrNull = map.get(luaScript);
34 if (hashOrNull) {
35 return redisClient.evalsha.apply(redisClient, [hashOrNull, nonEmptyKeys.length].concat(_toConsumableArray(nonEmptyKeys), _toConsumableArray(nonEmptyArgv), [cb]));
36 }
37
38 return redisClient.eval.apply(redisClient, [luaScript, nonEmptyKeys.length].concat(_toConsumableArray(nonEmptyKeys), _toConsumableArray(nonEmptyArgv), [function (err, val) {
39 if (!err) {
40 var hash = sha1(luaScript);
41 map.set(luaScript, hash);
42 }
43
44 cb(err, val);
45 }]));
46});
47
48exports.default = runLua;
\No newline at end of file