Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

rxtoolkit/utils

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@rxtk/utils

🔌 Re-usable operators and utilities for rxjs

npm i @rxtk/utils
yarn add @rxtk/utils

API

debug

Add a debugger to an RXJS pipeline.

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.

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.

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.

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.

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.

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.

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.

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]

About

🛠️ RxJS operators for very common data transformation tasks

Topics

Resources

License

Stars

1 star

Watchers

1 watching

Forks

Packages

 
 
 

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.