diff --git a/package.json b/package.json index 356b8fb7bf068..ed2c480305bea 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "@babel/code-frame": "^7.0.0", "@babel/core": "^7.0.0", "@babel/helper-module-imports": "^7.0.0", + "@babel/parser": "^7.0.0", "@babel/plugin-external-helpers": "^7.0.0", "@babel/plugin-proposal-class-properties": "^7.0.0", "@babel/plugin-proposal-object-rest-spread": "^7.0.0", @@ -36,7 +37,6 @@ "art": "^0.10.1", "babel-eslint": "^10.0.0", "babel-plugin-syntax-trailing-function-commas": "^6.5.0", - "babylon": "6.18.0", "chalk": "^1.1.3", "cli-table": "^0.3.1", "coffee-script": "^1.8.0", @@ -56,7 +56,7 @@ "eslint-plugin-react-internal": "link:./scripts/eslint-rules", "fbjs-scripts": "^0.8.3", "filesize": "^3.5.6", - "flow-bin": "^0.72.0", + "flow-bin": "^0.84.0", "glob": "^6.0.4", "glob-stream": "^6.1.0", "google-closure-compiler": "20190301.0.0", diff --git a/packages/create-subscription/src/createSubscription.js b/packages/create-subscription/src/createSubscription.js index 88143bc2f97ba..b7750bb319ae4 100644 --- a/packages/create-subscription/src/createSubscription.js +++ b/packages/create-subscription/src/createSubscription.js @@ -29,10 +29,10 @@ export function createSubscription( callback: (value: Value | void) => void, ) => Unsubscribe, |}>, -): React$ComponentType<{ +): React$ComponentType<{| children: (value: Value | void) => React$Node, source: Property, -}> { +|}> { const {getCurrentValue, subscribe} = config; if (__DEV__) { @@ -44,14 +44,14 @@ export function createSubscription( } } - type Props = { + type Props = {| children: (value: Value) => React$Element, source: Property, - }; - type State = { + |}; + type State = {| source: Property, value: Value | void, - }; + |}; // Reference: https://gist.github.com/bvaughn/d569177d70b50b58bff69c3c4a5353f3 class Subscription extends React.Component { diff --git a/packages/legacy-events/EventPluginRegistry.js b/packages/legacy-events/EventPluginRegistry.js index e1a670dc32267..64c2a9a1e03e8 100644 --- a/packages/legacy-events/EventPluginRegistry.js +++ b/packages/legacy-events/EventPluginRegistry.js @@ -16,7 +16,7 @@ import type { import invariant from 'shared/invariant'; -type NamesToPlugins = {[key: PluginName]: PluginModule}; +type NamesToPlugins = {[key: PluginName]: PluginModule, ...}; type EventPluginOrder = null | Array; /** diff --git a/packages/legacy-events/PluginModuleType.js b/packages/legacy-events/PluginModuleType.js index 1e7635114f779..04ec9e67357e5 100644 --- a/packages/legacy-events/PluginModuleType.js +++ b/packages/legacy-events/PluginModuleType.js @@ -15,7 +15,7 @@ import type { import type {TopLevelType} from './TopLevelEventTypes'; import type {EventSystemFlags} from 'legacy-events/EventSystemFlags'; -export type EventTypes = {[key: string]: DispatchConfig}; +export type EventTypes = {[key: string]: DispatchConfig, ...}; export type AnyNativeEvent = Event | KeyboardEvent | MouseEvent | Touch; @@ -31,4 +31,5 @@ export type PluginModule = { eventSystemFlags: EventSystemFlags, ) => ?ReactSyntheticEvent, tapMoveThreshold?: number, + ... }; diff --git a/packages/legacy-events/ReactSyntheticEventType.js b/packages/legacy-events/ReactSyntheticEventType.js index 71ae77fa0eda4..922d49d5c30f8 100644 --- a/packages/legacy-events/ReactSyntheticEventType.js +++ b/packages/legacy-events/ReactSyntheticEventType.js @@ -12,17 +12,17 @@ import type {Fiber} from 'react-reconciler/src/ReactFiber'; import type {EventPriority} from 'shared/ReactTypes'; import type {TopLevelType} from './TopLevelEventTypes'; -export type DispatchConfig = { +export type DispatchConfig = {| dependencies: Array, - phasedRegistrationNames?: { + phasedRegistrationNames?: {| bubbled: string, captured: string, - }, + |}, registrationName?: string, eventPriority: EventPriority, -}; +|}; -export type ReactSyntheticEvent = { +export type ReactSyntheticEvent = {| dispatchConfig: DispatchConfig, getPooled: ( dispatchConfig: DispatchConfig, @@ -31,4 +31,4 @@ export type ReactSyntheticEvent = { nativeEventTarget: EventTarget, ) => ReactSyntheticEvent, isPersistent: () => boolean, -} & SyntheticEvent<>; +|} & SyntheticEvent<>; diff --git a/packages/legacy-events/ResponderTouchHistoryStore.js b/packages/legacy-events/ResponderTouchHistoryStore.js index 1706f9af17fa6..643e2c130a4e9 100644 --- a/packages/legacy-events/ResponderTouchHistoryStore.js +++ b/packages/legacy-events/ResponderTouchHistoryStore.js @@ -16,7 +16,7 @@ import {isStartish, isMoveish, isEndish} from './ResponderTopLevelEventTypes'; * should typically only see IDs in the range of 1-20 because IDs get recycled * when touches end and start again. */ -type TouchRecord = { +type TouchRecord = {| touchActive: boolean, startPageX: number, startPageY: number, @@ -27,7 +27,7 @@ type TouchRecord = { previousPageX: number, previousPageY: number, previousTimeStamp: number, -}; +|}; const MAX_TOUCH_BANK = 20; const touchBank: Array = []; @@ -46,10 +46,12 @@ type Touch = { pageX: number, pageY: number, timestamp: number, + ... }; type TouchEvent = { changedTouches: Array, touches: Array, + ... }; function timestampForTouch(touch: Touch): number { diff --git a/packages/react-cache/src/ReactCache.js b/packages/react-cache/src/ReactCache.js index 203e2c3395703..ec8d93d7cd85f 100644 --- a/packages/react-cache/src/ReactCache.js +++ b/packages/react-cache/src/ReactCache.js @@ -13,11 +13,10 @@ import {createLRU} from './LRU'; type Thenable = { then(resolve: (T) => mixed, reject: (mixed) => mixed): mixed, + ... }; -type Suspender = { - then(resolve: () => mixed, reject: () => mixed): mixed, -}; +type Suspender = {then(resolve: () => mixed, reject: () => mixed): mixed, ...}; type PendingResult = {| status: 0, @@ -39,6 +38,7 @@ type Result = PendingResult | ResolvedResult | RejectedResult; type Resource = { read(I): V, preload(I): void, + ... }; const Pending = 0; diff --git a/packages/react-debug-tools/src/ReactDebugHooks.js b/packages/react-debug-tools/src/ReactDebugHooks.js index 0ff4d4278b170..26011eb8940df 100644 --- a/packages/react-debug-tools/src/ReactDebugHooks.js +++ b/packages/react-debug-tools/src/ReactDebugHooks.js @@ -36,6 +36,7 @@ type HookLogEntry = { primitive: string, stackError: Error, value: mixed, + ... }; let hookLog: Array = []; @@ -142,7 +143,7 @@ function useReducer( return [state, (action: A) => {}]; } -function useRef(initialValue: T): {current: T} { +function useRef(initialValue: T): {|current: T|} { let hook = nextHook(); let ref = hook !== null ? hook.memoizedState : {current: initialValue}; hookLog.push({ @@ -174,7 +175,7 @@ function useEffect( } function useImperativeHandle( - ref: {current: T | null} | ((inst: T | null) => mixed) | null | void, + ref: {|current: T | null|} | ((inst: T | null) => mixed) | null | void, create: () => T, inputs: Array | void | null, ): void { @@ -285,6 +286,7 @@ export type HooksNode = { name: string, value: mixed, subHooks: Array, + ... }; export type HooksTree = Array; diff --git a/packages/react-devtools-core/src/backend.js b/packages/react-devtools-core/src/backend.js index f90a68d0d2f17..6b95b4c79114a 100644 --- a/packages/react-devtools-core/src/backend.js +++ b/packages/react-devtools-core/src/backend.js @@ -27,6 +27,7 @@ type ConnectOptions = { resolveRNStyle?: ResolveNativeStyle, isAppActive?: () => boolean, websocket?: ?WebSocket, + ... }; installHook(window); @@ -120,7 +121,7 @@ export function connectToDevTools(options: ?ConnectOptions) { }); bridge.addListener( 'inspectElement', - ({id, rendererID}: {id: number, rendererID: number}) => { + ({id, rendererID}: {id: number, rendererID: number, ...}) => { const renderer = agent.rendererInterfaces[rendererID]; if (renderer != null) { // Send event for RN to highlight. diff --git a/packages/react-devtools-shared/src/backend/agent.js b/packages/react-devtools-shared/src/backend/agent.js index 73c09f6a84239..b9a2b7ab0af23 100644 --- a/packages/react-devtools-shared/src/backend/agent.js +++ b/packages/react-devtools-shared/src/backend/agent.js @@ -109,7 +109,7 @@ export default class Agent extends EventEmitter<{| _bridge: BackendBridge; _isProfiling: boolean = false; _recordChangeDescriptions: boolean = false; - _rendererInterfaces: {[key: RendererID]: RendererInterface} = {}; + _rendererInterfaces: {[key: RendererID]: RendererInterface, ...} = {}; _persistedSelection: PersistedSelection | null = null; _persistedSelectionMatch: PathMatch | null = null; _traceUpdatesEnabled: boolean = false; @@ -185,7 +185,7 @@ export default class Agent extends EventEmitter<{| setupTraceUpdates(this); } - get rendererInterfaces(): {[key: RendererID]: RendererInterface} { + get rendererInterfaces(): {[key: RendererID]: RendererInterface, ...} { return this._rendererInterfaces; } diff --git a/packages/react-devtools-shared/src/backend/index.js b/packages/react-devtools-shared/src/backend/index.js index 4af370046f073..6a70c250bb3cd 100644 --- a/packages/react-devtools-shared/src/backend/index.js +++ b/packages/react-devtools-shared/src/backend/index.js @@ -30,6 +30,7 @@ export function initBackend( id: number, renderer: ReactRenderer, rendererInterface: RendererInterface, + ... }) => { agent.setRendererInterface(id, rendererInterface); @@ -91,7 +92,7 @@ export function initBackend( subs.push( hook.sub( 'renderer', - ({id, renderer}: {id: number, renderer: ReactRenderer}) => { + ({id, renderer}: {id: number, renderer: ReactRenderer, ...}) => { attachRenderer(id, renderer); }, ), diff --git a/packages/react-devtools-shared/src/backend/legacy/utils.js b/packages/react-devtools-shared/src/backend/legacy/utils.js index a2f7a440ed457..2634ab1edff58 100644 --- a/packages/react-devtools-shared/src/backend/legacy/utils.js +++ b/packages/react-devtools-shared/src/backend/legacy/utils.js @@ -19,7 +19,7 @@ export function decorate(object: Object, attr: string, fn: Function): Function { export function decorateMany( source: Object, - fns: {[attr: string]: Function}, + fns: {[attr: string]: Function, ...}, ): Object { const olds = {}; for (const name in fns) { diff --git a/packages/react-devtools-shared/src/backend/renderer.js b/packages/react-devtools-shared/src/backend/renderer.js index db5d45e3f0eb4..7179cc5e43fd3 100644 --- a/packages/react-devtools-shared/src/backend/renderer.js +++ b/packages/react-devtools-shared/src/backend/renderer.js @@ -76,7 +76,7 @@ import type { type getDisplayNameForFiberType = (fiber: Fiber) => string | null; type getTypeSymbolType = (type: any) => Symbol | number; -type ReactSymbolsType = { +type ReactSymbolsType = {| CONCURRENT_MODE_NUMBER: number, CONCURRENT_MODE_SYMBOL_STRING: string, DEPRECATED_ASYNC_MODE_SYMBOL_STRING: string, @@ -94,7 +94,7 @@ type ReactSymbolsType = { STRICT_MODE_SYMBOL_STRING: string, SCOPE_NUMBER: number, SCOPE_SYMBOL_STRING: string, -}; +|}; type ReactPriorityLevelsType = {| ImmediatePriority: number, diff --git a/packages/react-devtools-shared/src/backend/types.js b/packages/react-devtools-shared/src/backend/types.js index 8f738fbfe94cf..69c9bdeb130ed 100644 --- a/packages/react-devtools-shared/src/backend/types.js +++ b/packages/react-devtools-shared/src/backend/types.js @@ -48,13 +48,13 @@ export type FindNativeNodesForFiberID = (id: number) => ?Array; export type ReactProviderType = { $$typeof: Symbol | number, _context: ReactContext, + ... }; export type ReactRenderer = { findFiberByHostInstance: (hostInstance: NativeType) => ?Fiber, version: string, bundleType: BundleType, - // 16.9+ overrideHookState?: ?( fiber: Object, @@ -62,30 +62,25 @@ export type ReactRenderer = { path: Array, value: any, ) => void, - // 16.7+ overrideProps?: ?( fiber: Object, path: Array, value: any, ) => void, - // 16.9+ scheduleUpdate?: ?(fiber: Object) => void, setSuspenseHandler?: ?(shouldSuspend: (fiber: Object) => boolean) => void, - // Only injected by React v16.8+ in order to support hooks inspection. currentDispatcherRef?: {|current: null | Dispatcher|}, - // Only injected by React v16.9+ in DEV mode. // Enables DevTools to append owners-only component stack to error messages. getCurrentFiber?: () => Fiber | null, - // Uniquely identifies React DOM v15. ComponentTree?: any, - // Present for React DOM v12 (possibly earlier) through v15. Mount?: any, + ... }; export type ChangeDescription = {| @@ -267,12 +262,13 @@ export type RendererInterface = { count: number, ) => void, updateComponentFilters: (componentFilters: Array) => void, + ... }; export type Handler = (data: any) => void; export type DevToolsHook = { - listeners: {[key: string]: Array}, + listeners: {[key: string]: Array, ...}, rendererInterfaces: Map, renderers: Map, @@ -299,4 +295,5 @@ export type DevToolsHook = { // Added in v16.9 to support Fast Refresh didError?: boolean, ) => void, + ... }; diff --git a/packages/react-devtools-shared/src/backend/views/Highlighter/index.js b/packages/react-devtools-shared/src/backend/views/Highlighter/index.js index 720e74e239c07..bfd9c7c230337 100644 --- a/packages/react-devtools-shared/src/backend/views/Highlighter/index.js +++ b/packages/react-devtools-shared/src/backend/views/Highlighter/index.js @@ -95,6 +95,7 @@ export default function setupHighlighter( openNativeElementsPanel: boolean, rendererID: number, scrollIntoView: boolean, + ... }) { const renderer = agent.rendererInterfaces[rendererID]; if (renderer == null) { diff --git a/packages/react-devtools-shared/src/backend/views/utils.js b/packages/react-devtools-shared/src/backend/views/utils.js index fa779a574d77c..e332c81a0af86 100644 --- a/packages/react-devtools-shared/src/backend/views/utils.js +++ b/packages/react-devtools-shared/src/backend/views/utils.js @@ -14,6 +14,7 @@ export type Rect = { right: number, top: number, width: number, + ... }; // Get the window object for the document that a node belongs to, diff --git a/packages/react-devtools-shared/src/devtools/cache.js b/packages/react-devtools-shared/src/devtools/cache.js index 084c45f000444..e389a594e896e 100644 --- a/packages/react-devtools-shared/src/devtools/cache.js +++ b/packages/react-devtools-shared/src/devtools/cache.js @@ -21,11 +21,10 @@ import React, {createContext} from 'react'; export type Thenable = { then(resolve: (T) => mixed, reject: (mixed) => mixed): mixed, + ... }; -type Suspender = { - then(resolve: () => mixed, reject: () => mixed): mixed, -}; +type Suspender = {then(resolve: () => mixed, reject: () => mixed): mixed, ...}; type PendingResult = {| status: 0, @@ -50,6 +49,7 @@ export type Resource = { read(Input): Value, preload(Input): void, write(Key, Value): void, + ... }; const Pending = 0; @@ -73,9 +73,7 @@ function readContext(Context, observedBits) { const CacheContext = createContext(null); -type Config = { - useWeakMap?: boolean, -}; +type Config = {useWeakMap?: boolean, ...}; const entries: Map< Resource, diff --git a/packages/react-devtools-shared/src/devtools/views/Button.js b/packages/react-devtools-shared/src/devtools/views/Button.js index 88787ead03867..76028d53dde90 100644 --- a/packages/react-devtools-shared/src/devtools/views/Button.js +++ b/packages/react-devtools-shared/src/devtools/views/Button.js @@ -17,6 +17,7 @@ type Props = { children: React$Node, className?: string, title?: string, + ... }; export default function Button({ diff --git a/packages/react-devtools-shared/src/devtools/views/Components/Element.js b/packages/react-devtools-shared/src/devtools/views/Components/Element.js index 9f3aaed2d69b8..4143bd01ce7f6 100644 --- a/packages/react-devtools-shared/src/devtools/views/Components/Element.js +++ b/packages/react-devtools-shared/src/devtools/views/Components/Element.js @@ -24,6 +24,7 @@ type Props = { data: ItemData, index: number, style: Object, + ... }; export default function ElementView({data, index, style}: Props) { diff --git a/packages/react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/AutoSizeInput.js b/packages/react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/AutoSizeInput.js index 03d6b47b51948..389013ee7d5a6 100644 --- a/packages/react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/AutoSizeInput.js +++ b/packages/react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/AutoSizeInput.js @@ -15,6 +15,7 @@ type Props = { onFocus?: (event: FocusEvent) => void, placeholder?: string, value: any, + ... }; export default function AutoSizeInput({ diff --git a/packages/react-devtools-shared/src/devtools/views/Components/OwnersStack.js b/packages/react-devtools-shared/src/devtools/views/Components/OwnersStack.js index fa627299fb80e..a42ff9ada0d37 100644 --- a/packages/react-devtools-shared/src/devtools/views/Components/OwnersStack.js +++ b/packages/react-devtools-shared/src/devtools/views/Components/OwnersStack.js @@ -199,6 +199,7 @@ type ElementsDropdownProps = { owners: Array, selectedIndex: number, selectOwner: SelectOwner, + ... }; function ElementsDropdown({ owners, @@ -245,6 +246,7 @@ type ElementViewProps = { isSelected: boolean, owner: Owner, selectOwner: SelectOwner, + ... }; function ElementView({isSelected, owner, selectOwner}: ElementViewProps) { const store = useContext(StoreContext); diff --git a/packages/react-devtools-shared/src/devtools/views/Components/Tree.js b/packages/react-devtools-shared/src/devtools/views/Components/Tree.js index fe03d443ffac6..3b6357ae8535e 100644 --- a/packages/react-devtools-shared/src/devtools/views/Components/Tree.js +++ b/packages/react-devtools-shared/src/devtools/views/Components/Tree.js @@ -38,7 +38,7 @@ const DEFAULT_INDENTATION_SIZE = 12; export type ItemData = {| numElements: number, isNavigatingWithKeyboard: boolean, - lastScrolledIDRef: {current: number | null}, + lastScrolledIDRef: {current: number | null, ...}, onElementMouseEnter: (id: number) => void, treeFocused: boolean, |}; diff --git a/packages/react-devtools-shared/src/devtools/views/Components/types.js b/packages/react-devtools-shared/src/devtools/views/Components/types.js index 3ce717cef6ec7..6e57fec8adcad 100644 --- a/packages/react-devtools-shared/src/devtools/views/Components/types.js +++ b/packages/react-devtools-shared/src/devtools/views/Components/types.js @@ -99,6 +99,6 @@ export type DehydratedData = {| | Unserializable | Array | Array - | {[key: string]: string | Dehydrated | Unserializable}, + | {[key: string]: string | Dehydrated | Unserializable, ...}, unserializable: Array>, |}; diff --git a/packages/react-devtools-shared/src/devtools/views/Profiler/CommitFlamegraphListItem.js b/packages/react-devtools-shared/src/devtools/views/Profiler/CommitFlamegraphListItem.js index bcaa76b05376d..66d2db36962c4 100644 --- a/packages/react-devtools-shared/src/devtools/views/Profiler/CommitFlamegraphListItem.js +++ b/packages/react-devtools-shared/src/devtools/views/Profiler/CommitFlamegraphListItem.js @@ -20,6 +20,7 @@ type Props = { data: ItemData, index: number, style: Object, + ... }; function CommitFlamegraphListItem({data, index, style}: Props) { diff --git a/packages/react-devtools-shared/src/devtools/views/Profiler/CommitRankedListItem.js b/packages/react-devtools-shared/src/devtools/views/Profiler/CommitRankedListItem.js index ba1edaa91f660..8c46e7de2730b 100644 --- a/packages/react-devtools-shared/src/devtools/views/Profiler/CommitRankedListItem.js +++ b/packages/react-devtools-shared/src/devtools/views/Profiler/CommitRankedListItem.js @@ -20,6 +20,7 @@ type Props = { data: ItemData, index: number, style: Object, + ... }; function CommitRankedListItem({data, index, style}: Props) { diff --git a/packages/react-devtools-shared/src/devtools/views/Profiler/InteractionListItem.js b/packages/react-devtools-shared/src/devtools/views/Profiler/InteractionListItem.js index 3bc6bd1f4005b..cfc5d1229a9bc 100644 --- a/packages/react-devtools-shared/src/devtools/views/Profiler/InteractionListItem.js +++ b/packages/react-devtools-shared/src/devtools/views/Profiler/InteractionListItem.js @@ -19,6 +19,7 @@ type Props = { data: ItemData, index: number, style: Object, + ... }; function InteractionListItem({data: itemData, index, style}: Props) { diff --git a/packages/react-devtools-shared/src/devtools/views/Profiler/SnapshotCommitListItem.js b/packages/react-devtools-shared/src/devtools/views/Profiler/SnapshotCommitListItem.js index 07e08efd8b6dd..feb69c8f7c84a 100644 --- a/packages/react-devtools-shared/src/devtools/views/Profiler/SnapshotCommitListItem.js +++ b/packages/react-devtools-shared/src/devtools/views/Profiler/SnapshotCommitListItem.js @@ -19,6 +19,7 @@ type Props = { data: ItemData, index: number, style: Object, + ... }; function SnapshotCommitListItem({data: itemData, index, style}: Props) { diff --git a/packages/react-devtools-shared/src/devtools/views/Settings/SettingsModalContext.js b/packages/react-devtools-shared/src/devtools/views/Settings/SettingsModalContext.js index 718656f5788e9..694e859808730 100644 --- a/packages/react-devtools-shared/src/devtools/views/Settings/SettingsModalContext.js +++ b/packages/react-devtools-shared/src/devtools/views/Settings/SettingsModalContext.js @@ -15,6 +15,7 @@ export type Theme = 'auto' | 'light' | 'dark'; type Context = { isModalShowing: boolean, setIsModalShowing: (value: boolean) => void, + ... }; const SettingsModalContext = createContext(((null: any): Context)); diff --git a/packages/react-devtools-shared/src/devtools/views/Toggle.js b/packages/react-devtools-shared/src/devtools/views/Toggle.js index 41b33dd70387a..1eaaa73738905 100644 --- a/packages/react-devtools-shared/src/devtools/views/Toggle.js +++ b/packages/react-devtools-shared/src/devtools/views/Toggle.js @@ -20,6 +20,7 @@ type Props = { isDisabled?: boolean, onChange: (isChecked: boolean) => void, title?: string, + ... }; export default function Toggle({ diff --git a/packages/react-devtools-shared/src/devtools/views/hooks.js b/packages/react-devtools-shared/src/devtools/views/hooks.js index 62cafbfed316f..a8fb43dd61a12 100644 --- a/packages/react-devtools-shared/src/devtools/views/hooks.js +++ b/packages/react-devtools-shared/src/devtools/views/hooks.js @@ -106,7 +106,7 @@ export function useEditableValue( } export function useIsOverflowing( - containerRef: {current: HTMLDivElement | null}, + containerRef: {current: HTMLDivElement | null, ...}, totalChildWidth: number, ): boolean { const [isOverflowing, setIsOverflowing] = useState(false); @@ -195,7 +195,7 @@ export function useLocalStorage( } export function useModalDismissSignal( - modalRef: {current: HTMLDivElement | null}, + modalRef: {current: HTMLDivElement | null, ...}, dismissCallback: () => void, dismissOnClickOutside?: boolean = true, ): void { diff --git a/packages/react-devtools-shared/src/devtools/views/portaledContent.js b/packages/react-devtools-shared/src/devtools/views/portaledContent.js index 32cff8504af6e..cf312787f5ea7 100644 --- a/packages/react-devtools-shared/src/devtools/views/portaledContent.js +++ b/packages/react-devtools-shared/src/devtools/views/portaledContent.js @@ -11,9 +11,7 @@ import React from 'react'; import {createPortal} from 'react-dom'; import ErrorBoundary from './ErrorBoundary'; -export type Props = { - portalContainer?: Element, -}; +export type Props = {portalContainer?: Element, ...}; export default function portaledContent( Component: React$StatelessFunctionalComponent, diff --git a/packages/react-devtools-shared/src/hydration.js b/packages/react-devtools-shared/src/hydration.js index 5e00b1b619e6e..01e0432d2a5d3 100644 --- a/packages/react-devtools-shared/src/hydration.js +++ b/packages/react-devtools-shared/src/hydration.js @@ -52,6 +52,7 @@ export type Unserializable = { size?: number, type: string, unserializable: boolean, + ... }; // This threshold determines the depth at which the bridge "dehydrates" nested data. @@ -129,7 +130,7 @@ export function dehydrate( | Unserializable | Array | Array - | {[key: string]: string | Dehydrated | Unserializable} { + | {[key: string]: string | Dehydrated | Unserializable, ...} { const type = getDataType(data); let isPathWhitelistedCheck; @@ -375,7 +376,7 @@ export function hydrate( parent[last] = undefined; } else { // Replace the string keys with Symbols so they're non-enumerable. - const replaced: {[key: Symbol]: boolean | string} = {}; + const replaced: {[key: Symbol]: boolean | string, ...} = {}; replaced[meta.inspectable] = !!value.inspectable; replaced[meta.inspected] = false; replaced[meta.name] = value.name; diff --git a/packages/react-dom/src/client/ReactDOM.js b/packages/react-dom/src/client/ReactDOM.js index 818d0eef3a94f..079d3432ef2bc 100644 --- a/packages/react-dom/src/client/ReactDOM.js +++ b/packages/react-dom/src/client/ReactDOM.js @@ -106,12 +106,8 @@ setBatchingImplementation( ); export type DOMContainer = - | (Element & { - _reactRootContainer: ?RootType, - }) - | (Document & { - _reactRootContainer: ?RootType, - }); + | (Element & {_reactRootContainer: ?RootType, ...}) + | (Document & {_reactRootContainer: ?RootType, ...}); function createPortal( children: ReactNodeList, diff --git a/packages/react-dom/src/client/ReactDOMHostConfig.js b/packages/react-dom/src/client/ReactDOMHostConfig.js index 96498935a5a0d..e055b6b983766 100644 --- a/packages/react-dom/src/client/ReactDOMHostConfig.js +++ b/packages/react-dom/src/client/ReactDOMHostConfig.js @@ -65,13 +65,12 @@ export type Props = { hidden?: boolean, suppressHydrationWarning?: boolean, dangerouslySetInnerHTML?: mixed, - style?: { - display?: string, - }, + style?: {display?: string, ...}, bottom?: null | number, left?: null | number, right?: null | number, top?: null | number, + ... }; export type EventTargetChildElement = { type: string, @@ -83,18 +82,22 @@ export type EventTargetChildElement = { left?: string, right?: string, top?: string, + ... }, + ... }, + ... }; export type Container = Element | Document; export type Instance = Element; export type TextInstance = Text; -export type SuspenseInstance = Comment & {_reactRetry?: () => void}; +export type SuspenseInstance = Comment & {_reactRetry?: () => void, ...}; export type HydratableInstance = Instance | TextInstance | SuspenseInstance; export type PublicInstance = Element | Text; type HostContextDev = { namespace: string, ancestorInfo: mixed, + ... }; type HostContextProd = string; export type HostContext = HostContextDev | HostContextProd; diff --git a/packages/react-dom/src/client/ReactDOMInput.js b/packages/react-dom/src/client/ReactDOMInput.js index 0f5d61b8dc426..884c2ad9dfe2f 100644 --- a/packages/react-dom/src/client/ReactDOMInput.js +++ b/packages/react-dom/src/client/ReactDOMInput.js @@ -25,7 +25,9 @@ type InputWithWrapperState = HTMLInputElement & { initialValue: ToStringValue, initialChecked: ?boolean, controlled?: boolean, + ... }, + ... }; let didWarnValueDefaultValue = false; @@ -178,10 +180,10 @@ export function updateWrapper(element: Element, props: Object) { // eslint-disable-next-line node.value != (value: any) ) { - node.value = toString(value); + node.value = toString((value: any)); } - } else if (node.value !== toString(value)) { - node.value = toString(value); + } else if (node.value !== toString((value: any))) { + node.value = toString((value: any)); } } else if (type === 'submit' || type === 'reset') { // Submit/reset inputs need the attribute removed completely to avoid diff --git a/packages/react-dom/src/client/ReactDOMRoot.js b/packages/react-dom/src/client/ReactDOMRoot.js index 4719b1fe2d38c..b11430b8b3c0f 100644 --- a/packages/react-dom/src/client/ReactDOMRoot.js +++ b/packages/react-dom/src/client/ReactDOMRoot.js @@ -17,8 +17,8 @@ import type {FiberRoot} from 'react-reconciler/src/ReactFiberRoot'; export type RootType = { render(children: ReactNodeList, callback: ?() => mixed): void, unmount(callback: ?() => mixed): void, - _internalRoot: FiberRoot, + ... }; export type RootOptions = { @@ -26,7 +26,9 @@ export type RootOptions = { hydrationOptions?: { onHydrated?: (suspenseNode: Comment) => void, onDeleted?: (suspenseNode: Comment) => void, + ... }, + ... }; import { diff --git a/packages/react-dom/src/client/ReactDOMSelect.js b/packages/react-dom/src/client/ReactDOMSelect.js index a2add6896fc98..725159685428d 100644 --- a/packages/react-dom/src/client/ReactDOMSelect.js +++ b/packages/react-dom/src/client/ReactDOMSelect.js @@ -19,11 +19,9 @@ if (__DEV__) { didWarnValueDefaultValue = false; } -type SelectWithWrapperState = HTMLSelectElement & { - _wrapperState: { - wasMultiple: boolean, - }, -}; +type SelectWithWrapperState = HTMLSelectElement & {| + _wrapperState: {|wasMultiple: boolean|}, +|}; function getDeclarationErrorAddendum() { const ownerName = getCurrentFiberOwnerNameInDevOrNull(); @@ -75,6 +73,7 @@ function updateOptions( ) { type IndexableHTMLOptionsCollection = HTMLOptionsCollection & { [key: number]: HTMLOptionElement, + ..., }; const options: IndexableHTMLOptionsCollection = node.options; diff --git a/packages/react-dom/src/client/ReactDOMTextarea.js b/packages/react-dom/src/client/ReactDOMTextarea.js index 01c855d902b6e..dc436d1b552d7 100644 --- a/packages/react-dom/src/client/ReactDOMTextarea.js +++ b/packages/react-dom/src/client/ReactDOMTextarea.js @@ -16,11 +16,9 @@ import type {ToStringValue} from './ToStringValue'; let didWarnValDefaultVal = false; -type TextAreaWithWrapperState = HTMLTextAreaElement & { - _wrapperState: { - initialValue: ToStringValue, - }, -}; +type TextAreaWithWrapperState = HTMLTextAreaElement & {| + _wrapperState: {|initialValue: ToStringValue|}, +|}; /** * Implements a