Easy way to create a Stream
that is both readable
and writable
.
write
and end
methods.through
takes care of pause/resume logic if you use this.queue(data)
instead of this.emit('data', data)
.this.pause()
and this.resume()
to manage flow.this.paused
to see current flow state. (write
always returns !this.paused
).This function is the basis for most of the synchronous streams in event-stream.
var through = require('through')
through(function write(data) {
this.queue(data) //data *must* not be null
},
function end () { //optional
this.queue(null)
})
Or, can also be used without buffering on pause, use this.emit('data', data)
,
and this.emit('end')
var through = require('through')
through(function write(data) {
this.emit('data', data)
//this.pause()
},
function end () { //optional
this.emit('end')
})
You will probably not need these 99% of the time.
By default, through
emits close when the writable
and readable side of the stream has ended.
If that is not desired, set autoDestroy=false
.
var through = require('through')
//like this
var ts = through(write, end, {autoDestroy: false})
//or like this
var ts = through(write, end)
ts.autoDestroy = false
MIT / Apache2
#through [![build status](https://secure.travis-ci.org/dominictarr/through.png)](http://travis-ci.org/dominictarr/through) [![testling badge](https://ci.testling.com/dominictarr/through.png)](https://ci.testling.com/dominictarr/through) Easy way to create a `Stream` that is both `readable` and `writable`. * Pass in optional `write` and `end` methods. * `through` takes care of pause/resume logic if you use `this.queue(data)` instead of `this.emit('data', data)`. * Use `this.pause()` and `this.resume()` to manage flow. * Check `this.paused` to see current flow state. (`write` always returns `!this.paused`). This function is the basis for most of the synchronous streams in [event-stream](http://github.com/dominictarr/event-stream). ``` js var through = require('through') through(function write(data) { this.queue(data) //data *must* not be null }, function end () { //optional this.queue(null) }) ``` Or, can also be used _without_ buffering on pause, use `this.emit('data', data)`, and this.emit('end') ``` js var through = require('through') through(function write(data) { this.emit('data', data) //this.pause() }, function end () { //optional this.emit('end') }) ``` ## Extended Options You will probably not need these 99% of the time. ### autoDestroy=false By default, `through` emits close when the writable and readable side of the stream has ended. If that is not desired, set `autoDestroy=false`. ``` js var through = require('through') //like this var ts = through(write, end, {autoDestroy: false}) //or like this var ts = through(write, end) ts.autoDestroy = false ``` ## License MIT / Apache2
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 19553 | swellard | Move and rename clients | ||
//guest/perforce_software/helix-web-services/main/source/clients/2016.1.0/javascript/node_modules/through/readme.markdown | |||||
#1 | 18810 | tjuricek |
First-pass at JavaScript client SDK. JavaScript requires Node with Gulp to "browserfy" the library. It's the easiest way I found to use the swagger-js project; bundle up a wrapping method. There is no JavaScript reference guide. The swagger-js doesn't really document what they do very well, actually. Overall I'm not particularly impressed by swagger-js, it was hard to even figure out what the right method syntax was. We may want to invest time in doing it better. This required setting CORS response headers, which are currently defaulted to a fairly insecure setting. |