1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 | 'use strict';
|
12 |
|
13 | const EmitterSubscription = require('EmitterSubscription');
|
14 | const EventEmitter = require('EventEmitter');
|
15 |
|
16 | const invariant = require('invariant');
|
17 |
|
18 | class MissingNativeEventEmitterShim extends EventEmitter {
|
19 | isAvailable: boolean = false;
|
20 | _nativeModuleName: string;
|
21 | _nativeEventEmitterName: string;
|
22 |
|
23 | constructor(nativeModuleName: string, nativeEventEmitterName: string) {
|
24 | super(null);
|
25 | this._nativeModuleName = nativeModuleName;
|
26 | this._nativeEventEmitterName = nativeEventEmitterName;
|
27 | }
|
28 |
|
29 | throwMissingNativeModule() {
|
30 | invariant(
|
31 | false,
|
32 | `Cannot use '${this._nativeEventEmitterName}' module when ` +
|
33 | `native '${this._nativeModuleName}' is not included in the build. ` +
|
34 | `Either include it, or check '${
|
35 | this._nativeEventEmitterName
|
36 | }'.isAvailable ` +
|
37 | 'before calling any methods.',
|
38 | );
|
39 | }
|
40 |
|
41 |
|
42 | addListener(eventType: string, listener: Function, context: ?Object) {
|
43 | this.throwMissingNativeModule();
|
44 | }
|
45 |
|
46 | removeAllListeners(eventType: string) {
|
47 | this.throwMissingNativeModule();
|
48 | }
|
49 |
|
50 | removeSubscription(subscription: EmitterSubscription) {
|
51 | this.throwMissingNativeModule();
|
52 | }
|
53 | }
|
54 |
|
55 | module.exports = MissingNativeEventEmitterShim;
|