1.0.0-beta.1 • Published 10 months ago

@cxl/rx v1.0.0-beta.1

Weekly downloads
21
License
Apache-2.0
Repository
github
Last release
10 months ago

@cxl/rx

npm version

@cxl/rx is a lightweight reactive programming library focused on usability, performance, and type safety.

Project Details

Installation

npm install @cxl/rx

Features

  • Observable Implementation: Core observable functionality for representing asynchronous or event-based streams.
  • Subjects: Includes Subject, OrderedSubject, BehaviorSubject, ReplaySubject, and Reference for various use cases.
  • Operators: A rich collection of operators for transforming, filtering, combining, and composing observables.
  • Utility Functions: Includes tools like pipe, from, of, concat, merge, and more for observable creation and composition.
  • Built-in Cancellation: Leverages cancellation signals for efficient resource management and clean teardown.
  • Promise Interoperability: Convert promises to observables and vice versa seamlessly.
  • Minimal Dependencies: Designed for high performance with no external dependencies.

Installation

Install the package via npm:

npm install @cxl/rx

Or with yarn:

yarn add @cxl/rx

Getting Started

Create an Observable

import { observable } from '@cxl/rx';

const myObservable = observable(observer => {
	observer.next('Hello');
	observer.next('World');
	observer.complete();
});

myObservable.subscribe({
	next: value => console.log(value),
	complete: () => console.log('Done'),
});

Using Operators

import { of } from '@cxl/rx';

of(1, 2, 3, 4)
	.map(x => x * 2),
	.filter(x => x > 4),
	.subscribe(console.log); // Outputs: 6, 8

Creating a Subject

import { subject } from '@cxl/rx';

const mySubject = subject<number>();

mySubject.subscribe({
	next: value => console.log(`Observer 1: ${value}`),
});

mySubject.next(1);
mySubject.next(2);

mySubject.subscribe({
	next: value => console.log(`Observer 2: ${value}`),
});

mySubject.next(3);

Utilities

Cancellation Signals

External cancellation mechanisms for better control:

import { cancel, timer } from '@cxl/rx';

const signal = cancel();

timer(5000).subscribe({
	next: () => console.log('Completed after 5s'),
	signal, // Link the cancellation signal
});

// Cancel the timer before it completes
signal.next();

Promise Interactions

Convert promises into observables:

import { fromPromise } from '@cxl/rx';

const observable = fromPromise(Promise.resolve('Hello World'));

observable.subscribe(console.log); // Outputs: Hello World
1.0.0-beta.1

10 months ago

0.8.1

1 year ago

0.8.0

1 year ago

0.7.0

2 years ago

0.6.0

4 years ago

0.5.0

5 years ago

0.4.0

5 years ago

0.3.0

5 years ago

0.2.0

5 years ago

0.1.0

5 years ago

0.0.3

7 years ago

0.0.2

7 years ago