Ver código fonte

Fix Node 6 missing _final(), new version: 2.0.2.

Eugene Lazutkin 7 anos atrás
pai
commit
6afa1fd055
4 arquivos alterados com 15 adições e 12 exclusões
  1. 1 0
      README.md
  2. 12 10
      main.js
  3. 1 1
      package-lock.json
  4. 1 1
      package.json

+ 1 - 0
README.md

@@ -228,6 +228,7 @@ Following static methods are available:
 
 ## Release History
 
+- 2.0.2 *Workaround for Node 6: use `'finish'` event instead of `_final()`.*
 - 2.0.1 *Improved documentation.*
 - 2.0.0 *Upgraded to use Duplex instead of EventEmitter as the base.*
 - 1.0.3 *Improved documentation.*

+ 12 - 10
main.js

@@ -62,9 +62,11 @@ class Chain extends Duplex {
     this.input = this.streams[0];
     this.output = this.streams.reduce((output, stream) => (output && output.pipe(stream)) || stream);
 
-    if (!(this.input instanceof Writable)) {
+    if (this.input instanceof Writable) {
+      this.on('finish', () => this.input.end(null, null)); // for Node 6
+    } else {
       this._write = (_1, _2, callback) => callback(null);
-      this._final = callback => callback(null);
+      // this._final = callback => callback(null); // unavailable in Node 6
       this.input.on('end', () => this.end());
     }
 
@@ -90,14 +92,14 @@ class Chain extends Duplex {
       error = e;
     }
   }
-  _final(callback) {
-    let error = null;
-    try {
-      this.input.end(null, null, e => callback(e || error));
-    } catch (e) {
-      error = e;
-    }
-  }
+  // _final(callback) { // unavailable in Node 6
+  //   let error = null;
+  //   try {
+  //     this.input.end(null, null, e => callback(e || error));
+  //   } catch (e) {
+  //     error = e;
+  //   }
+  // }
   _read() {
     this.output.resume();
   }

+ 1 - 1
package-lock.json

@@ -1,6 +1,6 @@
 {
   "name": "stream-chain",
-  "version": "2.0.1",
+  "version": "2.0.2",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "stream-chain",
-  "version": "2.0.1",
+  "version": "2.0.2",
   "description": "Chain functions as transform streams.",
   "main": "main.js",
   "scripts": {