• Public
  • Public/Protected
  • All

RxJS Ninja Blog

[20201-02-08] - Upcoming Major releases and Package Changes

There are some important changes coming up in RxJS Ninja. The next release of the libraries will all be major, and will be the last versions published under their current names - with the package names being shortened - removing the second rxjs from each package name.

  • @rxjs-ninja/rxjs-array will now become @rxjs-ninja/array
  • @rxjs-ninja/rxjs-boolean will now become @rxjs-ninja/boolean
  • @rxjs-ninja/rxjs-number will now become @rxjs-ninja/number
  • @rxjs-ninja/rxjs-string will now become @rxjs-ninja/string
  • @rxjs-ninja/rxjs-utility will now become @rxjs-ninja/utilities

Each version will be published as a major version bump and marked with a deprecation warning - the new names will be published from the same version number (i.e. these are not reverting to 1.0.0)

Also, these major versions will have new peerDependency ranges - rxjs will enforce support only for versions >=6.5.0 < 7.0.0 and will also now enforce a minimum TypeScript version of >= 4.1 to use, due to Template Literal Types used in these libraries.

If you have any feedback on this, please comment here

[2021-01-26] - First entry

Welcome to the first update of the RxJS Ninja blog - this is where you'll find more details on existing and upcoming changes.


RxJS Ninja has been something I've been working on for the past few months - mostly starting out as a learning exercise to scratch an itch, it's turned into a much larger collection of functions that I imagined.

The original goal was to work with your primitive data in Observable sources, like modifying, filtering and querying strings, numbers and arrays.

As it stands it's now much more general purpose and provides more complex userland functions for things such as working with browser streams such as ReadableStream / WritableStream and EventSource.

Documentation has been very important, and the library now has a custom TypeDoc theme (also available open source) which will also continue to be improved.

User feedback is also important I'd love to hear from you with any comments, concerns or ideas!

API Stability

Recently there have been a lot of API and under-the-hood changes as I've been building the library, with a few major releases of modules.

As it stands I expect the APIs to become more stable by the end of this month - the library itself is also being used for my own projects and as I use the code, I find bugs (turns out 99% test coverge still isn't enough 😃) or issues that require breaking changes, or find better ways to handle the APIs.

There is one known major release today for the Utility module, reverting to earlier code for tapOnFirstEmit and tapOnSubscribe, and simplifying tapIf as using them together has revealed some issues with the newer code.

All releases are semantic versioning, meaning if you're happy with the current version you shouldn't need to upgrade, but all releases come with a full changelog to explain the changes.

More Operators

The libraries will continue to get new operators - these tend to be release on minor version

  • One major area missing are operators for Math methods which will be added to the Number module

  • Distribution operators for Arrays that return actual values rather than calculated ones, and can work with non-numerical values

  • More string operators for operations such as camelCase, snakeCase and kebabCase

  • I'm considering a rxjs-node module which will provide similar stream interop functions as the Utility module, but for the NodeJS API.

RxJS 7

Soon RxJS will be releasing version 7.0.0 - currently in beta (Changelog) - initial tests with upgrading have not been successful but are most likely due to the testing libraries for Jest not yet being updated.

In the worst-case scenario, all current tests will need to be refactored to remove these additional libraries. I'll most likely hold off until closer to release until I begin the process of supporting 7.

At that point there will be a new release branch created to support operators that still support version 6, and new versions of the library will support 7 going forward - all modules will receive a major bump.

Generated using TypeDoc, the 08/02/2021 at 13:47:36