diff --git a/jest.config.js b/jest.config.js index baee6fe96ed8..240abcbfeae2 100644 --- a/jest.config.js +++ b/jest.config.js @@ -43,7 +43,7 @@ module.exports = { '/packages/react-native/Libraries/Renderer', '/packages/react-native/sdks/hermes/', ...PODS_LOCATIONS, - ] /*:: as $ReadOnlyArray */, + ] /*:: as ReadonlyArray */, transformIgnorePatterns: ['node_modules/(?!@react-native/)'], haste: { defaultPlatform: 'ios', @@ -52,12 +52,12 @@ module.exports = { moduleFileExtensions: [ 'fb.js', ...defaults.moduleFileExtensions, - ] /*:: as $ReadOnlyArray */, + ] /*:: as ReadonlyArray */, modulePathIgnorePatterns: [ 'scripts/.*/__fixtures__/', '/packages/react-native/sdks/hermes/', ...PODS_LOCATIONS, - ] /*:: as $ReadOnlyArray */, + ] /*:: as ReadonlyArray */, unmockedModulePathPatterns: [ 'node_modules/react/', 'packages/react-native/Libraries/Renderer', diff --git a/packages/dev-middleware/src/__tests__/InspectorProxyCdpTransport-test.js b/packages/dev-middleware/src/__tests__/InspectorProxyCdpTransport-test.js index 6a5e6a23a158..7e33c2decb59 100644 --- a/packages/dev-middleware/src/__tests__/InspectorProxyCdpTransport-test.js +++ b/packages/dev-middleware/src/__tests__/InspectorProxyCdpTransport-test.js @@ -522,9 +522,9 @@ describe.each(['HTTP', 'HTTPS'])( // Collect all connect events const connectEvents: Array< - $ReadOnly<{ + Readonly<{ event: string, - payload: $ReadOnly<{pageId: string, sessionId?: string}>, + payload: Readonly<{pageId: string, sessionId?: string}>, }>, > = []; device.connect.mockImplementation(message => { diff --git a/packages/dev-middleware/src/types/ReadonlyURL.js b/packages/dev-middleware/src/types/ReadonlyURL.js index 9ff197843673..b8c46a4c9c5f 100644 --- a/packages/dev-middleware/src/types/ReadonlyURL.js +++ b/packages/dev-middleware/src/types/ReadonlyURL.js @@ -25,7 +25,7 @@ export interface ReadonlyURLSearchParams { value: string, name: string, params: URLSearchParams, - ) => mixed, + ) => unknown, thisArg: This, ): void; toString(): string; diff --git a/packages/react-native-babel-preset/src/__tests__/__fixtures__/kitchen-sink-input.js b/packages/react-native-babel-preset/src/__tests__/__fixtures__/kitchen-sink-input.js index d6cf667105c3..c87fd6c1ae7d 100644 --- a/packages/react-native-babel-preset/src/__tests__/__fixtures__/kitchen-sink-input.js +++ b/packages/react-native-babel-preset/src/__tests__/__fixtures__/kitchen-sink-input.js @@ -59,7 +59,7 @@ async function* asyncNumberGenerator( } // Async/await patterns -async function fetchData(url: string): Promise<{data: mixed}> { +async function fetchData(url: string): Promise<{data: unknown}> { const response = await fetch(url); const data = await response.json(); return {data}; @@ -159,7 +159,7 @@ function parseDate( } // Try-catch with optional binding -function safeJsonParse(input: string): mixed { +function safeJsonParse(input: string): unknown { try { return JSON.parse(input); } catch { @@ -182,7 +182,7 @@ const MyClass = class { }; // Dynamic import (syntax only) -async function loadModule(): Promise { +async function loadModule(): Promise { // $FlowExpectedError[cannot-resolve-module] - Testing dynamic import syntax const module = await import('./some-module'); return module.default; diff --git a/packages/react-native-babel-preset/src/__tests__/transform-snapshot-test.js b/packages/react-native-babel-preset/src/__tests__/transform-snapshot-test.js index 435f27d40b24..32b7deace2c3 100644 --- a/packages/react-native-babel-preset/src/__tests__/transform-snapshot-test.js +++ b/packages/react-native-babel-preset/src/__tests__/transform-snapshot-test.js @@ -133,7 +133,7 @@ const testConfigs = [ function transformCode( code: string, - options: {[string]: mixed}, + options: {[string]: unknown}, ): string | null { const result = babel.transformSync(code, { babelrc: false, @@ -156,7 +156,7 @@ function ensureDirectoryExists(dir: string): void { } } -function makeHeader(description: string, options: {[string]: mixed}): string { +function makeHeader(description: string, options: {[string]: unknown}): string { return `/** * Copyright (c) Meta Platforms, Inc. and affiliates. * diff --git a/packages/react-native-codegen/src/parsers/consistency/compareSnaps.js b/packages/react-native-codegen/src/parsers/consistency/compareSnaps.js index 052eb2041e91..448065d0ed14 100644 --- a/packages/react-native-codegen/src/parsers/consistency/compareSnaps.js +++ b/packages/react-native-codegen/src/parsers/consistency/compareSnaps.js @@ -11,13 +11,13 @@ 'use strict'; function compareSnaps( - flowFixtures /*: $ReadOnly<{[string]: string}> */, - flowSnaps /*: $ReadOnly<{[string]: string}> */, - flowExtraCases /*: $ReadOnlyArray */, - tsFixtures /*: $ReadOnly<{[string]: string}> */, - tsSnaps /*: $ReadOnly<{[string]: string}> */, - tsExtraCases /*: $ReadOnlyArray */, - ignoredCases /*: $ReadOnlyArray */, + flowFixtures /*: Readonly<{[string]: string}> */, + flowSnaps /*: Readonly<{[string]: string}> */, + flowExtraCases /*: ReadonlyArray */, + tsFixtures /*: Readonly<{[string]: string}> */, + tsSnaps /*: Readonly<{[string]: string}> */, + tsExtraCases /*: ReadonlyArray */, + ignoredCases /*: ReadonlyArray */, ) { const flowCases = Object.keys(flowFixtures).sort(); const tsCases = Object.keys(tsFixtures).sort(); @@ -68,8 +68,8 @@ function compareSnaps( } function compareTsArraySnaps( - tsSnaps /*: $ReadOnly<{[string]: string}> */, - tsExtraCases /*: $ReadOnlyArray */, + tsSnaps /*: Readonly<{[string]: string}> */, + tsExtraCases /*: ReadonlyArray */, ) { for (const array2Case of tsExtraCases.filter( name => name.indexOf('ARRAY2') !== -1, diff --git a/packages/react-native-compatibility-check/src/ErrorFormatting.js b/packages/react-native-compatibility-check/src/ErrorFormatting.js index 64d0d36a6866..8f7fb95770d3 100644 --- a/packages/react-native-compatibility-check/src/ErrorFormatting.js +++ b/packages/react-native-compatibility-check/src/ErrorFormatting.js @@ -199,7 +199,7 @@ function formatTypeAnnotation(annotation: CompleteTypeAnnotation): string { let validUnionType; try { validUnionType = parseValidUnionType(annotation); - } catch (_e: mixed) { + } catch (_e: unknown) { // parseValidUnionType throws for unsupported union types return 'Union'; } diff --git a/packages/react-native/Libraries/Components/AccessibilityInfo/__tests__/AccessibilityInfo-test.js b/packages/react-native/Libraries/Components/AccessibilityInfo/__tests__/AccessibilityInfo-test.js index a9ca14cbf0b5..82460fe77383 100644 --- a/packages/react-native/Libraries/Components/AccessibilityInfo/__tests__/AccessibilityInfo-test.js +++ b/packages/react-native/Libraries/Components/AccessibilityInfo/__tests__/AccessibilityInfo-test.js @@ -105,7 +105,7 @@ describe('AccessibilityInfo', () => { mockNativeAccessibilityManagerDefault.getCurrentPrefersCrossFadeTransitionsState = null; - const result: mixed = + const result: unknown = await AccessibilityInfo.prefersCrossFadeTransitions().catch(e => e); invariant( @@ -151,7 +151,7 @@ describe('AccessibilityInfo', () => { mockNativeAccessibilityManagerDefault.getCurrentDarkerSystemColorsState = null; - const result: mixed = + const result: unknown = await AccessibilityInfo.isDarkerSystemColorsEnabled().catch(e => e); invariant( @@ -184,7 +184,7 @@ describe('AccessibilityInfo', () => { mockNativeAccessibilityInfo.isHighTextContrastEnabled = null; - const result: mixed = + const result: unknown = await AccessibilityInfo.isHighTextContrastEnabled().catch(e => e); invariant( diff --git a/packages/react-native/Libraries/Core/Devtools/__tests__/loadBundleFromServer-test.js b/packages/react-native/Libraries/Core/Devtools/__tests__/loadBundleFromServer-test.js index 92827be1d974..7657099fd2e1 100644 --- a/packages/react-native/Libraries/Core/Devtools/__tests__/loadBundleFromServer-test.js +++ b/packages/react-native/Libraries/Core/Devtools/__tests__/loadBundleFromServer-test.js @@ -95,7 +95,7 @@ test('loadBundleFromServer will throw for JSON responses', async () => { mockDataResponse = JSON.stringify({message: 'Error thrown from Metro'}); mockRequestError = null; - const error: mixed = await loadBundleFromServer( + const error: unknown = await loadBundleFromServer( '/Fail.bundle?platform=ios', ).catch(e => e); @@ -112,7 +112,7 @@ test('loadBundleFromServer will throw LoadBundleFromServerError for request erro mockDataResponse = ''; mockRequestError = 'Some error'; - const error: mixed = await loadBundleFromServer( + const error: unknown = await loadBundleFromServer( '/Fail.bundle?platform=ios', ).catch(e => e); diff --git a/packages/react-native/cli.js b/packages/react-native/cli.js index 40abd7a1288c..2c6f6f779b22 100755 --- a/packages/react-native/cli.js +++ b/packages/react-native/cli.js @@ -47,7 +47,7 @@ function isMissingCliDependency(error /*: Error */) { ); } -let cli /*: $ReadOnly<{ +let cli /*: Readonly<{ bin: string, loadConfig: $FlowFixMe, run: () => void diff --git a/packages/react-native/react-native.config.js b/packages/react-native/react-native.config.js index 2cb738b33534..452c5ffbf379 100644 --- a/packages/react-native/react-native.config.js +++ b/packages/react-native/react-native.config.js @@ -114,9 +114,9 @@ commands.push(codegenCommand); const config = { commands, - platforms: {} /*:: as {[string]: $ReadOnly<{ - projectConfig: mixed, - dependencyConfig: mixed, + platforms: {} /*:: as {[string]: Readonly<{ + projectConfig: unknown, + dependencyConfig: unknown, }>} */, }; diff --git a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateCustomURLHandlers.js b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateCustomURLHandlers.js index 99f6c10ed20d..af9495e30440 100644 --- a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateCustomURLHandlers.js +++ b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateCustomURLHandlers.js @@ -26,7 +26,7 @@ const MODULES_PROTOCOLS_MM_TEMPLATE_PATH = path.join( ); function generateCustomURLHandlers( - libraries /*: $ReadOnlyArray<$FlowFixMe> */, + libraries /*: ReadonlyArray<$FlowFixMe> */, outputDir /*: string */, ) { const iosAnnotations = parseiOSAnnotations(libraries); diff --git a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateNativeCode.js b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateNativeCode.js index 77d7c9505880..2f987b7d1ac7 100644 --- a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateNativeCode.js +++ b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateNativeCode.js @@ -19,7 +19,7 @@ const path = require('path'); function generateNativeCode( outputPath /*: string */, - schemaInfos /*: $ReadOnlyArray<$FlowFixMe> */, + schemaInfos /*: ReadonlyArray<$FlowFixMe> */, includesGeneratedCode /*: boolean */, platform /*: string */, forceOutputPath /*: boolean */ = false, diff --git a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateRCTModuleProviders.js b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateRCTModuleProviders.js index b5b6ff52bfca..743861d57d16 100644 --- a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateRCTModuleProviders.js +++ b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateRCTModuleProviders.js @@ -32,7 +32,7 @@ const MODULE_PROVIDERS_MM_TEMPLATE_PATH = path.join( function generateRCTModuleProviders( projectRoot /*: string */, pkgJson /*: $FlowFixMe */, - libraries /*: $ReadOnlyArray<$FlowFixMe> */, + libraries /*: ReadonlyArray<$FlowFixMe> */, outputDir /*: string */, ) { fs.mkdirSync(outputDir, {recursive: true}); diff --git a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateRCTThirdPartyComponents.js b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateRCTThirdPartyComponents.js index 1bbfd760debd..aab3783dbff8 100644 --- a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateRCTThirdPartyComponents.js +++ b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateRCTThirdPartyComponents.js @@ -31,7 +31,7 @@ const THIRD_PARTY_COMPONENTS_MM_TEMPLATE_PATH = path.join( ); function generateRCTThirdPartyComponents( - libraries /*: $ReadOnlyArray<$FlowFixMe> */, + libraries /*: ReadonlyArray<$FlowFixMe> */, outputDir /*: string */, ) { fs.mkdirSync(outputDir, {recursive: true}); diff --git a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateSchemaInfos.js b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateSchemaInfos.js index 68ec01a2d849..183626a8183f 100644 --- a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateSchemaInfos.js +++ b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateSchemaInfos.js @@ -17,7 +17,7 @@ const path = require('path'); const {globSync} = require('tinyglobby'); function generateSchemaInfos( - libraries /*: $ReadOnlyArray<$FlowFixMe> */, + libraries /*: ReadonlyArray<$FlowFixMe> */, ) /*: Array<$FlowFixMe> */ { // $FlowFixMe[incompatible-type] return libraries.map(generateSchemaInfo); diff --git a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateUnstableModulesRequiringMainQueueSetupProvider.js b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateUnstableModulesRequiringMainQueueSetupProvider.js index f2505a8f0145..31e2b437198c 100644 --- a/packages/react-native/scripts/codegen/generate-artifacts-executor/generateUnstableModulesRequiringMainQueueSetupProvider.js +++ b/packages/react-native/scripts/codegen/generate-artifacts-executor/generateUnstableModulesRequiringMainQueueSetupProvider.js @@ -28,7 +28,7 @@ const UNSTABLE_MODULES_REQUIRING_MAIN_QUEUE_SETUP_PROVIDER_MM_TEMPLATE_PATH = ); function generateUnstableModulesRequiringMainQueueSetupProvider( - libraries /*: $ReadOnlyArray<$FlowFixMe> */, + libraries /*: ReadonlyArray<$FlowFixMe> */, outputDir /*: string */, ) { const iosAnnotations = parseiOSAnnotations(libraries); diff --git a/packages/react-native/scripts/codegen/generate-artifacts-executor/utils.js b/packages/react-native/scripts/codegen/generate-artifacts-executor/utils.js index 98ac2eb1c177..811fecb7a201 100644 --- a/packages/react-native/scripts/codegen/generate-artifacts-executor/utils.js +++ b/packages/react-native/scripts/codegen/generate-artifacts-executor/utils.js @@ -389,7 +389,7 @@ function isReactNativeCoreLibrary(libraryName /*: string */) /*: boolean */ { * Validates that components are defined in at most one library. */ function parseiOSAnnotations( - libraries /*: $ReadOnlyArray<$FlowFixMe> */, + libraries /*: ReadonlyArray<$FlowFixMe> */, ) /*: {[string]: $FlowFixMe} */ { const mLibraryMap /*: {[string]: $FlowFixMe} */ = {}; const cLibraryMap /*: {[string]: $FlowFixMe} */ = {}; diff --git a/packages/react-native/scripts/codegen/generate-specs-cli-executor.js b/packages/react-native/scripts/codegen/generate-specs-cli-executor.js index e85e8361a2df..161ce0a2be7c 100644 --- a/packages/react-native/scripts/codegen/generate-specs-cli-executor.js +++ b/packages/react-native/scripts/codegen/generate-specs-cli-executor.js @@ -14,7 +14,7 @@ const utils = require('./codegen-utils'); const fs = require('fs'); const path = require('path'); -const GENERATORS /*: {[string]: {[string]: $ReadOnlyArray}} */ = { +const GENERATORS /*: {[string]: {[string]: ReadonlyArray}} */ = { all: { android: ['componentsAndroid', 'modulesAndroid', 'modulesCxx'], ios: ['componentsIOS', 'modulesIOS', 'modulesCxx'], diff --git a/packages/react-native/scripts/generate-provider-cli.js b/packages/react-native/scripts/generate-provider-cli.js index 9324da65ae43..a3eb5cb36dde 100644 --- a/packages/react-native/scripts/generate-provider-cli.js +++ b/packages/react-native/scripts/generate-provider-cli.js @@ -34,7 +34,7 @@ const argv = yargs 'Please provide platform, schema path, and output directory.', ).argv; -const GENERATORS /*: {[string]: $ReadOnlyArray} */ = { +const GENERATORS /*: {[string]: ReadonlyArray} */ = { android: [], ios: ['providerIOS'], }; diff --git a/packages/react-native/scripts/ios-prebuild/cli.js b/packages/react-native/scripts/ios-prebuild/cli.js index 01301c800af7..1dfb23c23f24 100644 --- a/packages/react-native/scripts/ios-prebuild/cli.js +++ b/packages/react-native/scripts/ios-prebuild/cli.js @@ -14,7 +14,7 @@ const yargs = require('yargs'); import type {BuildFlavor, Destination, Platform} from './types'; */ -const platforms /*: $ReadOnlyArray */ = [ +const platforms /*: ReadonlyArray */ = [ 'ios', 'ios-simulator', 'mac-catalyst', @@ -22,7 +22,7 @@ const platforms /*: $ReadOnlyArray */ = [ // CI can't use commas in cache keys, so 'macOS,variant=Mac Catalyst' was creating troubles // This map that converts from platforms to valid Xcodebuild destinations. -const platformToDestination /*: $ReadOnly<{|[Platform]: Destination|}> */ = { +const platformToDestination /*: Readonly<{|[Platform]: Destination|}> */ = { ios: 'iOS', 'ios-simulator': 'iOS Simulator', 'mac-catalyst': 'macOS,variant=Mac Catalyst', @@ -78,7 +78,7 @@ async function getCLIConfiguration() /*: Promise, + destinations: ReadonlyArray, identity: ?string, |}> */ { // Run input parsing diff --git a/packages/react-native/scripts/ios-prebuild/headers-config.js b/packages/react-native/scripts/ios-prebuild/headers-config.js index 0d57d019e6e7..b5534b4054ef 100644 --- a/packages/react-native/scripts/ios-prebuild/headers-config.js +++ b/packages/react-native/scripts/ios-prebuild/headers-config.js @@ -9,12 +9,12 @@ */ /*:: -export type PodSpecConfiguration = $ReadOnly<{ +export type PodSpecConfiguration = Readonly<{ name: string, headerPatterns: Array, headerDir?: string, excludePatterns?: Array, - subSpecs?: $ReadOnlyArray, + subSpecs?: ReadonlyArray, preservePaths?: Array, } | {disabled: true}>; */ diff --git a/packages/react-native/src/private/renderer/branching/__tests__/ShadowTreeBranching-itest.js b/packages/react-native/src/private/renderer/branching/__tests__/ShadowTreeBranching-itest.js index c2db162e2f51..25ea2e459e49 100644 --- a/packages/react-native/src/private/renderer/branching/__tests__/ShadowTreeBranching-itest.js +++ b/packages/react-native/src/private/renderer/branching/__tests__/ShadowTreeBranching-itest.js @@ -41,7 +41,7 @@ describe('ShadowTreeBranching', () => { 'Insert {type: "View", parentNativeID: (root), index: 0, nativeID: "view"}', ]); - let updatesBeforeEndOfTask: $ReadOnlyArray = []; + let updatesBeforeEndOfTask: ReadonlyArray = []; Fantom.runTask(() => { root.render( @@ -68,7 +68,7 @@ describe('ShadowTreeBranching', () => { it('should not skip intermediate React commits', () => { const root = Fantom.createRoot(); - let updatesBeforeEndOfTask: $ReadOnlyArray = []; + let updatesBeforeEndOfTask: ReadonlyArray = []; // When rendered with `shouldTriggerIntermediate=false`, it renders two views // both with blue background. When rendered with `shouldTriggerIntermediate=true`, diff --git a/packages/rn-tester/js/examples/AnimationBackend/SwipeableListExample.js b/packages/rn-tester/js/examples/AnimationBackend/SwipeableListExample.js index 35e7d47aca6a..af0676bc2b7d 100644 --- a/packages/rn-tester/js/examples/AnimationBackend/SwipeableListExample.js +++ b/packages/rn-tester/js/examples/AnimationBackend/SwipeableListExample.js @@ -37,7 +37,7 @@ type Data = { title: string, }; -const initialData: $ReadOnlyArray = [ +const initialData: ReadonlyArray = [ {id: '1', title: 'Kate Bell'}, {id: '2', title: 'John Appleseed'}, {id: '3', title: 'Mark Zuckerberg'}, @@ -62,7 +62,7 @@ const timingConfig = { }; function SwipeableListExample(): React.Node { - const [data, setData] = React.useState<$ReadOnlyArray>(initialData); + const [data, setData] = React.useState>(initialData); const handleRemove = useCallback((id: string) => { setData(currentData => currentData.filter(item => item.id !== id)); diff --git a/private/helloworld/metro.config.js b/private/helloworld/metro.config.js index 543bfe6dd100..6f46f45d95c9 100644 --- a/private/helloworld/metro.config.js +++ b/private/helloworld/metro.config.js @@ -46,4 +46,4 @@ const config = { module.exports = mergeConfig( getDefaultConfig(__dirname), config, -) /*:: as $ReadOnly */; +) /*:: as Readonly */; diff --git a/private/react-native-fantom/config/jest.config.js b/private/react-native-fantom/config/jest.config.js index 34efa5467e77..1877182fff12 100644 --- a/private/react-native-fantom/config/jest.config.js +++ b/private/react-native-fantom/config/jest.config.js @@ -26,7 +26,7 @@ module.exports = { ...baseConfig.moduleFileExtensions, 'cpp', 'h', - ] /*:: as $ReadOnlyArray */, + ] /*:: as ReadonlyArray */, // This allows running Meta-internal tests with the `-test.fb.js` suffix. testRegex: '/__tests__/.*-itest(\\.fb)?\\.js$', testPathIgnorePatterns: [ diff --git a/private/react-native-fantom/runner/utils.js b/private/react-native-fantom/runner/utils.js index b92125235b3a..11a30f1b212c 100644 --- a/private/react-native-fantom/runner/utils.js +++ b/private/react-native-fantom/runner/utils.js @@ -61,7 +61,7 @@ export function getBuckModesForPlatform({ }: { enableCoverage: boolean, enableOptimized: boolean, -}): $ReadOnlyArray { +}): ReadonlyArray { let mode = enableCoverage ? 'code-coverage' : enableOptimized ? 'opt' : 'dev'; if (enableOptimized) { diff --git a/private/react-native-fantom/src/index.js b/private/react-native-fantom/src/index.js index 85978d9669f4..72304f15d012 100644 --- a/private/react-native-fantom/src/index.js +++ b/private/react-native-fantom/src/index.js @@ -256,8 +256,9 @@ export function getDefinedEventHandlers( } // WARNING: This uses React private API (fiber internals). // $FlowExpectedError[incompatible-type] - const memoizedProps = (instanceHandle as {memoizedProps?: {[string]: mixed}}) - .memoizedProps; + const memoizedProps = ( + instanceHandle as {memoizedProps?: {[string]: unknown}} + ).memoizedProps; if (memoizedProps == null) { return []; } diff --git a/scripts/build/build.js b/scripts/build/build.js index c8b670a8c0e2..da2d642659c8 100644 --- a/scripts/build/build.js +++ b/scripts/build/build.js @@ -229,7 +229,7 @@ async function buildFile( /*:: type PackageJson = { name: string, - exports?: {[subpath: string]: string | mixed}, + exports?: {[subpath: string]: string | unknown}, }; */ diff --git a/scripts/debugger-frontend/sync-and-build.js b/scripts/debugger-frontend/sync-and-build.js index db1f613bb3c8..72cc6ea6b1a6 100644 --- a/scripts/debugger-frontend/sync-and-build.js +++ b/scripts/debugger-frontend/sync-and-build.js @@ -163,9 +163,9 @@ async function buildDebuggerFrontend( packagePath /*: string */, scratchPath /*: string */, localCheckoutPath /*: ?string */, - {branch, gclientSyncOptions, noBuild} /*: $ReadOnly<{ + {branch, gclientSyncOptions, noBuild} /*: Readonly<{ branch: string, - gclientSyncOptions: $ReadOnly<{nohooks: boolean}>, + gclientSyncOptions: Readonly<{nohooks: boolean}>, noBuild: boolean, }>*/, ) /*: Promise<{checkoutPath: string}> */ { @@ -244,7 +244,7 @@ async function checkoutDevToolsFrontend( async function setupGclientWorkspace( scratchPath /*: string */, checkoutPath /*: string */, - {nohooks} /*: $ReadOnly<{nohooks: boolean}> */, + {nohooks} /*: Readonly<{nohooks: boolean}> */, ) { process.stdout.write('Setting up gclient workspace' + '\n'); await spawnSafe( @@ -345,12 +345,12 @@ async function copyLicenseToPackage( } async function generateBuildInfo( - info /*: $ReadOnly<{ + info /*: Readonly<{ checkoutPath: string, isLocalCheckout: boolean, branch: string, packagePath: string, - gclientSyncOptions: $ReadOnly<{nohooks: boolean}>, + gclientSyncOptions: Readonly<{nohooks: boolean}>, gnArgsSummary: string, noBuild: boolean, }> */, @@ -588,7 +588,7 @@ async function createSyncDiff( { checkoutPath, noBuild, - } /*: $ReadOnly<{checkoutPath: string, noBuild: boolean}> */, + } /*: Readonly<{checkoutPath: string, noBuild: boolean}> */, ) { process.stdout.write('Creating a sync diff\n'); const {packagePath, baseGitRevision} = diffBaseInfo; diff --git a/scripts/debugger-shell/build-binary.js b/scripts/debugger-shell/build-binary.js index cb34bbffa502..e7300579b1c7 100644 --- a/scripts/debugger-shell/build-binary.js +++ b/scripts/debugger-shell/build-binary.js @@ -16,7 +16,7 @@ try { isMetaInternal = false; } -let additionalConfig /*: $ReadOnly<{ +let additionalConfig /*: Readonly<{ appVersionHash: ?string, }> */ = { appVersionHash: null, diff --git a/scripts/e2e/utils/try-n-times.js b/scripts/e2e/utils/try-n-times.js index ac6fa759a816..904e44f1f3a0 100644 --- a/scripts/e2e/utils/try-n-times.js +++ b/scripts/e2e/utils/try-n-times.js @@ -15,7 +15,7 @@ function tryExecNTimes( funcToRetry /*: () => number */, retriesLeft /*: number */, - onEveryError /*: ?(() => mixed) */, + onEveryError /*: ?(() => unknown) */, ) /*: number */ { const exitCode = funcToRetry(); if (exitCode === 0) { diff --git a/scripts/releases/ios-prebuild/build.js b/scripts/releases/ios-prebuild/build.js index bb3e33ff5934..3a913e3ae46b 100644 --- a/scripts/releases/ios-prebuild/build.js +++ b/scripts/releases/ios-prebuild/build.js @@ -22,8 +22,8 @@ import type { Dependency, Destination, Platform } from './types'; async function buildDepenencies( scheme /*: string */, configuration /*: string */, - dependencies /*: $ReadOnlyArray */, - destinations /*: $ReadOnlyArray */, + dependencies /*: ReadonlyArray */, + destinations /*: ReadonlyArray */, rootFolder /*: string */, buildFolder /*: string */, ) { diff --git a/scripts/releases/ios-prebuild/cli.js b/scripts/releases/ios-prebuild/cli.js index dc0a7f7b7b74..dffca8203350 100644 --- a/scripts/releases/ios-prebuild/cli.js +++ b/scripts/releases/ios-prebuild/cli.js @@ -17,7 +17,7 @@ import type {Dependency, Destination, Platform} from './types'; // CI can't use commas in cache keys, so 'macOS,variant=Mac Catalyst' was creating troubles // This map that converts from platforms to valid Xcodebuild destinations. -const platformToDestination /*: $ReadOnly<{|[Platform]: Destination|}> */ = { +const platformToDestination /*: Readonly<{|[Platform]: Destination|}> */ = { ios: 'iOS', 'ios-simulator': 'iOS Simulator', macos: 'macOS', @@ -92,8 +92,8 @@ async function getCLIConfiguration() /*: Promise, - dependencies: $ReadOnlyArray, + destinations: ReadonlyArray, + dependencies: ReadonlyArray, configuration: string, identity: ?string, |}> */ { diff --git a/scripts/releases/ios-prebuild/compose-framework.js b/scripts/releases/ios-prebuild/compose-framework.js index 599622af6bc4..fd0e1287d1f3 100644 --- a/scripts/releases/ios-prebuild/compose-framework.js +++ b/scripts/releases/ios-prebuild/compose-framework.js @@ -23,7 +23,7 @@ import type { Dependency, Platform } from './types'; async function createFramework( scheme /*: string */, configuration /*: string */, - dependencies /*: $ReadOnlyArray */, + dependencies /*: ReadonlyArray */, rootFolder /*: string */, buildFolder /*: string */, identity /*: ?string */, @@ -81,7 +81,7 @@ async function createFramework( */ function copyHeaders( scheme /*: string */, - dependencies /*: $ReadOnlyArray */, + dependencies /*: ReadonlyArray */, rootFolder /*: string */, ) { console.log('Copying header files for dependencies...'); @@ -114,7 +114,7 @@ function copyHeaders( */ function copyBundles( scheme /*: string */, - dependencies /*: $ReadOnlyArray */, + dependencies /*: ReadonlyArray */, outputFolder /*:string*/, frameworkPaths /*:Array*/, ) { diff --git a/scripts/releases/ios-prebuild/configuration.js b/scripts/releases/ios-prebuild/configuration.js index 4a00cdc0e4b4..8bf6f5db12aa 100644 --- a/scripts/releases/ios-prebuild/configuration.js +++ b/scripts/releases/ios-prebuild/configuration.js @@ -12,7 +12,7 @@ import type { Dependency, Platform } from './types'; */ -const platforms /*: $ReadOnlyArray */ = [ +const platforms /*: ReadonlyArray */ = [ 'ios', 'ios-simulator', 'macos', @@ -25,7 +25,7 @@ const platforms /*: $ReadOnlyArray */ = [ const CPP_STANDARD = 'c++20'; -const dependencies /*: $ReadOnlyArray */ = [ +const dependencies /*: ReadonlyArray */ = [ { name: 'glog', version: '0.3.5', diff --git a/scripts/releases/ios-prebuild/setupDependencies.js b/scripts/releases/ios-prebuild/setupDependencies.js index 152f2af920f3..07a1b668997a 100644 --- a/scripts/releases/ios-prebuild/setupDependencies.js +++ b/scripts/releases/ios-prebuild/setupDependencies.js @@ -32,7 +32,7 @@ const exec = util.promisify(require('child_process').exec); * according to the configuration provided. */ async function setupDependencies( - dependencies /*: $ReadOnlyArray */, + dependencies /*: ReadonlyArray */, rootFolder /*: string */, ) { console.log('✅ Setting up dependencies...'); diff --git a/scripts/releases/ios-prebuild/swift-package.js b/scripts/releases/ios-prebuild/swift-package.js index 269c52e9cb37..68ca681b2dfc 100644 --- a/scripts/releases/ios-prebuild/swift-package.js +++ b/scripts/releases/ios-prebuild/swift-package.js @@ -21,7 +21,7 @@ const path = require('path'); */ async function createSwiftPackageFile( scheme /*: string */, - dependencies /* :$ReadOnlyArray */, + dependencies /* :ReadonlyArray */, rootFolder /*: string */, ) { console.log( diff --git a/scripts/releases/ios-prebuild/types.js b/scripts/releases/ios-prebuild/types.js index c51574a82650..8829b2553e69 100644 --- a/scripts/releases/ios-prebuild/types.js +++ b/scripts/releases/ios-prebuild/types.js @@ -11,10 +11,10 @@ /*:: export type Folder = RegExp; -export type Files = $ReadOnly<{ - headers: $ReadOnlyArray, - sources: $ReadOnlyArray, - resources?: $ReadOnlyArray, +export type Files = Readonly<{ + headers: ReadonlyArray, + sources: ReadonlyArray, + resources?: ReadonlyArray, // Relative path from target root to where the header files should be copied. // Can be used to ensure header search paths like // are correctly resolved. @@ -22,22 +22,22 @@ export type Files = $ReadOnly<{ headerSkipFolderNames?: string, }>; -export type Define = $ReadOnly<{ +export type Define = Readonly<{ name: string, value?: string, }>; -export type Settings = $ReadOnly<{ - headerSearchPaths?: $ReadOnlyArray, - defines?: $ReadOnlyArray, - cCompilerFlags?: $ReadOnlyArray, - cxxCompilerFlags?: $ReadOnlyArray, - linkedLibraries?: $ReadOnlyArray, +export type Settings = Readonly<{ + headerSearchPaths?: ReadonlyArray, + defines?: ReadonlyArray, + cCompilerFlags?: ReadonlyArray, + cxxCompilerFlags?: ReadonlyArray, + linkedLibraries?: ReadonlyArray, publicHeaderFiles: string, - linkerSettings?: $ReadOnlyArray + linkerSettings?: ReadonlyArray }>; -export type Dependency = $ReadOnly<{ +export type Dependency = Readonly<{ name: string, version: string, url: URL, @@ -45,7 +45,7 @@ export type Dependency = $ReadOnly<{ files: Files, settings: Settings, disabled?: boolean, - dependencies?: $ReadOnlyArray, + dependencies?: ReadonlyArray, }>; export type Platform = diff --git a/scripts/releases/upload-release-assets-for-dotslash.js b/scripts/releases/upload-release-assets-for-dotslash.js index 3fa0000f2508..270d265909b0 100644 --- a/scripts/releases/upload-release-assets-for-dotslash.js +++ b/scripts/releases/upload-release-assets-for-dotslash.js @@ -30,15 +30,15 @@ import type {DotSlashProvider, DotSlashHttpProvider, DotSlashArtifactInfo} from import type {IOctokit} from './utils/octokit-utils'; type GitHubReleaseAsset = {id: string, ...}; -type ReleaseAssetMap = $ReadOnlyMap; +type ReleaseAssetMap = ReadonlyMap; -type ReleaseInfo = $ReadOnly<{ +type ReleaseInfo = Readonly<{ releaseId: string, releaseTag: string, existingAssetsByName: ReleaseAssetMap, }>; -type ExecutionOptions = $ReadOnly<{ +type ExecutionOptions = Readonly<{ force: boolean, dryRun: boolean, }>; @@ -191,7 +191,7 @@ async function fetchUpstreamAssetAndUploadToRelease( artifactInfo, dotslashFilename, } /*: { - providers: $ReadOnlyArray, + providers: ReadonlyArray, suggestedFilename: string, artifactInfo: DotSlashArtifactInfo, dotslashFilename: string, diff --git a/scripts/releases/utils/dotslash-utils.js b/scripts/releases/utils/dotslash-utils.js index eb435fffd71f..238da891ab9f 100644 --- a/scripts/releases/utils/dotslash-utils.js +++ b/scripts/releases/utils/dotslash-utils.js @@ -40,7 +40,7 @@ type DotSlashPlatformSpec = { ... }; -export type DotSlashArtifactInfo = $ReadOnly<{ +export type DotSlashArtifactInfo = Readonly<{ size: number, hash: 'blake3' | 'sha256', digest: string, @@ -54,13 +54,13 @@ type JSONCFormattingOptions = { }; type DotSlashProvidersTransformFn = ( - providers: $ReadOnlyArray, + providers: ReadonlyArray, suggestedFilename: string, artifactInfo: DotSlashArtifactInfo, -) => ?$ReadOnlyArray | Promise>; +) => ?ReadonlyArray | Promise>; */ -const DEFAULT_FORMATTING_OPTIONS /*: $ReadOnly */ = { +const DEFAULT_FORMATTING_OPTIONS /*: Readonly */ = { tabSize: 4, insertSpaces: true, eol: '\n', @@ -75,7 +75,7 @@ const DEFAULT_FORMATTING_OPTIONS /*: $ReadOnly */ = { async function processDotSlashFileInPlace( filename /*: string */, transformProviders /*: DotSlashProvidersTransformFn */, - formattingOptions /*: $ReadOnly */ = DEFAULT_FORMATTING_OPTIONS, + formattingOptions /*: Readonly */ = DEFAULT_FORMATTING_OPTIONS, ) /*: Promise */ { // Validate the file using `dotslash` itself so we can be reasonably sure that it conforms // to the expected format. @@ -87,7 +87,7 @@ async function processDotSlashFileInPlace( const json = parse(originalContentsJson); let intermediateContentsJson = originalContentsJson; for (const [platform, platformSpec] of Object.entries(json.platforms) /*:: - as $ReadOnlyArray<[string, DotSlashPlatformSpec]> + as ReadonlyArray<[string, DotSlashPlatformSpec]> */) { const providers = platformSpec.providers; const suggestedFilename = @@ -144,7 +144,7 @@ function splitShebangFromContents( */ async function validateAndParseDotSlashFile( filename /*: string */, -) /*: mixed */ { +) /*: unknown */ { const {stdout} = await execFile(dotslash, ['--', 'parse', filename]); return JSON.parse(stdout); } diff --git a/scripts/releases/write-dotslash-release-asset-urls.js b/scripts/releases/write-dotslash-release-asset-urls.js index a67eff51e4c3..2e7a650dc900 100644 --- a/scripts/releases/write-dotslash-release-asset-urls.js +++ b/scripts/releases/write-dotslash-release-asset-urls.js @@ -99,7 +99,7 @@ async function writeReleaseAssetUrlsToDotSlashFile( async function updateAndVerifyProviders( {providers: providersArg, suggestedFilename, artifactInfo, releaseTag} /*: - {providers: $ReadOnlyArray, + {providers: ReadonlyArray, suggestedFilename: string, artifactInfo: DotSlashArtifactInfo, releaseTag: string,} @@ -151,8 +151,8 @@ function createReleaseAssetProvider( } function diffProviderArrays( - original /*: $ReadOnlyArray */, - updated /*: $ReadOnlyArray */, + original /*: ReadonlyArray */, + updated /*: ReadonlyArray */, ) { return jestDiff(original, updated, { aAnnotation: 'Original', diff --git a/scripts/run-ci-javascript-tests.js b/scripts/run-ci-javascript-tests.js index ba8f95384dde..8e62419ba971 100644 --- a/scripts/run-ci-javascript-tests.js +++ b/scripts/run-ci-javascript-tests.js @@ -20,7 +20,7 @@ */ const {execSync} = require('child_process'); -const argv /*:$ReadOnly<{ +const argv /*:Readonly<{ maxWorkers?: number, jestBinary?: string, flowBinary?: string, diff --git a/scripts/shared/monorepoUtils.js b/scripts/shared/monorepoUtils.js index f61803bfaaae..6260b0a19f70 100644 --- a/scripts/shared/monorepoUtils.js +++ b/scripts/shared/monorepoUtils.js @@ -27,7 +27,7 @@ export type PackageJson = { ... }; -type PackagesFilter = $ReadOnly<{ +type PackagesFilter = Readonly<{ // Include the main react-native package includeReactNative: boolean, @@ -135,7 +135,7 @@ async function parsePackageInfo( */ async function updatePackageJson( {path: packagePath, packageJson} /*: PackageInfo */, - newPackageVersions /*: $ReadOnly<{[string]: string}> */, + newPackageVersions /*: Readonly<{[string]: string}> */, ) /*: Promise */ { const packageName = packageJson.name;