var readable = new stream.Readable({
read: function(n) {
// sets this._read under the hood
+
+ // push data onto the read queue, passing null
+ // will signal the end of the stream (EOF)
+ this.push(chunk);
}
});
```
var writable = new stream.Writable({
write: function(chunk, encoding, next) {
// sets this._write under the hood
+
+ // An optional error can be passed as the first argument
+ next()
}
});
var writable = new stream.Writable({
writev: function(chunks, next) {
// sets this._writev under the hood
+
+ // An optional error can be passed as the first argument
+ next()
}
});
```
var duplex = new stream.Duplex({
read: function(n) {
// sets this._read under the hood
+
+ // push data onto the read queue, passing null
+ // will signal the end of the stream (EOF)
+ this.push(chunk);
},
write: function(chunk, encoding, next) {
// sets this._write under the hood
+
+ // An optional error can be passed as the first argument
+ next()
}
});
var duplex = new stream.Duplex({
read: function(n) {
// sets this._read under the hood
+
+ // push data onto the read queue, passing null
+ // will signal the end of the stream (EOF)
+ this.push(chunk);
},
writev: function(chunks, next) {
// sets this._writev under the hood
+
+ // An optional error can be passed as the first argument
+ next()
}
});
```
var transform = new stream.Transform({
transform: function(chunk, encoding, next) {
// sets this._transform under the hood
+
+ // generate output as many times as needed
+ // this.push(chunk);
+
+ // call when the current chunk is consumed
+ next();
},
flush: function(done) {
// sets this._flush under the hood
+
+ // generate output as many times as needed
+ // this.push(chunk);
+
+ done();
}
});
```