From 8b96108d792da65ac40aef81e97bd49ec69772ce Mon Sep 17 00:00:00 2001 From: Sam Zhou Date: Wed, 4 Nov 2026 11:12:30 -0800 Subject: [PATCH] Name unnamed parameters in function type annotations (#59790) Summary: Pull Request resolved: https://github.com/react/react-native/pull/59790 Gives every unnamed parameter in a Flow function type annotation a name: `v` for a lone parameter, `v` otherwise, and `rest` for a rest parameter. Type-only change with no runtime behavior change. Changelog: [Internal] Reviewed By: panagosg7 Differential Revision: D129441819 --- flow-typed/environment/node.js | 16 +-- flow-typed/npm/babel-traverse_v7.x.x.js | 2 +- flow-typed/npm/babel_v7.x.x.js | 30 ++--- flow-typed/npm/base64-js_v1.x.x.js | 6 +- flow-typed/npm/jest.js | 6 +- flow-typed/npm/node-fetch_v2.x.x.js | 3 +- flow-typed/npm/promise_v8.x.x.js | 4 +- flow-typed/npm/stacktrace-parser_v0.1.x.js | 2 +- flow-typed/npm/ws_v7.x.x.js | 36 +++--- .../src/inspector-proxy/InspectorProxy.js | 2 +- packages/jest-preset/jest/setup.js | 2 +- packages/polyfills/error-guard.js | 4 +- .../components/GenerateEventEmitterCpp.js | 4 +- .../src/parsers/parsers-commons.js | 2 +- .../react-native-codegen/src/parsers/utils.js | 2 +- .../js/PopupMenuAndroid.android.js | 2 +- .../js/PopupMenuAndroid.js | 2 +- .../Libraries/Animated/AnimatedEvent.js | 2 +- .../AnimatedInterpolation-benchmark-itest.js | 4 +- .../Animated/__tests__/Easing-itest.js | 2 +- .../Animated/__tests__/Interpolation-itest.js | 2 +- .../Animated/createAnimatedComponent.js | 4 +- .../Animated/nodes/AnimatedInterpolation.js | 2 +- .../Animated/nodes/AnimatedTransform.js | 2 +- .../Libraries/AppState/AppState.js | 4 +- .../AppState/__tests__/useAppState-itest.js | 4 +- .../Libraries/BatchedBridge/MessageQueue.js | 22 ++-- .../__tests__/MessageQueue-itest.js | 8 +- .../Blob/__tests__/FileReader-test.js | 6 +- .../AccessibilityInfo/AccessibilityInfo.js | 2 +- .../Libraries/Components/Keyboard/Keyboard.js | 2 +- .../Components/Pressable/Pressable.js | 2 +- .../Components/ScrollView/ScrollView.js | 10 +- .../ScrollView/ScrollViewStickyHeader.js | 2 +- .../Components/TextInput/TextInput.js | 4 +- .../Core/Devtools/loadBundleFromServer.js | 2 +- .../Libraries/Core/ExceptionsManager.js | 2 +- .../Libraries/Core/registerCallableModule.js | 2 +- .../Libraries/Core/setUpSegmentFetcher.js | 2 +- .../Debugging/DebuggingOverlayRegistry.js | 6 +- .../Libraries/Image/ImageInjection.js | 6 +- .../react-native/Libraries/Linking/Linking.js | 2 +- .../Libraries/LogBox/Data/LogBoxData.js | 2 +- .../react-native/Libraries/LogBox/LogBox.js | 2 +- .../Network/RCTNetworking.android.js | 2 +- .../Libraries/Network/RCTNetworking.ios.js | 2 +- .../Libraries/Network/RCTNetworking.js.flow | 2 +- .../Libraries/Pressability/Pressability.js | 4 +- .../PressabilityPerformanceEventEmitter.js | 5 +- .../Libraries/Types/CodegenTypes.js | 2 +- .../Libraries/Types/ReactDevToolsTypes.js | 6 +- .../Libraries/Utilities/RCTLog.js | 2 +- .../Utilities/__mocks__/PixelRatio.js | 4 +- .../__tests__/refCallbackCleanup-itest.js | 12 +- .../Utilities/codegenNativeCommands.js | 4 +- .../Libraries/Utilities/stringifySafe.js | 4 +- .../WebSocket/WebSocketInterceptor.js | 23 ++-- .../Libraries/vendor/core/ErrorUtils.js | 6 +- packages/react-native/ReactNativeApi.d.ts | 105 +++++++++--------- .../react-native/flow/HermesInternalType.js | 4 +- packages/react-native/flow/dom.js.flow | 4 +- .../private/animated/NativeAnimatedHelper.js | 2 +- .../animated/createAnimatedPropsMemoHook.js | 2 +- .../VirtualCollectionView.js | 12 +- .../virtualcollection/column/VirtualColumn.js | 2 +- .../virtualcollection/row/VirtualRow.js | 2 +- .../elementinspector/ElementProperties.js | 2 +- .../elementinspector/InspectorPanel.js | 2 +- .../setUpFuseboxReactDevToolsDispatcher.js | 6 +- .../events/ResponderTouchHistoryStore.js | 4 +- .../__tests__/AbortController-itest.js | 2 +- .../dom/events/__tests__/EventTarget-itest.js | 2 +- .../__tests__/ResizeObserver-itest.js | 17 +-- .../private/webapis/webidl/PlatformObjects.js | 6 +- packages/rn-tester/js/RNTesterAppShared.js | 2 +- .../js/components/ListExampleShared.js | 2 +- .../rn-tester/js/components/RNTesterNavbar.js | 2 +- .../RNTesterPlatformTestEventRecorder.js | 2 +- .../PlatformTest/usePlatformTestHarness.js | 4 +- .../PointerEventSupport.js | 4 +- .../W3CPointerEventsEventfulView.js | 2 +- .../Experimental/W3CPointerEventsExample.js | 6 +- .../js/examples/FlatList/FlatList-basic.js | 4 +- .../js/examples/FlatList/FlatList-nested.js | 9 +- .../KeyboardAvoidingViewExample.js | 4 +- .../MutationObserverExample.js | 2 +- .../VCTrackerExample.js | 4 +- .../rn-tester/js/examples/RTL/RTLExample.js | 2 +- .../RefreshControl/RefreshControlExample.js | 2 +- .../SafeAreaInsets/SafeAreaInsetsExample.js | 5 +- .../Lists/ChildListCollection.js | 6 +- .../virtualized-lists/Lists/FillRateHelper.js | 4 +- .../Lists/StateSafePureComponent.js | 4 +- .../Lists/ViewabilityHelper.js | 4 +- .../Lists/VirtualizedListContext.js | 4 +- .../Lists/VirtualizedSectionList.js | 17 +-- private/react-native-fantom/runtime/expect.js | 3 +- private/react-native-fantom/runtime/mocks.js | 6 +- .../js-api/build-types/translateSourceFile.js | 2 +- 99 files changed, 313 insertions(+), 280 deletions(-) diff --git a/flow-typed/environment/node.js b/flow-typed/environment/node.js index 959f77da0122..cb70c63a4e05 100644 --- a/flow-typed/environment/node.js +++ b/flow-typed/environment/node.js @@ -2549,7 +2549,7 @@ declare module 'fs' { ... }>, writeFile( - FSPromisePath | FileHandle, + v0: FSPromisePath | FileHandle, data: string | Buffer | Uint8Array, options?: string | WriteOptions, ): Promise, @@ -3343,9 +3343,9 @@ declare module 'perf_hooks' { setResourceTimingBufferSize(maxSize: number): void; readonly timeOrigin: number; timerify, TReturn>( - fn: (...TArgs) => TReturn, + fn: (...rest: TArgs) => TReturn, options?: Readonly<{histogram?: RecordableHistogram}>, - ): (...TArgs) => TReturn; + ): (...rest: TArgs) => TReturn; toJSON(): unknown; } @@ -3537,7 +3537,7 @@ type readline$InterfaceCompleter = ( | [Array, string] | (( line: string, - ((err: ?Error, data: [Array, string]) => void), + v1: (err: ?Error, data: [Array, string]) => void, ) => void); declare class readline$Interface extends events$EventEmitter { @@ -5630,18 +5630,18 @@ declare class Process extends events$EventEmitter { emitWarning(warning: string | Error): void; emitWarning( warning: string, - typeOrCtor: string | ((...empty) => unknown), + typeOrCtor: string | ((...rest: empty) => unknown), ): void; emitWarning( warning: string, type: string, - codeOrCtor: string | ((...empty) => unknown), + codeOrCtor: string | ((...rest: empty) => unknown), ): void; emitWarning( warning: string, type: string, code: string, - ctor?: (...empty) => unknown, + ctor?: (...rest: empty) => unknown, ): void; execArgv: Array; execPath: string; @@ -5671,7 +5671,7 @@ declare class Process extends events$EventEmitter { }, rss: () => number, }; - nextTick: (cb: (...T) => unknown, ...T) => void; + nextTick: (cb: (...rest: T) => unknown, ...rest: T) => void; pid: number; platform: string; release: { diff --git a/flow-typed/npm/babel-traverse_v7.x.x.js b/flow-typed/npm/babel-traverse_v7.x.x.js index 12f4570389d0..93dbe352d28f 100644 --- a/flow-typed/npm/babel-traverse_v7.x.x.js +++ b/flow-typed/npm/babel-traverse_v7.x.x.js @@ -631,7 +631,7 @@ declare module '@babel/traverse' { constructor(hub: HubInterface, parent: BabelNode): NodePath; - static get({ + static get(v: { hub: HubInterface, parentPath: ?NodePath<>, parent: BabelNode, diff --git a/flow-typed/npm/babel_v7.x.x.js b/flow-typed/npm/babel_v7.x.x.js index ea721fb17cd7..c3a6e73508f7 100644 --- a/flow-typed/npm/babel_v7.x.x.js +++ b/flow-typed/npm/babel_v7.x.x.js @@ -387,7 +387,7 @@ declare module '@babel/core' { buildCodeFrameError( node: BabelNode, msg: string, - Class, + v2: Class, ): TError; mergeSourceMap(map: _BabelSourceMap): _BabelSourceMap; @@ -408,7 +408,7 @@ declare module '@babel/core' { parseShebang(): void; - makeResult(TransformResult): TransformResult; + makeResult(v: TransformResult): TransformResult; generate(): TransformResult<>; } @@ -955,8 +955,8 @@ declare module '@babel/core' { |}; declare type TransformCallback = - | ((Error, null) => unknown) - | ((null, TransformResult | null) => unknown); + | ((v0: Error, v1: null) => unknown) + | ((v0: null, v1: TransformResult | null) => unknown); /** * Transforms the passed in code. Calling a callback with an object with the generated code, source map, and AST. @@ -1042,7 +1042,8 @@ declare module '@babel/core' { declare export function parse( code: string, options?: BabelCoreOptions, - callback: ((error: Error) => void) | ((void, BabelNodeFile) => void), + callback: + ((error: Error) => void) | ((v0: void, v1: BabelNodeFile) => void), ): void; declare export function parseSync( @@ -1096,8 +1097,8 @@ declare module '@babel/core' { declare export function loadOptions( options?: unknown, callback: - | ((error: Error, null) => unknown) - | ((null, config: ResolvedConfig | null) => unknown), + | ((error: Error, v1: null) => unknown) + | ((v0: null, config: ResolvedConfig | null) => unknown), ): void; declare export function loadOptionsSync( options?: unknown, @@ -1125,8 +1126,8 @@ declare module '@babel/core' { declare export function loadPartialConfig( options?: unknown, callback: - | ((error: Error, null) => unknown) - | ((null, config: PartialConfig | null) => unknown), + | ((error: Error, v1: null) => unknown) + | ((v0: null, config: PartialConfig | null) => unknown), ): void; declare export function loadPartialConfigSync( options?: unknown, @@ -1314,10 +1315,13 @@ declare module '@babel/template' { (opts: PublicOpts): TemplateBuilder, // Building from a string produces an AST builder function by default. - (tpl: string, opts: ?PublicOpts): (?PublicReplacements) => T, + (tpl: string, opts: ?PublicOpts): (v: ?PublicReplacements) => T, // Building from a template literal produces an AST builder function by default. - (tpl: Array, ...args: Array): (?PublicReplacements) => T, + ( + tpl: Array, + ...args: Array + ): (v: ?PublicReplacements) => T, // Allow users to explicitly create templates that produce ASTs, skipping // the need for an intermediate function. @@ -1350,13 +1354,13 @@ declare module '@babel/template' { ( tpl: string, opts: ?PublicOpts, - ): (?PublicReplacements) => Statement | Array, + ): (v: ?PublicReplacements) => Statement | Array, // Building from a template literal produces an AST builder function by default. ( tpl: Array, ...args: Array - ): (?PublicReplacements) => Statement | Array, + ): (v: ?PublicReplacements) => Statement | Array, // Allow users to explicitly create templates that produce ASTs, skipping // the need for an intermediate function. diff --git a/flow-typed/npm/base64-js_v1.x.x.js b/flow-typed/npm/base64-js_v1.x.x.js index 209a577e2adb..57aeee339a75 100644 --- a/flow-typed/npm/base64-js_v1.x.x.js +++ b/flow-typed/npm/base64-js_v1.x.x.js @@ -5,8 +5,8 @@ declare module 'base64-js' { declare module.exports: { - byteLength: string => number, - fromByteArray: (Uint8Array | Array) => string, - toByteArray: string => Uint8Array, + byteLength: (v: string) => number, + fromByteArray: (v: Uint8Array | Array) => string, + toByteArray: (v: string) => Uint8Array, }; } diff --git a/flow-typed/npm/jest.js b/flow-typed/npm/jest.js index 70597548c96c..e94a4e2c382c 100644 --- a/flow-typed/npm/jest.js +++ b/flow-typed/npm/jest.js @@ -1191,9 +1191,9 @@ type JestPrettyFormatColors = { ... }; -type JestPrettyFormatIndent = string => string; +type JestPrettyFormatIndent = (v: string) => string; type JestPrettyFormatRefs = Array; -type JestPrettyFormatPrint = any => string; +type JestPrettyFormatPrint = (v: any) => string; type JestPrettyFormatStringOrNull = string | null; type JestPrettyFormatOptions = { @@ -1224,7 +1224,7 @@ type JestPrettyFormatPlugin = { opts: JestPrettyFormatOptions, colors: JestPrettyFormatColors, ) => string, - test: any => boolean, + test: (v: any) => boolean, ... }; diff --git a/flow-typed/npm/node-fetch_v2.x.x.js b/flow-typed/npm/node-fetch_v2.x.x.js index d145c4e0cbe1..35b6a0037fe7 100644 --- a/flow-typed/npm/node-fetch_v2.x.x.js +++ b/flow-typed/npm/node-fetch_v2.x.x.js @@ -60,7 +60,8 @@ declare module 'node-fetch' { signal?: AbortSignal | null, // node-fetch extensions - agent?: (URL => http.Agent | https.Agent) | http.Agent | https.Agent | null, + agent?: + ((v: URL) => http.Agent | https.Agent) | http.Agent | https.Agent | null, compress?: boolean, follow?: number, size?: number, diff --git a/flow-typed/npm/promise_v8.x.x.js b/flow-typed/npm/promise_v8.x.x.js index 7358622e3bea..266d9d4b9556 100644 --- a/flow-typed/npm/promise_v8.x.x.js +++ b/flow-typed/npm/promise_v8.x.x.js @@ -21,8 +21,8 @@ declare module 'promise/setimmediate/rejection-tracking' { options?: ?{ whitelist?: ?Array, allRejections?: ?boolean, - onUnhandled?: ?(number, unknown) => void, - onHandled?: ?(number, unknown) => void, + onUnhandled?: ?(v0: number, v1: unknown) => void, + onHandled?: ?(v0: number, v1: unknown) => void, }, ) => void, disable: () => void, diff --git a/flow-typed/npm/stacktrace-parser_v0.1.x.js b/flow-typed/npm/stacktrace-parser_v0.1.x.js index 51dd691b259a..be60f5aac3bc 100644 --- a/flow-typed/npm/stacktrace-parser_v0.1.x.js +++ b/flow-typed/npm/stacktrace-parser_v0.1.x.js @@ -12,6 +12,6 @@ type StackFrame = { declare module 'stacktrace-parser' { declare module.exports: { - parse: string => Array, + parse: (v: string) => Array, }; } diff --git a/flow-typed/npm/ws_v7.x.x.js b/flow-typed/npm/ws_v7.x.x.js index 9a9639d4e580..4dc479b4fd22 100644 --- a/flow-typed/npm/ws_v7.x.x.js +++ b/flow-typed/npm/ws_v7.x.x.js @@ -47,20 +47,20 @@ declare class ws$WebSocketServer extends events$EventEmitter { /** * Emitted when the server closes. */ - on(event: 'close', () => unknown): this; + on(event: 'close', v1: () => unknown): this; /** * Emitted when the handshake is complete. */ on( event: 'connection', - (socket: ws$WebSocket, request: http$IncomingMessage<>) => unknown, + v1: (socket: ws$WebSocket, request: http$IncomingMessage<>) => unknown, ): this; /** * Emitted when an error occurs on the underlying server. */ - on(event: 'error', (error: Error) => unknown): this; + on(event: 'error', v1: (error: Error) => unknown): this; /** * Emitted before the response headers are written to the socket as part of @@ -68,13 +68,13 @@ declare class ws$WebSocketServer extends events$EventEmitter { */ on( event: 'headers', - (headers: Array, request: http$IncomingMessage<>) => unknown, + v1: (headers: Array, request: http$IncomingMessage<>) => unknown, ): this; /** * Emitted when the underlying server has been bound. */ - on(event: 'listening', () => unknown): this; + on(event: 'listening', v1: () => unknown): this; /** * Returns the bound address, the address family name, and port of the server @@ -102,7 +102,7 @@ declare class ws$WebSocketServer extends events$EventEmitter { request: http$IncomingMessage<>, socket: net$Socket, head: Buffer, - callback: (?ws$WebSocket) => unknown, + callback: (v: ?ws$WebSocket) => unknown, ): void; /** @@ -137,8 +137,8 @@ declare type ws$MessageListener = ( isBinary: boolean, ) => unknown; declare type ws$OpenListener = () => unknown; -declare type ws$PingListener = (Buffer) => unknown; -declare type ws$PongListener = (Buffer) => unknown; +declare type ws$PingListener = (v: Buffer) => unknown; +declare type ws$PongListener = (v: Buffer) => unknown; declare type ws$UnexpectedResponseListener = ( request: http$ClientRequest<>, response: http$IncomingMessage<>, @@ -173,44 +173,44 @@ declare class ws$WebSocket extends events$EventEmitter { /* * Emitted when the connection is closed. */ - on('close', ws$CloseListener): this; + on(v0: 'close', v1: ws$CloseListener): this; /* * Emitted when an error occurs. */ - on('error', ws$ErrorListener): this; + on(v0: 'error', v1: ws$ErrorListener): this; /* * Emitted when a message is received from the server. */ - on('message', ws$MessageListener): this; + on(v0: 'message', v1: ws$MessageListener): this; /* * Emitted when the connection is established. */ - on('open', ws$OpenListener): this; + on(v0: 'open', v1: ws$OpenListener): this; /* * Emitted when a ping is received from the server. */ - on('ping', ws$PingListener): this; + on(v0: 'ping', v1: ws$PingListener): this; /* * Emitted when a pong is received from the server. */ - on('pong', ws$PongListener): this; + on(v0: 'pong', v1: ws$PongListener): this; /* * Emitted when the server response is not the expected one, * for example a 401 response. */ - on('unexpected-response', ws$UnexpectedResponseListener): this; + on(v0: 'unexpected-response', v1: ws$UnexpectedResponseListener): this; /* * Emitted when response headers are received from the server as part of the * handshake. */ - on('upgrade', ws$UpgradeListener): this; + on(v0: 'upgrade', v1: ws$UpgradeListener): this; /** * Register an event listener emulating the `EventTarget` interface. @@ -247,7 +247,7 @@ declare class ws$WebSocket extends events$EventEmitter { ): this; addEventListener( type: 'unexpected-response', - ws$UnexpectedResponseListener, + v1: ws$UnexpectedResponseListener, options?: {once?: boolean}, ): this; addEventListener( @@ -313,7 +313,7 @@ declare class ws$WebSocket extends events$EventEmitter { removeEventListener(type: 'pong', listener: ws$PongListener): this; removeEventListener( type: 'unexpected-response', - ws$UnexpectedResponseListener, + v1: ws$UnexpectedResponseListener, ): this; removeEventListener(type: 'upgrade', listener: ws$UpgradeListener): this; diff --git a/packages/dev-middleware/src/inspector-proxy/InspectorProxy.js b/packages/dev-middleware/src/inspector-proxy/InspectorProxy.js index b2be826d04db..ecccdfd7f2c4 100644 --- a/packages/dev-middleware/src/inspector-proxy/InspectorProxy.js +++ b/packages/dev-middleware/src/inspector-proxy/InspectorProxy.js @@ -205,7 +205,7 @@ export default class InspectorProxy implements InspectorProxyQueries { processRequest( request: IncomingMessage, response: ServerResponse, - next: (?Error) => unknown, + next: (v: ?Error) => unknown, ) { const pathname = new URL(request.url, 'http://example.com').pathname; if ( diff --git a/packages/jest-preset/jest/setup.js b/packages/jest-preset/jest/setup.js index 87049860fe3e..b6e48be6f8e4 100644 --- a/packages/jest-preset/jest/setup.js +++ b/packages/jest-preset/jest/setup.js @@ -58,7 +58,7 @@ Object.defineProperties(global, { requestAnimationFrame: { configurable: true, enumerable: true, - value(callback: number => void): ReturnType { + value(callback: (v: number) => void): ReturnType { return setTimeout(() => callback(jest.now()), 0); }, writable: true, diff --git a/packages/polyfills/error-guard.js b/packages/polyfills/error-guard.js index 4be5c4036982..778d47e380a1 100644 --- a/packages/polyfills/error-guard.js +++ b/packages/polyfills/error-guard.js @@ -12,7 +12,7 @@ let _inGuard = 0; type ErrorHandler = (error: unknown, isFatal: boolean) => void; -type Fn = (...Args) => Return; +type Fn = (...rest: Args) => Return; /** * This is the error handler that is called when we encounter an exception @@ -98,7 +98,7 @@ const ErrorUtils = { fun: Fn, name?: ?string, context?: ?unknown, - ): ?(...TArgs) => ?TOut { + ): ?(...rest: TArgs) => ?TOut { // TODO: (moti) T48204753 Make sure this warning is never hit and remove it - types // should be sufficient. if (typeof fun !== 'function') { diff --git a/packages/react-native-codegen/src/generators/components/GenerateEventEmitterCpp.js b/packages/react-native-codegen/src/generators/components/GenerateEventEmitterCpp.js index e2ef1b9b29cb..ec91e93da7a3 100644 --- a/packages/react-native-codegen/src/generators/components/GenerateEventEmitterCpp.js +++ b/packages/react-native-codegen/src/generators/components/GenerateEventEmitterCpp.js @@ -101,7 +101,7 @@ function generateSetter( propertyName: string, propertyParts: ReadonlyArray, usingEvent: boolean, - valueMapper: string => string = value => value, + valueMapper: (v: string) => string = value => value, ) { const eventChain = usingEvent ? `event.${[...propertyParts, propertyName].join('.')}` @@ -141,7 +141,7 @@ function setValueAtIndex( propertyName: string, indexVariable: string, loopLocalVariable: string, - mappingFunction: string => string = value => value, + mappingFunction: (v: string) => string = value => value, ) { return `${propertyName}.setValueAtIndex(runtime, ${indexVariable}++, ${mappingFunction( loopLocalVariable, diff --git a/packages/react-native-codegen/src/parsers/parsers-commons.js b/packages/react-native-codegen/src/parsers/parsers-commons.js index 08be2699c869..9e28b9fc27d3 100644 --- a/packages/react-native-codegen/src/parsers/parsers-commons.js +++ b/packages/react-native-codegen/src/parsers/parsers-commons.js @@ -649,7 +649,7 @@ function buildSchema( parser: Parser, translateTypeAnnotation: $FlowFixMe, ) => NativeModuleSchema, - Visitor: ({isComponent: boolean, isModule: boolean}) => { + Visitor: (v: {isComponent: boolean, isModule: boolean}) => { [type: string]: (node: $FlowFixMe) => void, }, parser: Parser, diff --git a/packages/react-native-codegen/src/parsers/utils.js b/packages/react-native-codegen/src/parsers/utils.js index e6bc2462bc05..6bf128cf9524 100644 --- a/packages/react-native-codegen/src/parsers/utils.js +++ b/packages/react-native-codegen/src/parsers/utils.js @@ -137,7 +137,7 @@ function visit( function getConfigType( // TODO(T71778680): Flow-type this node. ast: $FlowFixMe, - Visitor: ({isComponent: boolean, isModule: boolean}) => { + Visitor: (v: {isComponent: boolean, isModule: boolean}) => { [type: string]: (node: $FlowFixMe) => void, }, ): 'module' | 'component' | 'none' { diff --git a/packages/react-native-popup-menu-android/js/PopupMenuAndroid.android.js b/packages/react-native-popup-menu-android/js/PopupMenuAndroid.android.js index ceebecbe1b23..3ca8265a63f7 100644 --- a/packages/react-native-popup-menu-android/js/PopupMenuAndroid.android.js +++ b/packages/react-native-popup-menu-android/js/PopupMenuAndroid.android.js @@ -32,7 +32,7 @@ export type PopupMenuAndroidInstance = { type Props = { menuItems: ReadonlyArray, - onSelectionChange: number => void, + onSelectionChange: (v: number) => void, onDismiss?: () => void, children: React.Node, instanceRef: RefObject, diff --git a/packages/react-native-popup-menu-android/js/PopupMenuAndroid.js b/packages/react-native-popup-menu-android/js/PopupMenuAndroid.js index 2ade8fa6e686..72a1e557c281 100644 --- a/packages/react-native-popup-menu-android/js/PopupMenuAndroid.js +++ b/packages/react-native-popup-menu-android/js/PopupMenuAndroid.js @@ -42,7 +42,7 @@ export type PopupMenuAndroidInstance = { type Props = { menuItems: ReadonlyArray, - onSelectionChange: number => void, + onSelectionChange: (v: number) => void, onDismiss?: () => void, children: Node, instanceRef: RefObject, diff --git a/packages/react-native/Libraries/Animated/AnimatedEvent.js b/packages/react-native/Libraries/Animated/AnimatedEvent.js index 2393a5c41012..40fb89ad6a6f 100644 --- a/packages/react-native/Libraries/Animated/AnimatedEvent.js +++ b/packages/react-native/Libraries/Animated/AnimatedEvent.js @@ -23,7 +23,7 @@ import invariant from 'invariant'; export type Mapping = {[key: string]: Mapping, ...} | AnimatedValue | AnimatedValueXY; export type EventConfig = { - listener?: ?(NativeSyntheticEvent) => unknown, + listener?: ?(v: NativeSyntheticEvent) => unknown, useNativeDriver: boolean, platformConfig?: PlatformConfig, }; diff --git a/packages/react-native/Libraries/Animated/__tests__/AnimatedInterpolation-benchmark-itest.js b/packages/react-native/Libraries/Animated/__tests__/AnimatedInterpolation-benchmark-itest.js index 0544f3675657..15e56607742e 100644 --- a/packages/react-native/Libraries/Animated/__tests__/AnimatedInterpolation-benchmark-itest.js +++ b/packages/react-native/Libraries/Animated/__tests__/AnimatedInterpolation-benchmark-itest.js @@ -19,7 +19,7 @@ const CALLS = 1_000_000; function createInterpolation( config: InterpolationConfigType, -): number => string { +): (v: number) => string { let parentValue = 0; const interpolation = new AnimatedInterpolation( // $FlowFixMe[incompatible-type] @@ -32,7 +32,7 @@ function createInterpolation( }; } -function run(interpolation: number => string) { +function run(interpolation: (v: number) => string) { for (let i = 0; i < CALLS; i++) { interpolation(i / CALLS); } diff --git a/packages/react-native/Libraries/Animated/__tests__/Easing-itest.js b/packages/react-native/Libraries/Animated/__tests__/Easing-itest.js index d71a68d28c65..cc34e3de187f 100644 --- a/packages/react-native/Libraries/Animated/__tests__/Easing-itest.js +++ b/packages/react-native/Libraries/Animated/__tests__/Easing-itest.js @@ -80,7 +80,7 @@ describe('Easing', () => { } }); - function sampleEasingFunction(easing: number => number) { + function sampleEasingFunction(easing: (v: number) => number) { const DURATION = 300; const tickCount = Math.round((DURATION * 60) / 1000); const samples = []; diff --git a/packages/react-native/Libraries/Animated/__tests__/Interpolation-itest.js b/packages/react-native/Libraries/Animated/__tests__/Interpolation-itest.js index 75bbb57613a2..615ab8a477c9 100644 --- a/packages/react-native/Libraries/Animated/__tests__/Interpolation-itest.js +++ b/packages/react-native/Libraries/Animated/__tests__/Interpolation-itest.js @@ -21,7 +21,7 @@ import AnimatedInterpolation from '../nodes/AnimatedInterpolation'; function createInterpolation( config: InterpolationConfigType, -): number => T { +): (v: number) => T { let parentValue = null; const interpolation = new AnimatedInterpolation( // $FlowFixMe[incompatible-type] diff --git a/packages/react-native/Libraries/Animated/createAnimatedComponent.js b/packages/react-native/Libraries/Animated/createAnimatedComponent.js index f7173d8915f9..75901cec695b 100644 --- a/packages/react-native/Libraries/Animated/createAnimatedComponent.js +++ b/packages/react-native/Libraries/Animated/createAnimatedComponent.js @@ -29,7 +29,9 @@ import {useMemo} from 'react'; type Nullable = void | null; type Primitive = string | number | boolean | symbol | void; -type Builtin = (...ReadonlyArray) => unknown | Date | Error | RegExp; +type Builtin = ( + ...rest: ReadonlyArray +) => unknown | Date | Error | RegExp; type ComponentProps = T extends React.ComponentType ? Props : empty; diff --git a/packages/react-native/Libraries/Animated/nodes/AnimatedInterpolation.js b/packages/react-native/Libraries/Animated/nodes/AnimatedInterpolation.js index 9db7fbd564b0..5018430f7f7e 100644 --- a/packages/react-native/Libraries/Animated/nodes/AnimatedInterpolation.js +++ b/packages/react-native/Libraries/Animated/nodes/AnimatedInterpolation.js @@ -469,7 +469,7 @@ export default class AnimatedInterpolation< } } - _getInterpolation(): number => OutputT { + _getInterpolation(): (v: number) => OutputT { if (!this._interpolation) { const config = this._config; if (config.outputRange && typeof config.outputRange[0] === 'string') { diff --git a/packages/react-native/Libraries/Animated/nodes/AnimatedTransform.js b/packages/react-native/Libraries/Animated/nodes/AnimatedTransform.js index 8ea5cf05d0dd..1edf5a4dd823 100644 --- a/packages/react-native/Libraries/Animated/nodes/AnimatedTransform.js +++ b/packages/react-native/Libraries/Animated/nodes/AnimatedTransform.js @@ -176,7 +176,7 @@ export default class AnimatedTransform extends AnimatedWithChildren { function mapTransforms( transforms: ReadonlyArray>, - mapFunction: AnimatedNode => T, + mapFunction: (v: AnimatedNode) => T, ): ReadonlyArray> { return transforms.map(transform => { const result: Transform = {}; diff --git a/packages/react-native/Libraries/AppState/AppState.js b/packages/react-native/Libraries/AppState/AppState.js index b46ea05b82e0..301aa0913af5 100644 --- a/packages/react-native/Libraries/AppState/AppState.js +++ b/packages/react-native/Libraries/AppState/AppState.js @@ -123,7 +123,7 @@ class AppStateImpl { */ addEventListener( type: K, - handler: (...AppStateEventDefinitions[K]) => void, + handler: (...rest: AppStateEventDefinitions[K]) => void, ): EventSubscription { const emitter = this._emitter; if (emitter == null) { @@ -132,7 +132,7 @@ class AppStateImpl { switch (type) { case 'change': // $FlowFixMe[invalid-tuple-arity] Flow cannot refine handler based on the event type - const changeHandler: AppStateStatus => void = handler; + const changeHandler: (v: AppStateStatus) => void = handler; return emitter.addListener('appStateDidChange', appStateData => { changeHandler(appStateData.app_state); }); diff --git a/packages/react-native/Libraries/AppState/__tests__/useAppState-itest.js b/packages/react-native/Libraries/AppState/__tests__/useAppState-itest.js index 4e08c2370ab0..c58dc528dd1c 100644 --- a/packages/react-native/Libraries/AppState/__tests__/useAppState-itest.js +++ b/packages/react-native/Libraries/AppState/__tests__/useAppState-itest.js @@ -30,10 +30,10 @@ describe('useAppState', () => { }); function mockSubscription() { - const handlers: Array<(AppStateStatus) => void> = []; + const handlers: Array<(v: AppStateStatus) => void> = []; const remove = jest.fn(); const addEventListener = jest.fn( - (type: string, handler: AppStateStatus => void) => { + (type: string, handler: (v: AppStateStatus) => void) => { handlers.push(handler); return {remove}; }, diff --git a/packages/react-native/Libraries/BatchedBridge/MessageQueue.js b/packages/react-native/Libraries/BatchedBridge/MessageQueue.js index 2d0a98f26010..b80703653f5d 100644 --- a/packages/react-native/Libraries/BatchedBridge/MessageQueue.js +++ b/packages/react-native/Libraries/BatchedBridge/MessageQueue.js @@ -41,10 +41,10 @@ const TRACE_TAG_REACT = 1 << 13; const DEBUG_INFO_LIMIT = 32; class MessageQueue { - _lazyCallableModules: {[key: string]: (void) => {...}, ...}; + _lazyCallableModules: {[key: string]: (v: void) => {...}, ...}; _queue: [number[], number[], unknown[], number]; - _successCallbacks: Map void>; - _failureCallbacks: Map void>; + _successCallbacks: Map void>; + _failureCallbacks: Map void>; _callID: number; _lastFlush: number; _eventLoopStartTime: number; @@ -148,9 +148,9 @@ class MessageQueue { this._lazyCallableModules[name] = () => module; } - registerLazyCallableModule(name: string, factory: void => interface {}) { + registerLazyCallableModule(name: string, factory: (v: void) => interface {}) { let module: interface {}; - let getValue: ?(void) => interface {} = factory; + let getValue: ?(v: void) => interface {} = factory; this._lazyCallableModules[name] = () => { if (getValue) { module = getValue(); @@ -173,8 +173,8 @@ class MessageQueue { moduleID: number, methodID: number, params: unknown[], - onFail: ?(...unknown[]) => void, - onSucc: ?(...unknown[]) => void, + onFail: ?(...rest: unknown[]) => void, + onSucc: ?(...rest: unknown[]) => void, ): unknown { if (__DEV__) { invariant( @@ -193,8 +193,8 @@ class MessageQueue { moduleID: number, methodID: number, params: unknown[], - onFail: ?(...unknown[]) => void, - onSucc: ?(...unknown[]) => void, + onFail: ?(...rest: unknown[]) => void, + onSucc: ?(...rest: unknown[]) => void, ): void { if (onFail || onSucc) { if (__DEV__) { @@ -244,8 +244,8 @@ class MessageQueue { moduleID: number, methodID: number, params: unknown[], - onFail: ?(...unknown[]) => void, - onSucc: ?(...unknown[]) => void, + onFail: ?(...rest: unknown[]) => void, + onSucc: ?(...rest: unknown[]) => void, ): void { this.processCallbacks(moduleID, methodID, params, onFail, onSucc); diff --git a/packages/react-native/Libraries/BatchedBridge/__tests__/MessageQueue-itest.js b/packages/react-native/Libraries/BatchedBridge/__tests__/MessageQueue-itest.js index af908a232848..cae188e8041f 100644 --- a/packages/react-native/Libraries/BatchedBridge/__tests__/MessageQueue-itest.js +++ b/packages/react-native/Libraries/BatchedBridge/__tests__/MessageQueue-itest.js @@ -140,7 +140,7 @@ describe('MessageQueue', () => { it('should not initialize lazily registered module before it was used for the first time', () => { const dummyModule = {}, name = 'modulesName'; - const factory = jest.fn(() => dummyModule) as (void) => interface {}; + const factory = jest.fn(() => dummyModule) as (v: void) => interface {}; queue.registerLazyCallableModule(name, factory); expect(factory).not.toHaveBeenCalled(); }); @@ -148,7 +148,7 @@ describe('MessageQueue', () => { it('should initialize lazily registered module only once', () => { const dummyModule = {}, name = 'modulesName'; - const factory = jest.fn(() => dummyModule) as (void) => interface {}; + const factory = jest.fn(() => dummyModule) as (v: void) => interface {}; queue.registerLazyCallableModule(name, factory); queue.getCallableModule(name); queue.getCallableModule(name); @@ -160,7 +160,7 @@ describe('MessageQueue', () => { dummy: function () {}, }; const name = 'emptyModuleName'; - const factory = jest.fn(() => dummyModule) as (void) => interface {}; + const factory = jest.fn(() => dummyModule) as (v: void) => interface {}; // $FlowFixMe[cannot-write] queue.__shouldPauseOnThrow = jest.fn(() => false); queue.registerLazyCallableModule(name, factory); @@ -173,7 +173,7 @@ describe('MessageQueue', () => { dummy: function () {}, }; const name = 'emptyModuleName'; - const factory = jest.fn(() => dummyModule) as (void) => interface {}; + const factory = jest.fn(() => dummyModule) as (v: void) => interface {}; // $FlowFixMe[cannot-write] queue.__shouldPauseOnThrow = jest.fn(() => true); queue.registerLazyCallableModule(name, factory); diff --git a/packages/react-native/Libraries/Blob/__tests__/FileReader-test.js b/packages/react-native/Libraries/Blob/__tests__/FileReader-test.js index 0f82773b844a..8d39858353b2 100644 --- a/packages/react-native/Libraries/Blob/__tests__/FileReader-test.js +++ b/packages/react-native/Libraries/Blob/__tests__/FileReader-test.js @@ -277,7 +277,7 @@ describe('FileReader', function () { }); it('should retain the blob until the read resolves', async () => { - let resolveRead: string => void = () => {}; + let resolveRead: (v: string) => void = () => {}; const spy = jest .spyOn(FileReaderModuleMock, 'readAsText') .mockImplementation( @@ -305,7 +305,7 @@ describe('FileReader', function () { }); it('should release the blob when the read rejects', async () => { - let rejectRead: Error => void = () => {}; + let rejectRead: (v: Error) => void = () => {}; const spy = jest .spyOn(FileReaderModuleMock, 'readAsText') .mockImplementation( @@ -351,7 +351,7 @@ describe('FileReader', function () { }); it('should keep retaining the new blob when a stale read settles after abort', async () => { - const resolvers: Array<(string) => void> = []; + const resolvers: Array<(v: string) => void> = []; const spy = jest .spyOn(FileReaderModuleMock, 'readAsText') .mockImplementation( diff --git a/packages/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js b/packages/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js index 017c1d3c842e..46eb20693635 100644 --- a/packages/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +++ b/packages/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js @@ -452,7 +452,7 @@ const AccessibilityInfo = { addEventListener( eventName: K, // $FlowFixMe[incompatible-type] - Flow bug with unions and generics (T128099423) - handler: (...AccessibilityEventDefinitions[K]) => void, + handler: (...rest: AccessibilityEventDefinitions[K]) => void, ): EventSubscription { const deviceEventName = EventNames.get(eventName); return deviceEventName == null diff --git a/packages/react-native/Libraries/Components/Keyboard/Keyboard.js b/packages/react-native/Libraries/Components/Keyboard/Keyboard.js index 40bfa1e121ac..b43258678480 100644 --- a/packages/react-native/Libraries/Components/Keyboard/Keyboard.js +++ b/packages/react-native/Libraries/Components/Keyboard/Keyboard.js @@ -101,7 +101,7 @@ class KeyboardImpl { */ addListener( eventType: K, - listener: (...KeyboardEventDefinitions[K]) => unknown, + listener: (...rest: KeyboardEventDefinitions[K]) => unknown, context?: unknown, ): EventSubscription { return this._emitter.addListener(eventType, listener); diff --git a/packages/react-native/Libraries/Components/Pressable/Pressable.js b/packages/react-native/Libraries/Components/Pressable/Pressable.js index 9523947d6159..bced2044a881 100644 --- a/packages/react-native/Libraries/Components/Pressable/Pressable.js +++ b/packages/react-native/Libraries/Components/Pressable/Pressable.js @@ -368,7 +368,7 @@ function Pressable({ ); } -function usePressState(forcePressed: boolean): [boolean, (boolean) => void] { +function usePressState(forcePressed: boolean): [boolean, (v: boolean) => void] { const [pressed, setPressed] = useState(false); return [pressed || forcePressed, setPressed]; } diff --git a/packages/react-native/Libraries/Components/ScrollView/ScrollView.js b/packages/react-native/Libraries/Components/ScrollView/ScrollView.js index 55ebda75d1a9..cc34b8046952 100644 --- a/packages/react-native/Libraries/Components/ScrollView/ScrollView.js +++ b/packages/react-native/Libraries/Components/ScrollView/ScrollView.js @@ -469,7 +469,9 @@ export type ScrollViewPropsAndroid = Readonly<{ }>; type StickyHeaderComponentType = component( - ref?: React.RefSetter void}>>, + ref?: React.RefSetter< + Readonly void}>, + >, ...ScrollViewStickyHeaderProps ); @@ -1986,8 +1988,8 @@ const styles = StyleSheet.create({ type RefForwarder = { getForwardingRef: ( - ?React.RefSetter, - ) => (TNativeInstance | null) => void, + v: ?React.RefSetter, + ) => (v: TNativeInstance | null) => void, nativeInstance: TNativeInstance | null, publicInstance: TPublicInstance | null, }; @@ -1997,7 +1999,7 @@ type RefForwarder = { * once `ScrollView` is reimplemented as a functional component. */ function createRefForwarder( - mutator: TNativeInstance => TPublicInstance, + mutator: (v: TNativeInstance) => TPublicInstance, ): RefForwarder { const state: RefForwarder = { getForwardingRef: memoize(forwardedRef => { diff --git a/packages/react-native/Libraries/Components/ScrollView/ScrollViewStickyHeader.js b/packages/react-native/Libraries/Components/ScrollView/ScrollViewStickyHeader.js index 6caef6b5066a..4c7fc4a38f57 100644 --- a/packages/react-native/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +++ b/packages/react-native/Libraries/Components/ScrollView/ScrollViewStickyHeader.js @@ -40,7 +40,7 @@ export type ScrollViewStickyHeaderProps = Readonly<{ }>; interface Instance extends React.ElementRef { - readonly setNextHeaderY: number => void; + readonly setNextHeaderY: (v: number) => void; } const ScrollViewStickyHeader: component( diff --git a/packages/react-native/Libraries/Components/TextInput/TextInput.js b/packages/react-native/Libraries/Components/TextInput/TextInput.js index 8db8192da372..77dcb9829ec6 100644 --- a/packages/react-native/Libraries/Components/TextInput/TextInput.js +++ b/packages/react-native/Libraries/Components/TextInput/TextInput.js @@ -183,8 +183,8 @@ function useTextInputStateSynchronization({ text?: string, viewCommands: ViewCommands, }): { - setLastNativeText: string => void, - setLastNativeSelection: LastNativeSelection => void, + setLastNativeText: (v: string) => void, + setLastNativeSelection: (v: LastNativeSelection) => void, } { const [lastNativeText, setLastNativeText] = useState(props.value); const [lastNativeSelectionState, setLastNativeSelection] = diff --git a/packages/react-native/Libraries/Core/Devtools/loadBundleFromServer.js b/packages/react-native/Libraries/Core/Devtools/loadBundleFromServer.js index eb5555d60f7a..241f49f464be 100644 --- a/packages/react-native/Libraries/Core/Devtools/loadBundleFromServer.js +++ b/packages/react-native/Libraries/Core/Devtools/loadBundleFromServer.js @@ -14,7 +14,7 @@ import HMRClient from '../../Utilities/HMRClient'; import getDevServer from './getDevServer'; declare var global: { - globalEvalWithSourceUrl?: (string, string) => unknown, + globalEvalWithSourceUrl?: (v0: string, v1: string) => unknown, __BUNDLE_LOADER_REPORTER__?: { onStart: (url: string | URL) => void, onSuccess: (url: string | URL) => void, diff --git a/packages/react-native/Libraries/Core/ExceptionsManager.js b/packages/react-native/Libraries/Core/ExceptionsManager.js index 6c9a11aa6e25..4b7181eddb9a 100644 --- a/packages/react-native/Libraries/Core/ExceptionsManager.js +++ b/packages/react-native/Libraries/Core/ExceptionsManager.js @@ -17,7 +17,7 @@ export class SyntheticError extends Error { name: string = ''; } -type ExceptionDecorator = ExceptionData => ExceptionData; +type ExceptionDecorator = (v: ExceptionData) => ExceptionData; let userExceptionDecorator: ?ExceptionDecorator; let inUserExceptionDecorator = false; diff --git a/packages/react-native/Libraries/Core/registerCallableModule.js b/packages/react-native/Libraries/Core/registerCallableModule.js index 0a0951c40f07..3daada7d77e4 100644 --- a/packages/react-native/Libraries/Core/registerCallableModule.js +++ b/packages/react-native/Libraries/Core/registerCallableModule.js @@ -13,7 +13,7 @@ type Module = {...}; type RegisterCallableModule = ( name: string, - moduleOrFactory: Module | (void => Module), + moduleOrFactory: Module | ((v: void) => Module), ) => void; const registerCallableModule: RegisterCallableModule = (function () { diff --git a/packages/react-native/Libraries/Core/setUpSegmentFetcher.js b/packages/react-native/Libraries/Core/setUpSegmentFetcher.js index 330a5c46df56..e76d7cebd99a 100644 --- a/packages/react-native/Libraries/Core/setUpSegmentFetcher.js +++ b/packages/react-native/Libraries/Core/setUpSegmentFetcher.js @@ -24,7 +24,7 @@ function __fetchSegment( requestedModuleName: string, segmentHash: string, }>, - callback: (?Error) => void, + callback: (v: ?Error) => void, ) { const SegmentFetcher = require('./SegmentFetcher/NativeSegmentFetcher').default; diff --git a/packages/react-native/Libraries/Debugging/DebuggingOverlayRegistry.js b/packages/react-native/Libraries/Debugging/DebuggingOverlayRegistry.js index f0c5522bfe92..ef8d6f99c015 100644 --- a/packages/react-native/Libraries/Debugging/DebuggingOverlayRegistry.js +++ b/packages/react-native/Libraries/Debugging/DebuggingOverlayRegistry.js @@ -216,7 +216,7 @@ class DebuggingOverlayRegistry { } #onDrawTraceUpdates: ( - ...ReactDevToolsAgentEvents['drawTraceUpdates'] + ...rest: ReactDevToolsAgentEvents['drawTraceUpdates'] ) => void = traceUpdates => { const modernNodesUpdates: Array = []; const legacyNodesUpdates: Array = []; @@ -368,7 +368,7 @@ class DebuggingOverlayRegistry { } #onHighlightElements: ( - ...ReactDevToolsAgentEvents['showNativeHighlight'] + ...rest: ReactDevToolsAgentEvents['showNativeHighlight'] ) => void = nodes => { // First clear highlights for every container for (const subscriber of this.#registry) { @@ -510,7 +510,7 @@ class DebuggingOverlayRegistry { } #onClearElementsHighlights: ( - ...ReactDevToolsAgentEvents['hideNativeHighlight'] + ...rest: ReactDevToolsAgentEvents['hideNativeHighlight'] ) => void = () => { for (const subscriber of this.#registry) { subscriber.debuggingOverlayRef.current?.clearElementsHighlight(); diff --git a/packages/react-native/Libraries/Image/ImageInjection.js b/packages/react-native/Libraries/Image/ImageInjection.js index 088b85b1251e..7445171e190b 100644 --- a/packages/react-native/Libraries/Image/ImageInjection.js +++ b/packages/react-native/Libraries/Image/ImageInjection.js @@ -15,8 +15,10 @@ import useMergeRefs from '../Utilities/useMergeRefs'; import * as React from 'react'; import {useCallback} from 'react'; -type ImageComponentDecorator = (AbstractImageAndroid => AbstractImageAndroid) & - (AbstractImageIOS => AbstractImageIOS); +type ImageComponentDecorator = (( + v: AbstractImageAndroid, +) => AbstractImageAndroid) & + ((v: AbstractImageIOS) => AbstractImageIOS); let injectedImageComponentDecorator: ?ImageComponentDecorator; diff --git a/packages/react-native/Libraries/Linking/Linking.js b/packages/react-native/Libraries/Linking/Linking.js index 338365f681b6..84c7906025ac 100644 --- a/packages/react-native/Libraries/Linking/Linking.js +++ b/packages/react-native/Libraries/Linking/Linking.js @@ -31,7 +31,7 @@ class LinkingImpl extends NativeEventEmitter { */ addEventListener( eventType: K, - listener: (...LinkingEventDefinitions[K]) => unknown, + listener: (...rest: LinkingEventDefinitions[K]) => unknown, ): EventSubscription { return this.addListener(eventType, listener); } diff --git a/packages/react-native/Libraries/LogBox/Data/LogBoxData.js b/packages/react-native/Libraries/LogBox/Data/LogBoxData.js index 027d70856e4a..87af44cca45c 100644 --- a/packages/react-native/Libraries/LogBox/Data/LogBoxData.js +++ b/packages/react-native/Libraries/LogBox/Data/LogBoxData.js @@ -32,7 +32,7 @@ export type LogData = Readonly<{ }>; export type Observer = ( - Readonly<{ + v: Readonly<{ logs: LogBoxLogs, isDisabled: boolean, selectedLogIndex: number, diff --git a/packages/react-native/Libraries/LogBox/LogBox.js b/packages/react-native/Libraries/LogBox/LogBox.js index 74cdaf7f24a2..91977507fcc5 100644 --- a/packages/react-native/Libraries/LogBox/LogBox.js +++ b/packages/react-native/Libraries/LogBox/LogBox.js @@ -55,7 +55,7 @@ interface ILogBox { install(): void; uninstall(): void; isInstalled(): boolean; - ignoreLogs(ReadonlyArray): void; + ignoreLogs(v: ReadonlyArray): void; ignoreAllLogs(value?: boolean): void; clearAllLogs(): void; addLog(log: LogData): void; diff --git a/packages/react-native/Libraries/Network/RCTNetworking.android.js b/packages/react-native/Libraries/Network/RCTNetworking.android.js index 972ad5162088..aa5cb044c922 100644 --- a/packages/react-native/Libraries/Network/RCTNetworking.android.js +++ b/packages/react-native/Libraries/Network/RCTNetworking.android.js @@ -51,7 +51,7 @@ const emitter = new NativeEventEmitter( const RCTNetworking = { addListener( eventType: K, - listener: (...RCTNetworkingEventDefinitions[K]) => unknown, + listener: (...rest: RCTNetworkingEventDefinitions[K]) => unknown, context?: unknown, ): EventSubscription { return emitter.addListener(eventType, listener, context); diff --git a/packages/react-native/Libraries/Network/RCTNetworking.ios.js b/packages/react-native/Libraries/Network/RCTNetworking.ios.js index 79bb13c8e2c2..e297d7c91507 100644 --- a/packages/react-native/Libraries/Network/RCTNetworking.ios.js +++ b/packages/react-native/Libraries/Network/RCTNetworking.ios.js @@ -20,7 +20,7 @@ import {type NativeResponseType} from './XMLHttpRequest'; const RCTNetworking = { addListener( eventType: K, - listener: (...RCTNetworkingEventDefinitions[K]) => unknown, + listener: (...rest: RCTNetworkingEventDefinitions[K]) => unknown, context?: unknown, ): EventSubscription { // $FlowFixMe[incompatible-type] diff --git a/packages/react-native/Libraries/Network/RCTNetworking.js.flow b/packages/react-native/Libraries/Network/RCTNetworking.js.flow index d3dccfbe5006..4cbb5d36e3c4 100644 --- a/packages/react-native/Libraries/Network/RCTNetworking.js.flow +++ b/packages/react-native/Libraries/Network/RCTNetworking.js.flow @@ -19,7 +19,7 @@ declare const RCTNetworking: interface { addListener( eventType: K, // $FlowFixMe[invalid-computed-prop] - listener: (...RCTNetworkingEventDefinitions[K]) => unknown, + listener: (...rest: RCTNetworkingEventDefinitions[K]) => unknown, context?: unknown, ): EventSubscription, diff --git a/packages/react-native/Libraries/Pressability/Pressability.js b/packages/react-native/Libraries/Pressability/Pressability.js index 8a39d3ab6a75..efed84e54345 100644 --- a/packages/react-native/Libraries/Pressability/Pressability.js +++ b/packages/react-native/Libraries/Pressability/Pressability.js @@ -560,8 +560,8 @@ export default class Pressability { ReactNativeFeatureFlags.shouldPressibilityUseW3CPointerEventsForHover() ) { const hoverPointerEvents = { - onPointerEnter: undefined as void | (PointerEvent => void), - onPointerLeave: undefined as void | (PointerEvent => void), + onPointerEnter: undefined as void | ((v: PointerEvent) => void), + onPointerLeave: undefined as void | ((v: PointerEvent) => void), }; // Whether to attach these at all is necessarily decided once: their // presence is what makes the host view listen for pointer enter/leave. diff --git a/packages/react-native/Libraries/Pressability/PressabilityPerformanceEventEmitter.js b/packages/react-native/Libraries/Pressability/PressabilityPerformanceEventEmitter.js index 1d9070e99681..ed18984fb0a2 100644 --- a/packages/react-native/Libraries/Pressability/PressabilityPerformanceEventEmitter.js +++ b/packages/react-native/Libraries/Pressability/PressabilityPerformanceEventEmitter.js @@ -14,8 +14,9 @@ export type PressabilityPerformanceEvent = Readonly<{ signal: TouchSignal, nativeTimestamp: number, }>; -export type PressabilityPerformanceEventListener = - PressabilityPerformanceEvent => void; +export type PressabilityPerformanceEventListener = ( + v: PressabilityPerformanceEvent, +) => void; class PressabilityPerformanceEventEmitter { _listeners: Array = []; diff --git a/packages/react-native/Libraries/Types/CodegenTypes.js b/packages/react-native/Libraries/Types/CodegenTypes.js index cf9c22b2f429..2b21440d1544 100644 --- a/packages/react-native/Libraries/Types/CodegenTypes.js +++ b/packages/react-native/Libraries/Types/CodegenTypes.js @@ -46,5 +46,5 @@ export type WithDefault< > = ?Type; export type EventEmitter = ( - handler: (T) => void | Promise, + handler: (v: T) => void | Promise, ) => EventSubscription; diff --git a/packages/react-native/Libraries/Types/ReactDevToolsTypes.js b/packages/react-native/Libraries/Types/ReactDevToolsTypes.js index f8cbc110e834..3dc4c46336a7 100644 --- a/packages/react-native/Libraries/Types/ReactDevToolsTypes.js +++ b/packages/react-native/Libraries/Types/ReactDevToolsTypes.js @@ -36,7 +36,7 @@ export type ReactDevToolsAgent = { stopInspectingNative(value: boolean): void, addListener( event: Event, - listener: (...ReactDevToolsAgentEvents[Event]) => void, + listener: (...rest: ReactDevToolsAgentEvents[Event]) => void, ): void, removeListener( event: keyof ReactDevToolsAgentEvents, @@ -45,8 +45,8 @@ export type ReactDevToolsAgent = { }; export type ReactDevToolsGlobalHook = { - on: (eventName: string, (agent: ReactDevToolsAgent) => void) => void, - off: (eventName: string, (agent: ReactDevToolsAgent) => void) => void, + on: (eventName: string, v1: (agent: ReactDevToolsAgent) => void) => void, + off: (eventName: string, v1: (agent: ReactDevToolsAgent) => void) => void, reactDevtoolsAgent?: ReactDevToolsAgent, resolveRNStyle?: unknown, nativeStyleEditorValidAttributes?: Array, diff --git a/packages/react-native/Libraries/Utilities/RCTLog.js b/packages/react-native/Libraries/Utilities/RCTLog.js index 8692aa979184..ec6411c91a7b 100644 --- a/packages/react-native/Libraries/Utilities/RCTLog.js +++ b/packages/react-native/Libraries/Utilities/RCTLog.js @@ -20,7 +20,7 @@ const levelsMap = { fatal: 'error', }; -let warningHandler: ?(...Array) => void = null; +let warningHandler: ?(...rest: Array) => void = null; const RCTLog = { // level one of log, info, warn, error, mustfix diff --git a/packages/react-native/Libraries/Utilities/__mocks__/PixelRatio.js b/packages/react-native/Libraries/Utilities/__mocks__/PixelRatio.js index 3a475c0f8089..fb13b7357fb9 100644 --- a/packages/react-native/Libraries/Utilities/__mocks__/PixelRatio.js +++ b/packages/react-native/Libraries/Utilities/__mocks__/PixelRatio.js @@ -13,11 +13,11 @@ const PixelRatio = { getFontScale: jest.fn(() => PixelRatio.get()) as () => number, getPixelSizeForLayoutSize: jest.fn(layoutSize => Math.round(layoutSize * PixelRatio.get()), - ) as (number) => number, + ) as (v: number) => number, roundToNearestPixel: jest.fn(layoutSize => { const ratio = PixelRatio.get(); return Math.round(layoutSize * ratio) / ratio; - }) as (number) => number, + }) as (v: number) => number, startDetecting: jest.fn() as () => void, }; diff --git a/packages/react-native/Libraries/Utilities/__tests__/refCallbackCleanup-itest.js b/packages/react-native/Libraries/Utilities/__tests__/refCallbackCleanup-itest.js index d4c69ba3b9ae..c54992eecebf 100644 --- a/packages/react-native/Libraries/Utilities/__tests__/refCallbackCleanup-itest.js +++ b/packages/react-native/Libraries/Utilities/__tests__/refCallbackCleanup-itest.js @@ -48,14 +48,14 @@ function cleanupEntry(name: string, key: ?string): RegistryEntry { } function mockEffectRegistry(): { - mockEffect: string => React.RefSetter, - mockEffectThatThrows: string => React.RefSetter, - mockEffectWithoutCleanup: string => React.RefSetter, + mockEffect: (v: string) => React.RefSetter, + mockEffectThatThrows: (v: string) => React.RefSetter, + mockEffectWithoutCleanup: (v: string) => React.RefSetter, registry: Array, } { const registry: Array = []; return { - mockEffect(name: string): (?HostInstance) => () => void { + mockEffect(name: string): (v: ?HostInstance) => () => void { return instance => { const key = keyOf(instance); registry.push(effectEntry(name, key)); @@ -64,7 +64,7 @@ function mockEffectRegistry(): { }; }; }, - mockEffectThatThrows(name: string): (?HostInstance) => void { + mockEffectThatThrows(name: string): (v: ?HostInstance) => void { return instance => { const key = keyOf(instance); registry.push(effectEntry(name, key)); @@ -73,7 +73,7 @@ function mockEffectRegistry(): { } }; }, - mockEffectWithoutCleanup(name: string): (?HostInstance) => void { + mockEffectWithoutCleanup(name: string): (v: ?HostInstance) => void { return instance => { const key = keyOf(instance); registry.push(effectEntry(name, key)); diff --git a/packages/react-native/Libraries/Utilities/codegenNativeCommands.js b/packages/react-native/Libraries/Utilities/codegenNativeCommands.js index ed7ef1e902fb..7a9ac785fff7 100644 --- a/packages/react-native/Libraries/Utilities/codegenNativeCommands.js +++ b/packages/react-native/Libraries/Utilities/codegenNativeCommands.js @@ -17,7 +17,7 @@ type NativeCommandsOptions = Readonly<{ }>; declare function castCommandObject(commandObj: { - [keyof T]: (...ReadonlyArray) => void, + [keyof T]: (...rest: ReadonlyArray) => void, }): T; function castCommandObject(commandObj: interface {}) { return commandObj; @@ -26,7 +26,7 @@ function castCommandObject(commandObj: interface {}) { function codegenNativeCommands( options: NativeCommandsOptions, ): T { - const commandObj: {[keyof T]: (...ReadonlyArray) => void} = {}; + const commandObj: {[keyof T]: (...rest: ReadonlyArray) => void} = {}; options.supportedCommands.forEach(command => { commandObj[command] = ( diff --git a/packages/react-native/Libraries/Utilities/stringifySafe.js b/packages/react-native/Libraries/Utilities/stringifySafe.js index 58fab39e0ae0..00eb2e304039 100644 --- a/packages/react-native/Libraries/Utilities/stringifySafe.js +++ b/packages/react-native/Libraries/Utilities/stringifySafe.js @@ -19,7 +19,7 @@ export function createStringifySafeWithLimits(limits: { maxStringLimit?: number, maxArrayLimit?: number, maxObjectKeysLimit?: number, -}): unknown => string { +}): (v: unknown) => string { const { maxDepth = Number.POSITIVE_INFINITY, maxStringLimit = Number.POSITIVE_INFINITY, @@ -111,7 +111,7 @@ export function createStringifySafeWithLimits(limits: { }; } -const stringifySafe: unknown => string = createStringifySafeWithLimits({ +const stringifySafe: (v: unknown) => string = createStringifySafeWithLimits({ maxDepth: 10, maxStringLimit: 100, maxArrayLimit: 50, diff --git a/packages/react-native/Libraries/WebSocket/WebSocketInterceptor.js b/packages/react-native/Libraries/WebSocket/WebSocketInterceptor.js index d329fc0fe7e6..b270891e8cac 100644 --- a/packages/react-native/Libraries/WebSocket/WebSocketInterceptor.js +++ b/packages/react-native/Libraries/WebSocket/WebSocketInterceptor.js @@ -45,7 +45,9 @@ const WebSocketInterceptor = { * - `'reason'` - The reason explaining why the connection was closed, * - `'socketId'` - The id of the socket. */ - setCloseCallback(callback: ?(number | null, string | null, number) => void) { + setCloseCallback( + callback: ?(v0: number | null, v1: string | null, v2: number) => void, + ) { closeCallback = callback; }, @@ -55,7 +57,7 @@ const WebSocketInterceptor = { * - `'data'` - The data sent, * - `'socketId'` - The id of the socket. */ - setSendCallback(callback: ?(string | ArrayBuffer, number) => void) { + setSendCallback(callback: ?(v0: string | ArrayBuffer, v1: number) => void) { sendCallback = callback; }, @@ -68,7 +70,12 @@ const WebSocketInterceptor = { * - `'socketId'` - The id of the socket. */ setConnectCallback( - callback: ?(string, Array | null, Array, number) => void, + callback: ?( + v0: string, + v1: Array | null, + v2: Array, + v3: number, + ) => void, ) { connectCallback = callback; }, @@ -78,7 +85,7 @@ const WebSocketInterceptor = { * The callback is invoked with the following parameters: * - `'socketId'` - The id of the socket. */ - setOnOpenCallback(callback: ?(number) => void) { + setOnOpenCallback(callback: ?(v: number) => void) { onOpenCallback = callback; }, @@ -88,7 +95,9 @@ const WebSocketInterceptor = { * - `'data'` - The data received, * - `'socketId'` - The id of the socket. */ - setOnMessageCallback(callback: ?(string | ArrayBuffer, number) => void) { + setOnMessageCallback( + callback: ?(v0: string | ArrayBuffer, v1: number) => void, + ) { onMessageCallback = callback; }, @@ -98,7 +107,7 @@ const WebSocketInterceptor = { * - `'message'` - The error message, * - `'socketId'` - The id of the socket. */ - setOnErrorCallback(callback: ?({message: string}, number) => void) { + setOnErrorCallback(callback: ?(v0: {message: string}, v1: number) => void) { onErrorCallback = callback; }, @@ -110,7 +119,7 @@ const WebSocketInterceptor = { * - `'socketId'` - The id of the socket. */ setOnCloseCallback( - callback: ?({code: number, reason: ?string}, number) => void, + callback: ?(v0: {code: number, reason: ?string}, v1: number) => void, ) { onCloseCallback = callback; }, diff --git a/packages/react-native/Libraries/vendor/core/ErrorUtils.js b/packages/react-native/Libraries/vendor/core/ErrorUtils.js index fe496b4aa741..e314b1cf8496 100644 --- a/packages/react-native/Libraries/vendor/core/ErrorUtils.js +++ b/packages/react-native/Libraries/vendor/core/ErrorUtils.js @@ -10,7 +10,9 @@ // From @react-native/js-polyfills type ErrorHandler = (error: unknown, isFatal: boolean) => void; -type Fn, Return> = (...Args) => Return; +type Fn, Return> = ( + ...rest: Args +) => Return; export type ErrorUtils = { applyWithGuard, TOut>( fun: Fn, @@ -29,7 +31,7 @@ export type ErrorUtils = { fun: Fn, name?: ?string, context?: unknown, - ): ?(...TArgs) => ?TOut, + ): ?(...rest: TArgs) => ?TOut, inGuard(): boolean, reportError(error: unknown): void, reportFatalError(error: unknown): void, diff --git a/packages/react-native/ReactNativeApi.d.ts b/packages/react-native/ReactNativeApi.d.ts index b7df5dd20379..2ac9531ef415 100644 --- a/packages/react-native/ReactNativeApi.d.ts +++ b/packages/react-native/ReactNativeApi.d.ts @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<0ec86f273125a0f5d0e47bc71371b776>> + * @generated SignedSource<<213d5acfe0252c218f1f64098934ff33>> * * This file was generated by scripts/js-api/build-types/index.js. */ @@ -66,7 +66,7 @@ declare const AccessibilityInfo: typeof AccessibilityInfo_default declare const AccessibilityInfo_default: { addEventListener( eventName: K, - handler: (...$$REST$$: AccessibilityEventDefinitions[K]) => void, + handler: (...rest: AccessibilityEventDefinitions[K]) => void, ): EventSubscription announceForAccessibility(announcement: string): void announceForAccessibilityWithOptions( @@ -323,7 +323,7 @@ declare const RCTNetworking_default: { abortRequest(requestId: number): void addListener( eventType: K, - listener: (...$$REST$$: RCTNetworkingEventDefinitions[K]) => unknown, + listener: (...rest: RCTNetworkingEventDefinitions[K]) => unknown, context?: unknown, ): EventSubscription clearCookies(callback: (result: boolean) => void): void @@ -1547,7 +1547,7 @@ declare class AppStateImpl { isAvailable: boolean addEventListener( type: K, - handler: (...$$REST$$: AppStateEventDefinitions[K]) => void, + handler: (...rest: AppStateEventDefinitions[K]) => void, ): EventSubscription constructor() } @@ -1653,7 +1653,7 @@ declare type BubblingEventHandler< PaperName extends never | string = never, > = (event: NativeSyntheticEvent) => Promise | void declare type Builtin = ( - ...$$REST$$: ReadonlyArray + ...rest: ReadonlyArray ) => Date | Error | RegExp | unknown declare type Button = typeof Button declare type ButtonInstance = React.ComponentRef @@ -1787,12 +1787,12 @@ declare type Context = { visibleLength: number zoomScale: number } - readonly registerAsNestedChild: ($$PARAM_0$$: { + readonly registerAsNestedChild: (v: { cellKey: string horizontal?: boolean ref: VirtualizedList_default }) => void - readonly unregisterAsNestedChild: ($$PARAM_0$$: { + readonly unregisterAsNestedChild: (v: { ref: VirtualizedList_default }) => void } @@ -2072,7 +2072,7 @@ declare type ErrorUtils = { fun: Fn, name?: string | undefined, context?: unknown, - ): ((...$$REST$$: TArgs) => TOut | undefined) | undefined + ): ((...rest: TArgs) => TOut | undefined) | undefined inGuard(): boolean reportError(error: unknown): void reportFatalError(error: unknown): void @@ -2086,7 +2086,7 @@ declare type EventArgs = [$$Key$$: string]: string } declare type EventConfig = { - listener?: ($$PARAM_0$$: NativeSyntheticEvent) => unknown + listener?: (v: NativeSyntheticEvent) => unknown platformConfig?: PlatformConfig useNativeDriver: boolean } @@ -2111,7 +2111,7 @@ declare class EventEmitter< ): void } declare type EventEmitter_2 = ( - handler: ($$PARAM_0$$: T) => Promise | void, + handler: (v: T) => Promise | void, ) => EventSubscription declare type EventName = (() => string) | string declare interface EventSubscription { @@ -2142,7 +2142,7 @@ declare type FetchResult = { } declare class FillRateHelper_default { activate(): void - static addListener(callback: ($$PARAM_0$$: FillRateInfo) => void): { + static addListener(callback: (v: FillRateInfo) => void): { remove: () => void } computeBlankness( @@ -2261,7 +2261,7 @@ declare function flattenStyle_default< | undefined declare type Float = number declare type Fn, Return> = ( - ...$$REST$$: Args + ...rest: Args ) => Return declare type FocusEvent = NativeSyntheticEvent declare type FocusEventProps = { @@ -2405,7 +2405,7 @@ declare interface ILogBox { addLog(log: LogData): void clearAllLogs(): void ignoreAllLogs(value?: boolean): void - ignoreLogs($$PARAM_0$$: ReadonlyArray): void + ignoreLogs(v: ReadonlyArray): void install(): void isInstalled(): boolean uninstall(): void @@ -2755,7 +2755,7 @@ declare type KeyboardEventName = keyof KeyboardEventDefinitions declare class KeyboardImpl { addListener( eventType: K, - listener: (...$$REST$$: KeyboardEventDefinitions[K]) => unknown, + listener: (...rest: KeyboardEventDefinitions[K]) => unknown, context?: unknown, ): EventSubscription constructor() @@ -2868,7 +2868,7 @@ declare type LinkingEventDefinitions = { declare class LinkingImpl extends NativeEventEmitter { addEventListener( eventType: K, - listener: (...$$REST$$: LinkingEventDefinitions[K]) => unknown, + listener: (...rest: LinkingEventDefinitions[K]) => unknown, ): EventSubscription canOpenURL(url: string): Promise constructor() @@ -3369,7 +3369,7 @@ declare type OptionalVirtualizedSectionListProps< ItemT, SectionT = DefaultVirtualizedSectionT, > = { - onEndReached?: ($$PARAM_0$$: { distanceFromEnd: number }) => void + onEndReached?: (v: { distanceFromEnd: number }) => void renderItem?: (info: { index: number item: ItemT @@ -4038,7 +4038,7 @@ declare type RefreshControlPropsIOS = { declare type registerCallableModule = typeof registerCallableModule declare type RegisterCallableModule = ( name: string, - moduleOrFactory: (($$PARAM_0$$: void) => Module) | Module, + moduleOrFactory: ((v: void) => Module) | Module, ) => void declare function registerCancellableHeadlessTask( taskKey: string, @@ -4732,10 +4732,7 @@ declare class StateSafePureComponent_default< setState( partialState: | ( - | (( - $$PARAM_0$$: State, - $$PARAM_1$$: Props, - ) => null | Pick | undefined) + | ((v0: State, v1: Props) => null | Pick | undefined) | Pick ) | null @@ -4779,7 +4776,7 @@ declare type StatusBarStyle = keyof { declare type StickyHeaderComponentType = ( props: ScrollViewStickyHeaderProps & { ref?: React.Ref<{ - readonly setNextHeaderY: ($$PARAM_0$$: number) => void + readonly setNextHeaderY: (v: number) => void }> }, ) => React.ReactNode @@ -5509,7 +5506,7 @@ declare class ViewabilityHelper_default { isViewable: boolean, props: CellMetricProps, ) => ListViewToken, - onViewableItemsChanged: ($$PARAM_0$$: { + onViewableItemsChanged: (v: { changed: Array viewableItems: Array }) => void, @@ -5770,7 +5767,7 @@ declare type WrapperComponentProvider = ( export { AccessibilityActionEvent, // a276ec6e AccessibilityActionInfo, // c94545a7 - AccessibilityInfo, // 7d8718ed + AccessibilityInfo, // c4a3b4ed AccessibilityProps, // 95dbb1d8 AccessibilityRole, // f2f2e066 AccessibilityState, // b0c2b3f7 @@ -5786,16 +5783,16 @@ export { AlertOptions, // 8a116d2a AlertType, // 5ab91217 AndroidKeyboardEvent, // e03becc8 - Animated, // 82e01a3c - AnimatedFlatList, // a4467eeb - AnimatedImage, // f02097b9 - AnimatedScrollView, // faf0e26c - AnimatedSectionList, // 41cf38c7 - AnimatedText, // ddb4c5b7 - AnimatedView, // b3b343f4 + Animated, // 70b12045 + AnimatedFlatList, // d7aa9d14 + AnimatedImage, // 58b38b96 + AnimatedScrollView, // 5a621f5a + AnimatedSectionList, // 2771a17b + AnimatedText, // c710a0a7 + AnimatedView, // 1ba76ffd AppConfig, // 35c0ca70 AppRegistry, // edec2a30 - AppState, // 12012be5 + AppState, // db34d225 AppStateEvent, // 80f034c3 AppStateStatus, // 447e5ef2 Appearance, // 83e9641a @@ -5806,10 +5803,10 @@ export { BackPressEventName, // 4620fb76 BlurEvent, // d5e68e96 BoxShadowValue, // b679703f - Button, // f253fc94 - ButtonInstance, // bcf2ef72 + Button, // 0abcdf75 + ButtonInstance, // 64b68c93 ButtonProps, // 9886bcc6 - CodegenTypes, // 9067fd06 + CodegenTypes, // 4aca14ff ColorSchemeName, // 6615edd6 ColorValue, // 98989a8f ComponentProvider, // bf78f91b @@ -5838,14 +5835,14 @@ export { EdgeInsetsValue, // bd44afe6 EmitterSubscription, // de50c359 EnterKeyHintTypeOptions, // 8314de78 - ErrorUtils, // 38fb909e + ErrorUtils, // 0401a01d EventEmitter, // 2a2ea995 EventSubscription, // b8d084aa ExtendedExceptionData, // 5a6ccf5a FilterFunction, // bf24c0e3 - FlatList, // 5ba109bd - FlatListInstance, // 1095fe06 - FlatListProps, // dd43b1d1 + FlatList, // f25f50b7 + FlatListInstance, // 017c1680 + FlatListProps, // 72d330d2 FocusEvent, // f2e4363d FontVariant, // 7c7558bb GestureResponderEvent, // 5cd2a663 @@ -5883,7 +5880,7 @@ export { KeyDownEvent, // a12d46ea KeyEvent, // 20fa4267 KeyUpEvent, // 0b5d0144 - Keyboard, // 49414c97 + Keyboard, // a26f7bd4 KeyboardAvoidingView, // 1fee106e KeyboardAvoidingViewInstance, // 26062fd4 KeyboardAvoidingViewProps, // 635ae7fc @@ -5902,11 +5899,11 @@ export { LayoutChangeEvent, // 9e7d74fd LayoutConformanceProps, // 055f03b8 LayoutRectangle, // 6601b294 - Linking, // 9a6a174d + Linking, // 73c2b170 ListRenderItem, // b5353fd8 ListRenderItemInfo, // e8595b03 ListViewToken, // 833d3481 - LogBox, // 94d278f1 + LogBox, // 3caf3513 LogData, // e68f7019 MeasureInWindowOnSuccessCallback, // a285f598 MeasureLayoutOnSuccessCallback, // 3592502a @@ -5931,7 +5928,7 @@ export { NativeSyntheticEvent, // e201ef20 NativeTouchEvent, // 59b676df NativeUIEvent, // 44ac26ac - Networking, // 2baeacec + Networking, // 3b6c7152 OpaqueColorValue, // 25f3fa5b PackagerAsset, // d1c88cf4 PanResponder, // bd82bf2d @@ -5988,18 +5985,18 @@ export { ScrollEvent, // 956fdb27 ScrollResponderType, // 52c38666 ScrollToLocationParamsType, // d7ecdad1 - ScrollView, // 08fe7620 + ScrollView, // 6d572294 ScrollViewImperativeMethods, // 682315af ScrollViewInstance, // bcc836b9 - ScrollViewProps, // d845721f + ScrollViewProps, // 405604c7 ScrollViewPropsAndroid, // 02f3df2e ScrollViewPropsIOS, // c378379b ScrollViewScrollToOptions, // 3313411e SectionBase, // 9f13db00 - SectionList, // b48c3713 + SectionList, // 95a09519 SectionListData, // 1a4de01a - SectionListInstance, // e2814c16 - SectionListProps, // bf7d4c45 + SectionListInstance, // cade5f3d + SectionListProps, // 6a531c1d SectionListRenderItem, // 715b2086 SectionListRenderItemInfo, // 4a48a922 Separators, // 6a45f7e3 @@ -6016,7 +6013,7 @@ export { StatusBarProps, // c2a44d88 StatusBarStyle, // 78f53eea StyleProp, // fa0e9b4a - StyleSheet, // 8bb13f55 + StyleSheet, // cf156a8b SubmitBehavior, // c4ddf490 Switch, // 7ea8a527 SwitchChangeEvent, // 3b472666 @@ -6052,9 +6049,9 @@ export { TouchableNativeFeedback, // 744ee0ee TouchableNativeFeedbackInstance, // b90e3bae TouchableNativeFeedbackProps, // 39abde16 - TouchableOpacity, // 6aec357f + TouchableOpacity, // 1125dbb7 TouchableOpacityInstance, // 0cd8a347 - TouchableOpacityProps, // 0d78e636 + TouchableOpacityProps, // c126e610 TouchableWithoutFeedback, // 92cfc35d TouchableWithoutFeedbackProps, // 7e8a325c TransformsStyle, // 65e70f18 @@ -6074,16 +6071,16 @@ export { VirtualViewMode, // 6be59722 VirtualizedList, // 68c7345e VirtualizedListInstance, // 423ee7c0 - VirtualizedListProps, // 09a41c15 + VirtualizedListProps, // 9a26f0e0 VirtualizedSectionList, // 9fd9cd61 VirtualizedSectionListInstance, // 12b706d5 - VirtualizedSectionListProps, // c63aa8a2 + VirtualizedSectionListProps, // c00a3bac WrapperComponentProvider, // 9b4247f6 codegenNativeCommands, // 322f3f4e codegenNativeComponent, // 3da62daa findNodeHandle, // 93f80214 processColor, // 6e877698 - registerCallableModule, // 839c8cfe + registerCallableModule, // 55bda579 requireNativeComponent, // da1880ff useAnimatedColor, // 1faf88ce useAnimatedValue, // dc9d6f5c diff --git a/packages/react-native/flow/HermesInternalType.js b/packages/react-native/flow/HermesInternalType.js index 762b942bde38..ecc6b6d4967a 100644 --- a/packages/react-native/flow/HermesInternalType.js +++ b/packages/react-native/flow/HermesInternalType.js @@ -95,8 +95,8 @@ declare type $HermesInternalType = { options: ?{ whitelist?: ?Array, allRejections?: ?boolean, - onUnhandled?: ?(number, unknown) => void, - onHandled?: ?(number, unknown) => void, + onUnhandled?: ?(v0: number, v1: unknown) => void, + onHandled?: ?(v0: number, v1: unknown) => void, }, ) => void, diff --git a/packages/react-native/flow/dom.js.flow b/packages/react-native/flow/dom.js.flow index 8937494e034b..a8c344f5816c 100644 --- a/packages/react-native/flow/dom.js.flow +++ b/packages/react-native/flow/dom.js.flow @@ -119,8 +119,8 @@ declare class DOMStringList { @@iterator(): Iterator; readonly [key: number]: string; readonly length: number; - item(number): string | null; - contains(string): boolean; + item(v: number): string | null; + contains(v: string): boolean; } declare class DOMError { diff --git a/packages/react-native/src/private/animated/NativeAnimatedHelper.js b/packages/react-native/src/private/animated/NativeAnimatedHelper.js index d455c7e240a5..a49ff70f56b6 100644 --- a/packages/react-native/src/private/animated/NativeAnimatedHelper.js +++ b/packages/react-native/src/private/animated/NativeAnimatedHelper.js @@ -119,7 +119,7 @@ function createNativeOperations(): NonNullable { methodNames.push('connectAnimatedNodeToShadowNodeFamily'); } const nativeOperations: { - [Values]: (...ReadonlyArray) => void, + [Values]: (...rest: ReadonlyArray) => void, } = {}; if (isSingleOpBatching) { for (let ii = 0, length = methodNames.length; ii < length; ii++) { diff --git a/packages/react-native/src/private/animated/createAnimatedPropsMemoHook.js b/packages/react-native/src/private/animated/createAnimatedPropsMemoHook.js index dd02b3bef015..1a5e9df91411 100644 --- a/packages/react-native/src/private/animated/createAnimatedPropsMemoHook.js +++ b/packages/react-native/src/private/animated/createAnimatedPropsMemoHook.js @@ -48,7 +48,7 @@ type $ReadOnlyCompositeKeyComponent = | Readonly<{[string]: $ReadOnlyCompositeKeyComponent}>; type AnimatedPropsMemoHook = ( - () => AnimatedProps, + v0: () => AnimatedProps, props: Readonly<{[string]: unknown}>, ) => AnimatedProps; diff --git a/packages/react-native/src/private/components/virtualcollection/VirtualCollectionView.js b/packages/react-native/src/private/components/virtualcollection/VirtualCollectionView.js index 771b01f9be34..845a90b86a61 100644 --- a/packages/react-native/src/private/components/virtualcollection/VirtualCollectionView.js +++ b/packages/react-native/src/private/components/virtualcollection/VirtualCollectionView.js @@ -42,7 +42,7 @@ export type VirtualCollectionViewComponent = component( children: (item: TItem, key: string) => React.Node, items: VirtualCollection, - itemToKey?: (TItem) => string, + itemToKey?: (v: TItem) => string, removeClippedSubviews?: boolean, testID?: ?string, ...TLayoutProps @@ -89,7 +89,7 @@ export function createVirtualCollectionView( component VirtualCollectionView( children: (item: TItem, key: string) => React.Node, items: VirtualCollection, - itemToKey: TItem => string = defaultItemToKey, + itemToKey: (v: TItem) => string = defaultItemToKey, removeClippedSubviews: boolean = false, testID?: ?string, ...layoutProps: TLayoutProps @@ -203,14 +203,14 @@ export function createVirtualCollectionView( } hook useMemoCallback( - callback: TInput => TOutput, -): TInput => TOutput { + callback: (v: TInput) => TOutput, +): (v: TInput) => TOutput { return useMemo(() => memoize(callback), [callback]); } function memoize( - callback: TInput => TOutput, -): TInput => TOutput { + callback: (v: TInput) => TOutput, +): (v: TInput) => TOutput { const cache = new WeakMap(); return (input: TInput) => { let output = cache.get(input); diff --git a/packages/react-native/src/private/components/virtualcollection/column/VirtualColumn.js b/packages/react-native/src/private/components/virtualcollection/column/VirtualColumn.js index 4ef31a318ddd..7fb85667eb18 100644 --- a/packages/react-native/src/private/components/virtualcollection/column/VirtualColumn.js +++ b/packages/react-native/src/private/components/virtualcollection/column/VirtualColumn.js @@ -32,7 +32,7 @@ component VirtualColumnLayout( const VirtualColumn: component( children: (item: TItem, key: string) => React.Node, items: VirtualCollection, - itemToKey?: (TItem) => string, + itemToKey?: (v: TItem) => string, removeClippedSubviews?: boolean, testID?: ?string, ) = createVirtualCollectionView(VirtualColumnLayout, VirtualColumnGenerator); diff --git a/packages/react-native/src/private/components/virtualcollection/row/VirtualRow.js b/packages/react-native/src/private/components/virtualcollection/row/VirtualRow.js index 5394795bdb8d..a8d4f9da325b 100644 --- a/packages/react-native/src/private/components/virtualcollection/row/VirtualRow.js +++ b/packages/react-native/src/private/components/virtualcollection/row/VirtualRow.js @@ -32,7 +32,7 @@ component VirtualRowLayout( const VirtualRow: component( children: (item: TItem, key: string) => React.Node, items: VirtualCollection, - itemToKey?: (TItem) => string, + itemToKey?: (v: TItem) => string, removeClippedSubviews?: boolean, testID?: ?string, ) = createVirtualCollectionView(VirtualRowLayout, VirtualRowGenerator); diff --git a/packages/react-native/src/private/devsupport/devmenu/elementinspector/ElementProperties.js b/packages/react-native/src/private/devsupport/devmenu/elementinspector/ElementProperties.js index dce0dd1bbd55..00fc359020c3 100644 --- a/packages/react-native/src/private/devsupport/devmenu/elementinspector/ElementProperties.js +++ b/packages/react-native/src/private/devsupport/devmenu/elementinspector/ElementProperties.js @@ -36,7 +36,7 @@ type Props = Readonly<{ style?: ?ViewStyleProp, frame?: ?InspectedElementFrame, selection?: ?number, - setSelection?: number => unknown, + setSelection?: (v: number) => unknown, }>; class ElementProperties extends React.Component { diff --git a/packages/react-native/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js b/packages/react-native/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js index b4195f431486..25600d00f8e8 100644 --- a/packages/react-native/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js +++ b/packages/react-native/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js @@ -33,7 +33,7 @@ type Props = Readonly<{ setTouchTargeting: (val: boolean) => void, hierarchy?: ?ElementsHierarchy, selection?: ?number, - setSelection: number => unknown, + setSelection: (v: number) => unknown, inspected?: ?InspectedElement, }>; diff --git a/packages/react-native/src/private/devsupport/rndevtools/setUpFuseboxReactDevToolsDispatcher.js b/packages/react-native/src/private/devsupport/rndevtools/setUpFuseboxReactDevToolsDispatcher.js index ac4cbccef8d3..bb31f59bf796 100644 --- a/packages/react-native/src/private/devsupport/rndevtools/setUpFuseboxReactDevToolsDispatcher.js +++ b/packages/react-native/src/private/devsupport/rndevtools/setUpFuseboxReactDevToolsDispatcher.js @@ -18,13 +18,13 @@ export type JSONValue = type DomainName = 'react-devtools'; class EventScope { - #listeners: Set<(T) => void> = new Set(); + #listeners: Set<(v: T) => void> = new Set(); - addEventListener(listener: T => void): void { + addEventListener(listener: (v: T) => void): void { this.#listeners.add(listener); } - removeEventListener(listener: T => void): void { + removeEventListener(listener: (v: T) => void): void { this.#listeners.delete(listener); } diff --git a/packages/react-native/src/private/renderer/events/ResponderTouchHistoryStore.js b/packages/react-native/src/private/renderer/events/ResponderTouchHistoryStore.js index 19d06b9bb5e7..221e5dc3fe2b 100644 --- a/packages/react-native/src/private/renderer/events/ResponderTouchHistoryStore.js +++ b/packages/react-native/src/private/renderer/events/ResponderTouchHistoryStore.js @@ -206,13 +206,13 @@ function printTouchBank(): string { return printed; } -let instrumentationCallback: ?(string, TouchEvent) => void; +let instrumentationCallback: ?(v0: string, v1: TouchEvent) => void; const ResponderTouchHistoryStore = { /** * Registers a listener which can be used to instrument every touch event. */ - instrument(callback: (string, TouchEvent) => void): void { + instrument(callback: (v0: string, v1: TouchEvent) => void): void { instrumentationCallback = callback; }, diff --git a/packages/react-native/src/private/webapis/dom/abort-api/__tests__/AbortController-itest.js b/packages/react-native/src/private/webapis/dom/abort-api/__tests__/AbortController-itest.js index 4e8cf7dc7811..0001c9e5194b 100644 --- a/packages/react-native/src/private/webapis/dom/abort-api/__tests__/AbortController-itest.js +++ b/packages/react-native/src/private/webapis/dom/abort-api/__tests__/AbortController-itest.js @@ -29,7 +29,7 @@ type EventRecordingListener = JestMockFn<[Event], void> & { }; function createListener( - implementation?: Event => void, + implementation?: (v: Event) => void, ): EventRecordingListener { // $FlowExpectedError[incompatible-type] const listener: EventRecordingListener = jest.fn((event: Event) => { diff --git a/packages/react-native/src/private/webapis/dom/events/__tests__/EventTarget-itest.js b/packages/react-native/src/private/webapis/dom/events/__tests__/EventTarget-itest.js index febb6cb696e8..bae28eb276a4 100644 --- a/packages/react-native/src/private/webapis/dom/events/__tests__/EventTarget-itest.js +++ b/packages/react-native/src/private/webapis/dom/events/__tests__/EventTarget-itest.js @@ -37,7 +37,7 @@ type EventRecordingListener = JestMockFn<[Event], void> & { }; function createListener( - implementation?: Event => void, + implementation?: (v: Event) => void, ): EventRecordingListener { // $FlowExpectedError[incompatible-type] const listener: EventRecordingListener = jest.fn((event: Event) => { diff --git a/packages/react-native/src/private/webapis/resizeobserver/__tests__/ResizeObserver-itest.js b/packages/react-native/src/private/webapis/resizeobserver/__tests__/ResizeObserver-itest.js index b8251f53134d..edb667d73ec1 100644 --- a/packages/react-native/src/private/webapis/resizeobserver/__tests__/ResizeObserver-itest.js +++ b/packages/react-native/src/private/webapis/resizeobserver/__tests__/ResizeObserver-itest.js @@ -2050,7 +2050,7 @@ describe('ResizeObserver', () => { describe('state updates scheduled from callbacks', () => { it('should process a state update scheduled from a callback in a separate task, after the callback returns', () => { const nodeRef = createRef(); - const setWidthRef: {current: ?(number) => void} = {current: null}; + const setWidthRef: {current: ?(v: number) => void} = {current: null}; const events: Array = []; const root = Fantom.createRoot(); @@ -2102,7 +2102,7 @@ describe('ResizeObserver', () => { // about. This is the gap that prevents same-frame reactions. it('should not apply a state update before the callback that scheduled it returns', () => { const nodeRef = createRef(); - const setWidthRef: {current: ?(number) => void} = {current: null}; + const setWidthRef: {current: ?(v: number) => void} = {current: null}; const root = Fantom.createRoot(); let widthMeasuredAfterSetState = -1; @@ -2137,10 +2137,11 @@ describe('ResizeObserver', () => { // calls produce one re-render and therefore one follow-up observation. it('should batch multiple state updates from a single callback into one re-render', () => { const nodeRef = createRef(); - const setSizeRef: {current: ?({width: number, height: number}) => void} = - { - current: null, - }; + const setSizeRef: { + current: ?(v: {width: number, height: number}) => void, + } = { + current: null, + }; const root = Fantom.createRoot(); let renderCount = 0; @@ -2188,8 +2189,8 @@ describe('ResizeObserver', () => { it('should batch state updates scheduled from different observer callbacks', () => { const nodeARef = createRef(); const nodeBRef = createRef(); - const setWidthARef: {current: ?(number) => void} = {current: null}; - const setWidthBRef: {current: ?(number) => void} = {current: null}; + const setWidthARef: {current: ?(v: number) => void} = {current: null}; + const setWidthBRef: {current: ?(v: number) => void} = {current: null}; const root = Fantom.createRoot(); let renderCount = 0; diff --git a/packages/react-native/src/private/webapis/webidl/PlatformObjects.js b/packages/react-native/src/private/webapis/webidl/PlatformObjects.js index 991b73bda2be..961c910f7b5b 100644 --- a/packages/react-native/src/private/webapis/webidl/PlatformObjects.js +++ b/packages/react-native/src/private/webapis/webidl/PlatformObjects.js @@ -19,9 +19,9 @@ const CLONE_PLATFORM_OBJECT_KEY = Symbol('clonePlatformObject'); */ export const setPlatformObject: (( obj: Class, - options?: {clone: T => T}, + options?: {clone: (v: T) => T}, ) => void) & - ((obj: T, options?: {clone: T => T}) => void) = + ((obj: T, options?: {clone: (v: T) => T}) => void) = function setPlatformObject(obj, options) { if (typeof obj === 'function') { // $FlowExpectedError[prop-missing] @@ -53,7 +53,7 @@ export function isPlatformObject(obj: T): boolean { */ export function getPlatformObjectClone( obj: T, -): (T => T) | void { +): ((v: T) => T) | void { // $FlowExpectedError[prop-missing] return obj[CLONE_PLATFORM_OBJECT_KEY]; } diff --git a/packages/rn-tester/js/RNTesterAppShared.js b/packages/rn-tester/js/RNTesterAppShared.js index 3bfbde0edbd3..1956e27c46a9 100644 --- a/packages/rn-tester/js/RNTesterAppShared.js +++ b/packages/rn-tester/js/RNTesterAppShared.js @@ -80,7 +80,7 @@ const IOS_TABS = [ const NO_INSETS: ContentInsets = {top: 0, left: 0, bottom: 0, right: 0}; -type BackButton = ({onBack: () => void}) => React.Node; +type BackButton = (v: {onBack: () => void}) => React.Node; const RNTesterApp = ({ testList, diff --git a/packages/rn-tester/js/components/ListExampleShared.js b/packages/rn-tester/js/components/ListExampleShared.js index cad9d6e62e2b..e71fd5890e96 100644 --- a/packages/rn-tester/js/components/ListExampleShared.js +++ b/packages/rn-tester/js/components/ListExampleShared.js @@ -257,7 +257,7 @@ function pressItem(item: Item): Item { function renderSmallSwitchOption( label: string, value: boolean, - setValue: boolean => void, + setValue: (v: boolean) => void, testID?: string, ): null | React.Node { if (Platform.isTV) { diff --git a/packages/rn-tester/js/components/RNTesterNavbar.js b/packages/rn-tester/js/components/RNTesterNavbar.js index 1dcdf8c0b6d6..9ec415041354 100644 --- a/packages/rn-tester/js/components/RNTesterNavbar.js +++ b/packages/rn-tester/js/components/RNTesterNavbar.js @@ -16,7 +16,7 @@ import * as React from 'react'; import {useContext} from 'react'; import {Image, Pressable, StyleSheet, Text, View} from 'react-native'; -type NavBarOnPressHandler = ({screen: ScreenTypes}) => void; +type NavBarOnPressHandler = (v: {screen: ScreenTypes}) => void; /* $FlowFixMe[missing-local-annot] The type annotation(s) required by Flow's * LTI update could not be added via codemod */ diff --git a/packages/rn-tester/js/examples/Experimental/PlatformTest/RNTesterPlatformTestEventRecorder.js b/packages/rn-tester/js/examples/Experimental/PlatformTest/RNTesterPlatformTestEventRecorder.js index 8ece7eb1338d..3d77d8669950 100644 --- a/packages/rn-tester/js/examples/Experimental/PlatformTest/RNTesterPlatformTestEventRecorder.js +++ b/packages/rn-tester/js/examples/Experimental/PlatformTest/RNTesterPlatformTestEventRecorder.js @@ -90,7 +90,7 @@ export default class RNTesterPlatformTestEventRecorder { _generateRecordedEventHandlerWithCallback( targetName: string, callback?: (event: Object, eventType: string) => void, - ): (Object, string) => void { + ): (v0: Object, v1: string) => void { return (e: Object, eventType: string) => { if (this.recording) { this._recordEvent(e, targetName, eventType); diff --git a/packages/rn-tester/js/examples/Experimental/PlatformTest/usePlatformTestHarness.js b/packages/rn-tester/js/examples/Experimental/PlatformTest/usePlatformTestHarness.js index 14ff37690eeb..c5d7230600da 100644 --- a/packages/rn-tester/js/examples/Experimental/PlatformTest/usePlatformTestHarness.js +++ b/packages/rn-tester/js/examples/Experimental/PlatformTest/usePlatformTestHarness.js @@ -31,8 +31,8 @@ function didAllAssertionsPass( function constructAsyncTestHook( addTestResult: (newResult: PlatformTestResult) => void, updateAsyncTestStatuses: ( - ( - Readonly<{[string]: AsyncTestStatus}>, + v: ( + v: Readonly<{[string]: AsyncTestStatus}>, ) => Readonly<{[string]: AsyncTestStatus}>, ) => void, runTestCase: ( diff --git a/packages/rn-tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventSupport.js b/packages/rn-tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventSupport.js index 7509fe8b5a9a..786fd2e624e0 100644 --- a/packages/rn-tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventSupport.js +++ b/packages/rn-tester/js/examples/Experimental/W3CPointerEventPlatformTests/PointerEventSupport.js @@ -245,13 +245,13 @@ export function mkEvent(id: string, eventName: EventName): EventOccurrence { export type EventTrackerProps = Readonly<{ eventsRef?: {current: Array}, - onAnyEvent?: (EventOccurrence, PointerEvent) => void, + onAnyEvent?: (v0: EventOccurrence, v1: PointerEvent) => void, eventsToTrack: Array, id: string, ...ViewProps, }>; -type HandlerFunction = PointerEvent => void; +type HandlerFunction = (v: PointerEvent) => void; export function EventTracker(props: EventTrackerProps): React.MixedElement { const {eventsToTrack, eventsRef, id, style, onAnyEvent, ...viewProps} = props; diff --git a/packages/rn-tester/js/examples/Experimental/W3CPointerEventsEventfulView.js b/packages/rn-tester/js/examples/Experimental/W3CPointerEventsEventfulView.js index a5a6153ee5df..b180c58fbe6c 100644 --- a/packages/rn-tester/js/examples/Experimental/W3CPointerEventsEventfulView.js +++ b/packages/rn-tester/js/examples/Experimental/W3CPointerEventsEventfulView.js @@ -33,7 +33,7 @@ export default function EventfulView(props: { onMoveCapture?: boolean, onCancel?: boolean, onCancelCapture?: boolean, - log: string => void, + log: (v: string) => void, ...ViewProps, }): React.Node { const ref = useRef>(); diff --git a/packages/rn-tester/js/examples/Experimental/W3CPointerEventsExample.js b/packages/rn-tester/js/examples/Experimental/W3CPointerEventsExample.js index 206b356f0230..bff26b7fece5 100644 --- a/packages/rn-tester/js/examples/Experimental/W3CPointerEventsExample.js +++ b/packages/rn-tester/js/examples/Experimental/W3CPointerEventsExample.js @@ -32,7 +32,7 @@ import * as React from 'react'; import {useState} from 'react'; import {Button, ScrollView, StyleSheet, Text, View} from 'react-native'; -function AbsoluteChildExample({log}: {log: string => void}) { +function AbsoluteChildExample({log}: {log: (v: string) => void}) { return ( void}) { ); } -function RelativeChildExample({log}: {log: string => void}) { +function RelativeChildExample({log}: {log: (v: string) => void}) { return ( <> void}) { function PointerEventScaffolding({ Example, }: { - Example: component(log: (string) => void), + Example: component(log: (v: string) => void), }) { const [eventsLog, setEventsLog] = useState(''); const clear = () => setEventsLog(''); diff --git a/packages/rn-tester/js/examples/FlatList/FlatList-basic.js b/packages/rn-tester/js/examples/FlatList/FlatList-basic.js index cdcef788d216..d4cf6c7094ce 100644 --- a/packages/rn-tester/js/examples/FlatList/FlatList-basic.js +++ b/packages/rn-tester/js/examples/FlatList/FlatList-basic.js @@ -128,11 +128,11 @@ class FlatListExample extends React.PureComponent { this._listRef?.recordInteraction(); // e.g. flipping logViewable switch } - _setBooleanValue: string => boolean => void = key => value => + _setBooleanValue: (v: string) => (v: boolean) => void = key => value => // $FlowFixMe[incompatible-type] this.setState({[key]: value}); - _setIsRTL: boolean => void = value => { + _setIsRTL: (v: boolean) => void = value => { I18nManager.forceRTL(value); this.setState({isRTL: value}); Alert.alert( diff --git a/packages/rn-tester/js/examples/FlatList/FlatList-nested.js b/packages/rn-tester/js/examples/FlatList/FlatList-nested.js index 3cebb3b6abd6..e5b87667b64f 100644 --- a/packages/rn-tester/js/examples/FlatList/FlatList-nested.js +++ b/packages/rn-tester/js/examples/FlatList/FlatList-nested.js @@ -154,8 +154,8 @@ component NestedListExample() { component OuterItemRenderer( index: number, item: OuterItem, - dispatchOuter: ItemsAction => void, - dispatchInner: ItemsAction => void, + dispatchOuter: (v: ItemsAction) => void, + dispatchInner: (v: ItemsAction) => void, ) { useEffect(() => { dispatchOuter({ @@ -255,7 +255,10 @@ component OuterItemRenderer( } } -component InnerItemRenderer(item: number, dispatchInner: ItemsAction => void) { +component InnerItemRenderer( + item: number, + dispatchInner: (v: ItemsAction) => void, +) { useEffect(() => { dispatchInner({ type: 'add-rendered', diff --git a/packages/rn-tester/js/examples/KeyboardAvoidingView/KeyboardAvoidingViewExample.js b/packages/rn-tester/js/examples/KeyboardAvoidingView/KeyboardAvoidingViewExample.js index 750496f9a369..2716fbf3d879 100644 --- a/packages/rn-tester/js/examples/KeyboardAvoidingView/KeyboardAvoidingViewExample.js +++ b/packages/rn-tester/js/examples/KeyboardAvoidingView/KeyboardAvoidingViewExample.js @@ -48,7 +48,7 @@ const TextInputForm = () => { ); }; -const CloseButton = (props: {setModalOpen: boolean => void}) => { +const CloseButton = (props: {setModalOpen: (v: boolean) => void}) => { return ( props.setModalOpen(false)} @@ -74,7 +74,7 @@ const BEHAVIOR_DESCRIPTIONS: {[KeyboardAvoidingBehavior]: string} = { const BehaviorPicker = (props: { behavior: KeyboardAvoidingBehavior, - setBehavior: KeyboardAvoidingBehavior => void, + setBehavior: (v: KeyboardAvoidingBehavior) => void, }) => { return ( diff --git a/packages/rn-tester/js/examples/MutationObserver/MutationObserverExample.js b/packages/rn-tester/js/examples/MutationObserver/MutationObserverExample.js index 0884cb690da0..c0b21eabd698 100644 --- a/packages/rn-tester/js/examples/MutationObserver/MutationObserverExample.js +++ b/packages/rn-tester/js/examples/MutationObserver/MutationObserverExample.js @@ -34,7 +34,7 @@ function generateId(prefix: string): string { const rootId = generateId('example-item-'); -function useTemporaryValue(duration: number = 2000): [?T, (?T) => void] { +function useTemporaryValue(duration: number = 2000): [?T, (v: ?T) => void] { const [value, setValue] = useState(null); useEffect(() => { diff --git a/packages/rn-tester/js/examples/MutationObserver/VisualCompletionExample/VCTrackerExample.js b/packages/rn-tester/js/examples/MutationObserver/VisualCompletionExample/VCTrackerExample.js index 2d695d8380f3..4a15a2fb5912 100644 --- a/packages/rn-tester/js/examples/MutationObserver/VisualCompletionExample/VCTrackerExample.js +++ b/packages/rn-tester/js/examples/MutationObserver/VisualCompletionExample/VCTrackerExample.js @@ -21,7 +21,7 @@ export default class VCTracker { _navigationStartTime: number; _intersectionObserver: IntersectionObserver; _mutationObserver: MutationObserver; - _registeredCallback: (ReadonlyArray) => void; + _registeredCallback: (v: ReadonlyArray) => void; _visualElements: Map = new Map(); _pendingMutations: WeakSet = new WeakSet(); @@ -91,7 +91,7 @@ export default class VCTracker { } onUpdateVisualElements( - callback: (ReadonlyArray) => void, + callback: (v: ReadonlyArray) => void, ): void { this._registeredCallback = callback; } diff --git a/packages/rn-tester/js/examples/RTL/RTLExample.js b/packages/rn-tester/js/examples/RTL/RTLExample.js index 432ce5d892be..c418820d0ae7 100644 --- a/packages/rn-tester/js/examples/RTL/RTLExample.js +++ b/packages/rn-tester/js/examples/RTL/RTLExample.js @@ -156,7 +156,7 @@ type RTLSwitcherComponentState = { }; function withRTLState( - Component: ({ + Component: (v: { isRTL: boolean, setRTL: (isRTL: boolean) => void, style?: any, diff --git a/packages/rn-tester/js/examples/RefreshControl/RefreshControlExample.js b/packages/rn-tester/js/examples/RefreshControl/RefreshControlExample.js index ec5a03270f72..2d4c7da60603 100644 --- a/packages/rn-tester/js/examples/RefreshControl/RefreshControlExample.js +++ b/packages/rn-tester/js/examples/RefreshControl/RefreshControlExample.js @@ -45,7 +45,7 @@ const styles = StyleSheet.create({ class Row extends React.Component< Readonly<{ data: Data, - onClick: Data => void, + onClick: (v: Data) => void, }>, > { _onClick = () => { diff --git a/packages/rn-tester/js/examples/SafeAreaInsets/SafeAreaInsetsExample.js b/packages/rn-tester/js/examples/SafeAreaInsets/SafeAreaInsetsExample.js index e55956a11ad4..ed8dfab585a4 100644 --- a/packages/rn-tester/js/examples/SafeAreaInsets/SafeAreaInsetsExample.js +++ b/packages/rn-tester/js/examples/SafeAreaInsets/SafeAreaInsetsExample.js @@ -28,7 +28,10 @@ import { type Insets = SafeAreaInsetsChangeEvent['nativeEvent']['insets']; -function useSafeAreaInsets(): [?Insets, (SafeAreaInsetsChangeEvent) => void] { +function useSafeAreaInsets(): [ + ?Insets, + (v: SafeAreaInsetsChangeEvent) => void, +] { const [insets, setInsets] = useState(null); const onSafeAreaInsetsChange = useCallback( (event: SafeAreaInsetsChangeEvent) => { diff --git a/packages/virtualized-lists/Lists/ChildListCollection.js b/packages/virtualized-lists/Lists/ChildListCollection.js index 083b565c6c28..d58f4aa70dbf 100644 --- a/packages/virtualized-lists/Lists/ChildListCollection.js +++ b/packages/virtualized-lists/Lists/ChildListCollection.js @@ -41,7 +41,7 @@ export default class ChildListCollection { } } - forEach(fn: TList => void): void { + forEach(fn: (v: TList) => void): void { // Fast-path for the common case of a list without nested child lists, // which avoids allocating a Map iterator on every scroll event. if (this._cellKeyToChildren.size === 0) { @@ -54,14 +54,14 @@ export default class ChildListCollection { } } - forEachInCell(cellKey: string, fn: TList => void): void { + forEachInCell(cellKey: string, fn: (v: TList) => void): void { const listSet = this._cellKeyToChildren.get(cellKey) ?? []; for (const list of listSet) { fn(list); } } - anyInCell(cellKey: string, fn: TList => boolean): boolean { + anyInCell(cellKey: string, fn: (v: TList) => boolean): boolean { const listSet = this._cellKeyToChildren.get(cellKey) ?? []; for (const list of listSet) { if (fn(list)) { diff --git a/packages/virtualized-lists/Lists/FillRateHelper.js b/packages/virtualized-lists/Lists/FillRateHelper.js index b8e10264e9ad..66c8d63b6381 100644 --- a/packages/virtualized-lists/Lists/FillRateHelper.js +++ b/packages/virtualized-lists/Lists/FillRateHelper.js @@ -31,7 +31,7 @@ class Info { const DEBUG = false; -let _listeners: Array<(Info) => void> = []; +let _listeners: Array<(v: Info) => void> = []; let _minSampleCount = 10; /* $FlowFixMe[constant-condition] Error discovered during Constant Condition * roll out. See https://fburl.com/workplace/1v97vimq. */ @@ -53,7 +53,7 @@ class FillRateHelper { _mostlyBlankStartTime: ?number = null; _samplesStartTime: ?number = null; - static addListener(callback: FillRateInfo => void): { + static addListener(callback: (v: FillRateInfo) => void): { remove: () => void, ... } { diff --git a/packages/virtualized-lists/Lists/StateSafePureComponent.js b/packages/virtualized-lists/Lists/StateSafePureComponent.js index e12fe1c8e185..13879d545b91 100644 --- a/packages/virtualized-lists/Lists/StateSafePureComponent.js +++ b/packages/virtualized-lists/Lists/StateSafePureComponent.js @@ -33,7 +33,9 @@ export default class StateSafePureComponent< // $FlowFixMe[incompatible-type] setState( - partialState: ?(Pick | ((State, Props) => ?Pick)), + partialState: ?( + Pick | ((v0: State, v1: Props) => ?Pick) + ), callback?: () => unknown, ): void { if (typeof partialState === 'function') { diff --git a/packages/virtualized-lists/Lists/ViewabilityHelper.js b/packages/virtualized-lists/Lists/ViewabilityHelper.js index 84c1aab3aee4..aa1610cc6283 100644 --- a/packages/virtualized-lists/Lists/ViewabilityHelper.js +++ b/packages/virtualized-lists/Lists/ViewabilityHelper.js @@ -185,7 +185,7 @@ class ViewabilityHelper { isViewable: boolean, props: CellMetricProps, ) => ViewToken, - onViewableItemsChanged: ({ + onViewableItemsChanged: (v: { viewableItems: Array, changed: Array, ... @@ -290,7 +290,7 @@ class ViewabilityHelper { _onUpdateSync( props: CellMetricProps, viewableIndicesToCheck: Array, - onViewableItemsChanged: ({ + onViewableItemsChanged: (v: { changed: Array, viewableItems: Array, ... diff --git a/packages/virtualized-lists/Lists/VirtualizedListContext.js b/packages/virtualized-lists/Lists/VirtualizedListContext.js index 6aa40c44193e..f3de04fbd320 100644 --- a/packages/virtualized-lists/Lists/VirtualizedListContext.js +++ b/packages/virtualized-lists/Lists/VirtualizedListContext.js @@ -27,12 +27,12 @@ type Context = Readonly<{ }, horizontal: ?boolean, getOutermostParentListRef: () => VirtualizedList, - registerAsNestedChild: ({ + registerAsNestedChild: (v: { cellKey: string, horizontal?: boolean, ref: VirtualizedList, }) => void, - unregisterAsNestedChild: ({ref: VirtualizedList}) => void, + unregisterAsNestedChild: (v: {ref: VirtualizedList}) => void, getCellVisibilityByKey?: (cellKey: string) => ?boolean, ... }>; diff --git a/packages/virtualized-lists/Lists/VirtualizedSectionList.js b/packages/virtualized-lists/Lists/VirtualizedSectionList.js index af489e53da36..de879270f67c 100644 --- a/packages/virtualized-lists/Lists/VirtualizedSectionList.js +++ b/packages/virtualized-lists/Lists/VirtualizedSectionList.js @@ -103,7 +103,7 @@ type OptionalVirtualizedSectionListProps< * enabled by default on iOS because that is the platform standard there. */ stickySectionHeadersEnabled?: boolean, - onEndReached?: ?({distanceFromEnd: number, ...}) => void, + onEndReached?: ?(v: {distanceFromEnd: number, ...}) => void, }; export type VirtualizedSectionListProps< @@ -426,7 +426,7 @@ class VirtualizedSectionList< _setUpdateHighlightFor = ( cellKey: string, - updateHighlightFn: ?(boolean) => void, + updateHighlightFn: ?(v: boolean) => void, ) => { if (updateHighlightFn != null) { this._updateHighlightMap[cellKey] = updateHighlightFn; @@ -435,7 +435,10 @@ class VirtualizedSectionList< } }; - _setUpdatePropsFor = (cellKey: string, updatePropsFn: ?(boolean) => void) => { + _setUpdatePropsFor = ( + cellKey: string, + updatePropsFn: ?(v: boolean) => void, + ) => { if (updatePropsFn != null) { this._updatePropsMap[cellKey] = updatePropsFn; } else { @@ -467,8 +470,8 @@ class VirtualizedSectionList< return null; } - _updateHighlightMap: {[string]: (boolean) => void} = {}; - _updatePropsMap: {[string]: void | (boolean => void)} = {}; + _updateHighlightMap: {[string]: (v: boolean) => void} = {}; + _updatePropsMap: {[string]: void | ((v: boolean) => void)} = {}; _listRef: ?VirtualizedList; _captureRef = (ref: null | VirtualizedList) => { this._listRef = ref; @@ -492,11 +495,11 @@ type ItemWithSeparatorProps = Readonly<{ item: ItemT, setSelfHighlightCallback: ( cellKey: string, - updateFn: ?(boolean) => void, + updateFn: ?(v: boolean) => void, ) => void, setSelfUpdatePropsCallback: ( cellKey: string, - updateFn: ?(boolean) => void, + updateFn: ?(v: boolean) => void, ) => void, prevCellKey?: ?string, updateHighlightFor: (prevCellKey: string, value: boolean) => void, diff --git a/private/react-native-fantom/runtime/expect.js b/private/react-native-fantom/runtime/expect.js index dbbbdbcd8b05..a786d89bc768 100644 --- a/private/react-native-fantom/runtime/expect.js +++ b/private/react-native-fantom/runtime/expect.js @@ -600,6 +600,7 @@ Expect.prototype.lastCalledWith = Expect.prototype.toHaveBeenLastCalledWith; * unsoundness in flow */ Expect.prototype.nthCalledWith = Expect.prototype.toHaveBeenNthCalledWith; -const expect: unknown => Expect = (received: unknown) => new Expect(received); +const expect: (v: unknown) => Expect = (received: unknown) => + new Expect(received); export default expect; diff --git a/private/react-native-fantom/runtime/mocks.js b/private/react-native-fantom/runtime/mocks.js index e8696003f3e0..692bb8150ea2 100644 --- a/private/react-native-fantom/runtime/mocks.js +++ b/private/react-native-fantom/runtime/mocks.js @@ -13,7 +13,7 @@ export const MOCK_FN_TAG: symbol = Symbol('mock function'); // The type is defined this way because if we get a mixed value, we return // a generic mock function, and if we get a typed function, we get a typed mock. export const ensureMockFunction: (, TReturn>( - fn: (...TArgs) => TReturn, + fn: (...rest: TArgs) => TReturn, ) => JestMockFn) & ((fn: unknown) => JestMockFn, unknown>) = fn => { // $FlowExpectedError[invalid-computed-prop] @@ -30,9 +30,9 @@ export const ensureMockFunction: (, TReturn>( }; export function createMockFunction, TReturn>( - initialImplementation?: (...TArgs) => TReturn, + initialImplementation?: (...rest: TArgs) => TReturn, ): JestMockFn { - let implementation: ?(...TArgs) => TReturn = initialImplementation; + let implementation: ?(...rest: TArgs) => TReturn = initialImplementation; const mock: JestMockFn['mock'] = { calls: [], diff --git a/scripts/js-api/build-types/translateSourceFile.js b/scripts/js-api/build-types/translateSourceFile.js index 831b99a3acd3..7a7cb5bbf65a 100644 --- a/scripts/js-api/build-types/translateSourceFile.js +++ b/scripts/js-api/build-types/translateSourceFile.js @@ -17,7 +17,7 @@ const applyBabelTransformsSeq = require('./utils/applyBabelTransformsSeq'); const translate = require('flow-api-translator'); const {parse, print} = require('flow-transform'); -type PreTransformFn = ParseResult => Promise; +type PreTransformFn = (v: ParseResult) => Promise; const preTransforms: Array = [ require('./transforms/flow/stripPrivateProperties'),