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