Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jameslnewell/observable

A super simple and light-weight observable implementation.
https://github.com/jameslnewell/observable

map observable observer pipe subscription

Last synced: 20 days ago
JSON representation

A super simple and light-weight observable implementation.

Awesome Lists containing this project

README

        

# @jameslnewell/observable

![npm (scoped)](https://img.shields.io/npm/v/@jameslnewell/observable.svg)
[![Bundle Size](https://badgen.net/bundlephobia/minzip/@jameslnewell/observable)](https://bundlephobia.com/result?p=@jameslnewell/observable)
[![Actions Status](https://github.com/jameslnewell/observable/workflows/main/badge.svg)](https://github.com/jameslnewell/observable/actions)

A super simple and light-weight observable implementation.

## Installation

```bash
yarn add @jameslnewell/observable
```

## Usage

```js
const {create, map, pipe} from '@jameslnewell/observable';

const numbers = (ms = 1000) => create(subscriber => {
let count = 0;
const handle = setInterval(() => subscriber.next(count++), ms);
return () => clearInterval(handle);
});

const letters = pipe(map(number => String.fromCharCode(65 + number)))(numbers())

const subscription = letters.subscribe({
next: data => console.log(data),
error: error => console.error(error),
completed: () => console.log('completed')
});

subscription.unsubscribe();

```

## API

### fromArray(array)

### fromError(array)

### create(factory): Observable

### map(fn)(observable): Observable

### delay(ms)(observable): Observable

### pipe(fn1, fn2, fn3)(Observable): Observable

### isObservable(value): boolean

### firstValueFrom(observable: Observable): Promise

### lastValueFrom(observable: Observable): Promise