0a2d6242bdeede432c459417fc0eb72e8a07077745466260179dc9d10f1bf182aa5f399cea0d9aeef769cc55a2fdedf5c9580d8dd081013ec09650a07899e0 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import { Observable } from './Observable';
  2. import { Subscription } from './Subscription';
  3. /**
  4. * Note: This will add Symbol.observable globally for all TypeScript users,
  5. * however, we are no longer polyfilling Symbol.observable
  6. */
  7. declare global {
  8. interface SymbolConstructor {
  9. readonly observable: symbol;
  10. }
  11. }
  12. /** OPERATOR INTERFACES */
  13. export interface UnaryFunction<T, R> { (source: T): R; }
  14. export interface OperatorFunction<T, R> extends UnaryFunction<Observable<T>, Observable<R>> {}
  15. export type FactoryOrValue<T> = T | (() => T);
  16. export interface MonoTypeOperatorFunction<T> extends OperatorFunction<T, T> {}
  17. export interface Timestamp<T> {
  18. value: T;
  19. timestamp: number;
  20. }
  21. export interface TimeInterval<T> {
  22. value: T;
  23. interval: number;
  24. }
  25. /** SUBSCRIPTION INTERFACES */
  26. export interface Unsubscribable {
  27. unsubscribe(): void;
  28. }
  29. export type TeardownLogic = Unsubscribable | Function | void;
  30. export interface SubscriptionLike extends Unsubscribable {
  31. unsubscribe(): void;
  32. readonly closed: boolean;
  33. }
  34. export type SubscribableOrPromise<T> = Subscribable<T> | Subscribable<never> | PromiseLike<T> | InteropObservable<T>;
  35. /** OBSERVABLE INTERFACES */
  36. export interface Subscribable<T> {
  37. subscribe(observer?: PartialObserver<T>): Unsubscribable;
  38. /** @deprecated Use an observer instead of a complete callback */
  39. subscribe(next: null | undefined, error: null | undefined, complete: () => void): Unsubscribable;
  40. /** @deprecated Use an observer instead of an error callback */
  41. subscribe(next: null | undefined, error: (error: any) => void, complete?: () => void): Unsubscribable;
  42. /** @deprecated Use an observer instead of a complete callback */
  43. subscribe(next: (value: T) => void, error: null | undefined, complete: () => void): Unsubscribable;
  44. subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): Unsubscribable;
  45. }
  46. export type ObservableInput<T> = SubscribableOrPromise<T> | ArrayLike<T> | Iterable<T>;
  47. /** @deprecated use {@link InteropObservable } */
  48. export type ObservableLike<T> = InteropObservable<T>;
  49. export type InteropObservable<T> = { [Symbol.observable]: () => Subscribable<T>; };
  50. /** OBSERVER INTERFACES */
  51. export interface NextObserver<T> {
  52. closed?: boolean;
  53. next: (value: T) => void;
  54. error?: (err: any) => void;
  55. complete?: () => void;
  56. }
  57. export interface ErrorObserver<T> {
  58. closed?: boolean;
  59. next?: (value: T) => void;
  60. error: (err: any) => void;
  61. complete?: () => void;
  62. }
  63. export interface CompletionObserver<T> {
  64. closed?: boolean;
  65. next?: (value: T) => void;
  66. error?: (err: any) => void;
  67. complete: () => void;
  68. }
  69. export type PartialObserver<T> = NextObserver<T> | ErrorObserver<T> | CompletionObserver<T>;
  70. export interface Observer<T> {
  71. closed?: boolean;
  72. next: (value: T) => void;
  73. error: (err: any) => void;
  74. complete: () => void;
  75. }
  76. /** SCHEDULER INTERFACES */
  77. export interface SchedulerLike {
  78. now(): number;
  79. schedule<T>(work: (this: SchedulerAction<T>, state?: T) => void, delay?: number, state?: T): Subscription;
  80. }
  81. export interface SchedulerAction<T> extends Subscription {
  82. schedule(state?: T, delay?: number): Subscription;
  83. }
  84. export type ObservedValueOf<O> = O extends ObservableInput<infer T> ? T : never;
  85. export type ObservedValuesFromArray<X> = X extends Array<ObservableInput<infer T>> ? T : never;