@jameslnewell/observable

A super simple and light-weight observable implementation.

Usage no npm install needed!

<script type="module">
  import jameslnewellObservable from 'https://cdn.skypack.dev/@jameslnewell/observable';
</script>

README

@jameslnewell/observable

npm (scoped) Bundle Size Actions Status

A super simple and light-weight observable implementation.

Installation

yarn add @jameslnewell/observable

Usage

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