diff --git a/src/operator/publishLast.ts b/src/operator/publishLast.ts index bbbb841311..7a57155e3e 100644 --- a/src/operator/publishLast.ts +++ b/src/operator/publishLast.ts @@ -1,13 +1,12 @@ import { Observable } from '../Observable'; -import { AsyncSubject } from '../AsyncSubject'; -import { multicast } from './multicast'; import { ConnectableObservable } from '../observable/ConnectableObservable'; - +import { publishLast as higherOrder } from '../operators'; /** * @return {ConnectableObservable} * @method publishLast * @owner Observable */ export function publishLast(this: Observable): ConnectableObservable { - return multicast.call(this, new AsyncSubject()); + //TODO(benlesh): correct type-flow through here. + return higherOrder()(this) as ConnectableObservable; } diff --git a/src/operators/index.ts b/src/operators/index.ts index 78c32c3aca..815274df5e 100644 --- a/src/operators/index.ts +++ b/src/operators/index.ts @@ -54,6 +54,7 @@ export { partition } from './partition'; export { pluck } from './pluck'; export { publish } from './publish'; export { publishBehavior } from './publishBehavior'; +export { publishLast } from './publishLast'; export { race } from './race'; export { reduce } from './reduce'; export { refCount } from './refCount'; diff --git a/src/operators/publishLast.ts b/src/operators/publishLast.ts new file mode 100644 index 0000000000..1ae01f4dcc --- /dev/null +++ b/src/operators/publishLast.ts @@ -0,0 +1,9 @@ +import { Observable } from '../Observable'; +import { AsyncSubject } from '../AsyncSubject'; +import { multicast } from './multicast'; +import { OperatorFunction } from '../interfaces'; + +//TODO(benlesh): specify that the second type is actually a ConnectableObservable +export function publishLast(): OperatorFunction { + return (source: Observable) => multicast(new AsyncSubject())(source); +}