Skip to content

Commit ad9cb12

Browse files
committed
Updates
1 parent 44cb11e commit ad9cb12

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

85 files changed

+6487
-381
lines changed

.babelrc

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"presets": [
3+
"latest",
4+
"react"
5+
],
6+
"plugins": [
7+
"transform-class-properties",
8+
"transform-export-extensions",
9+
"transform-object-rest-spread",
10+
"transform-runtime"
11+
]
12+
}

.eslintrc

Lines changed: 0 additions & 17 deletions
This file was deleted.

.eslintrc.json

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"parser": "babel-eslint",
3+
"extends": "airbnb",
4+
"plugins": [
5+
"react",
6+
"jsx-a11y",
7+
"import"
8+
],
9+
"env": {
10+
"browser": true,
11+
"node": true
12+
},
13+
"rules": {
14+
"comma-dangle": ["error", {
15+
"arrays": "always-multiline",
16+
"objects": "always-multiline",
17+
"imports": "always-multiline",
18+
"exports": "always-multiline",
19+
"functions": "ignore"
20+
}],
21+
"global-require": 0,
22+
"import/no-webpack-loader-syntax": 0,
23+
"react/jsx-filename-extension": 0
24+
},
25+
"settings": {
26+
"import/resolver": "webpack"
27+
}
28+
}

Guardfile

Lines changed: 0 additions & 10 deletions
This file was deleted.

code/babel/babelrc-manual.js

Lines changed: 0 additions & 8 deletions
This file was deleted.

code/babel/babelrc-stage-3.js

Lines changed: 0 additions & 4 deletions
This file was deleted.

code/observables/array.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[ 1, 2, 3, 4, 5 ]

code/observables/async/async-2.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
async function printCustomerNames() {
2+
const orders = await fetchOrders();
3+
const filtered = orders.filter(
4+
order => order.customerName === 'Tucker'
5+
);
6+
const orderIds = filtered.map(order => order.id);
7+
8+
orderIds.forEach(id => console.log(id));
9+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
fetchOrders()
2+
.subscribe((orders) => {
3+
orders.forEach((order) => {
4+
console.log(order);
5+
});
6+
});
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
fetchOrders()
2+
.mergeAll()
3+
.filter(
4+
order => order.customerName === 'Tucker'
5+
)
6+
.map(order => order.id)
7+
.subscribe(id => console.log(id));
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
const { Observable } = require('rxjs');
2+
const axios = require('axios');
3+
4+
Observable.ajax = {
5+
get(url) {
6+
return Observable.fromPromise(
7+
axios.get(`http://localhost:3000${url}`)
8+
.then(({ data }) => data)
9+
);
10+
},
11+
};
12+
13+
function fetchOrders() {
14+
return Observable.ajax.get('/orders');
15+
}
16+
17+
fetchOrders()
18+
.mergeAll()
19+
.subscribe(x => console.log(x));
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
function fetchOrders() {
2+
return Observable.create((subscriber) => {
3+
fetchOrdersFromDb((orders) => {
4+
subscriber.next(orders);
5+
subscriber.complete();
6+
});
7+
});
8+
}
9+
10+
fetchOrders()
11+
.mergeAll()
12+
.subscribe(x => console.log(x));

code/observables/async/promise-1.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
fetchOrders()
2+
.then((orders) => {
3+
orders.forEach((order) => {
4+
console.log(order);
5+
});
6+
});

code/observables/async/promise-2.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
fetchOrders()
2+
.then(orders => orders.filter(
3+
order => order.customerName === 'Tucker'
4+
))
5+
.then(orders => orders.map(order => order.id))
6+
.then((orderIds) => {
7+
orderIds.forEach(id => console.log(id));
8+
});
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
const subscription = fetchOrders()
2+
.subscribe((orders) => {
3+
orders.forEach((order) => {
4+
console.log(order);
5+
});
6+
});
7+
8+
subscription.unsubscribe();

code/observables/cancel/promise-1.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
const promise = fetchOrders()
2+
.then((orders) => {
3+
orders.foreach((order) => {
4+
console.log(order);
5+
});
6+
});
7+
8+
promise.cancel();

code/observables/cleanup/cleanup-1.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
function fetchOrdersStream() {
2+
return Observable.create((subscriber) => {
3+
const socket = new WebSocket('ws://example.com');
4+
5+
socket.addEventListener('message', (event) => {
6+
subscriber.next(event.data);
7+
});
8+
9+
return () => {
10+
socket.close();
11+
};
12+
});
13+
}

code/observables/declarative-1.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Observable.of(1, 2, 3)
2+
.map(n => n * 2)
3+
.subscribe(x => console.log(x));
4+
5+
// 2
6+
// 4
7+
// 6

code/observables/delay/delay-1.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
Observable.of(1)
2+
.delay(1000)
3+
.subscribe(x => console.log(x))
4+
5+
// <tick>
6+
// 1
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
Observable.fromEvent(incrementBtn, 'click')
2+
.mapTo(1)
3+
.scan((acc, curr) => acc + curr, 0)
4+
.subscribe((counter) => {
5+
counterEl.innerHTML = counter;
6+
});
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
const { Observable } = require('rxjs');
2+
3+
const incrementBtn = document.getElementById('increment');
4+
const decrementBtn = document.getElementById('decrement');
5+
const counterEl = document.getElementById('counter');
6+
7+
const source = Observable.merge(
8+
Observable.fromEvent(incrementBtn, 'click').mapTo(1),
9+
Observable.fromEvent(decrementBtn, 'click').mapTo(-1),
10+
);
11+
12+
source
13+
.scan((acc, curr) => acc + curr, 0)
14+
.subscribe((counter) => {
15+
counterEl.innerHTML = counter;
16+
});
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// // Observable.fromPromise(Promise.reject('lol')).subscribe(x => console.log(x))
2+
// const source = Observable.create((subscriber) => {
3+
// fetchOrdersFromDb((err, orders) => {
4+
// if (err) {
5+
// try {
6+
// subscriber.error(err);
7+
// console.log('after');
8+
// } catch (e) {
9+
// console.log('it threw', e);
10+
// }
11+
// } else {
12+
// subscriber.next(orders);
13+
// subscriber.complete();
14+
// }
15+
// });
16+
// });
17+
18+
// // source.subscribe(x => console.log(x));
19+
// source.subscribe({
20+
// next: x => console.log(x),
21+
// error: e => console.error(e),
22+
// });
23+
24+
const source = Observable.create((subscriber) => {
25+
subscriber.next(1);
26+
subscriber.error(new Error('Uh oh'));
27+
subscriber.next(2);
28+
});
29+
30+
source.subscribe({
31+
next: x => console.log(x),
32+
complete: () => console.log('Done!'),
33+
error: e => console.error(e),
34+
});
35+
36+
// 1
37+
// Error: Uh oh
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
const source = Observable.create((subscriber) => {
2+
subscriber.next(1);
3+
subscriber.error(new Error('Uh oh'));
4+
subscriber.next(2);
5+
});
6+
7+
source.subscribe(x => console.log(x));
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// const source = Observable.create((subscriber) => {
2+
// fetchOrdersFromDb((err, orders) => {
3+
// if (err) {
4+
// subscriber.error(err);
5+
// } else {
6+
// subscriber.next(orders);
7+
// subscriber.complete();
8+
// }
9+
// });
10+
// });
11+
12+
fetchOrders()
13+
.catch((e) => {
14+
logError(e);
15+
return Observable.of([]);
16+
})
17+
.subscribe(x => console.log(x));
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
function fetchOrders() {
2+
return Observable.create((subscriber) => {
3+
fetchOrdersFromDb((err, orders) => {
4+
if (err) {
5+
subscriber.error(err);
6+
} else {
7+
subscriber.next(orders);
8+
subscriber.complete();
9+
}
10+
});
11+
});
12+
}
13+
14+
fetchOrders()
15+
.retry(3)
16+
.subscribe({
17+
next: x => console.log(x),
18+
error: e => console.error(e),
19+
});
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
function fetchOrders() {
2+
return Observable.create((subscriber) => {
3+
fetchOrdersFromDb((err, orders) => {
4+
if (err) {
5+
subscriber.error(err);
6+
} else {
7+
subscriber.next(orders);
8+
subscriber.complete();
9+
}
10+
});
11+
});
12+
}
13+
14+
function legacyFetchOrders() {
15+
return Observable.create((subscriber) => {
16+
fetchOrdersFromDb((err, orders) => {
17+
if (err) {
18+
subscriber.error(new Error('nope'));
19+
} else {
20+
subscriber.next(orders);
21+
subscriber.complete();
22+
}
23+
});
24+
});
25+
}
26+
27+
fetchOrders()
28+
.catch((e) => {
29+
logError(e);
30+
31+
return legacyFetchOrders()
32+
.catch((e2) => {
33+
logError(e2);
34+
return Observable.of([]);
35+
})
36+
})
37+
.subscribe(x => console.log(x));
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
Observable.from(Promise.resolve('world'))
2+
.subscribe(x => console.log(x));
3+
4+
function* greeting() {
5+
yield 'hello';
6+
}
7+
8+
Observable.from(greeting())
9+
.subscribe(x => console.log(x));
10+
11+
// hello
12+
// world
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
const { Observable } = require('rxjs');
2+
3+
Observable.of(1, 2, 3)
4+
.map(n => Observable.of(n * 2))
5+
.subscribe(x => console.log(x));
6+
7+
// ScalarObservable { value: 2 }
8+
// ScalarObservable { value: 4 }
9+
// ScalarObservable { value: 6 }
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
const { Observable } = require('rxjs');
2+
3+
Observable.of(1, 2, 3)
4+
.map(n => Observable.of(n * 2))
5+
.mergeAll()
6+
.subscribe(x => console.log(x));
7+
8+
// 2
9+
// 4
10+
// 6
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
const { Observable } = require('rxjs');
2+
3+
Observable.of(1, 2, 3)
4+
.mergeMap(n => Observable.of(n * 2))
5+
.subscribe(x => console.log(x));
6+
7+
// 2
8+
// 4
9+
// 6

0 commit comments

Comments
 (0)