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 🙏

© 2024 – Pkg Stats / Ryan Hefner

throttle-async-rxjs-pipe

v1.2.1

Published

A pipe functions for rxjs 7+ which accepts a 'wait' observable, emits 1 elements of the source stream and waits for an event on the 'wait' observable.

Downloads

8

Readme

throttle-async-rxjs-pipe

A pipe functions for rxjs 7+ which accepts a 'wait' observable, emits 1 elements of the source stream and waits for an event on the 'wait' observable.

What does throttleAsync do (in order)?

  1. Get a waitUntil$ observable as parameter
  2. Emit one value (may be configurable in the future)
  3. Wait until waitUntil$ observable emits a value.
  4. If waitUntil$ emits a value, emit another value from the source observable.

Why is this useful?

I personally need it for splitting up resize events from the browser into a resize-start and a resize-end observable.

First, we need an observable of window resize events:

const windowResize$ = fromEvent(window, 'resize');

We can produce a resize-end observable by

const windowResizeEnd$ = windowResize$.pipe(debounceTime(500));

But how would you build the windowResizeStart$ observable? This is, where the throttleAsync pipe comes in.
We need windowResize$ to emit exactly one event and then pause emission
until windowResizeEnd$ emits a value.

    const windowResizeStart$ = windowResize$.pipe(
        throttleAsync(windowResizeEnd$)
    );

Future Features (eventually)

  • Emit n source events between waitUntil$ observable emissions instead of only one.
    The parameter n should be configureable when instantiating throttleAsync.
  • Make the parameter n dynamic by using the value of the waitUntil$ observable as a number of how many events to emit next.
  • Add https://github.com/xripcsu/rxjs-watcher to help visualize the function of these operators

Tooling

  • tsup bundler docs: https://paka.dev/npm/[email protected]/api
  • tsup website: https://tsup.egoist.dev/

Changelog

[1.2.1] - 2024-04-16

  • Fix rxjs version in README.md

[1.2.0] - 2024-04-16

Breaking Change: Lib now requires rxjs 7.0.0 or higher!

  • Switched to tsup for building the library, which unlocks lot more formats for consuming the library:
    • dist/index.js (ES2020, CJS)
    • dist/index.mjs (ES2020, ESM)
    • dist/index.d.ts (Typescript Typings)
    • src/* (Typescript Source)

[1.1.0] - 2020-04-13

  • Updated Dependencies to fix dependency security issues
  • Improved npm packaging for easier usage

[1.0.0] - 2018-11-12

Initial Release

Features

  • throttleAsync pipe which emits one event and then waits for waitUntil$ observable emissions