From bdc23fa2b44401c0c6e66d8cf9a0df542ee2c871 Mon Sep 17 00:00:00 2001 From: Iwo Plaza Date: Mon, 27 Jan 2025 06:32:58 -0800 Subject: [PATCH] Migrate files in Libraries/Interaction to use export syntax (#48933) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/48933 ## Motivation Modernising the react-native codebase to allow for ingestion by modern Flow tooling ## This diff - Updates files in Libraries/Interaction to use `export` syntax - Appends `.default` to requires of the changed files. - Updates the public API snapshot (intented breaking change) Changelog: [General][Breaking] - Files inside `Libraries/Interaction` use `export` syntax, which requires the addition of `.default` when imported with the CJS `require` syntax. Reviewed By: huntie Differential Revision: D68629953 fbshipit-source-id: 526b18d9b64c4b27b6e3198a9725075fa11e345a --- .../Libraries/Animated/__tests__/Animated-test.js | 3 ++- .../Libraries/Interaction/FrameRateLogger.js | 2 +- .../Libraries/Interaction/InteractionManager.js | 14 ++++++++------ .../Interaction/InteractionManagerStub.js | 2 +- .../Libraries/Interaction/JSEventLoopWatchdog.js | 2 +- .../Libraries/Interaction/PanResponder.js | 4 ++-- .../Libraries/Interaction/TaskQueue.js | 2 +- .../Libraries/Interaction/TouchHistoryMath.js | 2 +- .../__tests__/InteractionManager-test.js | 4 ++-- .../Interaction/__tests__/TaskQueue-test.js | 2 +- .../__snapshots__/public-api-test.js.snap | 15 ++++++++------- packages/react-native/index.js | 2 +- packages/rn-tester/js/utils/useJsStalls.js | 3 ++- 13 files changed, 31 insertions(+), 26 deletions(-) diff --git a/packages/react-native/Libraries/Animated/__tests__/Animated-test.js b/packages/react-native/Libraries/Animated/__tests__/Animated-test.js index ba471e03a12..1657e860222 100644 --- a/packages/react-native/Libraries/Animated/__tests__/Animated-test.js +++ b/packages/react-native/Libraries/Animated/__tests__/Animated-test.js @@ -793,7 +793,8 @@ describe('Animated', () => { beforeEach(() => { jest.mock('../../Interaction/InteractionManager'); Animated = require('../Animated').default; - InteractionManager = require('../../Interaction/InteractionManager'); + InteractionManager = + require('../../Interaction/InteractionManager').default; }); afterEach(() => { diff --git a/packages/react-native/Libraries/Interaction/FrameRateLogger.js b/packages/react-native/Libraries/Interaction/FrameRateLogger.js index e9d54dbf402..afb52ccb291 100644 --- a/packages/react-native/Libraries/Interaction/FrameRateLogger.js +++ b/packages/react-native/Libraries/Interaction/FrameRateLogger.js @@ -69,4 +69,4 @@ const FrameRateLogger = { }, }; -module.exports = FrameRateLogger; +export default FrameRateLogger; diff --git a/packages/react-native/Libraries/Interaction/InteractionManager.js b/packages/react-native/Libraries/Interaction/InteractionManager.js index 42d85b5ff52..1fc8c46bc06 100644 --- a/packages/react-native/Libraries/Interaction/InteractionManager.js +++ b/packages/react-native/Libraries/Interaction/InteractionManager.js @@ -15,7 +15,7 @@ import EventEmitter from '../vendor/emitter/EventEmitter'; const BatchedBridge = require('../BatchedBridge/BatchedBridge').default; const infoLog = require('../Utilities/infoLog').default; -const TaskQueue = require('./TaskQueue'); +const TaskQueue = require('./TaskQueue').default; const invariant = require('invariant'); export type Handle = number; @@ -77,7 +77,7 @@ const DEBUG: false = false; * allowing events such as touches to start interactions and block queued tasks * from executing, making apps more responsive. */ -const InteractionManager = { +const InteractionManagerImpl = { Events: { interactionStart: 'interactionStart', interactionComplete: 'interactionComplete', @@ -210,8 +210,10 @@ function _processUpdate() { _deleteInteractionSet.clear(); } -module.exports = ( +const InteractionManager = ( ReactNativeFeatureFlags.disableInteractionManager() - ? require('./InteractionManagerStub') - : InteractionManager -) as typeof InteractionManager; + ? require('./InteractionManagerStub').default + : InteractionManagerImpl +) as typeof InteractionManagerImpl; + +export default InteractionManager; diff --git a/packages/react-native/Libraries/Interaction/InteractionManagerStub.js b/packages/react-native/Libraries/Interaction/InteractionManagerStub.js index c68afc5e740..5b45d8bd76b 100644 --- a/packages/react-native/Libraries/Interaction/InteractionManagerStub.js +++ b/packages/react-native/Libraries/Interaction/InteractionManagerStub.js @@ -173,4 +173,4 @@ const InteractionManagerStub = { }, }; -module.exports = InteractionManagerStub; +export default InteractionManagerStub; diff --git a/packages/react-native/Libraries/Interaction/JSEventLoopWatchdog.js b/packages/react-native/Libraries/Interaction/JSEventLoopWatchdog.js index 67280653619..5174a5250de 100644 --- a/packages/react-native/Libraries/Interaction/JSEventLoopWatchdog.js +++ b/packages/react-native/Libraries/Interaction/JSEventLoopWatchdog.js @@ -85,4 +85,4 @@ let longestStall = 0; let lastInterval = 0; const handlers: Array = []; -module.exports = JSEventLoopWatchdog; +export default JSEventLoopWatchdog; diff --git a/packages/react-native/Libraries/Interaction/PanResponder.js b/packages/react-native/Libraries/Interaction/PanResponder.js index 8d741d9ab44..e42abb3502a 100644 --- a/packages/react-native/Libraries/Interaction/PanResponder.js +++ b/packages/react-native/Libraries/Interaction/PanResponder.js @@ -12,8 +12,8 @@ import type {PressEvent} from '../Types/CoreEventTypes'; -const InteractionManager = require('./InteractionManager'); -const TouchHistoryMath = require('./TouchHistoryMath'); +const InteractionManager = require('./InteractionManager').default; +const TouchHistoryMath = require('./TouchHistoryMath').default; const currentCentroidXOfTouchesChangedAfter = TouchHistoryMath.currentCentroidXOfTouchesChangedAfter; diff --git a/packages/react-native/Libraries/Interaction/TaskQueue.js b/packages/react-native/Libraries/Interaction/TaskQueue.js index c7e217166ca..e265cadc0f7 100644 --- a/packages/react-native/Libraries/Interaction/TaskQueue.js +++ b/packages/react-native/Libraries/Interaction/TaskQueue.js @@ -180,4 +180,4 @@ class TaskQueue { } } -module.exports = TaskQueue; +export default TaskQueue; diff --git a/packages/react-native/Libraries/Interaction/TouchHistoryMath.js b/packages/react-native/Libraries/Interaction/TouchHistoryMath.js index ff51f8f3073..2f787e6cac7 100644 --- a/packages/react-native/Libraries/Interaction/TouchHistoryMath.js +++ b/packages/react-native/Libraries/Interaction/TouchHistoryMath.js @@ -179,4 +179,4 @@ const TouchHistoryMath = { noCentroid: number, }; -module.exports = TouchHistoryMath; +export default TouchHistoryMath; diff --git a/packages/react-native/Libraries/Interaction/__tests__/InteractionManager-test.js b/packages/react-native/Libraries/Interaction/__tests__/InteractionManager-test.js index a23753425da..a085f8900e1 100644 --- a/packages/react-native/Libraries/Interaction/__tests__/InteractionManager-test.js +++ b/packages/react-native/Libraries/Interaction/__tests__/InteractionManager-test.js @@ -29,7 +29,7 @@ describe('InteractionManager', () => { beforeEach(() => { jest.resetModules(); - InteractionManager = require('../InteractionManager'); + InteractionManager = require('../InteractionManager').default; interactionStart = jest.fn(); interactionComplete = jest.fn(); @@ -166,7 +166,7 @@ describe('promise tasks', () => { } beforeEach(() => { jest.resetModules(); - InteractionManager = require('../InteractionManager'); + InteractionManager = require('../InteractionManager').default; sequenceId = 0; }); diff --git a/packages/react-native/Libraries/Interaction/__tests__/TaskQueue-test.js b/packages/react-native/Libraries/Interaction/__tests__/TaskQueue-test.js index cfd19fffa09..36272458e1f 100644 --- a/packages/react-native/Libraries/Interaction/__tests__/TaskQueue-test.js +++ b/packages/react-native/Libraries/Interaction/__tests__/TaskQueue-test.js @@ -36,7 +36,7 @@ describe('TaskQueue', () => { beforeEach(() => { jest.resetModules(); onMoreTasks = jest.fn(); - const TaskQueue = require('../TaskQueue'); + const TaskQueue = require('../TaskQueue').default; taskQueue = new TaskQueue({onMoreTasks}); sequenceId = 0; }); diff --git a/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap b/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap index 0a1a7fbbd59..1a6ce01d197 100644 --- a/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap +++ b/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap @@ -5328,13 +5328,13 @@ exports[`public API should not change unintentionally Libraries/Interaction/Fram beginScroll(): void, endScroll(): void, }; -declare module.exports: FrameRateLogger; +declare export default typeof FrameRateLogger; " `; exports[`public API should not change unintentionally Libraries/Interaction/InteractionManager.js 1`] = ` "export type Handle = number; -declare const InteractionManager: { +declare const InteractionManagerImpl: { Events: { interactionStart: \\"interactionStart\\", interactionComplete: \\"interactionComplete\\", @@ -5352,7 +5352,8 @@ declare const InteractionManager: { addListener: Function, setDeadline(deadline: number): void, }; -declare module.exports: typeof InteractionManager; +declare const InteractionManager: typeof InteractionManagerImpl; +declare export default typeof InteractionManager; " `; @@ -5386,7 +5387,7 @@ declare const InteractionManagerStub: { addListener(): EventSubscription, setDeadline(deadline: number): void, }; -declare module.exports: InteractionManagerStub; +declare export default typeof InteractionManagerStub; " `; @@ -5402,7 +5403,7 @@ declare const JSEventLoopWatchdog: { addHandler: (handler: Handler) => void, install: ({ thresholdMS: number, ... }) => void, }; -declare module.exports: JSEventLoopWatchdog; +declare export default typeof JSEventLoopWatchdog; " `; @@ -5502,7 +5503,7 @@ declare class TaskQueue { _getCurrentQueue(): Array; _genPromise(task: PromiseTask): void; } -declare module.exports: TaskQueue; +declare export default typeof TaskQueue; " `; @@ -5534,7 +5535,7 @@ exports[`public API should not change unintentionally Libraries/Interaction/Touc currentCentroidY: (touchHistory: TouchHistoryMath) => number, noCentroid: number, }; -declare module.exports: TouchHistoryMath; +declare export default typeof TouchHistoryMath; " `; diff --git a/packages/react-native/index.js b/packages/react-native/index.js index ac96e3263f7..3ad9e4be0a5 100644 --- a/packages/react-native/index.js +++ b/packages/react-native/index.js @@ -272,7 +272,7 @@ module.exports = { return require('./Libraries/ReactNative/I18nManager'); }, get InteractionManager(): InteractionManager { - return require('./Libraries/Interaction/InteractionManager'); + return require('./Libraries/Interaction/InteractionManager').default; }, get Keyboard(): Keyboard { return require('./Libraries/Components/Keyboard/Keyboard').default; diff --git a/packages/rn-tester/js/utils/useJsStalls.js b/packages/rn-tester/js/utils/useJsStalls.js index 5ceac1505d2..e8c4a7fdd27 100644 --- a/packages/rn-tester/js/utils/useJsStalls.js +++ b/packages/rn-tester/js/utils/useJsStalls.js @@ -56,7 +56,8 @@ const useJsStalls = (): ({ }, []); const onEnableJsStallsTracking = React.useCallback(() => { - const JSEventLoopWatchdog = require('react-native/Libraries/Interaction/JSEventLoopWatchdog'); + const JSEventLoopWatchdog = + require('react-native/Libraries/Interaction/JSEventLoopWatchdog').default; JSEventLoopWatchdog.install({thresholdMS: 25});