Skip to main content
Deno 2 is finally here 🎉️
Learn more

codecov

Immutable collections and tools for TypeScript

Rimbu is a TypeScript library focused on immutable, performant, and type-safe collections and other tools. Its main aim is to allow programmers to create safe and performant programs without getting in the way. It is inspired by various other collection libraries, mainly Java’s Guava library, the Java 8 Collection library, and Scala’s collection library plus various ideas from the Scala community.

Quick overview of features and benefits

  • Extensive set of collection types to cover many problems that would otherwise require more coding to solve.
  • Advanced typing uses the TS compiler to offer strict type inference without much explicit typing, and to prove collection non-emptiness.
  • Avoid ‘monad’ style programming / chaining (e.g. using types like Option) by offering flexible fallback options for simple methods that can ‘fail’.
  • No external dependencies.
  • Provides sane defaults but allows extensive customization and configuration.
  • A novel and efficient immutable random-access List implementation.

For complete documentation please visit the Rimbu Docs.

Or Try Me Out in CodeSandBox.

Main exports

The main exported projects are:

Name Description
@rimbu/core Immutable collections including List, SortedMap, EdgeGraph, HashBiMultiMap and many more.
@rimbu/actor A framework-agnostic synchronous state management library that uses immutable objects under the hood.
@rimbu/reactor A framework that allows usage of @rimbu/actor objects in React.

Getting started with this monorepo

  1. Clone this repository
  2. Run yarn setup

To build all the packages: yarn build To start the Rimbu Docs locally: yarn docsify To run the tests: yarn test

Author

Arvid Nicolaas

Contributing

Feel very welcome to contribute to further improve Rimbu. Please read our Contributing guide.

Contributors

Made with contributors-img.

License

Licensed under the MIT License, Copyright © 2020-present Arvid Nicolaas.

See LICENSE for more information.