npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

league-of-filters

v1.1.8

Published

A collection of filters for rxjs

Downloads

22

Readme

league-of-filters

A collection of filters for rxjs. This library provides methods to gain insight of rxjs streams by branching filtered elements into sencondary streams.

installation

npm install --save league-of-filters

example

import { range } from "rxjs";
import {
  registry,
  twoWayAlert,
  twoWayFilter,
  twoWayFilterTimeout
} from "league-of-filters";

const observableValues = range(1, 100);

function timeout(ms: number) {
  return new Promise(resolve => setTimeout(resolve, ms));
}
async function sleep(fn, ...args) {
  await timeout(3000);
  return fn(...args);
}

observableValues
  .pipe(
    twoWayAlert(
      (value: number, index: number) => value % 3 === 0,
      x => `${x} is about to fail at 2nd step`
    ),
    twoWayFilterTimeout<number>(
      () => sleep(() => true),
      1000,
      true,
      x => `timeout! ${x}`
    ),
    twoWayFilter(
      (value: number, index: number) => Promise.resolve(value % 2 === 0),
      x => `${x} fails at 1st step`
    ),
    twoWayFilter(
      (value: number, index: number) => value % 3 === 0,
      x => `${x} fails at 2nd step`
    )
  )
  .subscribe(x => console.log("ok", x));

registry.common.subscribe(x => console.log("err", x));
registry.timeout.subscribe(x => console.log("timeout", x));
registry.alert.subscribe(x => console.log("alert", x));

StreamRegistry

StreamRegistry is a collection of observables taking notes of what have gone through the filters. This is useful when you want to gain more observability into the stream processing.

  • registry.common is for the filtered items.
  • registry.timeout is for all timeouts.
  • registry.alert is for all alerts.

twoWayFilter

twoWayFilter behaves just like a normal filter in rxjs, except that it will output filtered results to a predefined stream.

The predicate in this filter may also be asynchronouse.

twoWayAlert

twoWayAlert behaves just like twoWayFilter, except that instead of the actual filtering, it will keep all elements in the main stream, only making a copy of elements matching predicate to the predefined alert stream.

The predicate in this filter may also be asynchronouse.

twoWayFilterTimeout

twoWayFilterTimeout behaves just like twoWayFilter, except that it will timeout the predicate exectution, and output all timeouts to a predefined stream. A fallback behavior of timeouts should be provided by the caller, allowing the main stream to continue.

The predicate in this filter may also be asynchronouse.