diff --git a/flow-typed/environment/node.js b/flow-typed/environment/node.js index 959f77da01..cb70c63a4e 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/fb-watchman.js b/flow-typed/fb-watchman.js index fd629bee53..209ada0e26 100644 --- a/flow-typed/fb-watchman.js +++ b/flow-typed/fb-watchman.js @@ -235,11 +235,14 @@ declare module 'fb-watchman' { ): void; end(): void; - on('connect', () => void): void; - on('end', () => void): void; - on('error', (error: Error) => void): void; - on('subscription', (event: WatchmanSubscriptionEvent) => void): void; - on('log', (event: WatchmanLogEvent) => void): void; + on(v0: 'connect', v1: () => void): void; + on(v0: 'end', v1: () => void): void; + on(v0: 'error', v1: (error: Error) => void): void; + on( + v0: 'subscription', + v1: (event: WatchmanSubscriptionEvent) => void, + ): void; + on(v0: 'log', v1: (event: WatchmanLogEvent) => void): void; removeAllListeners: (eventName?: string) => void; } diff --git a/flow-typed/jest-worker.js b/flow-typed/jest-worker.js index ddcc169c96..86f0e4a682 100644 --- a/flow-typed/jest-worker.js +++ b/flow-typed/jest-worker.js @@ -263,7 +263,7 @@ declare module 'jest-worker' { declare export class Worker< TExposed extends Readonly<{ - [string]: (...Array<$FlowFixMe>) => Promise<$FlowFixMe>, + [string]: (...rest: Array<$FlowFixMe>) => Promise<$FlowFixMe>, }> = {}, TSetupArgs extends ReadonlyArray = ReadonlyArray, > { diff --git a/flow-typed/jest.js b/flow-typed/jest.js index 97317e80cd..41eb31eeaf 100644 --- a/flow-typed/jest.js +++ b/flow-typed/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/babel-traverse_v7.x.x.js b/flow-typed/npm/babel-traverse_v7.x.x.js index 12f4570389..93dbe352d2 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 ea721fb17c..c3a6e73508 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/ws_v7.x.x.js b/flow-typed/npm/ws_v7.x.x.js index 9a9639d4e5..4dc479b4fd 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/buck-worker-tool/src/worker-tool.js b/packages/buck-worker-tool/src/worker-tool.js index d8f7b507cc..9212c23c1a 100644 --- a/packages/buck-worker-tool/src/worker-tool.js +++ b/packages/buck-worker-tool/src/worker-tool.js @@ -67,14 +67,20 @@ type IncomingMessage = HandshakeMessage | CommandMessage; type Response = HandshakeResponse | CommandResponse | ErrorResponse; type RespondFn = (response: Response) => void; -type JSONReaderDataHandler = IncomingMessage => unknown; +type JSONReaderDataHandler = (v: IncomingMessage) => unknown; type JSONReaderEndHandler = () => unknown; -type JSONReaderDataListener = ('data', JSONReaderDataHandler) => JSONReader; -type JSONReaderEndListener = ('end', JSONReaderEndHandler) => JSONReader; +type JSONReaderDataListener = ( + v0: 'data', + v1: JSONReaderDataHandler, +) => JSONReader; +type JSONReaderEndListener = ( + v0: 'end', + v1: JSONReaderEndHandler, +) => JSONReader; type JSONReaderRootEndListener = ( - 'root_end', - JSONReaderEndHandler, + v0: 'root_end', + v1: JSONReaderEndHandler, ) => JSONReader; type JSONReaderListener = JSONReaderDataListener & JSONReaderEndListener & diff --git a/packages/metro-config/src/loadConfig.js b/packages/metro-config/src/loadConfig.js index 59c4b0e298..03024d0285 100644 --- a/packages/metro-config/src/loadConfig.js +++ b/packages/metro-config/src/loadConfig.js @@ -246,7 +246,7 @@ function concatUnique( async function mergeConfigAsync( baseConfig: Promise, ...reversedConfigs: ReadonlyArray< - InputConfigT | (T => InputConfigT) | (T => Promise), + InputConfigT | ((v: T) => InputConfigT) | ((v: T) => Promise), > ): Promise { let currentConfig: T = await baseConfig; diff --git a/packages/metro-core/src/Terminal.js b/packages/metro-core/src/Terminal.js index f5029e879c..e6402ad90c 100644 --- a/packages/metro-core/src/Terminal.js +++ b/packages/metro-core/src/Terminal.js @@ -104,7 +104,7 @@ export default class Terminal { #isUpdating: boolean; #hasPendingUpdate: boolean; #isFlushRequested: boolean; - #writeNonTTYStatusThrottled: string => void; + #writeNonTTYStatusThrottled: (v: string) => void; #bytesWrittenAfterStatus: ?number; constructor(stream: UnderlyingStream, opts: {ttyPrint?: boolean} = {}) { diff --git a/packages/metro-file-map/src/crawlers/__tests__/integration-test.js b/packages/metro-file-map/src/crawlers/__tests__/integration-test.js index 16f8591185..fc937e6386 100644 --- a/packages/metro-file-map/src/crawlers/__tests__/integration-test.js +++ b/packages/metro-file-map/src/crawlers/__tests__/integration-test.js @@ -54,7 +54,7 @@ declare var expect: { extend(matchers: {[name: string]: JestMatcher, ...}): void, assertions(expectedAssertions: number): void, any(value: unknown): JestAsymmetricEqualityType, - oneOf: (unknown, unknown) => boolean, + oneOf: (v0: unknown, v1: unknown) => boolean, ... }; diff --git a/packages/metro-file-map/src/crawlers/watchman/__tests__/index-test.js b/packages/metro-file-map/src/crawlers/watchman/__tests__/index-test.js index 230e7f6863..80e030bd6c 100644 --- a/packages/metro-file-map/src/crawlers/watchman/__tests__/index-test.js +++ b/packages/metro-file-map/src/crawlers/watchman/__tests__/index-test.js @@ -28,11 +28,11 @@ jest.mock('fb-watchman', () => ({ })); // /some/path on posix, c:\some\path on Windows -const systemPath: string => string = filePath => +const systemPath: (v: string) => string = filePath => watchmanPath(filePath).replace(/\//g, path.sep); // /some/path on posix, c:/some/path on Windows. Relative unchanged. -const watchmanPath: string => string = filePath => +const watchmanPath: (v: string) => string = filePath => filePath.replace(/^\//, 'C:/'); const DEFAULT_OPTIONS: CrawlerOptions = { diff --git a/packages/metro-file-map/src/flow-types.js b/packages/metro-file-map/src/flow-types.js index cfb4f35338..cdd7eebb4c 100644 --- a/packages/metro-file-map/src/flow-types.js +++ b/packages/metro-file-map/src/flow-types.js @@ -277,7 +277,7 @@ export type FileMapPluginWorker = Readonly<{ * This applies to files under node_modules too, which a plugin may reject * using `isNodeModules`. */ - filter: ({normalPath: string, isNodeModules: boolean}) => boolean, + filter: (v: {normalPath: string, isNodeModules: boolean}) => boolean, /** * If true, the worker is not run on files as they are crawled or changed, * and `filter` is not consulted. It runs only on the files the plugin asks @@ -316,8 +316,8 @@ export type InputFileMapPlugin = FileMapPlugin; export interface MetadataWorker { processFile( - WorkerMessage, - Readonly<{getContent: () => Buffer}>, + v0: WorkerMessage, + v1: Readonly<{getContent: () => Buffer}>, ): V8Serializable; } diff --git a/packages/metro-file-map/src/index.js b/packages/metro-file-map/src/index.js index a2c8ec0d49..8812ca6c30 100644 --- a/packages/metro-file-map/src/index.js +++ b/packages/metro-file-map/src/index.js @@ -1324,10 +1324,10 @@ const toPublicMetadata = ( }); // TODO: Replace with it.map() from Node 22+ -const mapIterable: (Iterable, (T) => S) => IteratorObject = ( - it, - fn, -) => +const mapIterable: ( + v0: Iterable, + v1: (v: T) => S, +) => IteratorObject = (it, fn) => (function* mapped() { for (const item of it) { yield fn(item); diff --git a/packages/metro-file-map/src/lib/FileProcessor.js b/packages/metro-file-map/src/lib/FileProcessor.js index f4c118af6b..e5133d4319 100644 --- a/packages/metro-file-map/src/lib/FileProcessor.js +++ b/packages/metro-file-map/src/lib/FileProcessor.js @@ -41,7 +41,7 @@ type ProcessFileRequest = Readonly<{ }>; interface AsyncWorker { - readonly processFile: WorkerMessage => Promise; + readonly processFile: (v: WorkerMessage) => Promise; readonly end: () => Promise; } @@ -237,7 +237,7 @@ export class FileProcessor { debug('Creating worker farm of %d worker threads', numWorkers); this.#perfLogger?.point('initWorkers_start'); const jestWorker = new JestWorker<{ - processFile: WorkerMessage => Promise, + processFile: (v: WorkerMessage) => Promise, }>(workerPath, { exposedMethods: ['processFile'], maxRetries: 3, diff --git a/packages/metro-file-map/src/lib/__tests__/FileProcessor-test.js b/packages/metro-file-map/src/lib/__tests__/FileProcessor-test.js index b6506cd743..c0e21100fe 100644 --- a/packages/metro-file-map/src/lib/__tests__/FileProcessor-test.js +++ b/packages/metro-file-map/src/lib/__tests__/FileProcessor-test.js @@ -29,7 +29,7 @@ const mockWorkerFn = jest.fn().mockReturnValue({}); // Convenience function to write paths with posix separators but convert them // to system separators -const p: string => string = filePath => +const p: (v: string) => string = filePath => process.platform === 'win32' ? filePath.replace(/\//g, '\\').replace(/^\\/, 'C:\\') : filePath; @@ -54,7 +54,7 @@ describe('processBatch', () => { setup: () => {}, processFile: mockWorkerFn, Worker: class { - processFile: WorkerMessage => WorkerMetadata = mockWorkerFn; + processFile: (v: WorkerMessage) => WorkerMetadata = mockWorkerFn; }, })); FileProcessor = require('../FileProcessor').FileProcessor; diff --git a/packages/metro-file-map/src/lib/__tests__/RootPathUtils-test.js b/packages/metro-file-map/src/lib/__tests__/RootPathUtils-test.js index b4e4499197..e20667f4f3 100644 --- a/packages/metro-file-map/src/lib/__tests__/RootPathUtils-test.js +++ b/packages/metro-file-map/src/lib/__tests__/RootPathUtils-test.js @@ -17,7 +17,7 @@ jest.mock('node:path', () => mockPathModule); describe.each([['win32'], ['posix']])('RootPathUtils on %s', platform => { // Convenience function to write paths with posix separators but convert them // to system separators - const p: string => string = filePath => + const p: (v: string) => string = filePath => platform === 'win32' ? filePath.replace(/\//g, '\\').replace(/^\\/, 'C:\\') : filePath; diff --git a/packages/metro-file-map/src/lib/__tests__/TreeFS-test.js b/packages/metro-file-map/src/lib/__tests__/TreeFS-test.js index b4da33f879..356aab4f10 100644 --- a/packages/metro-file-map/src/lib/__tests__/TreeFS-test.js +++ b/packages/metro-file-map/src/lib/__tests__/TreeFS-test.js @@ -31,7 +31,7 @@ jest.mock('node:path', () => mockPathModule); describe.each([['win32'], ['posix']])('TreeFS on %s', platform => { // Convenience function to write paths with posix separators but convert them // to system separators - const p: string => string = filePath => + const p: (v: string) => string = filePath => platform === 'win32' ? filePath.replace(/\//g, '\\').replace(/^\\/, 'C:\\') : filePath; diff --git a/packages/metro-file-map/src/plugins/HastePlugin.js b/packages/metro-file-map/src/plugins/HastePlugin.js index c542493c38..24d76f0c65 100644 --- a/packages/metro-file-map/src/plugins/HastePlugin.js +++ b/packages/metro-file-map/src/plugins/HastePlugin.js @@ -61,7 +61,7 @@ export default class HastePlugin readonly #duplicates: DuplicatesIndex = new Map(); readonly #enableHastePackages: boolean; readonly #failValidationOnConflicts: boolean; - #getModuleNameByPath: string => ?string; + #getModuleNameByPath: (v: string) => ?string; readonly #hasteImplModulePath: ?string; readonly #map: Map = new Map(); readonly #pathUtils: RootPathUtils; diff --git a/packages/metro-file-map/src/plugins/haste/__tests__/HastePlugin-test.js b/packages/metro-file-map/src/plugins/haste/__tests__/HastePlugin-test.js index 12a6bb8038..90edd2e3a9 100644 --- a/packages/metro-file-map/src/plugins/haste/__tests__/HastePlugin-test.js +++ b/packages/metro-file-map/src/plugins/haste/__tests__/HastePlugin-test.js @@ -19,7 +19,7 @@ let mockPathModule; jest.mock('node:path', () => mockPathModule); describe.each([['win32'], ['posix']])('HastePlugin on %s', platform => { - const p: string => string = filePath => + const p: (v: string) => string = filePath => platform === 'win32' ? filePath.replace(/\//g, '\\').replace(/^\\/, 'C:\\') : filePath; diff --git a/packages/metro-file-map/src/plugins/mocks/__tests__/MockPlugin-test.js b/packages/metro-file-map/src/plugins/mocks/__tests__/MockPlugin-test.js index 94316bb49d..6bbc3f0787 100644 --- a/packages/metro-file-map/src/plugins/mocks/__tests__/MockPlugin-test.js +++ b/packages/metro-file-map/src/plugins/mocks/__tests__/MockPlugin-test.js @@ -15,7 +15,7 @@ let mockPathModule; jest.mock('node:path', () => mockPathModule); describe.each([['win32'], ['posix']])('MockPlugin on %s', platform => { - const p: string => string = filePath => + const p: (v: string) => string = filePath => platform === 'win32' ? filePath.replace(/\//g, '\\').replace(/^\\/, 'C:\\') : filePath; diff --git a/packages/metro-file-map/src/watchers/FallbackWatcher.js b/packages/metro-file-map/src/watchers/FallbackWatcher.js index dba8ac4b47..47fc5d8c18 100644 --- a/packages/metro-file-map/src/watchers/FallbackWatcher.js +++ b/packages/metro-file-map/src/watchers/FallbackWatcher.js @@ -499,10 +499,10 @@ function isIgnorableFileError(error: Error | {code: string}) { */ async function recReaddir( root: string, - dirCallback: (string, Stats) => void, - fileCallback: (string, Stats) => void, - symlinkCallback: (string, Stats) => void, - errorCallback: Error => void, + dirCallback: (v0: string, v1: Stats) => void, + fileCallback: (v0: string, v1: Stats) => void, + symlinkCallback: (v0: string, v1: Stats) => void, + errorCallback: (v: Error) => void, ignored: ?RegExp, ): Promise { const pending = [root]; diff --git a/packages/metro-file-map/src/watchers/__tests__/NativeWatcher-test.js b/packages/metro-file-map/src/watchers/__tests__/NativeWatcher-test.js index b4e936c9d1..7365812c7f 100644 --- a/packages/metro-file-map/src/watchers/__tests__/NativeWatcher-test.js +++ b/packages/metro-file-map/src/watchers/__tests__/NativeWatcher-test.js @@ -24,13 +24,13 @@ const ROOT = resolve('/', 'project'); type Deferred = { promise: Promise, - resolve: T => void, - reject: Error => void, + resolve: (v: T) => void, + reject: (v: Error) => void, }; function deferred(): Deferred { - let resolve: T => void = () => {}; - let reject: Error => void = () => {}; + let resolve: (v: T) => void = () => {}; + let reject: (v: Error) => void = () => {}; const promise = new Promise((res, rej) => { resolve = res; reject = rej; diff --git a/packages/metro-file-map/src/watchers/__tests__/WatchmanWatcher-test.js b/packages/metro-file-map/src/watchers/__tests__/WatchmanWatcher-test.js index 02e8aeb925..7850e1f89d 100644 --- a/packages/metro-file-map/src/watchers/__tests__/WatchmanWatcher-test.js +++ b/packages/metro-file-map/src/watchers/__tests__/WatchmanWatcher-test.js @@ -31,7 +31,7 @@ const cmdCallback = (err: ?Error, result: Partial): void => { // Convenience function to write paths with posix separators but convert them // to system separators, and prepend a mock drive letter to absolute paths on // Windows. -const p: string => string = filePath => +const p: (v: string) => string = filePath => process.platform === 'win32' ? filePath.replaceAll('/', '\\').replace(/^\\/, 'C:\\') : filePath; @@ -39,7 +39,7 @@ const p: string => string = filePath => // Format a posix path as a Watchman-native path on the current platform, i.e., // on Windows, drive letters on absolute paths, but posix-style separators. // This should be used for mocking Watchman *output*. -const wp: string => string = filePath => +const wp: (v: string) => string = filePath => process.platform === 'win32' ? filePath.replace(/^\//, 'C:/') : filePath; jest.mock('fb-watchman', () => ({ diff --git a/packages/metro-resolver/src/__tests__/utils.js b/packages/metro-resolver/src/__tests__/utils.js index afa235ccc2..9a19328d2a 100644 --- a/packages/metro-resolver/src/__tests__/utils.js +++ b/packages/metro-resolver/src/__tests__/utils.js @@ -160,7 +160,7 @@ export function createPackageAccessors( }; } -export const posixToSystemPath: string => string = +export const posixToSystemPath: (v: string) => string = process.platform === 'win32' ? filePath => filePath.replaceAll('/', '\\').replace(/^\\/, 'C:\\') : filePath => filePath; diff --git a/packages/metro-runtime/src/modules/__tests__/HMRClient-test.js b/packages/metro-runtime/src/modules/__tests__/HMRClient-test.js index c9cc5c95ac..76643c8f05 100644 --- a/packages/metro-runtime/src/modules/__tests__/HMRClient-test.js +++ b/packages/metro-runtime/src/modules/__tests__/HMRClient-test.js @@ -17,10 +17,10 @@ const HMRClient = require('../HMRClient'); let mockSocket: ?{ onclose: () => void, - onmessage: ({data: string}) => void, - onerror: ({data: string}) => void, + onmessage: (v: {data: string}) => void, + onerror: (v: {data: string}) => void, close: () => void, - mockEmit: (string, {data: string}) => void, + mockEmit: (v0: string, v1: {data: string}) => void, } = null; let evaledCode = ''; diff --git a/packages/metro-runtime/src/modules/asyncRequire.js b/packages/metro-runtime/src/modules/asyncRequire.js index 400416fdf7..ae1a568797 100644 --- a/packages/metro-runtime/src/modules/asyncRequire.js +++ b/packages/metro-runtime/src/modules/asyncRequire.js @@ -10,8 +10,8 @@ */ type MetroRequire = { - (number): unknown, - importAll: (number) => T, + (v: number): unknown, + importAll: (v: number) => T, ... }; diff --git a/packages/metro-runtime/src/polyfills/__tests__/MetroFastRefreshMockRuntime.js b/packages/metro-runtime/src/polyfills/__tests__/MetroFastRefreshMockRuntime.js index 9e53531b6f..23b71c088a 100644 --- a/packages/metro-runtime/src/polyfills/__tests__/MetroFastRefreshMockRuntime.js +++ b/packages/metro-runtime/src/polyfills/__tests__/MetroFastRefreshMockRuntime.js @@ -198,10 +198,10 @@ const moduleSystemCode = (() => { // instead of `__ReactRefresh.performFullRefresh`. const createModuleSystem: ( this: any, - RuntimeGlobal, - boolean, - string, - void, + v0: RuntimeGlobal, + v1: boolean, + v2: string, + v3: void, ) => unknown = // eslint-disable-next-line no-new-func new Function( diff --git a/packages/metro-runtime/src/polyfills/require.js b/packages/metro-runtime/src/polyfills/require.js index 4cdeb046bd..2da9533949 100644 --- a/packages/metro-runtime/src/polyfills/require.js +++ b/packages/metro-runtime/src/polyfills/require.js @@ -839,8 +839,8 @@ if (__DEV__) { const topologicalSort = function ( roots: Array, - getEdges: T => Array, - earlyStop: T => boolean, + getEdges: (v: T) => Array, + earlyStop: (v: T) => boolean, ): Array { const result = []; const visited = new Set(); diff --git a/packages/metro-source-map/src/Consumer/search.js b/packages/metro-source-map/src/Consumer/search.js index abb91a5f9a..6fc57fda2a 100644 --- a/packages/metro-source-map/src/Consumer/search.js +++ b/packages/metro-source-map/src/Consumer/search.js @@ -12,7 +12,7 @@ export function greatestLowerBound( elements: ReadonlyArray, target: U, - comparator: (U, T) => number, + comparator: (v0: U, v1: T) => number, ): ?number { let first = 0; let it = 0; diff --git a/packages/metro-source-map/src/generateFunctionMap.js b/packages/metro-source-map/src/generateFunctionMap.js index 75b44bb021..9f3089f05c 100644 --- a/packages/metro-source-map/src/generateFunctionMap.js +++ b/packages/metro-source-map/src/generateFunctionMap.js @@ -159,7 +159,7 @@ function functionMapBabelPlugin(): PluginObj<> { function getFunctionMapVisitor( context: ?Context, - pushMapping: RangeMapping => void, + pushMapping: (v: RangeMapping) => void, ): FunctionMapVisitor { const nameStack: Array<{loc: BabelNodeSourceLocation, name: string}> = []; let tailPos = {line: 1, column: 0}; @@ -223,7 +223,7 @@ function getFunctionMapVisitor( function forEachMapping( ast: BabelNode, context: ?Context, - pushMapping: RangeMapping => void, + pushMapping: (v: RangeMapping) => void, ) { const visitor = getFunctionMapVisitor(context, pushMapping); diff --git a/packages/metro-source-map/src/source-map.js b/packages/metro-source-map/src/source-map.js index 19a354df50..7f911f73ae 100644 --- a/packages/metro-source-map/src/source-map.js +++ b/packages/metro-source-map/src/source-map.js @@ -187,7 +187,7 @@ function isVlqMap( function fromRawMappingsImpl( isBlocking: boolean, - onDone: Generator => void, + onDone: (v: Generator) => void, modules: ReadonlyArray, offsetLines: number, ): void { diff --git a/packages/metro-symbolicate/src/GoogleIgnoreListConsumer.js b/packages/metro-symbolicate/src/GoogleIgnoreListConsumer.js index 6113b3b29b..67c4ec6b0a 100644 --- a/packages/metro-symbolicate/src/GoogleIgnoreListConsumer.js +++ b/packages/metro-symbolicate/src/GoogleIgnoreListConsumer.js @@ -14,8 +14,8 @@ import type {BasicSourceMap, IndexMap, MixedSourceMap} from 'metro-source-map'; import {normalizeSourcePath} from 'metro-source-map'; type SourceNameNormalizer = ( - string, - {readonly sourceRoot?: ?string, ...}, + v0: string, + v1: {readonly sourceRoot?: ?string, ...}, ) => string; /** diff --git a/packages/metro-symbolicate/src/SourceMetadataMapConsumer.js b/packages/metro-symbolicate/src/SourceMetadataMapConsumer.js index afa22d60f6..cda9a04f93 100644 --- a/packages/metro-symbolicate/src/SourceMetadataMapConsumer.js +++ b/packages/metro-symbolicate/src/SourceMetadataMapConsumer.js @@ -35,8 +35,8 @@ type FunctionMapping = { ... }; type SourceNameNormalizer = ( - string, - {readonly sourceRoot?: ?string, ...}, + v0: string, + v1: {readonly sourceRoot?: ?string, ...}, ) => string; type MetadataMap = {[source: string]: ?FBSourceMetadata, ...}; diff --git a/packages/metro-transform-plugins/src/index.js b/packages/metro-transform-plugins/src/index.js index 4d4c947f8c..c439c872a9 100644 --- a/packages/metro-transform-plugins/src/index.js +++ b/packages/metro-transform-plugins/src/index.js @@ -24,7 +24,7 @@ export type {Options as InlinePluginOptions} from './inline-plugin'; export type {PluginOptions as InlineRequiresPluginOptions} from './inline-requires-plugin'; type TransformPlugins = { - addParamsToDefineCall(string, ...Array): string, + addParamsToDefineCall(v: string, ...rest: Array): string, constantFoldingPlugin: ConstantFoldingPlugin, importExportPlugin: ImportExportPlugin, inlinePlugin: InlinePlugin, diff --git a/packages/metro/src/Bundler/util.js b/packages/metro/src/Bundler/util.js index 8d6c2073e1..56e5a49e78 100644 --- a/packages/metro/src/Bundler/util.js +++ b/packages/metro/src/Bundler/util.js @@ -124,7 +124,7 @@ export function createRamBundleGroups( function* filter( iterator: ArrayMap, - predicate: ([A, Array]) => boolean, + predicate: (v: [A, Array]) => boolean, ): Generator<[A, Array], void, void> { for (const value of iterator) { if (predicate(value)) { diff --git a/packages/metro/src/DeltaBundler/Serializers/getRamBundleInfo.js b/packages/metro/src/DeltaBundler/Serializers/getRamBundleInfo.js index 1c759593b8..f81ac4f5b8 100644 --- a/packages/metro/src/DeltaBundler/Serializers/getRamBundleInfo.js +++ b/packages/metro/src/DeltaBundler/Serializers/getRamBundleInfo.js @@ -30,7 +30,7 @@ type Options = Readonly<{ }>; export type RamBundleInfo = { - getDependencies: string => Set, + getDependencies: (v: string) => Set, startupModules: ReadonlyArray, lazyModules: ReadonlyArray, groups: Map>, @@ -139,7 +139,7 @@ async function _getRamOptions( platform: ?string, ... }, - getDependencies: string => Iterable, + getDependencies: (v: string) => Iterable, getTransformOptions: ?GetTransformOptions, ): Promise< Readonly<{ diff --git a/packages/metro/src/DeltaBundler/Serializers/helpers/getSourceMapInfo.js b/packages/metro/src/DeltaBundler/Serializers/helpers/getSourceMapInfo.js index 6f4643e5c5..352ad7a595 100644 --- a/packages/metro/src/DeltaBundler/Serializers/helpers/getSourceMapInfo.js +++ b/packages/metro/src/DeltaBundler/Serializers/helpers/getSourceMapInfo.js @@ -22,7 +22,7 @@ export default function getSourceMapInfo( module: Module<>, options: { readonly excludeSource: boolean, - readonly shouldAddToIgnoreList: (Module<>) => boolean, + readonly shouldAddToIgnoreList: (v: Module<>) => boolean, getSourceUrl: ?(module: Module<>) => string, }, ): { diff --git a/packages/metro/src/DeltaBundler/Serializers/helpers/js.js b/packages/metro/src/DeltaBundler/Serializers/helpers/js.js index 689788ca73..dab09f90c8 100644 --- a/packages/metro/src/DeltaBundler/Serializers/helpers/js.js +++ b/packages/metro/src/DeltaBundler/Serializers/helpers/js.js @@ -31,7 +31,7 @@ import {addParamsToDefineCall} from 'metro-transform-plugins'; import path from 'node:path'; export type Options = Readonly<{ - createModuleId: string => number | string, + createModuleId: (v: string) => number | string, dev: boolean, includeAsyncPaths: boolean, projectRoot: string, diff --git a/packages/metro/src/DeltaBundler/Serializers/helpers/processModules.js b/packages/metro/src/DeltaBundler/Serializers/helpers/processModules.js index d6c02c45a5..174d9556e2 100644 --- a/packages/metro/src/DeltaBundler/Serializers/helpers/processModules.js +++ b/packages/metro/src/DeltaBundler/Serializers/helpers/processModules.js @@ -29,7 +29,7 @@ export default function processModules( unstable_getAsyncDependencyPath, }: Readonly<{ filter?: (module: Module<>) => boolean, - createModuleId: string => number, + createModuleId: (v: string) => number, dev: boolean, includeAsyncPaths: boolean, projectRoot: string, diff --git a/packages/metro/src/DeltaBundler/Serializers/hmrJSBundle.js b/packages/metro/src/DeltaBundler/Serializers/hmrJSBundle.js index dbb0babe34..62fb82ab3a 100644 --- a/packages/metro/src/DeltaBundler/Serializers/hmrJSBundle.js +++ b/packages/metro/src/DeltaBundler/Serializers/hmrJSBundle.js @@ -27,7 +27,7 @@ const debug = debugModule('Metro:HMR'); type Options = Readonly<{ clientUrl: URL, - createModuleId: string => number, + createModuleId: (v: string) => number, includeAsyncPaths: boolean, projectRoot: string, serverRoot: string, diff --git a/packages/metro/src/DeltaBundler/Serializers/sourceMapGenerator.js b/packages/metro/src/DeltaBundler/Serializers/sourceMapGenerator.js index 41bcf1c830..9ff9908936 100644 --- a/packages/metro/src/DeltaBundler/Serializers/sourceMapGenerator.js +++ b/packages/metro/src/DeltaBundler/Serializers/sourceMapGenerator.js @@ -24,7 +24,7 @@ export type SourceMapGeneratorOptions = Readonly<{ function getSourceMapInfosImpl( isBlocking: boolean, - onDone: (ReadonlyArray>) => void, + onDone: (v: ReadonlyArray>) => void, modules: ReadonlyArray>, options: SourceMapGeneratorOptions, ): void { diff --git a/packages/metro/src/DeltaBundler/Transformer.js b/packages/metro/src/DeltaBundler/Transformer.js index f7011dd4da..bba83acf90 100644 --- a/packages/metro/src/DeltaBundler/Transformer.js +++ b/packages/metro/src/DeltaBundler/Transformer.js @@ -27,9 +27,9 @@ import path from 'node:path'; const debug = debugModule('Metro:Transformer'); -type GetOrComputeSha1Fn = string => Promise< - Readonly<{content?: Buffer, sha1: string}>, ->; +type GetOrComputeSha1Fn = ( + v: string, +) => Promise>; export default class Transformer { _config: ConfigT; diff --git a/packages/metro/src/DeltaBundler/Worker.flow.js b/packages/metro/src/DeltaBundler/Worker.flow.js index 97447a522f..f373da8321 100644 --- a/packages/metro/src/DeltaBundler/Worker.flow.js +++ b/packages/metro/src/DeltaBundler/Worker.flow.js @@ -25,12 +25,12 @@ export type {JsTransformOptions as TransformOptions} from 'metro-transform-worke type TransformerInterface = { transform( - JsTransformerConfig, - string, - string, - Buffer, - JsTransformOptions, - ?string, + v0: JsTransformerConfig, + v1: string, + v2: string, + v3: Buffer, + v4: JsTransformOptions, + v5: ?string, ): Promise>, }; diff --git a/packages/metro/src/DeltaBundler/__tests__/Graph-test.js b/packages/metro/src/DeltaBundler/__tests__/Graph-test.js index 4d6f8a5466..869a687e68 100644 --- a/packages/metro/src/DeltaBundler/__tests__/Graph-test.js +++ b/packages/metro/src/DeltaBundler/__tests__/Graph-test.js @@ -469,7 +469,7 @@ Generate the initial dependency graph: Paths are given as posix and mapped through `p`, so that tests exercising path-sensitive logic can use system paths. */ -function setUpInitialGraph(p: string => string) { +function setUpInitialGraph(p: (v: string) => string) { mockedDependencies = new Set(); mockedDependencyTree = new Map(); diff --git a/packages/metro/src/DeltaBundler/__tests__/test-utils.js b/packages/metro/src/DeltaBundler/__tests__/test-utils.js index 49ab7756f1..1419c96be0 100644 --- a/packages/metro/src/DeltaBundler/__tests__/test-utils.js +++ b/packages/metro/src/DeltaBundler/__tests__/test-utils.js @@ -63,7 +63,7 @@ export const createPathNormalizer = ( platform: 'win32' | 'posix' = process.platform === 'win32' ? 'win32' : 'posix', -): (string => string) => +): ((v: string) => string) => platform === 'win32' ? posixPath => posixPath.replace(/^\//, 'C:\\').replaceAll('/', '\\') : posixPath => posixPath; diff --git a/packages/metro/src/DeltaBundler/buildSubgraph.js b/packages/metro/src/DeltaBundler/buildSubgraph.js index 05974cc5d6..b3a4a98730 100644 --- a/packages/metro/src/DeltaBundler/buildSubgraph.js +++ b/packages/metro/src/DeltaBundler/buildSubgraph.js @@ -27,7 +27,7 @@ import path from 'node:path'; type Parameters = Readonly<{ resolve: ResolveFn, transform: TransformFn, - shouldTraverse: (ResolvedDependency, ?VirtualSource) => boolean, + shouldTraverse: (v0: ResolvedDependency, v1: ?VirtualSource) => boolean, }>; // The source hash seen for each virtual module, to catch edges that disagree. diff --git a/packages/metro/src/DeltaBundler/types.js b/packages/metro/src/DeltaBundler/types.js index 3320b13b72..dbdd53eeb2 100644 --- a/packages/metro/src/DeltaBundler/types.js +++ b/packages/metro/src/DeltaBundler/types.js @@ -158,8 +158,8 @@ export type TransformResultWithSource = Readonly<{ }>; export type TransformFn = ( - string, - ?VirtualSource, + v0: string, + v1: ?VirtualSource, ) => Promise>; export type ResolveFn = ( diff --git a/packages/metro/src/HmrServer.js b/packages/metro/src/HmrServer.js index 95589a1799..4a5408625d 100644 --- a/packages/metro/src/HmrServer.js +++ b/packages/metro/src/HmrServer.js @@ -42,7 +42,7 @@ const {createActionStartEntry, createActionEndEntry, log} = Logger; export type Client = { optedIntoHMR: boolean, revisionIds: Array, - readonly sendFn: string => void, + readonly sendFn: (v: string) => void, }; type ClientGroup = { @@ -53,9 +53,9 @@ type ClientGroup = { readonly graphOptions: GraphOptions, }; -function send(sendFns: Array<(string) => void>, message: HmrMessage): void { +function send(sendFns: Array<(v: string) => void>, message: HmrMessage): void { const strMessage = JSON.stringify(message); - sendFns.forEach((sendFn: string => void) => sendFn(strMessage)); + sendFns.forEach((sendFn: (v: string) => void) => sendFn(strMessage)); } /** diff --git a/packages/metro/src/IncrementalBundler.js b/packages/metro/src/IncrementalBundler.js index 1225d0641f..a8745f2702 100644 --- a/packages/metro/src/IncrementalBundler.js +++ b/packages/metro/src/IncrementalBundler.js @@ -349,17 +349,19 @@ export default class IncrementalBundler { await Promise.all( absoluteEntryFiles.map( (entryFile: string) => - new Promise((resolve: void => void, reject: unknown => unknown) => { - // This should throw an error if the file doesn't exist. - // Using this instead of fs.exists to account for SimLinks. - fs.realpath(entryFile, err => { - if (err) { - reject(new ResourceNotFoundError(entryFile)); - } else { - resolve(); - } - }); - }), + new Promise( + (resolve: (v: void) => void, reject: (v: unknown) => unknown) => { + // This should throw an error if the file doesn't exist. + // Using this instead of fs.exists to account for SimLinks. + fs.realpath(entryFile, err => { + if (err) { + reject(new ResourceNotFoundError(entryFile)); + } else { + resolve(); + } + }); + }, + ), ), ); diff --git a/packages/metro/src/ModuleGraph/worker/collectDependencies.js b/packages/metro/src/ModuleGraph/worker/collectDependencies.js index 4610e99893..33ecef3385 100644 --- a/packages/metro/src/ModuleGraph/worker/collectDependencies.js +++ b/packages/metro/src/ModuleGraph/worker/collectDependencies.js @@ -96,7 +96,7 @@ export type State = { allowOptionalDependencies: AllowOptionalDependencies, /** Enable `require.context` statements which can be used to import multiple files in a directory. */ unstable_allowRequireContext: boolean, - unstable_isESMImportAtSource: ?(ReadonlySourceLocation) => boolean, + unstable_isESMImportAtSource: ?(v: ReadonlySourceLocation) => boolean, }; export type Options = Readonly<{ @@ -109,7 +109,7 @@ export type Options = Readonly<{ dependencyTransformer?: DependencyTransformer, /** Enable `require.context` statements which can be used to import multiple files in a directory. */ unstable_allowRequireContext: boolean, - unstable_isESMImportAtSource?: ?(ReadonlySourceLocation) => boolean, + unstable_isESMImportAtSource?: ?(v: ReadonlySourceLocation) => boolean, }>; export type CollectedDependencies = Readonly<{ diff --git a/packages/metro/src/Server.js b/packages/metro/src/Server.js index b032bcf690..98db21b3ad 100644 --- a/packages/metro/src/Server.js +++ b/packages/metro/src/Server.js @@ -604,7 +604,7 @@ export default class Server { ) => void = ( req: IncomingMessage, res: ServerResponse, - next: (?Error) => void, + next: (v: ?Error) => void, ) => { this._processRequest(req, res, next).catch(next); }; @@ -627,7 +627,7 @@ export default class Server { async _processRequest( req: IncomingMessage, res: ServerResponse, - next: (?Error) => void, + next: (v: ?Error) => void, ): Promise { const originalUrl = req.url; debug('Handling request: %s', originalUrl); diff --git a/packages/metro/src/Server/symbolicate.js b/packages/metro/src/Server/symbolicate.js index f13d351f49..e59ada4a0d 100644 --- a/packages/metro/src/Server/symbolicate.js +++ b/packages/metro/src/Server/symbolicate.js @@ -108,7 +108,7 @@ function originalPositionInTuples( function createFunctionNameGetter( module: ExplodedSourceMapModule, -): Position => ?string { +): (v: Position) => ?string { const consumer = new SourceMetadataMapConsumer( { version: 3, @@ -144,7 +144,7 @@ export default async function symbolicate( readonly map: Array | VlqMap, readonly path: string, }, - (Position) => ?string, + (v: Position) => ?string, >(); function findModule(frame: StackFrameInput): ?ExplodedSourceMapModule { diff --git a/packages/metro/src/__tests__/HmrServer-test.js b/packages/metro/src/__tests__/HmrServer-test.js index 70d23172cb..c4c8b7782a 100644 --- a/packages/metro/src/__tests__/HmrServer-test.js +++ b/packages/metro/src/__tests__/HmrServer-test.js @@ -169,7 +169,7 @@ describe('HmrServer', () => { connect = async ( relativeUrl: string, - sendFn?: string => void, + sendFn?: (v: string) => void, {baseUrl = 'ws://localhost'}: {baseUrl?: string} = {}, ) => { const absoluteUrl = baseUrl + relativeUrl; @@ -191,7 +191,7 @@ describe('HmrServer', () => { message = async ( client: Client, message: HmrClientMessage, - sendFn?: string => void, + sendFn?: (v: string) => void, ) => { await hmrServer.onClientMessage( client, diff --git a/packages/metro/src/lib/debounceAsyncQueue.js b/packages/metro/src/lib/debounceAsyncQueue.js index 51611abe11..73df7e2001 100644 --- a/packages/metro/src/lib/debounceAsyncQueue.js +++ b/packages/metro/src/lib/debounceAsyncQueue.js @@ -18,14 +18,14 @@ export default function debounceAsyncQueue( let timeout; let waiting = false; let executing = false; - let callbacks: Array<(T) => void> = []; + let callbacks: Array<(v: T) => void> = []; async function execute(): Promise { const currentCallbacks = callbacks; callbacks = []; executing = true; const res = await fn(); - currentCallbacks.forEach((c: T => void) => c(res)); + currentCallbacks.forEach((c: (v: T) => void) => c(res)); executing = false; if (callbacks.length > 0) { await execute(); @@ -33,7 +33,7 @@ export default function debounceAsyncQueue( } return () => - new Promise((resolve: T => void, reject: unknown => void) => { + new Promise((resolve: (v: T) => void, reject: (v: unknown) => void) => { callbacks.push(resolve); if (!executing) { diff --git a/packages/metro/src/lib/getAppendScripts.js b/packages/metro/src/lib/getAppendScripts.js index 6d5ebd1540..a20121c369 100644 --- a/packages/metro/src/lib/getAppendScripts.js +++ b/packages/metro/src/lib/getAppendScripts.js @@ -20,17 +20,17 @@ import nullthrows from 'nullthrows'; type Options = Readonly<{ asyncRequireModulePath: string, - createModuleId: string => T, + createModuleId: (v: string) => T, getRunModuleStatement: (moduleId: T, globalPrefix: string) => string, globalPrefix: string, inlineSourceMap: ?boolean, processModuleFilter: (module: Module<>) => boolean, runBeforeMainModule: ReadonlyArray, runModule: boolean, - shouldAddToIgnoreList: (Module<>) => boolean, + shouldAddToIgnoreList: (v: Module<>) => boolean, sourceMapUrl: ?string, sourceUrl: ?string, - getSourceUrl: ?(Module<>) => string, + getSourceUrl: ?(v: Module<>) => string, ... }>; diff --git a/packages/metro/src/lib/pathUtils.js b/packages/metro/src/lib/pathUtils.js index 68ae29b571..1e2e3ef6de 100644 --- a/packages/metro/src/lib/pathUtils.js +++ b/packages/metro/src/lib/pathUtils.js @@ -10,7 +10,7 @@ import * as path from 'node:path'; -export const normalizePathSeparatorsToPosix: string => string = +export const normalizePathSeparatorsToPosix: (v: string) => string = path.sep === '/' ? filePath => filePath : filePath => filePath.replaceAll('\\', '/'); diff --git a/packages/metro/src/shared/output/RamBundle/as-indexed-file.js b/packages/metro/src/shared/output/RamBundle/as-indexed-file.js index b963c7bcf2..ba4ff703b6 100644 --- a/packages/metro/src/shared/output/RamBundle/as-indexed-file.js +++ b/packages/metro/src/shared/output/RamBundle/as-indexed-file.js @@ -96,7 +96,7 @@ function writeBuffers( buffers: Array, ): Promise { buffers.forEach((buffer: Buffer) => stream.write(buffer)); - return new Promise((resolve: () => void, reject: unknown => unknown) => { + return new Promise((resolve: () => void, reject: (v: unknown) => unknown) => { stream.on('error', reject); stream.on('finish', () => resolve()); stream.end(); diff --git a/packages/metro/src/shared/output/bundle.flow.js b/packages/metro/src/shared/output/bundle.flow.js index 122a0f0687..c36abd997d 100644 --- a/packages/metro/src/shared/output/bundle.flow.js +++ b/packages/metro/src/shared/output/bundle.flow.js @@ -68,7 +68,7 @@ export async function save( ... }, options: OutputOptions, - log: string => void, + log: (v: string) => void, ): Promise { const { bundleOutput, @@ -101,7 +101,7 @@ export async function save( } // Wait until everything is written to disk. - await Promise.all(writeFns.map((cb: void => unknown) => cb())); + await Promise.all(writeFns.map((cb: (v: void) => unknown) => cb())); } export const formatName = 'bundle'; diff --git a/private/metro-memory-fs/src/index.js b/private/metro-memory-fs/src/index.js index 551a63471d..9396f720d3 100644 --- a/private/metro-memory-fs/src/index.js +++ b/private/metro-memory-fs/src/index.js @@ -222,7 +222,7 @@ class MemoryFs { offset: number, length: number, position: ?number, - callback: (?Error, ?number) => unknown, + callback: (v0: ?Error, v1: ?number) => unknown, ) => void; readFile: ( filePath: FilePath, @@ -233,20 +233,20 @@ class MemoryFs { ... } | Encoding - | ((?Error, ?Buffer | string) => unknown), - callback?: (?Error, ?Buffer | string) => unknown, + | ((v0: ?Error, v1: ?Buffer | string) => unknown), + callback?: (v0: ?Error, v1: ?Buffer | string) => unknown, ) => void; realpath: ( filePath: FilePath, - callback: (?Error, ?string) => unknown, + callback: (v0: ?Error, v1: ?string) => unknown, ) => void; write: ( fd: number, bufferOrString: Buffer | string, - offsetOrPosition?: number | ((?Error, number) => unknown), - lengthOrEncoding?: number | string | ((?Error, number) => unknown), - position?: number | ((?Error, number) => unknown), - callback?: (?Error, number) => unknown, + offsetOrPosition?: number | ((v0: ?Error, v1: number) => unknown), + lengthOrEncoding?: number | string | ((v0: ?Error, v1: number) => unknown), + position?: number | ((v0: ?Error, v1: number) => unknown), + callback?: (v0: ?Error, v1: number) => unknown, ) => void; writeFile: ( filePath: FilePath, @@ -259,8 +259,8 @@ class MemoryFs { ... } | Encoding - | ((?Error) => unknown), - callback?: (?Error) => unknown, + | ((v: ?Error) => unknown), + callback?: (v: ?Error) => unknown, ) => void; constructor(options?: ?Options) { diff --git a/scripts/generateTypeScriptDefinitions.js b/scripts/generateTypeScriptDefinitions.js index 76d4baac6b..1f63649416 100644 --- a/scripts/generateTypeScriptDefinitions.js +++ b/scripts/generateTypeScriptDefinitions.js @@ -419,7 +419,7 @@ function removeDeclareConstAtLine( function findBlockStart( lines: ReadonlyArray, lineIndex: number, - predicate: string => boolean, + predicate: (v: string) => boolean, ): ?number { for (let i = lineIndex; i >= 0; i--) { if (predicate(lines[i])) {