From b8425c8ee5b9dd685e80521555e6aff147e17874 Mon Sep 17 00:00:00 2001 From: Tim Yung Date: Fri, 12 Aug 2022 17:16:40 -0700 Subject: [PATCH] RN: Cleanup Existing ESLint Warnings Summary: Sometime over the past few months (and with changes such as migrating to the `hermes-eslint` parser), a bunch of lint warnings crept into the codebase. This does a pass to clean them all up, ignore generated files, and refactor some code to be... better. There should be no observable behavior changes as a result of this. Changelog: [Internal] Reviewed By: NickGerleman Differential Revision: D38646643 fbshipit-source-id: a7b55d1e4cd5700340cc5c21f928baf3ea1d5a58 --- .eslintignore | 1 + IntegrationTests/AppEventsTest.js | 1 - Libraries/Animated/animations/SpringAnimation.js | 7 ++++--- Libraries/Animated/animations/TimingAnimation.js | 7 ++++--- Libraries/Animated/nodes/AnimatedAddition.js | 3 ++- Libraries/Animated/nodes/AnimatedDiffClamp.js | 3 ++- Libraries/Animated/nodes/AnimatedInterpolation.js | 3 ++- Libraries/Animated/nodes/AnimatedModulo.js | 3 ++- Libraries/Animated/nodes/AnimatedMultiplication.js | 3 ++- Libraries/Animated/nodes/AnimatedSubtraction.js | 3 ++- Libraries/Animated/nodes/AnimatedTracking.js | 3 ++- Libraries/BatchedBridge/MessageQueue.js | 2 +- Libraries/Blob/FileReader.js | 3 ++- Libraries/Blob/URL.js | 2 +- Libraries/Events/EventPolyfill.js | 2 +- Libraries/JSInspector/JSInspector.js | 3 --- Libraries/LogBox/Data/parseLogBoxLog.js | 1 + Libraries/StyleSheet/StyleSheetTypes.js | 2 +- Libraries/StyleSheet/private/_TransformStyle.js | 2 +- interface.js | 8 ++++++++ .../modules/GenerateModuleObjCpp/serializeMethod.js | 2 +- .../flow/modules/__tests__/module-parser-e2e-test.js | 3 +-- .../__tests__/generate-specs-cli-executor-test.js | 10 ++++------ 23 files changed, 45 insertions(+), 32 deletions(-) diff --git a/.eslintignore b/.eslintignore index f1beb735a48..11d4192591a 100644 --- a/.eslintignore +++ b/.eslintignore @@ -3,6 +3,7 @@ bots/node_modules docs/generatedComponentApiDocs.js flow/ +flow-typed/ Libraries/Renderer/* Libraries/vendor/**/* node_modules/ diff --git a/IntegrationTests/AppEventsTest.js b/IntegrationTests/AppEventsTest.js index 5ff829b20c5..e1736962006 100644 --- a/IntegrationTests/AppEventsTest.js +++ b/IntegrationTests/AppEventsTest.js @@ -38,7 +38,6 @@ class AppEventsTest extends React.Component<{...}, State> { NativeAppEventEmitter.addListener('testEvent', this.receiveEvent); const event = {data: TEST_PAYLOAD, ts: Date.now()}; TestModule.sendAppEvent('testEvent', event); - // eslint-disable-next-line react/no-did-mount-set-state this.setState({sent: event}); } diff --git a/Libraries/Animated/animations/SpringAnimation.js b/Libraries/Animated/animations/SpringAnimation.js index e02ed31872d..0d0d6ada083 100644 --- a/Libraries/Animated/animations/SpringAnimation.js +++ b/Libraries/Animated/animations/SpringAnimation.js @@ -10,9 +10,10 @@ 'use strict'; -const AnimatedValue = require('../nodes/AnimatedValue'); -const AnimatedValueXY = require('../nodes/AnimatedValueXY'); -const AnimatedInterpolation = require('../nodes/AnimatedInterpolation'); +import type AnimatedValue from '../nodes/AnimatedValue'; +import type AnimatedValueXY from '../nodes/AnimatedValueXY'; +import type AnimatedInterpolation from '../nodes/AnimatedInterpolation'; + const Animation = require('./Animation'); const SpringConfig = require('../SpringConfig'); diff --git a/Libraries/Animated/animations/TimingAnimation.js b/Libraries/Animated/animations/TimingAnimation.js index 94c4b3a4b83..12606f85c5d 100644 --- a/Libraries/Animated/animations/TimingAnimation.js +++ b/Libraries/Animated/animations/TimingAnimation.js @@ -10,9 +10,10 @@ 'use strict'; -const AnimatedValue = require('../nodes/AnimatedValue'); -const AnimatedValueXY = require('../nodes/AnimatedValueXY'); -const AnimatedInterpolation = require('../nodes/AnimatedInterpolation'); +import type AnimatedValue from '../nodes/AnimatedValue'; +import type AnimatedValueXY from '../nodes/AnimatedValueXY'; +import type AnimatedInterpolation from '../nodes/AnimatedInterpolation'; + const Animation = require('./Animation'); const {shouldUseNativeDriver} = require('../NativeAnimatedHelper'); diff --git a/Libraries/Animated/nodes/AnimatedAddition.js b/Libraries/Animated/nodes/AnimatedAddition.js index b311b39a660..ea430c6cd72 100644 --- a/Libraries/Animated/nodes/AnimatedAddition.js +++ b/Libraries/Animated/nodes/AnimatedAddition.js @@ -10,8 +10,9 @@ 'use strict'; +import type AnimatedNode from './AnimatedNode'; + const AnimatedInterpolation = require('./AnimatedInterpolation'); -const AnimatedNode = require('./AnimatedNode'); const AnimatedValue = require('./AnimatedValue'); const AnimatedWithChildren = require('./AnimatedWithChildren'); diff --git a/Libraries/Animated/nodes/AnimatedDiffClamp.js b/Libraries/Animated/nodes/AnimatedDiffClamp.js index 61b167c2fcb..98f070cb7fb 100644 --- a/Libraries/Animated/nodes/AnimatedDiffClamp.js +++ b/Libraries/Animated/nodes/AnimatedDiffClamp.js @@ -10,8 +10,9 @@ 'use strict'; +import type AnimatedNode from './AnimatedNode'; + const AnimatedInterpolation = require('./AnimatedInterpolation'); -const AnimatedNode = require('./AnimatedNode'); const AnimatedWithChildren = require('./AnimatedWithChildren'); import type {InterpolationConfigType} from './AnimatedInterpolation'; diff --git a/Libraries/Animated/nodes/AnimatedInterpolation.js b/Libraries/Animated/nodes/AnimatedInterpolation.js index ee5ea219462..911122c113a 100644 --- a/Libraries/Animated/nodes/AnimatedInterpolation.js +++ b/Libraries/Animated/nodes/AnimatedInterpolation.js @@ -12,7 +12,8 @@ 'use strict'; -const AnimatedNode = require('./AnimatedNode'); +import type AnimatedNode from './AnimatedNode'; + const AnimatedWithChildren = require('./AnimatedWithChildren'); const NativeAnimatedHelper = require('../NativeAnimatedHelper'); diff --git a/Libraries/Animated/nodes/AnimatedModulo.js b/Libraries/Animated/nodes/AnimatedModulo.js index bc3bc1b3ad2..a05d4d694d5 100644 --- a/Libraries/Animated/nodes/AnimatedModulo.js +++ b/Libraries/Animated/nodes/AnimatedModulo.js @@ -10,8 +10,9 @@ 'use strict'; +import type AnimatedNode from './AnimatedNode'; + const AnimatedInterpolation = require('./AnimatedInterpolation'); -const AnimatedNode = require('./AnimatedNode'); const AnimatedWithChildren = require('./AnimatedWithChildren'); import type {InterpolationConfigType} from './AnimatedInterpolation'; diff --git a/Libraries/Animated/nodes/AnimatedMultiplication.js b/Libraries/Animated/nodes/AnimatedMultiplication.js index 419927b71f5..7053a5726a0 100644 --- a/Libraries/Animated/nodes/AnimatedMultiplication.js +++ b/Libraries/Animated/nodes/AnimatedMultiplication.js @@ -10,8 +10,9 @@ 'use strict'; +import type AnimatedNode from './AnimatedNode'; + const AnimatedInterpolation = require('./AnimatedInterpolation'); -const AnimatedNode = require('./AnimatedNode'); const AnimatedValue = require('./AnimatedValue'); const AnimatedWithChildren = require('./AnimatedWithChildren'); diff --git a/Libraries/Animated/nodes/AnimatedSubtraction.js b/Libraries/Animated/nodes/AnimatedSubtraction.js index b3a9198c662..9cd15cec044 100644 --- a/Libraries/Animated/nodes/AnimatedSubtraction.js +++ b/Libraries/Animated/nodes/AnimatedSubtraction.js @@ -10,8 +10,9 @@ 'use strict'; +import type AnimatedNode from './AnimatedNode'; + const AnimatedInterpolation = require('./AnimatedInterpolation'); -const AnimatedNode = require('./AnimatedNode'); const AnimatedValue = require('./AnimatedValue'); const AnimatedWithChildren = require('./AnimatedWithChildren'); diff --git a/Libraries/Animated/nodes/AnimatedTracking.js b/Libraries/Animated/nodes/AnimatedTracking.js index e8f74eaa54a..2275d3c6d14 100644 --- a/Libraries/Animated/nodes/AnimatedTracking.js +++ b/Libraries/Animated/nodes/AnimatedTracking.js @@ -10,7 +10,8 @@ 'use strict'; -const AnimatedValue = require('./AnimatedValue'); +import type AnimatedValue from './AnimatedValue'; + const AnimatedNode = require('./AnimatedNode'); const { generateNewAnimationId, diff --git a/Libraries/BatchedBridge/MessageQueue.js b/Libraries/BatchedBridge/MessageQueue.js index 2e461a0ce2f..64e12e6d226 100644 --- a/Libraries/BatchedBridge/MessageQueue.js +++ b/Libraries/BatchedBridge/MessageQueue.js @@ -380,7 +380,7 @@ class MessageQueue { return ( // $FlowFixMe[cannot-resolve-name] typeof DebuggerInternal !== 'undefined' && - DebuggerInternal.shouldPauseOnThrow === true // eslint-disable-line no-undef + DebuggerInternal.shouldPauseOnThrow === true ); } diff --git a/Libraries/Blob/FileReader.js b/Libraries/Blob/FileReader.js index 1e3ea21b87f..ab389c95733 100644 --- a/Libraries/Blob/FileReader.js +++ b/Libraries/Blob/FileReader.js @@ -8,7 +8,8 @@ * @format */ -const Blob = require('./Blob'); +import type Blob from './Blob'; + const EventTarget = require('event-target-shim'); import NativeFileReaderModule from './NativeFileReaderModule'; diff --git a/Libraries/Blob/URL.js b/Libraries/Blob/URL.js index 62a67349693..2a5572bea0f 100644 --- a/Libraries/Blob/URL.js +++ b/Libraries/Blob/URL.js @@ -8,7 +8,7 @@ * @flow */ -const Blob = require('./Blob'); +import type Blob from './Blob'; import NativeBlobModule from './NativeBlobModule'; diff --git a/Libraries/Events/EventPolyfill.js b/Libraries/Events/EventPolyfill.js index 9d6f4364918..e6e0e7b1280 100644 --- a/Libraries/Events/EventPolyfill.js +++ b/Libraries/Events/EventPolyfill.js @@ -227,7 +227,7 @@ class EventPolyfill implements IEvent { } // Assertion magic for polyfill follows. -declare var checkEvent: Event; +declare var checkEvent: Event; // eslint-disable-line no-unused-vars /*:: // This can be a strict mode error at runtime so put it in a Flow comment. diff --git a/Libraries/JSInspector/JSInspector.js b/Libraries/JSInspector/JSInspector.js index 00bce964f3d..0a6388e3d3d 100644 --- a/Libraries/JSInspector/JSInspector.js +++ b/Libraries/JSInspector/JSInspector.js @@ -19,9 +19,6 @@ interface Agent { // Flow doesn't support static declarations in interface type AgentClass = Class & {DOMAIN: string, ...}; -declare function __registerInspectorAgent(type: AgentClass): void; -declare function __inspectorTimestamp(): number; - const JSInspector = { registerAgent(type: AgentClass) { if (global.__registerInspectorAgent) { diff --git a/Libraries/LogBox/Data/parseLogBoxLog.js b/Libraries/LogBox/Data/parseLogBoxLog.js index 9771595cde4..5f2be3c98a5 100644 --- a/Libraries/LogBox/Data/parseLogBoxLog.js +++ b/Libraries/LogBox/Data/parseLogBoxLog.js @@ -17,6 +17,7 @@ import parseErrorStack from '../../Core/Devtools/parseErrorStack'; const BABEL_TRANSFORM_ERROR_FORMAT = /^(?:TransformError )?(?:SyntaxError: |ReferenceError: )(.*): (.*) \((\d+):(\d+)\)\n\n([\s\S]+)/; const BABEL_CODE_FRAME_ERROR_FORMAT = + // eslint-disable-next-line no-control-regex /^(?:TransformError )?(?:.*):? (?:.*?)(\/.*): ([\s\S]+?)\n([ >]{2}[\d\s]+ \|[\s\S]+|\u{001b}[\s\S]+)/u; const METRO_ERROR_FORMAT = /^(?:InternalError Metro has encountered an error:) (.*): (.*) \((\d+):(\d+)\)\n\n([\s\S]+)/u; diff --git a/Libraries/StyleSheet/StyleSheetTypes.js b/Libraries/StyleSheet/StyleSheetTypes.js index 4b7aa36cda6..490ef5f306a 100644 --- a/Libraries/StyleSheet/StyleSheetTypes.js +++ b/Libraries/StyleSheet/StyleSheetTypes.js @@ -10,7 +10,7 @@ 'use strict'; -const AnimatedNode = require('../Animated/nodes/AnimatedNode'); +import type AnimatedNode from '../Animated/nodes/AnimatedNode'; import type {NativeColorValue} from './PlatformColorValueTypes'; diff --git a/Libraries/StyleSheet/private/_TransformStyle.js b/Libraries/StyleSheet/private/_TransformStyle.js index b0f764b5c5a..a0d0a9be5a1 100644 --- a/Libraries/StyleSheet/private/_TransformStyle.js +++ b/Libraries/StyleSheet/private/_TransformStyle.js @@ -8,7 +8,7 @@ * @format */ -const AnimatedNode = require('../../Animated/nodes/AnimatedNode'); +import type AnimatedNode from '../../Animated/nodes/AnimatedNode'; export type ____TransformStyle_Internal = $ReadOnly<{| /** diff --git a/interface.js b/interface.js index 85325036dcf..291c81952e3 100644 --- a/interface.js +++ b/interface.js @@ -10,6 +10,14 @@ 'use strict'; +// NOTE: Hmm... I don't think declaring variables within this module actually +// accomplishes anything besides documenting that these globals are exepcted to +// exist. So I think the correct "fix" to this lint warning is to delete this +// entire file. But in lieu of doing that... no harm for now in keeping this +// file around, even if it is only for documentation purposes. ¯\_(ツ)_/¯ + +/* eslint-disable no-unused-vars */ + declare var __DEV__: boolean; declare var __REACT_DEVTOOLS_GLOBAL_HOOK__: any; /*?{ diff --git a/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/serializeMethod.js b/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/serializeMethod.js index 8bedb6cb61f..a74367dcb87 100644 --- a/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/serializeMethod.js +++ b/packages/react-native-codegen/src/generators/modules/GenerateModuleObjCpp/serializeMethod.js @@ -19,9 +19,9 @@ import type { } from '../../../CodegenSchema'; import type {AliasResolver} from '../Utils'; +import type {StructCollector} from './StructCollector'; const invariant = require('invariant'); -const {StructCollector} = require('./StructCollector'); const {getNamespacedStructName} = require('./Utils'); const {capitalize} = require('../../Utils'); const { diff --git a/packages/react-native-codegen/src/parsers/flow/modules/__tests__/module-parser-e2e-test.js b/packages/react-native-codegen/src/parsers/flow/modules/__tests__/module-parser-e2e-test.js index 25c9d178d7d..25240c0a26b 100644 --- a/packages/react-native-codegen/src/parsers/flow/modules/__tests__/module-parser-e2e-test.js +++ b/packages/react-native-codegen/src/parsers/flow/modules/__tests__/module-parser-e2e-test.js @@ -816,8 +816,7 @@ describe('Flow Module Parser', () => { describe('Primitive Element Types', () => { PRIMITIVES.forEach(([FLOW_TYPE, PARSED_TYPE_NAME]) => { it(`should parse methods that have ${RETURN_TYPE_DESCRIPTION} return of type 'Array<${FLOW_TYPE}>'`, () => { - const [elementType, module] = - parseArrayElementReturnType(FLOW_TYPE); + const [elementType] = parseArrayElementReturnType(FLOW_TYPE); expect(elementType.type).toBe(PARSED_TYPE_NAME); }); }); diff --git a/scripts/codegen/__tests__/generate-specs-cli-executor-test.js b/scripts/codegen/__tests__/generate-specs-cli-executor-test.js index ce63546a566..21017a5dd15 100644 --- a/scripts/codegen/__tests__/generate-specs-cli-executor-test.js +++ b/scripts/codegen/__tests__/generate-specs-cli-executor-test.js @@ -12,20 +12,18 @@ const sut = require('../generate-specs-cli-executor'); const fixtures = require('../__test_fixtures__/fixtures'); -const path = require('path'); +const {normalize} = require('path'); describe('generateSpec', () => { it('invokes RNCodegen with the right params', () => { const platform = 'ios'; const libraryType = 'all'; const schemaPath = './'; - const componentsOutputDir = path.normalize( + const componentsOutputDir = normalize( 'app/ios/build/generated/ios/react/renderer/components/library', ); - const modulesOutputDir = path.normalize( - 'app/ios/build/generated/ios/library', - ); - const outputDirectory = path.normalize('app/ios/build/generated/ios'); + const modulesOutputDir = normalize('app/ios/build/generated/ios/library'); + const outputDirectory = normalize('app/ios/build/generated/ios'); const libraryName = 'library'; const packageName = 'com.library'; const generators = ['componentsIOS', 'modulesIOS'];