/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @noformat * @oncall react_native * @generated SignedSource<<9c62bc2ca711f9693edc135a382a382a>> * * This file was translated from Flow by scripts/generateTypeScriptDefinitions.js * Original file: packages/metro-config/src/types.js * To regenerate, run: * js1 build metro-ts-defs (internal) OR * yarn run build-ts-defs (OSS) */ import type {HandleFunction, Server} from 'connect'; import type {CacheStore, MetroCache} from 'metro-cache'; import type {CacheManagerFactory, InputFileMapPlugin} from 'metro-file-map'; import type {CustomResolver} from 'metro-resolver'; import type {JsTransformerConfig} from 'metro-transform-worker'; import type { DeltaResult, Module, ReadOnlyGraph, SerializerOptions, TransformResult, } from 'metro/private/DeltaBundler/types'; import type {Reporter} from 'metro/private/lib/reporting'; import type MetroServer from 'metro/private/Server'; import type {IntermediateStackFrame} from 'metro/private/Server/symbolicate'; export type ExtraTransformOptions = Readonly<{ preloadedModules?: Readonly<{[path: string]: true}> | false; ramGroups?: ReadonlyArray; transform?: Readonly<{ experimentalImportSupport?: boolean; inlineRequires?: | Readonly<{ blockList: Readonly<{[absoluteModulePath: string]: true}>; }> | boolean; nonInlinedRequires?: ReadonlyArray; unstable_memoizeInlineRequires?: boolean; unstable_nonMemoizedInlineRequires?: ReadonlyArray; }>; }>; export type GetTransformOptionsOpts = { dev: boolean; /** * @deprecated Always true */ hot: true; platform: null | undefined | string; }; export type GetTransformOptions = ( entryPoints: ReadonlyArray, options: GetTransformOptionsOpts, getDependenciesOf: (absoluteFilePath: string) => Promise>, ) => Promise>; export type Middleware = HandleFunction; type PerfAnnotations = Partial<{ string: Readonly<{[key: string]: string}>; int: Readonly<{[key: string]: number}>; double: Readonly<{[key: string]: number}>; bool: Readonly<{[key: string]: boolean}>; string_array: Readonly<{[key: string]: ReadonlyArray}>; int_array: Readonly<{[key: string]: ReadonlyArray}>; double_array: Readonly<{[key: string]: ReadonlyArray}>; bool_array: Readonly<{[key: string]: ReadonlyArray}>; }>; type PerfLoggerPointOptions = Readonly<{timestamp?: number}>; export interface PerfLogger { point(name: string, opts?: PerfLoggerPointOptions): void; annotate(annotations: PerfAnnotations): void; subSpan(label: string): PerfLogger; } export interface RootPerfLogger extends PerfLogger { start(opts?: PerfLoggerPointOptions): void; end( status: 'SUCCESS' | 'FAIL' | 'CANCEL', opts?: PerfLoggerPointOptions, ): void; } export type PerfLoggerFactoryOptions = Readonly<{key?: number}>; export type PerfLoggerFactory = ( type: 'START_UP' | 'BUNDLING_REQUEST' | 'HMR', opts?: PerfLoggerFactoryOptions, ) => RootPerfLogger; type ResolverConfigT = { assetExts: ReadonlyArray; assetResolutions: ReadonlyArray; blacklistRE?: RegExp | Array; blockList: RegExp | Array; disableHierarchicalLookup: boolean; dependencyExtractor: null | undefined | string; emptyModulePath: string; enableGlobalPackages: boolean; extraNodeModules: {[name: string]: string}; hasteImplModulePath: null | undefined | string; nodeModulesPaths: ReadonlyArray; platforms: ReadonlyArray; resolveRequest: null | undefined | CustomResolver; resolverMainFields: ReadonlyArray; sourceExts: ReadonlyArray; unstable_conditionNames: ReadonlyArray; unstable_conditionsByPlatform: Readonly<{ [platform: string]: ReadonlyArray; }>; unstable_enablePackageExports: boolean; unstable_incrementalResolution: boolean; useWatchman: boolean; requireCycleIgnorePatterns: ReadonlyArray; unstable_forceFullRefreshPatterns: ReadonlyArray; }; type SerializerConfigT = { createModuleIdFactory: () => (path: string) => number; customSerializer: | null | undefined | (( entryPoint: string, preModules: ReadonlyArray, graph: ReadOnlyGraph, options: SerializerOptions, ) => Promise); experimentalSerializerHook: ( graph: ReadOnlyGraph, delta: DeltaResult, ) => unknown; getModulesRunBeforeMainModule: (entryFilePath: string) => Array; getPolyfills: ($$PARAM_0$$: { platform: null | undefined | string; }) => ReadonlyArray; getRunModuleStatement: ( moduleId: number | string, globalPrefix: string, ) => string; polyfillModuleNames: ReadonlyArray; processModuleFilter: (modules: Module) => boolean; isThirdPartyModule: (module: Readonly<{path: string}>) => boolean; }; type TransformerConfigT = Omit< JsTransformerConfig, keyof { getTransformOptions: GetTransformOptions; transformVariants: { readonly [name: string]: Partial; }; publicPath: string; unstable_workerThreads: boolean; } > & { getTransformOptions: GetTransformOptions; transformVariants: { readonly [name: string]: Partial; }; publicPath: string; unstable_workerThreads: boolean; }; type MetalConfigT = { cacheVersion: string; fileMapCacheDirectory?: string; hasteMapCacheDirectory?: string; unstable_fileMapCacheManagerFactory?: CacheManagerFactory; unstable_fileMapPlugins?: ReadonlyArray; maxWorkers: number; unstable_perfLoggerFactory?: null | undefined | PerfLoggerFactory; projectRoot: string; stickyWorkers: boolean; transformerPath: string; reporter: Reporter; resetCache: boolean; watchFolders: ReadonlyArray; }; type CacheStoresConfigT = ReadonlyArray>; type ServerConfigT = { /** @deprecated */ enhanceMiddleware: ( $$PARAM_0$$: Middleware, $$PARAM_1$$: MetroServer, ) => Middleware | Server; forwardClientLogs: boolean; port: number; rewriteRequestUrl: ($$PARAM_0$$: string) => string; unstable_serverRoot: null | undefined | string; useGlobalHotkey: boolean; verifyConnections: boolean; tls: | false | { ca?: string | Buffer; cert?: string | Buffer; key?: string | Buffer; requestCert?: boolean; }; }; type SymbolicatorConfigT = { customizeFrame: ($$PARAM_0$$: { readonly file: null | undefined | string; readonly lineNumber: null | undefined | number; readonly column: null | undefined | number; readonly methodName: null | undefined | string; }) => | (null | undefined | {readonly collapse?: boolean}) | Promise; customizeStack: ( $$PARAM_0$$: Array, $$PARAM_1$$: unknown, ) => Array | Promise>; }; type WatcherConfigT = { additionalExts: ReadonlyArray; healthCheck: Readonly<{ enabled: boolean; interval: number; timeout: number; filePrefix: string; }>; unstable_autoSaveCache: Readonly<{enabled: boolean; debounceMs?: number}>; unstable_lazySha1: boolean; watchman: Readonly<{deferStates: ReadonlyArray}>; }; export type InputConfigT = Partial< Readonly< MetalConfigT & { cacheStores: | CacheStoresConfigT | (($$PARAM_0$$: MetroCache) => CacheStoresConfigT); resolver: Readonly>; server: Readonly>; serializer: Readonly>; symbolicator: Readonly>; transformer: Readonly>; watcher: Partial< Readonly< Omit< WatcherConfigT, 'healthCheck' | 'unstable_autoSaveCache' | 'watchman' > & { healthCheck: Partial>; unstable_autoSaveCache: Partial< Readonly >; watchman: Partial>; } > >; } > >; export type MetroConfig = InputConfigT; export type ConfigT = Readonly< MetalConfigT & { cacheStores: CacheStoresConfigT; resolver: Readonly; server: Readonly; serializer: Readonly; symbolicator: Readonly; transformer: Readonly; watcher: Readonly; } >; export type YargArguments = Readonly<{ config?: string; cwd?: string; port?: string | number; host?: string; projectRoot?: string; watchFolders?: Array; assetExts?: Array; sourceExts?: Array; platforms?: Array; 'max-workers'?: string | number; maxWorkers?: string | number; transformer?: string; 'reset-cache'?: boolean; resetCache?: boolean; verbose?: boolean; }>;