https://github.com/greguz/rxdable
Utility lib to work with Node.js streams and Rx.js
https://github.com/greguz/rxdable
node observable readable rx stream
Last synced: 8 months ago
JSON representation
Utility lib to work with Node.js streams and Rx.js
- Host: GitHub
- URL: https://github.com/greguz/rxdable
- Owner: greguz
- License: mit
- Created: 2018-12-23T11:13:04.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2023-01-07T20:38:00.000Z (about 3 years ago)
- Last Synced: 2025-06-19T19:06:28.687Z (9 months ago)
- Topics: node, observable, readable, rx, stream
- Language: TypeScript
- Homepage:
- Size: 455 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# rxdable
[](https://badge.fury.io/js/rxdable) [](https://travis-ci.com/greguz/rxdable) [](https://coveralls.io/github/greguz/rxdable?branch=master) [](https://david-dm.org/greguz/rxdable.svg) [](https://standardjs.com)
Utility lib to work with Node.js streams and Rx.js.
- Node.js >= 10.x
- Rx.js 6.x
- Zero dependencies
- TypeScript support
## Observable to Readable stream
```javascript
const { getStreamByObservable } = require('rxdable')
const readableStream = getStreamByObservable(observable)
```
## Readable stream to Observable
```javascript
const { createReadStream } = require('fs')
const { subscribeToStream } = require('rxdable')
const { Observable } = require('rxjs')
function fileRead(file, encoding = 'utf8') {
return new Observable(subscriber => {
return subscribeToStream(
createReadStream(file, encoding),
subscriber
)
})
}
```
## Readable stream to Observable (faster way)
```javascript
const { getObservableByStream } = require('rxdable')
const observable = getObservableByStream(readableStream)
```
**WARNING**: This function will create an Observable ables to be subscribed just one time.
## Operator to Transform stream
Single operator:
```javascript
const { count } = require('rxjs/operators')
const { getStreamByOperator } = require('rxdable')
const countStream = getStreamByOperator(count())
```
Multiple operators:
```javascript
const { map } = require('rxjs/operators')
const { getStreamByOperator } = require('rxdable')
const firstUppercasedLetterStream = getStreamByOperator(
map(value => value.toString()),
map(value => value.substr(0, 1)),
map(value => value.toUpperCase())
)
```
No operators (passthrough):
```javascript
const { getStreamByOperator } = require('rxdable')
const passthroughStream = getStreamByOperator()
```
## Writable/Duplex/Transform stream to operator
```javascript
const { createWriteStream } = require('fs')
const { pipeObservableToStream } = require('rxdable')
const { Observable } = require('rxjs')
function fileWrite(file, encoding = 'utf8') {
return observable => {
return new Observable(subscriber => {
return pipeObservableToStream(
observable,
createWriteStream(file, encoding),
subscriber
)
})
}
}
```
## Writable/Duplex/Transform stream to operator (faster way)
```javascript
const { getOperatorByStream } = require('rxdable')
const operator = getOperatorByStream(transformStream)
```
**WARNING**: This function will create an Operator ables to be used just one time.