1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _es6Promisify = require('es6-promisify');
|
8 |
|
9 | var _es6Promisify2 = _interopRequireDefault(_es6Promisify);
|
10 |
|
11 | var _crypto = require('crypto');
|
12 |
|
13 | var _crypto2 = _interopRequireDefault(_crypto);
|
14 |
|
15 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
16 |
|
17 | function _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 |
|
19 | var sha1 = function sha1(text) {
|
20 | var hash = _crypto2.default.createHash('sha1');
|
21 | return hash.update(text).digest('hex');
|
22 | };
|
23 |
|
24 | var map = new Map();
|
25 |
|
26 | var 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 |
|
48 | exports.default = runLua; |
\ | No newline at end of file |