@samitouri / QOS-React / commits / 025d867dce

Try another approach at fixing Windows Flow issues

Dan Abramov committed May 15, 2018 at 15:20 UTC 025d867dceccfa54cfa12122a982ad3c3eff995a
4 files changed +122 -156
packages/events/TopLevelEventTypes.js
+14 -2
@@ -7,8 +7,6 @@
7 * @flow
8 */
9
10 -import type {DOMTopLevelEventType} from 'react-dom/src/events/DOMTopLevelEventTypes';
11 -
10 type RNTopLevelEventType =
11 | 'topMouseDown'
12 | 'topMouseMove'
@@ -20,4 +18,18 @@ type RNTopLevelEventType =
18 | 'topTouchMove'
19 | 'topTouchStart';
20
21 +export opaque type DOMTopLevelEventType = string;
22 +
23 +export function unsafeCastStringToDOMTopLevelType(
24 + topLevelType: string,
25 +): DOMTopLevelEventType {
26 + return topLevelType;
27 +}
28 +
29 +export function unsafeCastDOMTopLevelTypeToString(
30 + topLevelType: DOMTopLevelEventType,
31 +): string {
32 + return topLevelType;
33 +}
34 +
35 export type TopLevelType = DOMTopLevelEventType | RNTopLevelEventType;
packages/react-dom/src/events/DOMTopLevelEventTypes.js
+103 -151
@@ -7,6 +7,12 @@
7 * @flow
8 */
9
10 +import type {DOMTopLevelEventType} from 'events/TopLevelEventTypes';
11 +
12 +import {
13 + unsafeCastStringToDOMTopLevelType,
14 + unsafeCastDOMTopLevelTypeToString,
15 +} from 'events/TopLevelEventTypes';
16 import getVendorPrefixedEventName from './getVendorPrefixedEventName';
17
18 /**
@@ -19,161 +25,107 @@ import getVendorPrefixedEventName from './getVendorPrefixedEventName';
25 * of a constant in this module.
26 */
27
22 -// eslint-disable-next-line no-undef
23 -export opaque type DOMTopLevelEventType =
24 - | 'abort'
25 - | 'animationend'
26 - | 'animationiteration'
27 - | 'animationstart'
28 - | 'blur'
29 - | 'canplay'
30 - | 'canplaythrough'
31 - | 'cancel'
32 - | 'change'
33 - | 'click'
34 - | 'close'
35 - | 'compositionend'
36 - | 'compositionstart'
37 - | 'compositionupdate'
38 - | 'contextmenu'
39 - | 'copy'
40 - | 'cut'
41 - | 'dblclick'
42 - | 'drag'
43 - | 'dragend'
44 - | 'dragenter'
45 - | 'dragexit'
46 - | 'dragleave'
47 - | 'dragover'
48 - | 'dragstart'
49 - | 'drop'
50 - | 'durationchange'
51 - | 'emptied'
52 - | 'encrypted'
53 - | 'ended'
54 - | 'error'
55 - | 'focus'
56 - | 'input'
57 - | 'invalid'
58 - | 'keydown'
59 - | 'keypress'
60 - | 'keyup'
61 - | 'load'
62 - | 'loadstart'
63 - | 'loadeddata'
64 - | 'loadedmetadata'
65 - | 'mousedown'
66 - | 'mousemove'
67 - | 'mouseout'
68 - | 'mouseover'
69 - | 'mouseup'
70 - | 'paste'
71 - | 'pause'
72 - | 'play'
73 - | 'playing'
74 - | 'progress'
75 - | 'ratechange'
76 - | 'reset'
77 - | 'scroll'
78 - | 'seeked'
79 - | 'seeking'
80 - | 'selectionchange'
81 - | 'stalled'
82 - | 'submit'
83 - | 'suspend'
84 - | 'textInput'
85 - | 'timeupdate'
86 - | 'toggle'
87 - | 'touchcancel'
88 - | 'touchend'
89 - | 'touchmove'
90 - | 'touchstart'
91 - | 'transitionend'
92 - | 'volumechange'
93 - | 'waiting'
94 - | 'wheel';
95 -
96 -export const TOP_ABORT: DOMTopLevelEventType = 'abort';
97 -export const TOP_ANIMATION_END: DOMTopLevelEventType = getVendorPrefixedEventName(
98 - 'animationend',
28 +export const TOP_ABORT = unsafeCastStringToDOMTopLevelType('abort');
29 +export const TOP_ANIMATION_END = unsafeCastStringToDOMTopLevelType(
30 + getVendorPrefixedEventName('animationend'),
31 +);
32 +export const TOP_ANIMATION_ITERATION = unsafeCastStringToDOMTopLevelType(
33 + getVendorPrefixedEventName('animationiteration'),
34 +);
35 +export const TOP_ANIMATION_START = unsafeCastStringToDOMTopLevelType(
36 + getVendorPrefixedEventName('animationstart'),
37 +);
38 +export const TOP_BLUR = unsafeCastStringToDOMTopLevelType('blur');
39 +export const TOP_CAN_PLAY = unsafeCastStringToDOMTopLevelType('canplay');
40 +export const TOP_CAN_PLAY_THROUGH = unsafeCastStringToDOMTopLevelType(
41 + 'canplaythrough',
42 +);
43 +export const TOP_CANCEL = unsafeCastStringToDOMTopLevelType('cancel');
44 +export const TOP_CHANGE = unsafeCastStringToDOMTopLevelType('change');
45 +export const TOP_CLICK = unsafeCastStringToDOMTopLevelType('click');
46 +export const TOP_CLOSE = unsafeCastStringToDOMTopLevelType('close');
47 +export const TOP_COMPOSITION_END = unsafeCastStringToDOMTopLevelType(
48 + 'compositionend',
49 +);
50 +export const TOP_COMPOSITION_START = unsafeCastStringToDOMTopLevelType(
51 + 'compositionstart',
52 +);
53 +export const TOP_COMPOSITION_UPDATE = unsafeCastStringToDOMTopLevelType(
54 + 'compositionupdate',
55 +);
56 +export const TOP_CONTEXT_MENU = unsafeCastStringToDOMTopLevelType(
57 + 'contextmenu',
58 +);
59 +export const TOP_COPY = unsafeCastStringToDOMTopLevelType('copy');
60 +export const TOP_CUT = unsafeCastStringToDOMTopLevelType('cut');
61 +export const TOP_DOUBLE_CLICK = unsafeCastStringToDOMTopLevelType('dblclick');
62 +export const TOP_DRAG = unsafeCastStringToDOMTopLevelType('drag');
63 +export const TOP_DRAG_END = unsafeCastStringToDOMTopLevelType('dragend');
64 +export const TOP_DRAG_ENTER = unsafeCastStringToDOMTopLevelType('dragenter');
65 +export const TOP_DRAG_EXIT = unsafeCastStringToDOMTopLevelType('dragexit');
66 +export const TOP_DRAG_LEAVE = unsafeCastStringToDOMTopLevelType('dragleave');
67 +export const TOP_DRAG_OVER = unsafeCastStringToDOMTopLevelType('dragover');
68 +export const TOP_DRAG_START = unsafeCastStringToDOMTopLevelType('dragstart');
69 +export const TOP_DROP = unsafeCastStringToDOMTopLevelType('drop');
70 +export const TOP_DURATION_CHANGE = unsafeCastStringToDOMTopLevelType(
71 + 'durationchange',
72 +);
73 +export const TOP_EMPTIED = unsafeCastStringToDOMTopLevelType('emptied');
74 +export const TOP_ENCRYPTED = unsafeCastStringToDOMTopLevelType('encrypted');
75 +export const TOP_ENDED = unsafeCastStringToDOMTopLevelType('ended');
76 +export const TOP_ERROR = unsafeCastStringToDOMTopLevelType('error');
77 +export const TOP_FOCUS = unsafeCastStringToDOMTopLevelType('focus');
78 +export const TOP_INPUT = unsafeCastStringToDOMTopLevelType('input');
79 +export const TOP_INVALID = unsafeCastStringToDOMTopLevelType('invalid');
80 +export const TOP_KEY_DOWN = unsafeCastStringToDOMTopLevelType('keydown');
81 +export const TOP_KEY_PRESS = unsafeCastStringToDOMTopLevelType('keypress');
82 +export const TOP_KEY_UP = unsafeCastStringToDOMTopLevelType('keyup');
83 +export const TOP_LOAD = unsafeCastStringToDOMTopLevelType('load');
84 +export const TOP_LOAD_START = unsafeCastStringToDOMTopLevelType('loadstart');
85 +export const TOP_LOADED_DATA = unsafeCastStringToDOMTopLevelType('loadeddata');
86 +export const TOP_LOADED_METADATA = unsafeCastStringToDOMTopLevelType(
87 + 'loadedmetadata',
88 +);
89 +export const TOP_MOUSE_DOWN = unsafeCastStringToDOMTopLevelType('mousedown');
90 +export const TOP_MOUSE_MOVE = unsafeCastStringToDOMTopLevelType('mousemove');
91 +export const TOP_MOUSE_OUT = unsafeCastStringToDOMTopLevelType('mouseout');
92 +export const TOP_MOUSE_OVER = unsafeCastStringToDOMTopLevelType('mouseover');
93 +export const TOP_MOUSE_UP = unsafeCastStringToDOMTopLevelType('mouseup');
94 +export const TOP_PASTE = unsafeCastStringToDOMTopLevelType('paste');
95 +export const TOP_PAUSE = unsafeCastStringToDOMTopLevelType('pause');
96 +export const TOP_PLAY = unsafeCastStringToDOMTopLevelType('play');
97 +export const TOP_PLAYING = unsafeCastStringToDOMTopLevelType('playing');
98 +export const TOP_PROGRESS = unsafeCastStringToDOMTopLevelType('progress');
99 +export const TOP_RATE_CHANGE = unsafeCastStringToDOMTopLevelType('ratechange');
100 +export const TOP_RESET = unsafeCastStringToDOMTopLevelType('reset');
101 +export const TOP_SCROLL = unsafeCastStringToDOMTopLevelType('scroll');
102 +export const TOP_SEEKED = unsafeCastStringToDOMTopLevelType('seeked');
103 +export const TOP_SEEKING = unsafeCastStringToDOMTopLevelType('seeking');
104 +export const TOP_SELECTION_CHANGE = unsafeCastStringToDOMTopLevelType(
105 + 'selectionchange',
106 );
100 -export const TOP_ANIMATION_ITERATION: DOMTopLevelEventType = getVendorPrefixedEventName(
101 - 'animationiteration',
107 +export const TOP_STALLED = unsafeCastStringToDOMTopLevelType('stalled');
108 +export const TOP_SUBMIT = unsafeCastStringToDOMTopLevelType('submit');
109 +export const TOP_SUSPEND = unsafeCastStringToDOMTopLevelType('suspend');
110 +export const TOP_TEXT_INPUT = unsafeCastStringToDOMTopLevelType('textInput');
111 +export const TOP_TIME_UPDATE = unsafeCastStringToDOMTopLevelType('timeupdate');
112 +export const TOP_TOGGLE = unsafeCastStringToDOMTopLevelType('toggle');
113 +export const TOP_TOUCH_CANCEL = unsafeCastStringToDOMTopLevelType(
114 + 'touchcancel',
115 );
103 -export const TOP_ANIMATION_START: DOMTopLevelEventType = getVendorPrefixedEventName(
104 - 'animationstart',
116 +export const TOP_TOUCH_END = unsafeCastStringToDOMTopLevelType('touchend');
117 +export const TOP_TOUCH_MOVE = unsafeCastStringToDOMTopLevelType('touchmove');
118 +export const TOP_TOUCH_START = unsafeCastStringToDOMTopLevelType('touchstart');
119 +export const TOP_TRANSITION_END = unsafeCastStringToDOMTopLevelType(
120 + getVendorPrefixedEventName('transitionend'),
121 );
106 -export const TOP_BLUR: DOMTopLevelEventType = 'blur';
107 -export const TOP_CAN_PLAY: DOMTopLevelEventType = 'canplay';
108 -export const TOP_CAN_PLAY_THROUGH: DOMTopLevelEventType = 'canplaythrough';
109 -export const TOP_CANCEL: DOMTopLevelEventType = 'cancel';
110 -export const TOP_CHANGE: DOMTopLevelEventType = 'change';
111 -export const TOP_CLICK: DOMTopLevelEventType = 'click';
112 -export const TOP_CLOSE: DOMTopLevelEventType = 'close';
113 -export const TOP_COMPOSITION_END: DOMTopLevelEventType = 'compositionend';
114 -export const TOP_COMPOSITION_START: DOMTopLevelEventType = 'compositionstart';
115 -export const TOP_COMPOSITION_UPDATE: DOMTopLevelEventType = 'compositionupdate';
116 -export const TOP_CONTEXT_MENU: DOMTopLevelEventType = 'contextmenu';
117 -export const TOP_COPY: DOMTopLevelEventType = 'copy';
118 -export const TOP_CUT: DOMTopLevelEventType = 'cut';
119 -export const TOP_DOUBLE_CLICK: DOMTopLevelEventType = 'dblclick';
120 -export const TOP_DRAG: DOMTopLevelEventType = 'drag';
121 -export const TOP_DRAG_END: DOMTopLevelEventType = 'dragend';
122 -export const TOP_DRAG_ENTER: DOMTopLevelEventType = 'dragenter';
123 -export const TOP_DRAG_EXIT: DOMTopLevelEventType = 'dragexit';
124 -export const TOP_DRAG_LEAVE: DOMTopLevelEventType = 'dragleave';
125 -export const TOP_DRAG_OVER: DOMTopLevelEventType = 'dragover';
126 -export const TOP_DRAG_START: DOMTopLevelEventType = 'dragstart';
127 -export const TOP_DROP: DOMTopLevelEventType = 'drop';
128 -export const TOP_DURATION_CHANGE: DOMTopLevelEventType = 'durationchange';
129 -export const TOP_EMPTIED: DOMTopLevelEventType = 'emptied';
130 -export const TOP_ENCRYPTED: DOMTopLevelEventType = 'encrypted';
131 -export const TOP_ENDED: DOMTopLevelEventType = 'ended';
132 -export const TOP_ERROR: DOMTopLevelEventType = 'error';
133 -export const TOP_FOCUS: DOMTopLevelEventType = 'focus';
134 -export const TOP_INPUT: DOMTopLevelEventType = 'input';
135 -export const TOP_INVALID: DOMTopLevelEventType = 'invalid';
136 -export const TOP_KEY_DOWN: DOMTopLevelEventType = 'keydown';
137 -export const TOP_KEY_PRESS: DOMTopLevelEventType = 'keypress';
138 -export const TOP_KEY_UP: DOMTopLevelEventType = 'keyup';
139 -export const TOP_LOAD: DOMTopLevelEventType = 'load';
140 -export const TOP_LOAD_START: DOMTopLevelEventType = 'loadstart';
141 -export const TOP_LOADED_DATA: DOMTopLevelEventType = 'loadeddata';
142 -export const TOP_LOADED_METADATA: DOMTopLevelEventType = 'loadedmetadata';
143 -export const TOP_MOUSE_DOWN: DOMTopLevelEventType = 'mousedown';
144 -export const TOP_MOUSE_MOVE: DOMTopLevelEventType = 'mousemove';
145 -export const TOP_MOUSE_OUT: DOMTopLevelEventType = 'mouseout';
146 -export const TOP_MOUSE_OVER: DOMTopLevelEventType = 'mouseover';
147 -export const TOP_MOUSE_UP: DOMTopLevelEventType = 'mouseup';
148 -export const TOP_PASTE: DOMTopLevelEventType = 'paste';
149 -export const TOP_PAUSE: DOMTopLevelEventType = 'pause';
150 -export const TOP_PLAY: DOMTopLevelEventType = 'play';
151 -export const TOP_PLAYING: DOMTopLevelEventType = 'playing';
152 -export const TOP_PROGRESS: DOMTopLevelEventType = 'progress';
153 -export const TOP_RATE_CHANGE: DOMTopLevelEventType = 'ratechange';
154 -export const TOP_RESET: DOMTopLevelEventType = 'reset';
155 -export const TOP_SCROLL: DOMTopLevelEventType = 'scroll';
156 -export const TOP_SEEKED: DOMTopLevelEventType = 'seeked';
157 -export const TOP_SEEKING: DOMTopLevelEventType = 'seeking';
158 -export const TOP_SELECTION_CHANGE: DOMTopLevelEventType = 'selectionchange';
159 -export const TOP_STALLED: DOMTopLevelEventType = 'stalled';
160 -export const TOP_SUBMIT: DOMTopLevelEventType = 'submit';
161 -export const TOP_SUSPEND: DOMTopLevelEventType = 'suspend';
162 -export const TOP_TEXT_INPUT: DOMTopLevelEventType = 'textInput';
163 -export const TOP_TIME_UPDATE: DOMTopLevelEventType = 'timeupdate';
164 -export const TOP_TOGGLE: DOMTopLevelEventType = 'toggle';
165 -export const TOP_TOUCH_CANCEL: DOMTopLevelEventType = 'touchcancel';
166 -export const TOP_TOUCH_END: DOMTopLevelEventType = 'touchend';
167 -export const TOP_TOUCH_MOVE: DOMTopLevelEventType = 'touchmove';
168 -export const TOP_TOUCH_START: DOMTopLevelEventType = 'touchstart';
169 -export const TOP_TRANSITION_END: DOMTopLevelEventType = getVendorPrefixedEventName(
170 - 'transitionend',
122 +export const TOP_VOLUME_CHANGE = unsafeCastStringToDOMTopLevelType(
123 + 'volumechange',
124 );
172 -export const TOP_VOLUME_CHANGE: DOMTopLevelEventType = 'volumechange';
173 -export const TOP_WAITING: DOMTopLevelEventType = 'waiting';
174 -export const TOP_WHEEL: DOMTopLevelEventType = 'wheel';
125 +export const TOP_WAITING = unsafeCastStringToDOMTopLevelType('waiting');
126 +export const TOP_WHEEL = unsafeCastStringToDOMTopLevelType('wheel');
127
176 -export const mediaEventTypes: Array<DOMTopLevelEventType> = [
128 +export const mediaEventTypes = [
129 TOP_ABORT,
130 TOP_CAN_PLAY,
131 TOP_CAN_PLAY_THROUGH,
@@ -200,5 +152,5 @@ export const mediaEventTypes: Array<DOMTopLevelEventType> = [
152 ];
153
154 export function getRawEventName(topLevelType: DOMTopLevelEventType): string {
203 - return topLevelType;
155 + return unsafeCastDOMTopLevelTypeToString(topLevelType);
156 }
packages/react-dom/src/events/ReactDOMEventListener.js
+1 -1
@@ -9,7 +9,7 @@
9
10 import type {AnyNativeEvent} from 'events/PluginModuleType';
11 import type {Fiber} from 'react-reconciler/src/ReactFiber';
12 -import type {DOMTopLevelEventType} from './DOMTopLevelEventTypes';
12 +import type {DOMTopLevelEventType} from 'events/TopLevelEventTypes';
13
14 import {batchedUpdates, interactiveUpdates} from 'events/ReactGenericBatching';
15 import {runExtractedEventsInBatch} from 'events/EventPluginHub';
packages/react-dom/src/events/SimpleEventPlugin.js
+4 -2
@@ -7,8 +7,10 @@
7 * @flow
8 */
9
10 -import type {TopLevelType} from 'events/TopLevelEventTypes';
11 -import type {DOMTopLevelEventType} from './DOMTopLevelEventTypes';
10 +import type {
11 + TopLevelType,
12 + DOMTopLevelEventType,
13 +} from 'events/TopLevelEventTypes';
14 import type {
15 DispatchConfig,
16 ReactSyntheticEvent,