1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 | const globals = {
|
16 | __DEV__: true,
|
17 |
|
18 | require: true,
|
19 | requireDynamic: true,
|
20 | requireLazy: true,
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 | ReactComponent: false,
|
27 | ReactClass: false,
|
28 | ReactElement: false,
|
29 | ReactPropsCheckType: false,
|
30 | ReactPropsChainableTypeChecker: false,
|
31 | ReactPropTypes: false,
|
32 | SyntheticEvent: false,
|
33 | SyntheticClipboardEvent: false,
|
34 | SyntheticCompositionEvent: false,
|
35 | SyntheticInputEvent: false,
|
36 | SyntheticUIEvent: false,
|
37 | SyntheticFocusEvent: false,
|
38 | SyntheticKeyboardEvent: false,
|
39 | SyntheticMouseEvent: false,
|
40 | SyntheticDragEvent: false,
|
41 | SyntheticWheelEvent: false,
|
42 | SyntheticTouchEvent: false,
|
43 |
|
44 |
|
45 |
|
46 | $Either: false,
|
47 | $All: false,
|
48 | $Tuple: false,
|
49 | $Supertype: false,
|
50 | $Subtype: false,
|
51 | $Shape: false,
|
52 | $Diff: false,
|
53 | $Keys: false,
|
54 | $Enum: false,
|
55 | $Exports: false,
|
56 | Class: false,
|
57 | function: false,
|
58 | Iterable: false,
|
59 | // suppress types
|
60 | $FlowIssue: false,
|
61 | $FlowFixMe: false,
|
62 | $FixMe: false,
|
63 | // https://fburl.com/flow-core-defs
|
64 | Iterator: false,
|
65 | IteratorResult: false,
|
66 | $await: false,
|
67 | ArrayBufferView: false,
|
68 | // https://fburl.com/flow-fb-defs
|
69 | FbtResult: false,
|
70 | $jsx: false,
|
71 | FBID: false,
|
72 | AdAccountID: false,
|
73 | UID: false,
|
74 | ReactNode: false,
|
75 | Fbt: false,
|
76 | // https://fburl.com/flow-liverail-defs
|
77 | LRID: false,
|
78 | // https://fburl.com/flow-powereditor-def
|
79 | UkiAccount: false,
|
80 | UkiAdgroup: false,
|
81 | UkiCampaign: false,
|
82 | UkiCampaignGroup: false,
|
83 | // some of this maybe should be handled by the npm globals module, but it
|
84 | // doesn't have proper WebRTC support yet
|
85 | // https://fburl.com/flow-webrtc-defs
|
86 | RTCConfiguration: false,
|
87 | RTCIceServer: false,
|
88 | RTCOfferOptions: false,
|
89 | RTCStatsReport: false,
|
90 | RTCStatsCallback: false,
|
91 | RTCPeerConnection: false,
|
92 | RTCPeerConnectionErrorCallback: false,
|
93 | RTCSessionDescription: false,
|
94 | RTCSessionDescriptionInit: false,
|
95 | RTCSessionDescriptionCallback: false,
|
96 | RTCIceCandidate: false,
|
97 | RTCIceCandidateInit: false,
|
98 | RTCPeerConnectionIceEvent: false,
|
99 | RTCPeerConnectionIceEventInit: false,
|
100 | RTCDataChannel: false,
|
101 | RTCDataChannelInit: false,
|
102 | RTCDataChannelEvent: false,
|
103 | RTCDataChannelEventInit: false,
|
104 | };
|
105 |
|
106 | // This pattern will match these texts:
|
107 | // var Foo = require('Foo');
|
108 | // var Bar = require('Foo').Bar;
|
109 | // var BarFoo = require(Bar + 'Foo');
|
110 | // var {Bar, Foo} = require('Foo');
|
111 |
|
112 |
|
113 | const variableNamePattern = String.raw`\s*[a-zA-Z_$][a-zA-Z_$\d]*\s*`;
|
114 | const maxLenIgnorePattern = String.raw`^(?:var|let|const|import type)\s+` +
|
115 | '{?' + variableNamePattern + '(?:,' + variableNamePattern + ')*}?' +
|
116 | String.raw`\s*(?:=\s*require\(|from)[a-zA-Z_+./"'\s\d\-]+\)?[^;\n]*[;\n]`;
|
117 |
|
118 |
|
119 | module.exports = {
|
120 | globals: globals,
|
121 | maxLenIgnorePattern: maxLenIgnorePattern,
|
122 | };
|