๐Ÿ“ฆ hediet / rxjs-playground

A typescript playground for rx js.

โ˜… 49 stars โ‘‚ 6 forks ๐Ÿ‘ 49 watching โš–๏ธ GNU General Public License v3.0
playgroundrxjstypescript
๐Ÿ“ฅ Clone https://github.com/hediet/rxjs-playground.git
HTTPS git clone https://github.com/hediet/rxjs-playground.git
SSH git clone git@github.com:hediet/rxjs-playground.git
CLI gh repo clone hediet/rxjs-playground
Henning Dieterichs Henning Dieterichs Adds "Complex Example using publish, windowToggle" 5670f38 6 years ago ๐Ÿ“ History
๐Ÿ“‚ master View all commits โ†’
๐Ÿ“ .vscode
๐Ÿ“ docs
๐Ÿ“ src
๐Ÿ“„ .gitignore
๐Ÿ“„ .prettierrc.json
๐Ÿ“„ LICENSE
๐Ÿ“„ package.json
๐Ÿ“„ README.md
๐Ÿ“„ tsconfig.json
๐Ÿ“„ tslint.json
๐Ÿ“„ webpack.config.js
๐Ÿ“„ webpack.config.ts
๐Ÿ“„ yarn.lock
๐Ÿ“„ README.md

A TypeScript Playground for RX JS

This is a playground for RxJS, a library for reactive programming using Observables that make it easier to compose asynchronous or callback-based code. The playground supports editable as well as computed observables. Events of editable observables can be created with a single click and dragged around, while computed observables are expressed in type-checked JavaScript (also known as TypeScript) and can refer to other observables.

Core of this playground is the RxJs VirtualTimeScheduler that is used to immediately process delayed observables. The Monaco Editor is used as editor component. The control UI is implemented with BlueprintJs, the visualization is rendered as plain SVG.

For technical reasons, delayed Rx operations must be given the scheduler passed to the visualize function. The track function can be used to track piped (intermediate) observables. The browser url reflects the current playground model and can be used for sharing.

Dev-Setup

Clone the project and run yarn:

git clone https://github.com/hediet/rxjs-playground.git
cd rxjs-playground
yarn

Dev-Server

To start the dev server, run:

yarn dev

and open http://localhost:8080.

Architecture

This is a rough overview of the architecture of this app:

Todos

  • Improve performance
  • Improve usability