Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rxtoolkit/utils
🛠️ RxJS operators for very common data transformation tasks
https://github.com/rxtoolkit/utils
fp functional-programming observables package reactive-programming rxjs
Last synced: 20 days ago
JSON representation
🛠️ RxJS operators for very common data transformation tasks
- Host: GitHub
- URL: https://github.com/rxtoolkit/utils
- Owner: rxtoolkit
- License: mit
- Created: 2022-10-22T15:32:41.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-01-01T18:12:56.000Z (about 1 year ago)
- Last Synced: 2024-12-09T21:56:35.970Z (about 2 months ago)
- Topics: fp, functional-programming, observables, package, reactive-programming, rxjs
- Language: JavaScript
- Homepage:
- Size: 562 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# @rxtk/utils
> 🔌 Re-usable operators and utilities for rxjs```bash
npm i @rxtk/utils
``````bash
yarn add @rxtk/utils
```## API
### `debug`
Add a debugger to an RXJS pipeline.
```js
import {from} from 'rxjs';
import {map} from 'rxjs/operators';
import {debug,toConsole} from '@rxtk/utils';const input$ = from([2, 3]);
const output$ = input$.pipe(
toConsole('input'),
debug(), // inserts breakpoint here
map(n => n * n),
toConsole('squared'),
debug() // inserts a second breakpoint here
);
output$.subscribe();
// 2
// debugger will pause here!
// squared 4
// debugger will pause here!
// 3
// debugger will pause here!
// squared 9
// debugger will pause here!
```### `delayUntil`
Delays emissions from a source observable until another observable emits.
```js
import {from,timer} from 'rxjs';
import {map} from 'rxjs/operators';
import {tap} from 'rxjs/operators';
import {delayUntil} from '@rxtk/utils';// this code delay emitting items from the source observable until 5 seconds
// have passed
const string$ = from(['foo', 'bar']);
const start$ = timer(5000).pipe(tap(console.log));
const output$ = string$.pipe(delayUntil(start$));
output$.subscribe(console.log);
// Output:
// 5000
// foo
// bar
```### `listToSingleResult`
Gets the item from a single-item array and throws if the array is empty or has multiple items.
```js
import {of} from 'rxjs';
import {listToSingleResult} from '@rxtk/utils';// this code delay emitting items from the source observable until 5 seconds
// have passed
const input$ = of([{'foo': 'bar'}]);
const output$ = string$.pipe(listToSingleResult());
output$.subscribe(console.log);
// Output:
// {foo: bar}
```### `reduceToString`
Concatenates items into a string.
```js
import {from,takeLast} from 'rxjs';
import {listToSingleResult} from '@rxtk/utils';// this code delay emitting items from the source observable until 5 seconds
// have passed
const input$ = from(['always ', 'money ', 'in ', 'the ', 'banana ', 'stand']);
const output$ = string$.pipe(
reduceToString(),
takeLast(1)
);
output$.subscribe(console.log);
// Output:
// "always money in the banana stand"
```### `parseJSON`
Map JSON strings to JavaScript objects.
```js
import {from} from 'rxjs';
import {toConsole, parseJSON} from '@rxtk/utils';const input$ = from(['{"foo": "bar"}']);
const output$ = input$.pipe(
parseJSON(),
toConsole()
);
output$.subscribe();
// {foo: 'bar'}
```### `toConsole`
Add log an RXJS pipeline's data to the console.
```js
import {from} from 'rxjs';
import {toConsole} from '@rxtk/utils';const input$ = from([1, 2, 3]);
const output$ = input$.pipe(
toConsole(),
map(n => n * n),
toConsole('squared')
);
output$.subscribe();
// 1
// squared 1
// 2
// squared 4
// 3
// squared 4
```### `toJSON`
Map each item to a JSON string.
```js
import {from} from 'rxjs';
import {toConsole, toJSON} from '@rxtk/utils';const input$ = from([{foo: 'bar'1}]);
const output$ = input$.pipe(
toJSON(),
toConsole('squared')
);
output$.subscribe();
// '{"foo": "bar"}'
```### `withIndex`
Add an index to data in the stream.
```js
import {from} from 'rxjs';
import {withIndex} from '@rxtk/utils';const input$ = from(['there\'s', 'no', 'place', 'like', 'home']);
const output$ = input$.pipe(
withIndex()
);
output$.subscribe(console.log);
// ["there's", 0]
// ["no", 1]
// ["place", 2]
// ["like", 3]
// ["home", 4]
```