• Stars
    star
    133
  • Rank 272,600 (Top 6 %)
  • Language
    TypeScript
  • License
    Apache License 2.0
  • Created over 6 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A collection of observables built with streams.

Observables with Streams

A library for observables built with WHATWG streams. This library is inspired by ReactiveX’s operators and implements a subset of them using streams.

npm install --save observables-with-streams

The goal of this library is to implement observables making as much use of the platform as possible and being highly tree-shakeable.

Example

<!DOCTYPE html>

<button id="dec">-</button>

<span id="counter">0</span>

<button id="inc">+</button>

<script type="module">
  import * as ows from "observables-with-streams";

  ows.merge(
    ows.fromEvent(
      document.querySelector("#dec")
      "click"
    ).pipeThrough(ows.map(() => -1)),
    ows.fromEvent(
      document.querySelector("#inc")
      "click"
    ).pipeThrough(ows.map(() => 1))
  )
    .pipeThrough(
      ows.scan((v0, v1) => v0 + v1, 0)
    )
    .pipeTo(
      ows.subscribe(
        v => document.querySelector("#counter").textContent = v
      )
    );
</script>

Documentation

The (somewhat lacking) documentation for this library is hosted at https://observables-with-streams.surma.technology

Caveats

While most browsers have partial support of streams in stable, this library makes heavy use of TransformStreams, which are currently not well supported. Until browsers catch up, I can recommend Mattias Buelens' web-streams-polyfill.

For a good primer about streams, read this blog post by Jake Archibald (he is aware the title hasn’t aged well).


License Apache 2.0

More Repositories

1

tinderforbananas.com

It’s like Tinder, but for 🍌
JavaScript
369
star
2

rollup-plugin-off-main-thread

Use Rollup with workers and ES6 modules today.
JavaScript
305
star
3

gobox

Something like busybox in pure Go
Go
238
star
4

underdash

Collection of JS snippets for collection manipulation
JavaScript
227
star
5

use-workerized-reducer

Like useReducer, but runs in a worker.
JavaScript
226
star
6

jsxx

Rust
169
star
7

ishoudinireadyyet.com

Tracker for Houdini APIs in different browsers
HTML
119
star
8

rollup-plugin-loadz0r

An ill-named rollup plugin that makes code splitting “just work”, even with workers.
JavaScript
98
star
9

jxl-art

Web app to make art using JPEG XL.
JavaScript
93
star
10

wasmphobia

Rust
91
star
11

rollup-plugin-assemblyscript

A Rollup plugin that allows you to import AssemblyScript files and compiles them on-the-fly.
JavaScript
74
star
12

httptools

Augmenting the basic net/http package with functionality found in web frameworks without breaking the original API.
Go
57
star
13

surma.dev

Personal Homepage
JavaScript
48
star
14

rollup-plugin-comlink

Use workers seamlessly with Rollup
JavaScript
38
star
15

s3put

Push a number of folders to a S3 bucket
Go
31
star
16

gopin

Tool-less version pinning for Go - surpassed by gopkg.in
Go
31
star
17

dof-tool

A web app to calculate your depth of field when doing photography.
JavaScript
30
star
18

silly-wat-linker

A tool that makes writing WebAssembly Text files easier.
Rust
28
star
19

streaming-dot

doT-based streaming templating engine for Node and the web
JavaScript
27
star
20

as-inliner

Inlines files into your AssemblyScript
JavaScript
26
star
21

rollup-plugin-workz0r

An ill-named rollup plugin that adds worker bundling support
JavaScript
26
star
22

bfwasm

A non-optimizing Brainf_ck to WebAssembly compiler
JavaScript
25
star
23

stacksignal

Make a go program print a stacktrace of all goroutines on SIGUSR1
Go
22
star
24

spreadsheet

TypeScript
18
star
25

rollup-plugin-wasm-esm

JavaScript
15
star
26

rollup-plugin-entrypoint-hashmanifest

A rollup plugin that generates a hash manifest for each entry point.
JavaScript
13
star
27

silly-alloc

A collection of very basic allocators. Written with WebAssembly in mind.
Rust
13
star
28

gocpio

A Go package for cpio archives
Go
13
star
29

webscribble

A simple, no-fluff web scratchpad.
JavaScript
7
star
30

miniqoi

A decoder for QOI in hand-written WebAssembly
WebAssembly
7
star
31

http2-push-detect

Lists HTTP/2 pushes when requesting an URL
JavaScript
7
star
32

rm2cal

A simple calendar/TODO list for Remarkable 2.
JavaScript
6
star
33

peasant

TypeScript
6
star
34

polymer-reddit-api

A simple element wrapping Reddit’s JSON API for my talk at the Polymer Summit 2015 in Amsterdam.
HTML
5
star
35

lurkk.it

TypeScript
4
star
36

platinum-god

JavaScript
3
star
37

emsettings

HTML
3
star
38

letterboxer

JavaScript
3
star
39

bikeshed-docker

Dockerfile for Bikeshed
3
star
40

javascript-pong

My very first JavaScript project from 2004
2
star
41

importalias

Go
2
star
42

osci

Emulator and tools for osci, a one-instruction set CPU derivatived from subleq
Rust
2
star
43

eatoutandstaysane

A web app to remove any mention of calories from food menu PDFs.
JavaScript
2
star
44

xmos-virtualport

Virtual ports to emulate arbitrary-sized GPIO ports on the XMOS architecture
C
1
star
45

shaderscribble

A simple, no-fluff shader scratchpad.
JavaScript
1
star
46

diplomaenhancer

Daemon to manipulate your local host file to block webpages which you consider distracting
JavaScript
1
star