Skip to content

Commit c2f2963

Browse files
[refactored] Creator to Connect and Channel to NextChannel
Summary: As a result of our discussion on type naming. SO EXCITED WE GET TO USE CONNECT!!! Closes #9 Reviewers: O3 Material JavaScript platform reviewers, markwei, #material_motion, O2 Material Motion Reviewed By: markwei, #material_motion, O2 Material Motion Subscribers: markwei Tags: #material_motion Differential Revision: http://codereview.cc/D2210
1 parent 8d917e2 commit c2f2963

9 files changed

Lines changed: 44 additions & 43 deletions

dist/IndefiniteObservable.d.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { Creator, Observable, ObserverOrNext, Subscription } from './types';
1+
import { Connect, Observable, ObserverOrNext, Subscription } from './types';
22
export default class IndefiniteObservable<T> implements Observable<T> {
3-
_creator: Creator<T>;
4-
constructor(creator: Creator<T>);
3+
_connect: Connect<T>;
4+
constructor(connect: Connect<T>);
55
subscribe(observerOrNext: ObserverOrNext<T>): Subscription;
66
}

dist/IndefiniteObservable.js

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/IndefiniteSubject.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/indefinite-observable.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,14 +75,14 @@ var $observable = (
7575
)();
7676

7777
class IndefiniteObservable {
78-
constructor(creator) {
79-
this._creator = creator;
78+
constructor(connect) {
79+
this._connect = connect;
8080
}
8181
subscribe(observerOrNext) {
8282
const observer = wrapWithObserver(observerOrNext);
83-
let unsubscribe = this._creator(observer);
83+
const disconnect = this._connect(observer);
8484
return {
85-
unsubscribe,
85+
unsubscribe: disconnect,
8686
};
8787
}
8888
/**

dist/types.d.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,16 @@
1414
* under the License.
1515
*/
1616
export interface Observable<T> {
17-
subscribe(listener: Observer<T> | Channel<T>): Subscription;
17+
subscribe(observerOrNext: ObserverOrNext<T>): Subscription;
1818
}
1919
export interface Observer<T> {
20-
next: Channel<T>;
20+
next: NextChannel<T>;
2121
}
22-
export declare type Creator<T> = (observer: Observer<T>) => Unsubscribe;
23-
export declare type Channel<T> = (value: T) => void;
24-
export declare type ObserverOrNext<T> = Observer<T> | Channel<T>;
22+
export declare type Connect<T> = (observer: Observer<T>) => Disconnect;
23+
export declare type Disconnect = () => void;
24+
export declare type NextChannel<T> = (value: T) => void;
25+
export declare type ObserverOrNext<T> = Observer<T> | NextChannel<T>;
2526
export declare type Unsubscribe = () => void;
26-
export interface Subscription {
27+
export declare type Subscription = {
2728
unsubscribe: Unsubscribe;
28-
}
29+
};

src/IndefiniteObservable.ts

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,32 +19,31 @@ import $$observable from 'symbol-observable';
1919
import wrapWithObserver from './wrapWithObserver';
2020

2121
import {
22-
Creator,
22+
Connect,
2323
Observable,
2424
ObserverOrNext,
2525
Subscription,
26-
Unsubscribe,
2726
} from './types';
2827

2928
export default class IndefiniteObservable<T> implements Observable<T> {
30-
_creator: Creator<T>;
29+
_connect: Connect<T>;
3130

32-
constructor(creator: Creator<T>) {
33-
this._creator = creator;
31+
constructor(connect: Connect<T>) {
32+
this._connect = connect;
3433
}
3534

3635
subscribe(observerOrNext: ObserverOrNext<T>): Subscription {
37-
// subscribe accepts next as either an anonymous function or as a named
38-
// member on an object. The creator always expects an object with a
39-
// function named next. Therefore, if we receive an anonymous function, we
40-
// wrap it in an object literal.
36+
// For simplicity's sake, `subscribe` accepts `next` either as either an
37+
// anonymous function or wrapped in an object (the observer). Since
38+
// `connect` always expects to receive an observer, wrap any loose
39+
// functions in an object.
4140

4241
const observer = wrapWithObserver<T>(observerOrNext);
4342

44-
let unsubscribe: Unsubscribe = this._creator(observer);
43+
const disconnect = this._connect(observer);
4544

4645
return {
47-
unsubscribe,
46+
unsubscribe: disconnect,
4847
};
4948
}
5049

src/IndefiniteSubject.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import {
2727

2828
export default class IndefiniteSubject<T> implements Observable<T>, Observer<T> {
2929
// Keep track of all the observers who have subscribed, so we can notify them
30-
// when we get new values.
30+
// when we get new values. Note: JavaScript's Set collection is ordered.
3131
_observers: Set<Observer<T>> = new Set();
3232
_lastValue: T;
3333
_hasStarted: boolean = false;

src/types.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,20 @@
1515
*/
1616

1717
export interface Observable<T> {
18-
subscribe(listener: Observer<T> | Channel<T>): Subscription;
18+
subscribe(observerOrNext: ObserverOrNext<T>): Subscription;
1919
}
2020

2121
export interface Observer<T> {
22-
next: Channel<T>,
22+
next: NextChannel<T>,
2323
}
2424

25-
export type Creator<T> = (observer: Observer<T>) => Unsubscribe;
25+
export type Connect<T> = (observer: Observer<T>) => Disconnect;
26+
export type Disconnect = () => void;
2627

27-
export type Channel<T> = (value: T) => void;
28-
export type ObserverOrNext<T> = Observer<T> | Channel<T>;
28+
export type NextChannel<T> = (value: T) => void;
29+
export type ObserverOrNext<T> = Observer<T> | NextChannel<T>;
2930

3031
export type Unsubscribe = () => void;
31-
export interface Subscription {
32+
export type Subscription = {
3233
unsubscribe: Unsubscribe,
3334
}

src/wrapWithObserver.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*/
1616

1717
import {
18-
Channel,
18+
NextChannel,
1919
Observer,
2020
ObserverOrNext,
2121
} from './types';
@@ -32,7 +32,7 @@ export default function wrapWithObserver<T>(listener: ObserverOrNext<T>): Observ
3232

3333
} else {
3434
return {
35-
next: (listener as Channel<T>)
35+
next: (listener as NextChannel<T>)
3636
};
3737
}
3838
}

0 commit comments

Comments
 (0)