This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const RxNode = require('rx-node'); | |
| const Rx = require('rx'); | |
| const spawn = require('child_process').spawn; | |
| RxNode.fromStream(spawn('find', ['/','-type','f','-exec', 'cat', '{}', '\+']).stdout) | |
| .map(x => x.toString()) | |
| // using python | |
| .map(x => RxNode.fromStream(spawn('./word-count.py', [x]).stdout)) | |
| // or using javascript | |
| //.map(x => RxNode.fromStream(spawn('./word-count.js', [x]).stdout)) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const fs = require('fs'); | |
| const Rx = require('rx'); | |
| const RxNode = require('rx-node'); | |
| const timerStream = new Rx.Subject(); | |
| const initialState = {count: 0}; | |
| const updateState = (state, msg) => { | |
| state.count++; | |
| return state; | |
| }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const Rx = require('rx'); | |
| const coinsStream = Rx.Observable.fromArray([1,2,5,10,20,50,100].reverse()); | |
| Rx.Observable | |
| // bind CoinResource lifetime to the stream lifetime | |
| .using(() => new CoinResource(9), resource => coinsStream.map(x => ({ amount: resource.getValue(), coin: x }))) | |
| // calculations | |
| .reduce((state, e) => { | |
| const amount = (state.length > 0) ? state[state.length-1].rest : e.amount; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const Rx = require('rx'); | |
| // simulate transactions | |
| const bookCar = id => Rx.Observable.return({sagaId: id, 'Car A': true}).delay(1000); | |
| const bookHotel = id => Rx.Observable.return({sagaId: id, 'Hotel B': true}).delay(1000); | |
| const bookFlight = id => Rx.Observable.return({sagaId: id, 'Flight C': true}).delay(1000); | |
| // simulate error | |
| //const bookFlight = id => Rx.Observable.throw({sagaId: id, 'Flight C': true}).delay(1000); | |
| // transaction compensation (idempotence) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const require1 = require('./require1'); | |
| const require2 = require('./require2'); | |
| const require3 = require('./require3'); | |
| console.log(require1.getValue()); | |
| console.log(require2.getValue()); | |
| console.log(require3.getValue()); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // demonstrate | |
| const simulateActions = [ | |
| addTodo({text: 'todo 1'}), | |
| addTodo({text: 'todo 2'}), | |
| toggleTodo({index: 0}), | |
| toggleTodo({index: 1}), | |
| ]; | |
| const actual = simulateActions.reduce(todosReducer, []); | |
| console.log(actual); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const account = openBankAccount({name: 'Max Muster'})({}) | |
| account.deposit(1000) | |
| account.withdraw(800) | |
| account.withdraw(800) | |
| // use compose(...) building block | |
| const { calculateBalance, name, transactions, save} = compose(withBalanceCalculation({}), withStore())(account) | |
| console.log(`${name}: ${calculateBalance()} [${transactions.map(x => x.deposit || 0 - x.withdraw)}]`) | |
| console.log(save()) | |
| // same stuff, but use the handy way |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| export const Gists = props => | |
| <div> | |
| { | |
| props.viewer.gists && | |
| props.viewer.gists.map(x => <p>{x.description}</p>) | |
| } | |
| </div> | |
| export const GistsWithGraphQL = compose( | |
| withGraphQL(variables => Fragment`fragment gists on Gist { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const defaultFirst = 'A`' | |
| const defaultSecond = 'B`' | |
| const defaultThird = 'C`' | |
| async function doFirst() { | |
| // throw new Error('Error A') | |
| return await 'A' | |
| } | |
| async function doSecond() { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import React, { useState } from 'react'; | |
| import { render } from 'react-dom'; | |
| const todosStore = { | |
| todos: { | |
| '1': { | |
| id: '1', | |
| text: '', | |
| }, | |
| }, |