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

@gyrus/ngx-with-next-from

v1.1.3

Published

RxJS operator returning an array of the next available values of each parameter observable

Downloads

4

Readme

WithNextFrom custom RxJs operator

The withNextFrom RxJs operator is designed to behave in a similar way to the standard RxJs operator, withLatestFrom, but without the problem described below. It can be treated as a drop in replacement for the original operator that particularly benefits Angular developers using scaffolded unit tests that follow accepted Angular best practices.

Note: withNextFrom does not complete immediately when the source stream completes if it's already waiting for the parameter stream's next values. It will wait until all of the parameter streams fire their next value before completing. So operators like first() or take() can be applied to the source stream without impacting the resulting output.

Usage

  stream1$.pipe(
      withNextFrom(
        () => stream2$,
        () => stream3$,
        () => stream4$,
        // ...more stream args...
      )
    ).subscribe(result => {
      console.log(result); // [s1,s2,s3,s4]
    });

Parameters

Unlike withLatestFrom, this new operator withNextFrom requires each parameter to be a function that returns an Observable, as opposed to a pure Observable. This is to allow the closure function in the RxJs operator to not block the unit test run-time 'mockability'.

A patch for withLatestFrom's Angular Unit Test mocking problem

There is an unexpected behaviour from the RxJs pipe operator, withLatestFrom, when its results are mocked within a test after the TestBed module has been loaded.

withLatestFrom mocking on initialisation inside the beforeEach() of a .spec file works fine. But this is really considered bad practice because it separates the test case mocked values from the unit test.

This alternative operator, withNextFrom serves a similar purpose as withLatestFrom, but doesn't need to be aware of the observable stream's history because it's only interested in the next value (or current one, in the case of Behaviour Subject).

Why did I create this?

I think the power and simplicity of withLatestFrom is awesome. But the non-standard way of mocking it for Angular tests was a deal breaker for me. So after spending too much time researching the issue, I fixed it.