Skip to content

Latest commit

 

History

History

stream

npm version Deno

Licence

@rimbu/stream

Welcome to @rimbu/stream! A Stream is an Iterable-like structure that represents a source capable of streaming values upon request. The source can be a materialized object (e.g., an Array) or a calculated sequence (e.g., Fibonacci numbers). Unlike an Iterable, a Stream offers numerous methods to transform the values produced before consumption, without needing to materialize intermediate instances.

Key Features:

  • Flexible Sources: Stream values from various sources, whether materialized or calculated.
  • Transformation Methods: Modify the stream's values on-the-fly without creating intermediate objects.
  • Efficient Iteration: Optimized for performance, providing faster iteration capabilities.

Exported Types:

Name Description
FastIterable<T> An Iterable that supports faster iterating than the Iterable type.
FastIterator<T> An Iterator that supports faster iterating than the Iterator type.
Stream<T> An Iterable-like structure that represents a source that can produce values of type T when requested.
Streamable<T> An interface requiring that an object has a .stream() method.
StreamSource<T> A convenience type that covers all types that can be automatically converted to a Stream.

Documentation

For complete documentation, please visit the Stream page in the Rimbu Docs, or directly explore the Rimbu Stream API Docs.

Try It Out

Experience @rimbu/stream in action! Try Out Rimbu on CodeSandBox.

Installation

Compabitity

Package Managers

Yarn:

yarn add @rimbu/stream

npm:

npm install @rimbu/stream

Bun:

bun add @rimbu/stream

Deno Setup

Create or edit import_map.json in your project root:

{
  "imports": {
    "@rimbu/": "https://deno.land/x/rimbu@x.y.z/"
  }
}

Replace x.y.z with the desired version.

In this way you can use relative imports from Rimbu in your code, like so:

import { List } from '@rimbu/core/mod.ts';
import { HashMap } from '@rimbu/hashed/mod.ts';

Note that for sub-packages, due to conversion limitations it is needed to import the index.ts instead of mod.ts, like so:

import { HashMap } from '@rimbu/hashed/map/index.ts';

To run your script (let's assume the entry point is in src/main.ts):

deno run --import-map import_map.json src/main.ts

Usage

import { Stream } from '@rimbu/stream';

console.log(Stream.range({ start: 10, amount: 15 }).toArray());

Author

Created and maintained by Arvid Nicolaas.

Contributing

We welcome contributions! Please read our Contributing guide.

Contributors

Made with contributors-img.

License

This project is licensed under the MIT License. See the LICENSE for details.