-
Notifications
You must be signed in to change notification settings - Fork 74
/
Copy pathobserver.ts
82 lines (69 loc) · 2.48 KB
/
observer.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import { Subscription } from './subscription.js';
// Older versions of Rx will polyfill Symbol.observable, which gets
// compiled into our UMD bundle. At runtime, our UMD bundle defines its
// version of Symbol.observable, and since it's not getting it from Rx via
// `require()` anymore, Rx defines and looks for a different Symbol.observable,
// instance, leading to mismatches.
// Assigning the global Symbol.observable to the one we bundle in here means
// that Rx's polyfill will pick it up. Alternatively if there's already a global
// Symbol.observable (like if Rx was required first), we should use that one inside Ix.
// Symbol.observable addition
// Note: This will add Symbol.observable globally for all TypeScript users
declare global {
interface SymbolConstructor {
readonly observable: symbol;
}
}
// Symbol.observable or a string "@@observable". Used for interop.
// Referenced via string indexer so closure-compiler doesn't mangle.
/** @ignore */
export const observable = (typeof Symbol === 'function' && Symbol.observable) || '@@observable';
export interface NextObserver<T> {
next: (value: T) => any;
error?: (err: any) => any;
complete?: () => any;
}
export interface ErrorObserver<T> {
next?: (value: T) => any;
error: (err: any) => any;
complete?: () => any;
}
export interface CompletionObserver<T> {
next?: (value: T) => any;
error?: (err: any) => any;
complete: () => any;
}
export type PartialObserver<T> = NextObserver<T> | ErrorObserver<T> | CompletionObserver<T>;
export interface NextAsyncObserver<T> {
next: (value: T) => any | Promise<any>;
error?: (err: any) => any | Promise<any>;
complete?: () => any | Promise<any>;
}
export interface ErrorAsyncObserver<T> {
next?: (value: T) => any | Promise<any>;
error: (err: any) => any | Promise<any>;
complete?: () => any | Promise<any>;
}
export interface CompletionAsyncObserver<T> {
next?: (value: T) => any | Promise<any>;
error?: (err: any) => any | Promise<any>;
complete: () => any | Promise<any>;
}
export type PartialAsyncObserver<T> =
| NextAsyncObserver<T>
| ErrorAsyncObserver<T>
| CompletionAsyncObserver<T>;
export interface Observer<T> {
closed?: boolean;
next: (value: T) => void;
error: (err: any) => void;
complete: () => void;
}
export interface Observable<T> {
subscribe(observer?: PartialObserver<T>): Subscription;
subscribe(
next?: null | ((value: T) => void),
error?: null | ((error: any) => void),
complete?: null | (() => void)
): Subscription;
}