import { empty } from './observable/empty'; import { of } from './observable/of'; import { throwError } from './observable/throwError'; export var NotificationKind; (function (NotificationKind) { NotificationKind["NEXT"] = "N"; NotificationKind["ERROR"] = "E"; NotificationKind["COMPLETE"] = "C"; })(NotificationKind || (NotificationKind = {})); export class Notification { constructor(kind, value, error) { this.kind = kind; this.value = value; this.error = error; this.hasValue = kind === 'N'; } observe(observer) { switch (this.kind) { case 'N': return observer.next && observer.next(this.value); case 'E': return observer.error && observer.error(this.error); case 'C': return observer.complete && observer.complete(); } } do(next, error, complete) { const kind = this.kind; switch (kind) { case 'N': return next && next(this.value); case 'E': return error && error(this.error); case 'C': return complete && complete(); } } accept(nextOrObserver, error, complete) { if (nextOrObserver && typeof nextOrObserver.next === 'function') { return this.observe(nextOrObserver); } else { return this.do(nextOrObserver, error, complete); } } toObservable() { const kind = this.kind; switch (kind) { case 'N': return of(this.value); case 'E': return throwError(this.error); case 'C': return empty(); } throw new Error('unexpected notification kind value'); } static createNext(value) { if (typeof value !== 'undefined') { return new Notification('N', value); } return Notification.undefinedValueNotification; } static createError(err) { return new Notification('E', undefined, err); } static createComplete() { return Notification.completeNotification; } } Notification.completeNotification = new Notification('C'); Notification.undefinedValueNotification = new Notification('N', undefined); //# sourceMappingURL=Notification.js.map