diff --git a/.flowconfig b/.flowconfig index 33eeb5ccf9..05e86b299d 100644 --- a/.flowconfig +++ b/.flowconfig @@ -1,6 +1,6 @@ [ignore] /packages/.*/build/.* -/\.hg/.* +/\.\(hg\|sl\|git\)/.* # this transient dep bundles tests with their package, which flow attempts to parse # and crashes out as the test includes purposely malformed json \(/.*\)?/node_modules/resolve/test/.* diff --git a/packages/metro-babel-transformer/src/index.js b/packages/metro-babel-transformer/src/index.js index 0e0a292980..4a6eb8aa8d 100644 --- a/packages/metro-babel-transformer/src/index.js +++ b/packages/metro-babel-transformer/src/index.js @@ -25,7 +25,7 @@ type BabelTransformOptions = NonNullable< >; export type CustomTransformOptions = { - [string]: unknown, + [key: string]: unknown, __proto__: null, ... }; @@ -80,7 +80,7 @@ export type BabelTransformerCacheKeyOptions = Readonly<{ }>; export type BabelTransformer = Readonly<{ - transform: BabelTransformerArgs => Readonly<{ + transform: (transformerArgs: BabelTransformerArgs) => Readonly<{ ast: BabelNodeFile, // Deprecated, will be removed in a future breaking release. Function maps // will be generated by an input Babel plugin instead and written into @@ -92,12 +92,10 @@ export type BabelTransformer = Readonly<{ getCacheKey?: (options?: BabelTransformerCacheKeyOptions) => string, }>; -function transform({ - filename, - options, - plugins, - src, -}: BabelTransformerArgs): ReturnType { +function transform( + opts: BabelTransformerArgs, +): ReturnType { + const {filename, options, plugins, src} = opts; const OLD_BABEL_ENV = process.env.BABEL_ENV; process.env.BABEL_ENV = options.dev ? 'development' diff --git a/packages/metro-babel-transformer/types/index.d.ts b/packages/metro-babel-transformer/types/index.d.ts index b77f422ac3..2a38a188d4 100644 --- a/packages/metro-babel-transformer/types/index.d.ts +++ b/packages/metro-babel-transformer/types/index.d.ts @@ -6,7 +6,7 @@ * * @noformat * @oncall react_native - * @generated SignedSource<> + * @generated SignedSource<<2503f88efd80b39e4d860870017af66d>> * * This file was translated from Flow by scripts/generateTypeScriptDefinitions.js * Original file: packages/metro-babel-transformer/src/index.js @@ -24,7 +24,7 @@ type BabelTransformOptions = NonNullable< Parameters[2] >; export type CustomTransformOptions = { - [$$Key$$: string]: unknown; + [key: string]: unknown; }; export type TransformProfile = 'default' | 'hermes-stable' | 'hermes-canary'; type BabelTransformerOptions = Readonly<{ @@ -85,7 +85,7 @@ export type BabelTransformerCacheKeyOptions = Readonly<{ enableBabelRCLookup?: boolean; }>; export type BabelTransformer = Readonly<{ - transform: ($$PARAM_0$$: BabelTransformerArgs) => Readonly<{ + transform: (transformerArgs: BabelTransformerArgs) => Readonly<{ ast: BabelNodeFile; functionMap?: BabelFileFunctionMapMetadata; metadata?: MetroBabelFileMetadata; @@ -93,7 +93,7 @@ export type BabelTransformer = Readonly<{ getCacheKey?: (options?: BabelTransformerCacheKeyOptions) => string; }>; declare function transform( - $$PARAM_0$$: BabelTransformerArgs, + opts: BabelTransformerArgs, ): ReturnType; /** * Generates a cache key component based on the user's Babel configuration files. diff --git a/packages/metro-config/src/types.js b/packages/metro-config/src/types.js index 1ebd07bc23..927e92c0e1 100644 --- a/packages/metro-config/src/types.js +++ b/packages/metro-config/src/types.js @@ -108,7 +108,7 @@ type ResolverConfigT = { dependencyExtractor: ?string, emptyModulePath: string, enableGlobalPackages: boolean, - extraNodeModules: {[name: string]: string, ...}, + extraNodeModules: {[packageName: string]: string, ...}, hasteImplModulePath: ?string, nodeModulesPaths: ReadonlyArray, platforms: ReadonlyArray, @@ -139,7 +139,7 @@ type SerializerConfigT = { delta: DeltaResult<>, ) => unknown, getModulesRunBeforeMainModule: (entryFilePath: string) => Array, - getPolyfills: ({platform: ?string, ...}) => ReadonlyArray, + getPolyfills: (ctx: {platform: ?string, ...}) => ReadonlyArray, getRunModuleStatement: ( moduleId: number | string, globalPrefix: string, @@ -178,10 +178,13 @@ type CacheStoresConfigT = ReadonlyArray>>; type ServerConfigT = { /** @deprecated */ - enhanceMiddleware: (Middleware, MetroServer) => Middleware | Server, + enhanceMiddleware: ( + middleware: Middleware, + server: MetroServer, + ) => Middleware | Server, forwardClientLogs: boolean, port: number, - rewriteRequestUrl: string => string, + rewriteRequestUrl: (url: string) => string, unstable_serverRoot: ?string, useGlobalHotkey: boolean, verifyConnections: boolean, @@ -196,7 +199,7 @@ type ServerConfigT = { }; type SymbolicatorConfigT = { - customizeFrame: ({ + customizeFrame: (frame: { +file: ?string, +lineNumber: ?number, +column: ?number, @@ -204,8 +207,8 @@ type SymbolicatorConfigT = { ... }) => ?{+collapse?: boolean} | Promise, customizeStack: ( - Array, - unknown, + symbolicatedStack: Array, + extraData: unknown, ) => Array | Promise>, }; @@ -230,7 +233,9 @@ type WatcherConfigT = { export type InputConfigT = Partial< Readonly< MetalConfigT & { - cacheStores: CacheStoresConfigT | (MetroCache => CacheStoresConfigT), + cacheStores: + | CacheStoresConfigT + | ((metroCache: MetroCache) => CacheStoresConfigT), resolver: Readonly>, server: Readonly>, serializer: Readonly>, diff --git a/packages/metro-config/types/types.d.ts b/packages/metro-config/types/types.d.ts index 3d7a2daa0b..ea4838ef18 100644 --- a/packages/metro-config/types/types.d.ts +++ b/packages/metro-config/types/types.d.ts @@ -6,7 +6,7 @@ * * @noformat * @oncall react_native - * @generated SignedSource<<9c62bc2ca711f9693edc135a382a382a>> + * @generated SignedSource<<45e0111f05ce2350b8be53c72dd0c8c7>> * * This file was translated from Flow by scripts/generateTypeScriptDefinitions.js * Original file: packages/metro-config/src/types.js @@ -97,7 +97,7 @@ type ResolverConfigT = { dependencyExtractor: null | undefined | string; emptyModulePath: string; enableGlobalPackages: boolean; - extraNodeModules: {[name: string]: string}; + extraNodeModules: {[packageName: string]: string}; hasteImplModulePath: null | undefined | string; nodeModulesPaths: ReadonlyArray; platforms: ReadonlyArray; @@ -130,7 +130,7 @@ type SerializerConfigT = { delta: DeltaResult, ) => unknown; getModulesRunBeforeMainModule: (entryFilePath: string) => Array; - getPolyfills: ($$PARAM_0$$: { + getPolyfills: (ctx: { platform: null | undefined | string; }) => ReadonlyArray; getRunModuleStatement: ( @@ -178,12 +178,12 @@ type CacheStoresConfigT = ReadonlyArray>; type ServerConfigT = { /** @deprecated */ enhanceMiddleware: ( - $$PARAM_0$$: Middleware, - $$PARAM_1$$: MetroServer, + middleware: Middleware, + server: MetroServer, ) => Middleware | Server; forwardClientLogs: boolean; port: number; - rewriteRequestUrl: ($$PARAM_0$$: string) => string; + rewriteRequestUrl: (url: string) => string; unstable_serverRoot: null | undefined | string; useGlobalHotkey: boolean; verifyConnections: boolean; @@ -197,7 +197,7 @@ type ServerConfigT = { }; }; type SymbolicatorConfigT = { - customizeFrame: ($$PARAM_0$$: { + customizeFrame: (frame: { readonly file: null | undefined | string; readonly lineNumber: null | undefined | number; readonly column: null | undefined | number; @@ -206,8 +206,8 @@ type SymbolicatorConfigT = { | (null | undefined | {readonly collapse?: boolean}) | Promise; customizeStack: ( - $$PARAM_0$$: Array, - $$PARAM_1$$: unknown, + symbolicatedStack: Array, + extraData: unknown, ) => Array | Promise>; }; type WatcherConfigT = { @@ -227,7 +227,7 @@ export type InputConfigT = Partial< MetalConfigT & { cacheStores: | CacheStoresConfigT - | (($$PARAM_0$$: MetroCache) => CacheStoresConfigT); + | ((metroCache: MetroCache) => CacheStoresConfigT); resolver: Readonly>; server: Readonly>; serializer: Readonly>; diff --git a/packages/metro-file-map/src/cache/DiskCacheManager.js b/packages/metro-file-map/src/cache/DiskCacheManager.js index 6d687f6bc5..93af365036 100644 --- a/packages/metro-file-map/src/cache/DiskCacheManager.js +++ b/packages/metro-file-map/src/cache/DiskCacheManager.js @@ -50,10 +50,9 @@ export class DiskCacheManager implements CacheManager { #tryWrite: ?() => Promise; #stopListening: ?() => void; - constructor( - {buildParameters}: CacheManagerFactoryOptions, - {autoSave = {}, cacheDirectory, cacheFilePrefix}: DiskCacheConfig, - ) { + constructor(opts: CacheManagerFactoryOptions, config: DiskCacheConfig) { + const {buildParameters} = opts; + const {autoSave = {}, cacheDirectory, cacheFilePrefix} = config; this.#cachePath = DiskCacheManager.getCacheFilePath( buildParameters, cacheFilePrefix, @@ -103,12 +102,9 @@ export class DiskCacheManager implements CacheManager { async write( getSnapshot: () => CacheData, - { - changedSinceCacheRead, - eventSource, - onWriteError, - }: CacheManagerWriteOptions, + opts: CacheManagerWriteOptions, ): Promise { + const {changedSinceCacheRead, eventSource, onWriteError} = opts; // Initialise a writer function using a promise queue to ensure writes are // sequenced. const tryWrite = (this.#tryWrite = () => { diff --git a/packages/metro-file-map/src/flow-types.js b/packages/metro-file-map/src/flow-types.js index 44d05dea4d..d17ae41878 100644 --- a/packages/metro-file-map/src/flow-types.js +++ b/packages/metro-file-map/src/flow-types.js @@ -96,7 +96,7 @@ export type ChangedFileMetadata = Readonly<{ }>; export type ChangeEvent = Readonly<{ - logger: ?RootPerfLogger, + logger?: ?RootPerfLogger, changes: ReadonlyFileSystemChanges>, rootDir: string, }>; @@ -110,7 +110,7 @@ export type ChangeEventMetadata = { export type Console = typeof global.console; export type CrawlerOptions = { - abortSignal: ?AbortSignal, + abortSignal?: ?AbortSignal, computeSha1: boolean, console: Console, extensions: ReadonlyArray, @@ -328,8 +328,8 @@ export interface FileSystem { mixedStartPath: string, subpath: string, opts: { - breakOnSegment: ?string, - invalidatedBy: ?Set, + breakOnSegment?: ?string, + invalidatedBy?: ?Set, subpathType: 'f' | 'd', }, ): ?{ diff --git a/packages/metro-file-map/src/plugins/HastePlugin.js b/packages/metro-file-map/src/plugins/HastePlugin.js index 1aed548c3b..76ded2f493 100644 --- a/packages/metro-file-map/src/plugins/HastePlugin.js +++ b/packages/metro-file-map/src/plugins/HastePlugin.js @@ -80,10 +80,11 @@ export default class HastePlugin this.#failValidationOnConflicts = options.failValidationOnConflicts; } - async initialize({ - files, - }: FileMapPluginInitOptions): Promise { + async initialize( + opts: FileMapPluginInitOptions, + ): Promise { this.#perfLogger?.point('constructHasteMap_start'); + const files = opts.files; let hasteFiles = 0; for (const { baseName, diff --git a/packages/metro-file-map/types/cache/DiskCacheManager.d.ts b/packages/metro-file-map/types/cache/DiskCacheManager.d.ts index 464e1daa5d..c519313ff4 100644 --- a/packages/metro-file-map/types/cache/DiskCacheManager.d.ts +++ b/packages/metro-file-map/types/cache/DiskCacheManager.d.ts @@ -6,7 +6,7 @@ * * @noformat * @oncall react_native - * @generated SignedSource<<9cdec2a3b7a46f0a893dd5dc392a5294>> + * @generated SignedSource<<1276c0a64e0ad55f32baa402baf919da>> * * This file was translated from Flow by scripts/generateTypeScriptDefinitions.js * Original file: packages/metro-file-map/src/cache/DiskCacheManager.js @@ -30,10 +30,7 @@ type DiskCacheConfig = Readonly<{ cacheDirectory?: null | undefined | string; }>; export declare class DiskCacheManager implements CacheManager { - constructor( - $$PARAM_0$$: CacheManagerFactoryOptions, - $$PARAM_1$$: DiskCacheConfig, - ); + constructor(opts: CacheManagerFactoryOptions, config: DiskCacheConfig); static getCacheFilePath( buildParameters: BuildParameters, cacheFilePrefix?: null | undefined | string, @@ -43,7 +40,7 @@ export declare class DiskCacheManager implements CacheManager { read(): Promise; write( getSnapshot: () => CacheData, - $$PARAM_1$$: CacheManagerWriteOptions, + opts: CacheManagerWriteOptions, ): Promise; end(): Promise; } diff --git a/packages/metro-file-map/types/flow-types.d.ts b/packages/metro-file-map/types/flow-types.d.ts index 16ca47efd9..7f079c6409 100644 --- a/packages/metro-file-map/types/flow-types.d.ts +++ b/packages/metro-file-map/types/flow-types.d.ts @@ -6,7 +6,7 @@ * * @noformat * @oncall react_native - * @generated SignedSource<> + * @generated SignedSource<> * * This file was translated from Flow by scripts/generateTypeScriptDefinitions.js * Original file: packages/metro-file-map/src/flow-types.js @@ -80,7 +80,7 @@ export type ChangedFileMetadata = Readonly<{ modifiedTime?: null | undefined | number; }>; export type ChangeEvent = Readonly<{ - logger: null | undefined | RootPerfLogger; + logger?: null | undefined | RootPerfLogger; changes: ReadonlyFileSystemChanges>; rootDir: string; }>; @@ -91,7 +91,7 @@ export type ChangeEventMetadata = { }; export type Console = typeof global.console; export type CrawlerOptions = { - abortSignal: null | undefined | AbortSignal; + abortSignal?: null | undefined | AbortSignal; computeSha1: boolean; console: Console; extensions: ReadonlyArray; @@ -289,8 +289,8 @@ export interface FileSystem { mixedStartPath: string, subpath: string, opts: { - breakOnSegment: null | undefined | string; - invalidatedBy: null | undefined | Set; + breakOnSegment?: null | undefined | string; + invalidatedBy?: null | undefined | Set; subpathType: 'f' | 'd'; }, ): null | undefined | {absolutePath: string; containerRelativePath: string}; diff --git a/packages/metro-file-map/types/plugins/HastePlugin.d.ts b/packages/metro-file-map/types/plugins/HastePlugin.d.ts index 71d6cbc263..90518d1b99 100644 --- a/packages/metro-file-map/types/plugins/HastePlugin.d.ts +++ b/packages/metro-file-map/types/plugins/HastePlugin.d.ts @@ -6,7 +6,7 @@ * * @noformat * @oncall react_native - * @generated SignedSource<<3d1462ab2325a09553e02b69b5de84eb>> + * @generated SignedSource<> * * This file was translated from Flow by scripts/generateTypeScriptDefinitions.js * Original file: packages/metro-file-map/src/plugins/HastePlugin.js @@ -44,7 +44,7 @@ declare class HastePlugin readonly name: 'haste'; constructor(options: HasteMapOptions); initialize( - $$PARAM_0$$: FileMapPluginInitOptions, + opts: FileMapPluginInitOptions, ): Promise; getSerializableSnapshot(): null; getModule( diff --git a/packages/metro-resolver/src/types.js b/packages/metro-resolver/src/types.js index 69e5263e00..68b3485411 100644 --- a/packages/metro-resolver/src/types.js +++ b/packages/metro-resolver/src/types.js @@ -140,7 +140,7 @@ export type ResolutionContext = Readonly<{ * @deprecated, prefer `fileSystemLookup` */ doesFileExist: DoesFileExist, - extraNodeModules: ?{[string]: string, ...}, + extraNodeModules: ?{[packageName: string]: string, ...}, /** Is resolving for a development bundle. */ dev: boolean, @@ -239,6 +239,6 @@ export type CustomResolver = ( export type CustomResolverOptions = { __proto__: null, - +[string]: unknown, + +[key: string]: unknown, ... }; diff --git a/packages/metro-resolver/types/types.d.ts b/packages/metro-resolver/types/types.d.ts index 5adec82e58..660a348a26 100644 --- a/packages/metro-resolver/types/types.d.ts +++ b/packages/metro-resolver/types/types.d.ts @@ -6,7 +6,7 @@ * * @noformat * @oncall react_native - * @generated SignedSource<> + * @generated SignedSource<<2965eed049cf875ab378bf04468d4a24>> * * This file was translated from Flow by scripts/generateTypeScriptDefinitions.js * Original file: packages/metro-resolver/src/types.js @@ -120,7 +120,7 @@ export type ResolutionContext = Readonly<{ * @deprecated, prefer `fileSystemLookup` */ doesFileExist: DoesFileExist; - extraNodeModules: null | undefined | {[$$Key$$: string]: string}; + extraNodeModules: null | undefined | {[packageName: string]: string}; /** Is resolving for a development bundle. */ dev: boolean; /** @@ -206,5 +206,5 @@ export type CustomResolver = ( platform: string | null, ) => Resolution; export type CustomResolverOptions = { - readonly [$$Key$$: string]: unknown; + readonly [key: string]: unknown; }; diff --git a/packages/metro-source-map/src/source-map.js b/packages/metro-source-map/src/source-map.js index 224fc5c3c8..ddb0e8376b 100644 --- a/packages/metro-source-map/src/source-map.js +++ b/packages/metro-source-map/src/source-map.js @@ -35,7 +35,10 @@ export type MetroSourceMapSegmentTuple = | SourceMapping | GeneratedCodeMapping; -export type HermesFunctionOffsets = {[number]: ReadonlyArray, ...}; +export type HermesFunctionOffsets = { + [functionId: number]: ReadonlyArray, + ... +}; export type FBSourcesArray = ReadonlyArray; export type FBSourceMetadata = [?FBSourceFunctionMap]; diff --git a/packages/metro-source-map/types/source-map.d.ts b/packages/metro-source-map/types/source-map.d.ts index cadc3b0109..a35395abeb 100644 --- a/packages/metro-source-map/types/source-map.d.ts +++ b/packages/metro-source-map/types/source-map.d.ts @@ -6,7 +6,7 @@ * * @noformat * @oncall react_native - * @generated SignedSource<<7303fe7149cb12d764c6106cdf4f49ee>> + * @generated SignedSource<> * * This file was translated from Flow by scripts/generateTypeScriptDefinitions.js * Original file: packages/metro-source-map/src/source-map.js @@ -36,7 +36,7 @@ export type MetroSourceMapSegmentTuple = | SourceMapping | GeneratedCodeMapping; export type HermesFunctionOffsets = { - [$$Key$$: number]: ReadonlyArray; + [functionId: number]: ReadonlyArray; }; export type FBSourcesArray = ReadonlyArray; export type FBSourceMetadata = [null | undefined | FBSourceFunctionMap]; diff --git a/packages/metro-transform-worker/src/index.js b/packages/metro-transform-worker/src/index.js index 033a194a94..84a0b4b143 100644 --- a/packages/metro-transform-worker/src/index.js +++ b/packages/metro-transform-worker/src/index.js @@ -60,7 +60,7 @@ import nullthrows from 'nullthrows'; const InternalInvalidRequireCallError = collectDependencies.InvalidRequireCallError; -type MinifierConfig = Readonly<{[string]: unknown, ...}>; +type MinifierConfig = Readonly<{[key: string]: unknown, ...}>; export type MinifierOptions = { code: string, @@ -77,9 +77,9 @@ export type MinifierResult = { ... }; -export type Minifier = MinifierOptions => - | MinifierResult - | Promise; +export type Minifier = ( + opts: MinifierOptions, +) => MinifierResult | Promise; export type Type = 'script' | 'module' | 'asset'; diff --git a/packages/metro-transform-worker/types/index.d.ts b/packages/metro-transform-worker/types/index.d.ts index ce18c8f5a5..5878494cfe 100644 --- a/packages/metro-transform-worker/types/index.d.ts +++ b/packages/metro-transform-worker/types/index.d.ts @@ -6,7 +6,7 @@ * * @noformat * @oncall react_native - * @generated SignedSource<<165882da0b131608da36b1cbd00ecf28>> + * @generated SignedSource<> * * This file was translated from Flow by scripts/generateTypeScriptDefinitions.js * Original file: packages/metro-transform-worker/src/index.js @@ -28,7 +28,7 @@ import type {TransformResultDependency} from 'metro/private/DeltaBundler'; import type {AllowOptionalDependencies} from 'metro/private/DeltaBundler/types'; import type {DynamicRequiresBehavior} from 'metro/private/ModuleGraph/worker/collectDependencies'; -type MinifierConfig = Readonly<{[$$Key$$: string]: unknown}>; +type MinifierConfig = Readonly<{[key: string]: unknown}>; export type MinifierOptions = { code: string; map: null | undefined | BasicSourceMap; @@ -38,7 +38,7 @@ export type MinifierOptions = { }; export type MinifierResult = {code: string; map?: BasicSourceMap}; export type Minifier = ( - $$PARAM_0$$: MinifierOptions, + opts: MinifierOptions, ) => MinifierResult | Promise; export type Type = 'script' | 'module' | 'asset'; export type JsTransformerConfig = Readonly<{ diff --git a/packages/metro/src/DeltaBundler/Serializers/sourceMapGenerator.js b/packages/metro/src/DeltaBundler/Serializers/sourceMapGenerator.js index 6352fd41f5..e479b09672 100644 --- a/packages/metro/src/DeltaBundler/Serializers/sourceMapGenerator.js +++ b/packages/metro/src/DeltaBundler/Serializers/sourceMapGenerator.js @@ -19,7 +19,7 @@ export type SourceMapGeneratorOptions = Readonly<{ excludeSource: boolean, processModuleFilter: (module: Module<>) => boolean, shouldAddToIgnoreList: (module: Module<>) => boolean, - getSourceUrl: ?(module: Module<>) => string, + getSourceUrl?: ?(module: Module<>) => string, }>; function getSourceMapInfosImpl( diff --git a/packages/metro/src/DeltaBundler/types.js b/packages/metro/src/DeltaBundler/types.js index d819ce149c..5b55ae2369 100644 --- a/packages/metro/src/DeltaBundler/types.js +++ b/packages/metro/src/DeltaBundler/types.js @@ -168,7 +168,7 @@ export type DeltaResult = { export type SerializerOptions = Readonly<{ asyncRequireModulePath: string, - createModuleId: string => number, + createModuleId: (absolutePath: string) => number, dev: boolean, getRunModuleStatement: ( moduleId: number | string, @@ -176,15 +176,15 @@ export type SerializerOptions = Readonly<{ ) => string, globalPrefix: string, includeAsyncPaths: boolean, - inlineSourceMap: ?boolean, + inlineSourceMap?: ?boolean, modulesOnly: boolean, processModuleFilter: (module: Module<>) => boolean, projectRoot: string, runBeforeMainModule: ReadonlyArray, runModule: boolean, serverRoot: string, - shouldAddToIgnoreList: (Module<>) => boolean, - sourceMapUrl: ?string, - sourceUrl: ?string, - getSourceUrl: ?(Module<>) => string, + shouldAddToIgnoreList: (module: Module<>) => boolean, + sourceMapUrl?: ?string, + sourceUrl?: ?string, + getSourceUrl?: ?(module: Module<>) => string, }>; diff --git a/packages/metro/src/Server.js b/packages/metro/src/Server.js index d0f68a9eba..6aa06a2dc1 100644 --- a/packages/metro/src/Server.js +++ b/packages/metro/src/Server.js @@ -307,7 +307,7 @@ export default class Server { async build( bundleOptions: BundleOptions, - {withAssets}: BuildOptions = {}, + buildOptions: BuildOptions = {}, ): Promise<{ code: string, map: string, @@ -315,6 +315,7 @@ export default class Server { ... }> { const splitOptions = splitBundleOptions(bundleOptions); + const {withAssets} = buildOptions; const { entryFile, graphOptions, @@ -591,9 +592,9 @@ export default class Server { } processRequest: ( - IncomingMessage, - ServerResponse, - ((e: ?Error) => void), + req: IncomingMessage, + res: ServerResponse, + next: (e: ?Error) => void, ) => void = ( req: IncomingMessage, res: ServerResponse, diff --git a/packages/metro/src/index.flow.js b/packages/metro/src/index.flow.js index 66bbe9d90e..73f1b63592 100644 --- a/packages/metro/src/index.flow.js +++ b/packages/metro/src/index.flow.js @@ -72,7 +72,7 @@ export type RunMetroOptions = { export type RunServerOptions = Readonly<{ hasReducedPerformance?: boolean, host?: string, - onError?: (Error & {code?: string}) => void, + onError?: (err: Error & {code?: string}) => void, onReady?: (server: HttpServer | HttpsServer) => void, onClose?: () => void, secureServerOptions?: HttpsServerOptions, @@ -114,9 +114,9 @@ export type RunBuildOptions = { minify?: boolean, output?: Readonly<{ build: ( - MetroServer, - RequestOptions, - void | BuildOptions, + server: MetroServer, + requestOptions: RequestOptions, + buildOptions?: BuildOptions, ) => Promise<{ code: string, map: string, @@ -124,13 +124,13 @@ export type RunBuildOptions = { ... }>, save: ( - { + output: { code: string, map: string, ... }, - OutputOptions, - (logMessage: string) => void, + opts: OutputOptions, + logger: (logMessage: string) => void, ) => Promise, ... }>, @@ -275,7 +275,9 @@ export const createConnectMiddleware = async function ( export const runServer = async ( config: ConfigT, - { + opts: RunServerOptions = {}, +): Promise => { + const { hasReducedPerformance = false, host, onError, @@ -289,8 +291,7 @@ export const runServer = async ( waitForBundler = false, websocketEndpoints: userWebsocketEndpoints = {}, watch, - }: RunServerOptions = {}, -): Promise => { + } = opts; await earlyPortCheck(host, config.server.port); if (secure != null || secureCert != null || secureKey != null) { @@ -421,7 +422,9 @@ export const runServer = async ( export const runBuild = async ( config: ConfigT, - { + opts: RunBuildOptions, +): Promise => { + const { assets = false, customResolverOptions = DEFAULTS.customResolverOptions, customTransformOptions = DEFAULTS.customTransformOptions, @@ -439,8 +442,7 @@ export const runBuild = async ( sourceMap = false, sourceMapUrl, unstable_transformProfile = DEFAULTS.unstable_transformProfile, - }: RunBuildOptions, -): Promise => { + } = opts; const metroServer = await runMetro(config, { watch: false, }); @@ -512,16 +514,16 @@ export const runBuild = async ( export const buildGraph = async function ( config: InputConfigT, - { + opts: BuildGraphOptions, +): Promise> { + const { customTransformOptions = Object.create(null), dev = false, entries, minify = false, - onProgress, platform = 'web', type = 'module', - }: BuildGraphOptions, -): Promise> { + } = opts; const mergedConfig = await getConfig(config); const bundler = new IncrementalBundler(mergedConfig); diff --git a/packages/metro/src/lib/JsonReporter.js b/packages/metro/src/lib/JsonReporter.js index 8480230950..7010f14d5b 100644 --- a/packages/metro/src/lib/JsonReporter.js +++ b/packages/metro/src/lib/JsonReporter.js @@ -19,7 +19,7 @@ export type SerializedError = { ... }; -export type SerializedEvent = +export type SerializedEvent = TEvent extends { error: Error, ... @@ -31,7 +31,9 @@ export type SerializedEvent = } : TEvent; -export default class JsonReporter { +export default class JsonReporter< + TEvent extends {+[prop: string]: unknown, ...}, +> { _stream: Writable; constructor(stream: Writable) { diff --git a/packages/metro/src/node-haste/DependencyGraph.js b/packages/metro/src/node-haste/DependencyGraph.js index f1efe1b104..dce9510767 100644 --- a/packages/metro/src/node-haste/DependencyGraph.js +++ b/packages/metro/src/node-haste/DependencyGraph.js @@ -315,14 +315,14 @@ export default class DependencyGraph extends EventEmitter { resolverOptions: ResolverInputOptions, // TODO: Fold assumeFlatNodeModules into resolverOptions and add to graphId - {assumeFlatNodeModules}: {assumeFlatNodeModules: boolean} = { + extraOptions: {assumeFlatNodeModules: boolean} = { assumeFlatNodeModules: false, }, ): BundlerResolution { const to = dependency.name; const isSensitiveToOriginFolder = // Resolution is always relative to the origin folder unless we assume a flat node_modules - !assumeFlatNodeModules || + !extraOptions.assumeFlatNodeModules || // Path requests are resolved relative to the origin folder to.includes('/') || to === '.' || diff --git a/packages/metro/src/node-haste/DependencyGraph/ModuleResolution.js b/packages/metro/src/node-haste/DependencyGraph/ModuleResolution.js index dddf7cb497..dbe99c0714 100644 --- a/packages/metro/src/node-haste/DependencyGraph/ModuleResolution.js +++ b/packages/metro/src/node-haste/DependencyGraph/ModuleResolution.js @@ -41,7 +41,7 @@ type Options = Readonly<{ disableHierarchicalLookup: boolean, doesFileExist: DoesFileExist, emptyModulePath: string, - extraNodeModules: ?Object, + extraNodeModules: ?{[key: string]: string}, fileSystemLookup: FileSystemLookup, getHasteModulePath: (name: string, platform: ?string) => ?string, getHastePackagePath: (name: string, platform: ?string) => ?string, diff --git a/packages/metro/types/DeltaBundler/Serializers/sourceMapGenerator.d.ts b/packages/metro/types/DeltaBundler/Serializers/sourceMapGenerator.d.ts index efd22ce36c..449b427cd5 100644 --- a/packages/metro/types/DeltaBundler/Serializers/sourceMapGenerator.d.ts +++ b/packages/metro/types/DeltaBundler/Serializers/sourceMapGenerator.d.ts @@ -6,7 +6,7 @@ * * @noformat * @oncall react_native - * @generated SignedSource<<49bc83c20821024a7b77f5d5c3168d62>> + * @generated SignedSource<<83e75c5275e98f33f98748f11c0baa1f>> * * This file was translated from Flow by scripts/generateTypeScriptDefinitions.js * Original file: packages/metro/src/DeltaBundler/Serializers/sourceMapGenerator.js @@ -23,7 +23,7 @@ export type SourceMapGeneratorOptions = Readonly<{ excludeSource: boolean; processModuleFilter: (module: Module) => boolean; shouldAddToIgnoreList: (module: Module) => boolean; - getSourceUrl: null | undefined | ((module: Module) => string); + getSourceUrl?: null | undefined | ((module: Module) => string); }>; declare function sourceMapGenerator( modules: ReadonlyArray, diff --git a/packages/metro/types/DeltaBundler/types.d.ts b/packages/metro/types/DeltaBundler/types.d.ts index 0abc6e6a72..647c809190 100644 --- a/packages/metro/types/DeltaBundler/types.d.ts +++ b/packages/metro/types/DeltaBundler/types.d.ts @@ -6,7 +6,7 @@ * * @noformat * @oncall react_native - * @generated SignedSource<> + * @generated SignedSource<<048910a40e900e85a4a037e02d572843>> * * This file was translated from Flow by scripts/generateTypeScriptDefinitions.js * Original file: packages/metro/src/DeltaBundler/types.js @@ -148,7 +148,7 @@ export type DeltaResult = { }; export type SerializerOptions = Readonly<{ asyncRequireModulePath: string; - createModuleId: ($$PARAM_0$$: string) => number; + createModuleId: (absolutePath: string) => number; dev: boolean; getRunModuleStatement: ( moduleId: number | string, @@ -156,15 +156,15 @@ export type SerializerOptions = Readonly<{ ) => string; globalPrefix: string; includeAsyncPaths: boolean; - inlineSourceMap: null | undefined | boolean; + inlineSourceMap?: null | undefined | boolean; modulesOnly: boolean; processModuleFilter: (module: Module) => boolean; projectRoot: string; runBeforeMainModule: ReadonlyArray; runModule: boolean; serverRoot: string; - shouldAddToIgnoreList: ($$PARAM_0$$: Module) => boolean; - sourceMapUrl: null | undefined | string; - sourceUrl: null | undefined | string; - getSourceUrl: null | undefined | (($$PARAM_0$$: Module) => string); + shouldAddToIgnoreList: (module: Module) => boolean; + sourceMapUrl?: null | undefined | string; + sourceUrl?: null | undefined | string; + getSourceUrl?: null | undefined | ((module: Module) => string); }>; diff --git a/packages/metro/types/Server.d.ts b/packages/metro/types/Server.d.ts index 52439a65ca..4284333e64 100644 --- a/packages/metro/types/Server.d.ts +++ b/packages/metro/types/Server.d.ts @@ -6,7 +6,7 @@ * * @noformat * @oncall react_native - * @generated SignedSource<<58a8bc4229ee86a5c93af2ea51195b97>> + * @generated SignedSource<> * * This file was translated from Flow by scripts/generateTypeScriptDefinitions.js * Original file: packages/metro/src/Server.js @@ -132,7 +132,7 @@ declare class Server { ): Promise<{code: string; map: string}>; build( bundleOptions: BundleOptions, - $$PARAM_1$$?: BuildOptions, + buildOptions?: BuildOptions, ): Promise<{code: string; map: string; assets?: ReadonlyArray}>; getRamBundleInfo(options: BundleOptions): Promise; getAssets(options: BundleOptions): Promise>; @@ -157,9 +157,9 @@ declare class Server { res: ServerResponse, ): Promise; processRequest: ( - $$PARAM_0$$: IncomingMessage, - $$PARAM_1$$: ServerResponse, - $$PARAM_2$$: (e: null | undefined | Error) => void, + req: IncomingMessage, + res: ServerResponse, + next: (e: null | undefined | Error) => void, ) => void; _parseOptions(url: string): BundleOptions; _rewriteAndNormalizeUrl(requestUrl: string): string; diff --git a/packages/metro/types/index.d.ts b/packages/metro/types/index.d.ts index 615d384576..e22094e424 100644 --- a/packages/metro/types/index.d.ts +++ b/packages/metro/types/index.d.ts @@ -6,7 +6,7 @@ * * @noformat * @oncall react_native - * @generated SignedSource<<3c6460427c6760887187d6b16151c609>> + * @generated SignedSource<<9497564df95b6b4796afe059ee0af907>> * * This file was translated from Flow by scripts/generateTypeScriptDefinitions.js * Original file: packages/metro/src/index.flow.js @@ -57,7 +57,7 @@ export type RunMetroOptions = Omit< export type RunServerOptions = Readonly<{ hasReducedPerformance?: boolean; host?: string; - onError?: ($$PARAM_0$$: Error & {code?: string}) => void; + onError?: (err: Error & {code?: string}) => void; onReady?: (server: HttpServer | HttpsServer) => void; onClose?: () => void; secureServerOptions?: HttpsServerOptions; @@ -92,18 +92,18 @@ export type RunBuildOptions = { minify?: boolean; output?: Readonly<{ build: ( - $$PARAM_0$$: MetroServer, - $$PARAM_1$$: RequestOptions, - $$PARAM_2$$: void | BuildOptions, + server: MetroServer, + requestOptions: RequestOptions, + buildOptions?: BuildOptions, ) => Promise<{ code: string; map: string; assets?: ReadonlyArray; }>; save: ( - $$PARAM_0$$: {code: string; map: string}, - $$PARAM_1$$: OutputOptions, - $$PARAM_2$$: (logMessage: string) => void, + output: {code: string; map: string}, + opts: OutputOptions, + logger: (logMessage: string) => void, ) => Promise; }>; platform?: string; @@ -159,17 +159,17 @@ export declare const createConnectMiddleware: ( export declare type createConnectMiddleware = typeof createConnectMiddleware; export declare const runServer: ( config: ConfigT, - $$PARAM_1$$?: RunServerOptions, + opts?: RunServerOptions, ) => Promise; export declare type runServer = typeof runServer; export declare const runBuild: ( config: ConfigT, - $$PARAM_1$$: RunBuildOptions, + opts: RunBuildOptions, ) => Promise; export declare type runBuild = typeof runBuild; export declare const buildGraph: ( config: InputConfigT, - $$PARAM_1$$: BuildGraphOptions, + opts: BuildGraphOptions, ) => Promise; export declare type buildGraph = typeof buildGraph; type AttachMetroCLIOptions = { diff --git a/packages/metro/types/lib/JsonReporter.d.ts b/packages/metro/types/lib/JsonReporter.d.ts index 9d29f11125..4a32661cf7 100644 --- a/packages/metro/types/lib/JsonReporter.d.ts +++ b/packages/metro/types/lib/JsonReporter.d.ts @@ -6,7 +6,7 @@ * * @noformat * @oncall react_native - * @generated SignedSource<> + * @generated SignedSource<<90ed73fe10859679f83e619fd1f46f59>> * * This file was translated from Flow by scripts/generateTypeScriptDefinitions.js * Original file: packages/metro/src/lib/JsonReporter.js @@ -23,16 +23,13 @@ export type SerializedError = { errors?: ReadonlyArray; cause?: SerializedError; }; -export type SerializedEvent< - TEvent extends {readonly [$$Key$$: string]: unknown}, -> = TEvent extends {error: Error} - ? Omit, keyof {error: SerializedError}> & { - error: SerializedError; - } - : TEvent; -declare class JsonReporter< - TEvent extends {readonly [$$Key$$: string]: unknown}, -> { +export type SerializedEvent = + TEvent extends {error: Error} + ? Omit, keyof {error: SerializedError}> & { + error: SerializedError; + } + : TEvent; +declare class JsonReporter { _stream: Writable; constructor(stream: Writable); /** diff --git a/packages/metro/types/node-haste/DependencyGraph.d.ts b/packages/metro/types/node-haste/DependencyGraph.d.ts index 150546b496..9a25d70378 100644 --- a/packages/metro/types/node-haste/DependencyGraph.d.ts +++ b/packages/metro/types/node-haste/DependencyGraph.d.ts @@ -6,7 +6,7 @@ * * @noformat * @oncall react_native - * @generated SignedSource<<0ae2c74336868865b420d900a230cea7>> + * @generated SignedSource<<0e019739f58fd639818330cd537c5975>> * * This file was translated from Flow by scripts/generateTypeScriptDefinitions.js * Original file: packages/metro/src/node-haste/DependencyGraph.js @@ -81,7 +81,7 @@ declare class DependencyGraph extends EventEmitter { dependency: TransformResultDependency, platform: string | null, resolverOptions: ResolverInputOptions, - $$PARAM_4$$?: {assumeFlatNodeModules: boolean}, + extraOptions?: {assumeFlatNodeModules: boolean}, ): BundlerResolution; doesFileExist: (filePath: string) => boolean; getHasteName(filePath: string): string; diff --git a/packages/metro/types/node-haste/DependencyGraph/ModuleResolution.d.ts b/packages/metro/types/node-haste/DependencyGraph/ModuleResolution.d.ts index 7b591bb816..0f118997cb 100644 --- a/packages/metro/types/node-haste/DependencyGraph/ModuleResolution.d.ts +++ b/packages/metro/types/node-haste/DependencyGraph/ModuleResolution.d.ts @@ -6,7 +6,7 @@ * * @noformat * @oncall react_native - * @generated SignedSource<<0024fd05b95efe19a24f9acc84ff474b>> + * @generated SignedSource<<8e4b0e22be79662d4a21e9241922409d>> * * This file was translated from Flow by scripts/generateTypeScriptDefinitions.js * Original file: packages/metro/src/node-haste/DependencyGraph/ModuleResolution.js @@ -38,7 +38,7 @@ type Options = Readonly<{ disableHierarchicalLookup: boolean; doesFileExist: DoesFileExist; emptyModulePath: string; - extraNodeModules: null | undefined | object; + extraNodeModules: null | undefined | {[key: string]: string}; fileSystemLookup: FileSystemLookup; getHasteModulePath: ( name: string,