From ee59fa896aeea1ff4b5c5394fdd973df5f90073e Mon Sep 17 00:00:00 2001 From: Greg Kubisa Date: Tue, 17 Oct 2017 14:15:42 +0100 Subject: [PATCH 1/5] Add .editorconfig --- .editorconfig | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..e29f5e504 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = LF +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true From d130678a7bee2b93ca8f4c1e4a5439c5d73e5b10 Mon Sep 17 00:00:00 2001 From: Greg Kubisa Date: Tue, 17 Oct 2017 14:17:09 +0100 Subject: [PATCH 2/5] Emit error on failed resubscribe --- lib/client/doc.js | 7 +++++-- test/client/subscribe.js | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/lib/client/doc.js b/lib/client/doc.js index 05e17976d..32e2122cd 100644 --- a/lib/client/doc.js +++ b/lib/client/doc.js @@ -348,13 +348,15 @@ Doc.prototype._onConnectionStateChanged = function() { }; Doc.prototype._resubscribe = function() { + var doc = this var callbacks = this.pendingFetch; this.pendingFetch = []; if (this.wantSubscribe) { if (callbacks.length) { this.subscribe(function(err) { - callEach(callbacks, err); + var called = callEach(callbacks, err); + if (err && !called) doc.emit('error', err) }); return; } @@ -364,7 +366,8 @@ Doc.prototype._resubscribe = function() { if (callbacks.length) { this.fetch(function(err) { - callEach(callbacks, err); + var called = callEach(callbacks, err); + if (err && !called) doc.emit('error', err) }); } }; diff --git a/test/client/subscribe.js b/test/client/subscribe.js index 567031d0a..c22611f86 100644 --- a/test/client/subscribe.js +++ b/test/client/subscribe.js @@ -237,6 +237,29 @@ describe('client subscribe', function() { }); }); + it(method + ' emits error passed to doc read middleware after reconnect', function(done) { + this.backend.use('doc', function(request, next) { + next({message: 'Reject doc read'}); + }); + var backend = this.backend; + var doc = this.backend.connect().get('dogs', 'fido'); + var doc2 = this.backend.connect().get('dogs', 'fido'); + doc.create({age: 3}, function(err) { + if (err) return done(err); + doc2[method]() + doc2.on('error', function(err) { + expect(err.message).equal('Reject doc read'); + expect(doc2.version).eql(null); + expect(doc2.data).eql(undefined); + done(); + }); + doc2.connection.close(); + process.nextTick(function() { + backend.connect(doc2.connection); + }); + }); + }); + it(method + ' will call back when ops are pending', function(done) { var doc = this.backend.connect().get('dogs', 'fido'); doc.create({age: 3}, function(err) { From 7f3229f126f64ee560754db5e7a307068db58cc0 Mon Sep 17 00:00:00 2001 From: Greg Kubisa Date: Thu, 12 Jul 2018 12:13:12 +0200 Subject: [PATCH 3/5] Add semicolons --- lib/client/doc.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/client/doc.js b/lib/client/doc.js index 32e2122cd..88f4e0a71 100644 --- a/lib/client/doc.js +++ b/lib/client/doc.js @@ -348,7 +348,7 @@ Doc.prototype._onConnectionStateChanged = function() { }; Doc.prototype._resubscribe = function() { - var doc = this + var doc = this; var callbacks = this.pendingFetch; this.pendingFetch = []; @@ -356,7 +356,7 @@ Doc.prototype._resubscribe = function() { if (callbacks.length) { this.subscribe(function(err) { var called = callEach(callbacks, err); - if (err && !called) doc.emit('error', err) + if (err && !called) doc.emit('error', err); }); return; } @@ -367,7 +367,7 @@ Doc.prototype._resubscribe = function() { if (callbacks.length) { this.fetch(function(err) { var called = callEach(callbacks, err); - if (err && !called) doc.emit('error', err) + if (err && !called) doc.emit('error', err); }); } }; From e97489cd7143552994d5d3c822e6e0e27b50e8cf Mon Sep 17 00:00:00 2001 From: Greg Kubisa Date: Thu, 12 Jul 2018 12:16:06 +0200 Subject: [PATCH 4/5] Add another semicolon --- test/client/subscribe.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/client/subscribe.js b/test/client/subscribe.js index c22611f86..9e1968466 100644 --- a/test/client/subscribe.js +++ b/test/client/subscribe.js @@ -246,7 +246,7 @@ describe('client subscribe', function() { var doc2 = this.backend.connect().get('dogs', 'fido'); doc.create({age: 3}, function(err) { if (err) return done(err); - doc2[method]() + doc2[method](); doc2.on('error', function(err) { expect(err.message).equal('Reject doc read'); expect(doc2.version).eql(null); From 2e43940cd2443de823b8ed57e61bb5fef095c1e8 Mon Sep 17 00:00:00 2001 From: Greg Kubisa Date: Thu, 12 Jul 2018 12:19:45 +0200 Subject: [PATCH 5/5] Update tested nodejs versions --- .travis.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1b9165051..44c9ad55f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,8 @@ language: node_js node_js: - - 6 - - 5 - - 4 - - 0.10 + - "6" + - "8" + - "10" script: "npm run jshint && npm run test-cover" # Send coverage data to Coveralls after_script: "cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js"