1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-07 13:22:56 +03:00

feat(parser): update to latest Redis parser & errors (#1470)

* Update redis errors and redis parser
* Fix lint errors
* Add node 12 to travis ci
* Add appveyor node 12
* Fix some of existing errors

This drops support for hiredis.
This commit is contained in:
Vissarut Tantiwattanarom
2020-02-03 21:53:56 +04:00
committed by GitHub
parent 1f082aca54
commit 78936ac50c
9 changed files with 50 additions and 47 deletions

View File

@@ -14,6 +14,7 @@ node_js:
- "4" - "4"
- "6" - "6"
- "8" - "8"
- "12"
after_success: npm run coveralls after_success: npm run coveralls
before_script: before_script:
# Add an IPv6 config - see the corresponding Travis issue # Add an IPv6 config - see the corresponding Travis issue

View File

@@ -8,6 +8,7 @@ environment:
- nodejs_version: "4" - nodejs_version: "4"
- nodejs_version: "6" - nodejs_version: "6"
- nodejs_version: "8" - nodejs_version: "8"
- nodejs_version: "12"
pull_requests: pull_requests:
do_not_increment_build_number: true do_not_increment_build_number: true

View File

@@ -2,7 +2,7 @@
var fs = require('fs'); var fs = require('fs');
var metrics = require('metrics'); var metrics = require('metrics');
// `node diff_multi_bench_output.js beforeBench.txt afterBench.txt` // `node diff_multi_bench_output.js beforeBench.txt afterBench.txt`
var file1 = process.argv[2]; var file1 = process.argv[2];
var file2 = process.argv[3]; var file2 = process.argv[3];

View File

@@ -5,43 +5,43 @@ var client1 = redis.createClient();
var client2 = redis.createClient(); var client2 = redis.createClient();
var client3 = redis.createClient(); var client3 = redis.createClient();
client1.xadd('mystream', '*', 'field1', 'm1', function (err) { client1.xadd('mystream', '*', 'field1', 'm1', function (err) {
if(err){ if (err) {
return console.error(err); return console.error(err);
} }
client1.xgroup('CREATE', 'mystream', 'mygroup', '$', function (err) { client1.xgroup('CREATE', 'mystream', 'mygroup', '$', function (err) {
if(err){ if (err) {
return console.error(err); return console.error(err);
} }
}); });
client2.xreadgroup('GROUP', 'mygroup', 'consumer', 'Block', 1000, 'NOACK',
'STREAMS', 'mystream', '>', function (err, stream) {
if(err){
return console.error(err);
}
console.log('client2 ' + stream);
});
client3.xreadgroup('GROUP', 'mygroup', 'consumer', 'Block', 1000, 'NOACK',
'STREAMS', 'mystream', '>', function (err, stream) {
if(err){
return console.error(err);
}
console.log('client3 ' + stream);
});
client2.xreadgroup('GROUP', 'mygroup', 'consumer', 'Block', 1000, 'NOACK',
client1.xadd('mystream', '*', 'field1', 'm2', function (err) { 'STREAMS', 'mystream', '>', function (err, stream) {
if(err){ if (err) {
return console.error(err); return console.error(err);
} }
}); console.log('client2 ' + stream);
});
client1.xadd('mystream', '*', 'field1', 'm3', function (err) {
if(err){ client3.xreadgroup('GROUP', 'mygroup', 'consumer', 'Block', 1000, 'NOACK',
return console.error(err); 'STREAMS', 'mystream', '>', function (err, stream) {
} if (err) {
}); return console.error(err);
}
console.log('client3 ' + stream);
});
client1.xadd('mystream', '*', 'field1', 'm2', function (err) {
if (err) {
return console.error(err);
}
});
client1.xadd('mystream', '*', 'field1', 'm3', function (err) {
if (err) {
return console.error(err);
}
});
}); });

View File

@@ -9,6 +9,7 @@ var Queue = require('denque');
var errorClasses = require('./lib/customErrors'); var errorClasses = require('./lib/customErrors');
var EventEmitter = require('events'); var EventEmitter = require('events');
var Parser = require('redis-parser'); var Parser = require('redis-parser');
var RedisErrors = require('redis-errors');
var commands = require('redis-commands'); var commands = require('redis-commands');
var debug = require('./lib/debug'); var debug = require('./lib/debug');
var unifyOptions = require('./lib/createClient'); var unifyOptions = require('./lib/createClient');
@@ -1090,9 +1091,9 @@ exports.RedisClient = RedisClient;
exports.print = utils.print; exports.print = utils.print;
exports.Multi = require('./lib/multi'); exports.Multi = require('./lib/multi');
exports.AbortError = errorClasses.AbortError; exports.AbortError = errorClasses.AbortError;
exports.RedisError = Parser.RedisError; exports.RedisError = RedisErrors.RedisError;
exports.ParserError = Parser.ParserError; exports.ParserError = RedisErrors.ParserError;
exports.ReplyError = Parser.ReplyError; exports.ReplyError = RedisErrors.ReplyError;
exports.AggregateError = errorClasses.AggregateError; exports.AggregateError = errorClasses.AggregateError;
// Add all redis commands / node_redis api to the client // Add all redis commands / node_redis api to the client

View File

@@ -2,14 +2,13 @@
var util = require('util'); var util = require('util');
var assert = require('assert'); var assert = require('assert');
var RedisError = require('redis-parser').RedisError; var RedisError = require('redis-errors').RedisError;
var ADD_STACKTRACE = false; var ADD_STACKTRACE = false;
function AbortError (obj, stack) { function AbortError (obj, stack) {
assert(obj, 'The options argument is required'); assert(obj, 'The options argument is required');
assert.strictEqual(typeof obj, 'object', 'The options argument has to be of type object'); assert.strictEqual(typeof obj, 'object', 'The options argument has to be of type object');
RedisError.call(this, obj.message, ADD_STACKTRACE);
Object.defineProperty(this, 'message', { Object.defineProperty(this, 'message', {
value: obj.message || '', value: obj.message || '',
configurable: true, configurable: true,

View File

@@ -27,7 +27,8 @@
"dependencies": { "dependencies": {
"denque": "^1.2.3", "denque": "^1.2.3",
"redis-commands": "^1.4.0", "redis-commands": "^1.4.0",
"redis-parser": "^2.6.0" "redis-errors": "^1.2.0",
"redis-parser": "^3.0.0"
}, },
"engines": { "engines": {
"node": ">=0.10.0" "node": ">=0.10.0"

View File

@@ -359,7 +359,7 @@ describe('The node_redis client', function () {
it('send_command with callback as args', function (done) { it('send_command with callback as args', function (done) {
client.send_command('abcdef', function (err, res) { client.send_command('abcdef', function (err, res) {
assert.strictEqual(err.message, "ERR unknown command 'abcdef'"); assert.strictEqual(err.message, 'ERR unknown command `abcdef`, with args beginning with: ');
done(); done();
}); });
}); });

View File

@@ -50,7 +50,7 @@ describe('rename commands', function () {
}); });
client.get('key', function (err, reply) { client.get('key', function (err, reply) {
assert.strictEqual(err.message, "ERR unknown command 'get'"); assert.strictEqual(err.message, 'ERR unknown command `get`, with args beginning with: `key`, ');
assert.strictEqual(err.command, 'GET'); assert.strictEqual(err.command, 'GET');
assert.strictEqual(reply, undefined); assert.strictEqual(reply, undefined);
}); });
@@ -108,7 +108,7 @@ describe('rename commands', function () {
multi.exec(function (err, res) { multi.exec(function (err, res) {
assert(err); assert(err);
assert.strictEqual(err.message, 'EXECABORT Transaction discarded because of previous errors.'); assert.strictEqual(err.message, 'EXECABORT Transaction discarded because of previous errors.');
assert.strictEqual(err.errors[0].message, "ERR unknown command 'get'"); assert.strictEqual(err.errors[0].message, 'ERR unknown command `get`, with args beginning with: `key`, ');
assert.strictEqual(err.errors[0].command, 'GET'); assert.strictEqual(err.errors[0].command, 'GET');
assert.strictEqual(err.code, 'EXECABORT'); assert.strictEqual(err.code, 'EXECABORT');
assert.strictEqual(err.errors[0].code, 'ERR'); assert.strictEqual(err.errors[0].code, 'ERR');