diff --git a/package.json b/package.json index 6893a414420ed..d3e763a8c4b9c 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ "@typescript-eslint/parser": "^6.21.0", "abortcontroller-polyfill": "^1.7.5", "art": "0.10.1", + "babel-plugin-syntax-hermes-parser": "^0.32.0", "babel-plugin-syntax-trailing-function-commas": "^6.5.0", "chalk": "^3.0.0", "cli-table": "^0.3.1", @@ -72,8 +73,8 @@ "eslint-plugin-react-internal": "link:./scripts/eslint-rules", "fbjs-scripts": "^3.0.1", "filesize": "^6.0.1", - "flow-bin": "^0.247", - "flow-remove-types": "^2.247", + "flow-bin": "^0.258", + "flow-remove-types": "^2.258", "glob": "^7.1.6", "glob-stream": "^6.1.0", "google-closure-compiler": "^20230206.0.0", diff --git a/packages/react-devtools-extensions/src/background/messageHandlers.js b/packages/react-devtools-extensions/src/background/messageHandlers.js index 5afcd6aadcc07..cd07f8afbc5df 100644 --- a/packages/react-devtools-extensions/src/background/messageHandlers.js +++ b/packages/react-devtools-extensions/src/background/messageHandlers.js @@ -46,22 +46,26 @@ export function handleDevToolsPageMessage(message) { payload: {tabId, url}, } = message; - if (!tabId) { - throw new Error("Couldn't fetch file sources: tabId not specified"); - } - - if (!url) { - throw new Error("Couldn't fetch file sources: url not specified"); + if (!tabId || !url) { + // Send a response straight away to get the Promise fulfilled. + chrome.runtime.sendMessage({ + source: 'react-devtools-background', + payload: { + type: 'fetch-file-with-cache-error', + url, + value: null, + }, + }); + } else { + chrome.tabs.sendMessage(tabId, { + source: 'devtools-page', + payload: { + type: 'fetch-file-with-cache', + url, + }, + }); } - chrome.tabs.sendMessage(tabId, { - source: 'devtools-page', - payload: { - type: 'fetch-file-with-cache', - url, - }, - }); - break; } diff --git a/packages/react-devtools-shared/babel.config.js b/packages/react-devtools-shared/babel.config.js index 78af34817e0a9..dfd46013e944e 100644 --- a/packages/react-devtools-shared/babel.config.js +++ b/packages/react-devtools-shared/babel.config.js @@ -34,6 +34,7 @@ module.exports = api => { } } const plugins = [ + ['babel-plugin-syntax-hermes-parser'], ['@babel/plugin-transform-flow-strip-types'], ['@babel/plugin-proposal-class-properties', {loose: false}], ]; diff --git a/packages/react-devtools-shared/src/backend/NativeStyleEditor/setupNativeStyleEditor.js b/packages/react-devtools-shared/src/backend/NativeStyleEditor/setupNativeStyleEditor.js index 728f0e691c98b..7a8bfff43bf24 100644 --- a/packages/react-devtools-shared/src/backend/NativeStyleEditor/setupNativeStyleEditor.js +++ b/packages/react-devtools-shared/src/backend/NativeStyleEditor/setupNativeStyleEditor.js @@ -194,7 +194,7 @@ function renameStyle( const {instance, style} = data; const newStyle = newName - ? {[oldName]: undefined, [newName]: value} + ? {[oldName]: (undefined: string | void), [newName]: value} : {[oldName]: undefined}; let customStyle; diff --git a/packages/react-devtools-shared/src/config/DevToolsFeatureFlags.core-fb.js b/packages/react-devtools-shared/src/config/DevToolsFeatureFlags.core-fb.js index 47e15953c9780..9cec3ce338c76 100644 --- a/packages/react-devtools-shared/src/config/DevToolsFeatureFlags.core-fb.js +++ b/packages/react-devtools-shared/src/config/DevToolsFeatureFlags.core-fb.js @@ -13,9 +13,9 @@ * It should always be imported from "react-devtools-feature-flags". ************************************************************************/ -export const enableLogger = true; -export const enableStyleXFeatures = true; -export const isInternalFacebookBuild = true; +export const enableLogger: boolean = true; +export const enableStyleXFeatures: boolean = true; +export const isInternalFacebookBuild: boolean = true; /************************************************************************ * Do not edit the code below. diff --git a/packages/react-devtools-shared/src/config/DevToolsFeatureFlags.core-oss.js b/packages/react-devtools-shared/src/config/DevToolsFeatureFlags.core-oss.js index e7ec62243adef..326b0fd16ccad 100644 --- a/packages/react-devtools-shared/src/config/DevToolsFeatureFlags.core-oss.js +++ b/packages/react-devtools-shared/src/config/DevToolsFeatureFlags.core-oss.js @@ -13,9 +13,9 @@ * It should always be imported from "react-devtools-feature-flags". ************************************************************************/ -export const enableLogger = false; -export const enableStyleXFeatures = false; -export const isInternalFacebookBuild = false; +export const enableLogger: boolean = false; +export const enableStyleXFeatures: boolean = false; +export const isInternalFacebookBuild: boolean = false; /************************************************************************ * Do not edit the code below. diff --git a/packages/react-devtools-shared/src/config/DevToolsFeatureFlags.default.js b/packages/react-devtools-shared/src/config/DevToolsFeatureFlags.default.js index bba2c8fcbfb05..e7355f8a3475b 100644 --- a/packages/react-devtools-shared/src/config/DevToolsFeatureFlags.default.js +++ b/packages/react-devtools-shared/src/config/DevToolsFeatureFlags.default.js @@ -13,6 +13,6 @@ * It should always be imported from "react-devtools-feature-flags". ************************************************************************/ -export const enableLogger = false; -export const enableStyleXFeatures = false; -export const isInternalFacebookBuild = false; +export const enableLogger: boolean = false; +export const enableStyleXFeatures: boolean = false; +export const isInternalFacebookBuild: boolean = false; diff --git a/packages/react-devtools-shared/src/config/DevToolsFeatureFlags.extension-fb.js b/packages/react-devtools-shared/src/config/DevToolsFeatureFlags.extension-fb.js index 55ea045715013..dc4f05d16fb80 100644 --- a/packages/react-devtools-shared/src/config/DevToolsFeatureFlags.extension-fb.js +++ b/packages/react-devtools-shared/src/config/DevToolsFeatureFlags.extension-fb.js @@ -13,9 +13,9 @@ * It should always be imported from "react-devtools-feature-flags". ************************************************************************/ -export const enableLogger = true; -export const enableStyleXFeatures = true; -export const isInternalFacebookBuild = true; +export const enableLogger: boolean = true; +export const enableStyleXFeatures: boolean = true; +export const isInternalFacebookBuild: boolean = true; /************************************************************************ * Do not edit the code below. diff --git a/packages/react-devtools-shared/src/config/DevToolsFeatureFlags.extension-oss.js b/packages/react-devtools-shared/src/config/DevToolsFeatureFlags.extension-oss.js index 75c8f149b3814..71df63eef0518 100644 --- a/packages/react-devtools-shared/src/config/DevToolsFeatureFlags.extension-oss.js +++ b/packages/react-devtools-shared/src/config/DevToolsFeatureFlags.extension-oss.js @@ -13,9 +13,9 @@ * It should always be imported from "react-devtools-feature-flags". ************************************************************************/ -export const enableLogger = false; -export const enableStyleXFeatures = false; -export const isInternalFacebookBuild = false; +export const enableLogger: boolean = false; +export const enableStyleXFeatures: boolean = false; +export const isInternalFacebookBuild: boolean = false; /************************************************************************ * Do not edit the code below. diff --git a/packages/react-devtools-timeline/src/content-views/constants.js b/packages/react-devtools-timeline/src/content-views/constants.js index ec1156605c2f6..1d68ab6edfe63 100644 --- a/packages/react-devtools-timeline/src/content-views/constants.js +++ b/packages/react-devtools-timeline/src/content-views/constants.js @@ -16,7 +16,7 @@ export const MARKER_TEXT_PADDING = 8; export const COLOR_HOVER_DIM_DELTA = 5; export const TOP_ROW_PADDING = 4; export const NATIVE_EVENT_HEIGHT = 14; -export const SUSPENSE_EVENT_HEIGHT = 14; +export const SUSPENSE_EVENT_HEIGHT: number = 14; export const PENDING_SUSPENSE_EVENT_SIZE = 8; export const REACT_EVENT_DIAMETER = 6; export const USER_TIMING_MARK_SIZE = 8; diff --git a/packages/react-devtools-timeline/src/utils/flow.js b/packages/react-devtools-timeline/src/utils/flow.js index 48d8cf8f02631..cfdd3688c9d55 100644 --- a/packages/react-devtools-timeline/src/utils/flow.js +++ b/packages/react-devtools-timeline/src/utils/flow.js @@ -6,8 +6,11 @@ * * @flow */ -import type {SchedulingEvent} from '../types'; +import type {ReactScheduleStateUpdateEvent, SchedulingEvent} from '../types'; -export function isStateUpdateEvent(event: SchedulingEvent): boolean %checks { +export function isStateUpdateEvent( + event: SchedulingEvent, + // eslint-disable-next-line +): event is ReactScheduleStateUpdateEvent { return event.type === 'schedule-state-update'; } diff --git a/packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js b/packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js index 568e892ad81ab..4d1e60e53a647 100644 --- a/packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js +++ b/packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js @@ -746,7 +746,7 @@ export const scheduleTimeout: any = typeof setTimeout === 'function' ? setTimeout : (undefined: any); export const cancelTimeout: any = typeof clearTimeout === 'function' ? clearTimeout : (undefined: any); -export const noTimeout = -1; +export const noTimeout: -1 = -1; const localPromise = typeof Promise === 'function' ? Promise : undefined; const localRequestAnimationFrame = typeof requestAnimationFrame === 'function' diff --git a/packages/react-dom-bindings/src/events/DOMPluginEventSystem.js b/packages/react-dom-bindings/src/events/DOMPluginEventSystem.js index 916786128dee8..e30c4798371da 100644 --- a/packages/react-dom-bindings/src/events/DOMPluginEventSystem.js +++ b/packages/react-dom-bindings/src/events/DOMPluginEventSystem.js @@ -407,7 +407,7 @@ export function listenToNativeEventForNonManagedEventTarget( isCapturePhaseListener: boolean, target: EventTarget, ): void { - let eventSystemFlags = IS_EVENT_HANDLE_NON_MANAGED_NODE; + let eventSystemFlags: number = IS_EVENT_HANDLE_NON_MANAGED_NODE; const listenerSet = getEventListenerSet(target); const listenerSetKey = getListenerSetKey( domEventName, diff --git a/packages/react-native-renderer/src/ReactFiberConfigFabric.js b/packages/react-native-renderer/src/ReactFiberConfigFabric.js index 3f2f0d192a882..4766c59b245f9 100644 --- a/packages/react-native-renderer/src/ReactFiberConfigFabric.js +++ b/packages/react-native-renderer/src/ReactFiberConfigFabric.js @@ -431,7 +431,7 @@ export const warnsIfNotActing = false; export const scheduleTimeout = setTimeout; export const cancelTimeout = clearTimeout; -export const noTimeout = -1; +export const noTimeout: -1 = -1; // ------------------- // Persistence diff --git a/packages/react-native-renderer/src/ReactFiberConfigNative.js b/packages/react-native-renderer/src/ReactFiberConfigNative.js index a4eb203b40eae..18a346495f640 100644 --- a/packages/react-native-renderer/src/ReactFiberConfigNative.js +++ b/packages/react-native-renderer/src/ReactFiberConfigNative.js @@ -326,7 +326,7 @@ export const warnsIfNotActing = true; export const scheduleTimeout = setTimeout; export const cancelTimeout = clearTimeout; -export const noTimeout = -1; +export const noTimeout: -1 = -1; export function shouldSetTextContent(type: string, props: Props): boolean { // TODO (bvaughn) Revisit this decision. diff --git a/packages/react-native-renderer/src/legacy-events/accumulate.js b/packages/react-native-renderer/src/legacy-events/accumulate.js index 2d954a7980fc8..94cc925671358 100644 --- a/packages/react-native-renderer/src/legacy-events/accumulate.js +++ b/packages/react-native-renderer/src/legacy-events/accumulate.js @@ -31,8 +31,7 @@ function accumulate( // Both are not empty. Warning: Never call x.concat(y) when you are not // certain that x is an Array (x could be a string with concat method). if (isArray(current)) { - /* $FlowFixMe[incompatible-return] if `current` is `T` and `T` an array, - * `isArray` might refine to the array element type of `T` */ + // $FlowFixMe[incompatible-use] `isArray` does not ensure array is mutable return current.concat(next); } diff --git a/packages/react-native-renderer/src/legacy-events/accumulateInto.js b/packages/react-native-renderer/src/legacy-events/accumulateInto.js index 419465bba0cea..3a36e69788c55 100644 --- a/packages/react-native-renderer/src/legacy-events/accumulateInto.js +++ b/packages/react-native-renderer/src/legacy-events/accumulateInto.js @@ -38,12 +38,12 @@ function accumulateInto( // certain that x is an Array (x could be a string with concat method). if (isArray(current)) { if (isArray(next)) { - // $FlowFixMe[prop-missing] `isArray` does not ensure array is mutable + // $FlowFixMe[incompatible-use] `isArray` does not ensure array is mutable // $FlowFixMe[method-unbinding] current.push.apply(current, next); return current; } - // $FlowFixMe[prop-missing] `isArray` does not ensure array is mutable + // $FlowFixMe[incompatible-use] `isArray` does not ensure array is mutable current.push(next); return current; } diff --git a/packages/react-reconciler/src/ReactFiber.js b/packages/react-reconciler/src/ReactFiber.js index ac25828400aa6..0af7ffb767bfb 100644 --- a/packages/react-reconciler/src/ReactFiber.js +++ b/packages/react-reconciler/src/ReactFiber.js @@ -522,7 +522,7 @@ export function createHostRootFiber( tag: RootTag, isStrictMode: boolean, ): Fiber { - let mode; + let mode: number; if (disableLegacyMode || tag === ConcurrentRoot) { mode = ConcurrentMode; if (isStrictMode === true) { @@ -551,7 +551,7 @@ export function createFiberFromTypeAndProps( mode: TypeOfMode, lanes: Lanes, ): Fiber { - let fiberTag = FunctionComponent; + let fiberTag: WorkTag = FunctionComponent; // The resolved type is set if we know what the final type will be. I.e. it's not lazy. let resolvedType = type; if (typeof type === 'function') { diff --git a/packages/react-reconciler/src/ReactFiberCacheComponent.js b/packages/react-reconciler/src/ReactFiberCacheComponent.js index c7e0c1a11d783..26398210528dd 100644 --- a/packages/react-reconciler/src/ReactFiberCacheComponent.js +++ b/packages/react-reconciler/src/ReactFiberCacheComponent.js @@ -20,8 +20,8 @@ import * as Scheduler from 'scheduler'; const AbortControllerLocal: typeof AbortController = typeof AbortController !== 'undefined' ? AbortController - : // $FlowFixMe[missing-this-annot] - // $FlowFixMe[prop-missing] + : // $FlowFixMe[incompatible-type] + // $FlowFixMe[missing-this-annot] function AbortControllerShim() { const listeners = []; const signal = (this.signal = { diff --git a/packages/react-reconciler/src/ReactFiberCommitWork.js b/packages/react-reconciler/src/ReactFiberCommitWork.js index b6716506a041d..8689f2eacf24d 100644 --- a/packages/react-reconciler/src/ReactFiberCommitWork.js +++ b/packages/react-reconciler/src/ReactFiberCommitWork.js @@ -283,6 +283,7 @@ import { untrackNamedViewTransition, } from './ReactFiberDuplicateViewTransitions'; import {markIndicatorHandled} from './ReactFiberRootScheduler'; +import type {Flags} from './ReactFiberFlags'; // Used during the commit phase to track the state of the Offscreen component stack. // Allows us to avoid traversing the return path to find the nearest Offscreen ancestor. @@ -4490,7 +4491,7 @@ export function commitPassiveUnmountEffects(finishedWork: Fiber): void { // Note that MaySuspendCommit and ShouldSuspendCommit also includes named // ViewTransitions so that we know to also visit those to collect appearing // pairs. -let suspenseyCommitFlag = ShouldSuspendCommit; +let suspenseyCommitFlag: Flags = ShouldSuspendCommit; export function accumulateSuspenseyCommit( finishedWork: Fiber, committedLanes: Lanes, diff --git a/packages/react-reconciler/src/ReactFiberCompleteWork.js b/packages/react-reconciler/src/ReactFiberCompleteWork.js index 645eaeb50a146..404fd86c9df54 100644 --- a/packages/react-reconciler/src/ReactFiberCompleteWork.js +++ b/packages/react-reconciler/src/ReactFiberCompleteWork.js @@ -190,6 +190,7 @@ import { popRootMarkerInstance, } from './ReactFiberTracingMarkerComponent'; import {suspendCommit} from './ReactFiberThenable'; +import type {Flags} from './ReactFiberFlags'; /** * Tag the fiber with an update effect. This turns a Placement into @@ -780,7 +781,7 @@ function bubbleProperties(completedWork: Fiber) { completedWork.alternate.child === completedWork.child; let newChildLanes: Lanes = NoLanes; - let subtreeFlags = NoFlags; + let subtreeFlags: Flags = NoFlags; if (!didBailout) { // Bubble up the earliest expiration time. diff --git a/packages/react-server/src/ReactServerStreamConfigBun.js b/packages/react-server/src/ReactServerStreamConfigBun.js index a8efb778e8767..ef53ca96236bc 100644 --- a/packages/react-server/src/ReactServerStreamConfigBun.js +++ b/packages/react-server/src/ReactServerStreamConfigBun.js @@ -86,6 +86,7 @@ export function byteLengthOfBinaryChunk(chunk: BinaryChunk): number { } export function closeWithError(destination: Destination, error: mixed): void { + // $FlowFixMe[method-unbinding] if (typeof destination.error === 'function') { // $FlowFixMe[incompatible-call]: This is an Error object or the destination accepts other types. destination.error(error); diff --git a/packages/react-test-renderer/src/ReactFiberConfigTestHost.js b/packages/react-test-renderer/src/ReactFiberConfigTestHost.js index 05fa9dffa3608..c0fed8ca9bbb0 100644 --- a/packages/react-test-renderer/src/ReactFiberConfigTestHost.js +++ b/packages/react-test-renderer/src/ReactFiberConfigTestHost.js @@ -268,7 +268,7 @@ export const warnsIfNotActing = true; export const scheduleTimeout = setTimeout; export const cancelTimeout = clearTimeout; -export const noTimeout = -1; +export const noTimeout: -1 = -1; // ------------------- // Mutation diff --git a/packages/react-test-renderer/src/ReactTestRenderer.js b/packages/react-test-renderer/src/ReactTestRenderer.js index dd5b4e8c97247..e843417e83b5b 100644 --- a/packages/react-test-renderer/src/ReactTestRenderer.js +++ b/packages/react-test-renderer/src/ReactTestRenderer.js @@ -61,6 +61,7 @@ import { } from 'shared/ReactFeatureFlags'; import noop from 'shared/noop'; +import type {WorkTag} from 'react-reconciler/src/ReactWorkTags'; const defaultOnDefaultTransitionIndicator: () => void | (() => void) = noop; @@ -244,7 +245,7 @@ function toTree(node: null | Fiber): $FlowFixMe { } } -const validWrapperTypes = new Set([ +const validWrapperTypes: Set = new Set([ FunctionComponent, ClassComponent, HostComponent, diff --git a/packages/react/index.development.js b/packages/react/index.development.js index 0f7703e5111d5..b4c0632b7fdc3 100644 --- a/packages/react/index.development.js +++ b/packages/react/index.development.js @@ -19,7 +19,6 @@ export type Portal = React$Portal; export type ElementProps = React$ElementProps; export type ElementConfig = React$ElementConfig; export type ElementRef = React$ElementRef; -export type Config = React$Config; export type ChildrenArray<+T> = $ReadOnlyArray> | T; // Export all exports so that they're available in tests. diff --git a/packages/react/index.js b/packages/react/index.js index 5228ae8868191..4eb8f2dfc240b 100644 --- a/packages/react/index.js +++ b/packages/react/index.js @@ -21,7 +21,6 @@ export type RefSetter<-I> = React$RefSetter; export type ElementProps = React$ElementProps; export type ElementConfig = React$ElementConfig; export type ElementRef = React$ElementRef; -export type Config = React$Config; export type ChildrenArray<+T> = $ReadOnlyArray> | T; export { diff --git a/packages/scheduler/src/forks/Scheduler.js b/packages/scheduler/src/forks/Scheduler.js index 8b34f26bd0551..dcbcc2cf528a2 100644 --- a/packages/scheduler/src/forks/Scheduler.js +++ b/packages/scheduler/src/forks/Scheduler.js @@ -83,7 +83,7 @@ var timerQueue: Array = []; var taskIdCounter = 1; var currentTask = null; -var currentPriorityLevel = NormalPriority; +var currentPriorityLevel: PriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrance. var isPerformingWork = false; @@ -441,7 +441,7 @@ let taskTimeoutID: TimeoutID = (-1: any); // thread, like user events. By default, it yields multiple times per frame. // It does not attempt to align with frame boundaries, since most tasks don't // need to be frame aligned; for those that do, use requestAnimationFrame. -let frameInterval = frameYieldMs; +let frameInterval: number = frameYieldMs; let startTime = -1; function shouldYieldToHost(): boolean { diff --git a/packages/scheduler/src/forks/SchedulerMock.js b/packages/scheduler/src/forks/SchedulerMock.js index b638bf1eaf519..a362b23e1b7ae 100644 --- a/packages/scheduler/src/forks/SchedulerMock.js +++ b/packages/scheduler/src/forks/SchedulerMock.js @@ -70,7 +70,7 @@ var timerQueue: Array = []; var taskIdCounter = 1; var currentTask = null; -var currentPriorityLevel = NormalPriority; +var currentPriorityLevel: PriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrance. var isPerformingWork = false; diff --git a/packages/scheduler/src/forks/SchedulerNative.js b/packages/scheduler/src/forks/SchedulerNative.js index 33f9ae3313534..1acee1f5f499d 100644 --- a/packages/scheduler/src/forks/SchedulerNative.js +++ b/packages/scheduler/src/forks/SchedulerNative.js @@ -10,17 +10,18 @@ import * as Scheduler from './Scheduler'; import type {Callback, Task} from './Scheduler'; import type {PriorityLevel} from '../SchedulerPriorities'; +import typeof * as PriorityLevels from '../SchedulerPriorities'; import typeof * as SchedulerExportsType from './Scheduler'; import typeof * as SchedulerNativeExportsType from './SchedulerNative'; // This type is supposed to reflect the actual methods and arguments currently supported by the C++ implementation: // https://github.com/facebook/react-native/blob/main/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeSchedulerBinding.cpp type NativeSchedulerType = { - unstable_ImmediatePriority: PriorityLevel, - unstable_UserBlockingPriority: PriorityLevel, - unstable_NormalPriority: PriorityLevel, - unstable_IdlePriority: PriorityLevel, - unstable_LowPriority: PriorityLevel, + unstable_ImmediatePriority: PriorityLevels['ImmediatePriority'], + unstable_UserBlockingPriority: PriorityLevels['UserBlockingPriority'], + unstable_NormalPriority: PriorityLevels['NormalPriority'], + unstable_IdlePriority: PriorityLevels['IdlePriority'], + unstable_LowPriority: PriorityLevels['LowPriority'], unstable_scheduleCallback: ( priorityLevel: PriorityLevel, callback: Callback, @@ -34,27 +35,27 @@ type NativeSchedulerType = { declare const nativeRuntimeScheduler: void | NativeSchedulerType; -export const unstable_UserBlockingPriority: PriorityLevel = +export const unstable_UserBlockingPriority: PriorityLevels['UserBlockingPriority'] = typeof nativeRuntimeScheduler !== 'undefined' ? nativeRuntimeScheduler.unstable_UserBlockingPriority : Scheduler.unstable_UserBlockingPriority; -export const unstable_NormalPriority: PriorityLevel = +export const unstable_NormalPriority: PriorityLevels['NormalPriority'] = typeof nativeRuntimeScheduler !== 'undefined' ? nativeRuntimeScheduler.unstable_NormalPriority : Scheduler.unstable_NormalPriority; -export const unstable_IdlePriority: PriorityLevel = +export const unstable_IdlePriority: PriorityLevels['IdlePriority'] = typeof nativeRuntimeScheduler !== 'undefined' ? nativeRuntimeScheduler.unstable_IdlePriority : Scheduler.unstable_IdlePriority; -export const unstable_LowPriority: PriorityLevel = +export const unstable_LowPriority: PriorityLevels['LowPriority'] = typeof nativeRuntimeScheduler !== 'undefined' ? nativeRuntimeScheduler.unstable_LowPriority : Scheduler.unstable_LowPriority; -export const unstable_ImmediatePriority: PriorityLevel = +export const unstable_ImmediatePriority: PriorityLevels['ImmediatePriority'] = typeof nativeRuntimeScheduler !== 'undefined' ? nativeRuntimeScheduler.unstable_ImmediatePriority : Scheduler.unstable_ImmediatePriority; diff --git a/packages/scheduler/src/forks/SchedulerPostTask.js b/packages/scheduler/src/forks/SchedulerPostTask.js index 7465c38b92f8a..e72df5f36413c 100644 --- a/packages/scheduler/src/forks/SchedulerPostTask.js +++ b/packages/scheduler/src/forks/SchedulerPostTask.js @@ -55,7 +55,7 @@ export const unstable_now = getCurrentTime; const yieldInterval = 5; let deadline = 0; -let currentPriorityLevel_DEPRECATED = NormalPriority; +let currentPriorityLevel_DEPRECATED: PriorityLevel = NormalPriority; // Always yield at the end of the frame. export function unstable_shouldYield(): boolean { diff --git a/packages/shared/ReactFeatureFlags.js b/packages/shared/ReactFeatureFlags.js index 5dd612837a6b9..fb997f239ab8d 100644 --- a/packages/shared/ReactFeatureFlags.js +++ b/packages/shared/ReactFeatureFlags.js @@ -22,7 +22,7 @@ // when it rolls out to prod. We should remove these as soon as possible. // ----------------------------------------------------------------------------- -export const enableHydrationLaneScheduling = true; +export const enableHydrationLaneScheduling: boolean = true; // ----------------------------------------------------------------------------- // Land or remove (moderate effort) @@ -32,7 +32,7 @@ export const enableHydrationLaneScheduling = true; // ----------------------------------------------------------------------------- // Need to remove didTimeout argument from Scheduler before landing -export const disableSchedulerTimeoutInWorkLoop = false; +export const disableSchedulerTimeoutInWorkLoop: boolean = false; // ----------------------------------------------------------------------------- // Slated for removal in the future (significant effort) @@ -49,16 +49,16 @@ export const disableSchedulerTimeoutInWorkLoop = false; // hydrated or deleted. // // This will eventually be replaced by the Transition Tracing proposal. -export const enableSuspenseCallback = false; +export const enableSuspenseCallback: boolean = false; // Experimental Scope support. -export const enableScopeAPI = false; +export const enableScopeAPI: boolean = false; // Experimental Create Event Handle API. -export const enableCreateEventHandleAPI = false; +export const enableCreateEventHandleAPI: boolean = false; // Support legacy Primer support on internal FB www -export const enableLegacyFBSupport = false; +export const enableLegacyFBSupport: boolean = false; // ----------------------------------------------------------------------------- // Ongoing experiments @@ -69,10 +69,10 @@ export const enableLegacyFBSupport = false; // Yield to the browser event loop and not just the scheduler event loop before passive effects. // Fix gated tests that fail with this flag enabled before turning it back on. -export const enableYieldingBeforePassive = false; +export const enableYieldingBeforePassive: boolean = false; // Experiment to intentionally yield less to block high framerate animations. -export const enableThrottledScheduling = false; +export const enableThrottledScheduling: boolean = false; export const enableLegacyCache = __EXPERIMENTAL__; @@ -90,7 +90,7 @@ export const enableGestureTransition = __EXPERIMENTAL__; export const enableScrollEndPolyfill = __EXPERIMENTAL__; -export const enableSuspenseyImages = false; +export const enableSuspenseyImages: boolean = false; export const enableFizzBlockingRender = __EXPERIMENTAL__; // rel="expect" @@ -103,20 +103,20 @@ export const enableDefaultTransitionIndicator = __EXPERIMENTAL__; /** * Switches Fiber creation to a simple object instead of a constructor. */ -export const enableObjectFiber = false; +export const enableObjectFiber: boolean = false; -export const enableTransitionTracing = false; +export const enableTransitionTracing: boolean = false; // FB-only usage. The new API has different semantics. -export const enableLegacyHidden = false; +export const enableLegacyHidden: boolean = false; // Enables unstable_avoidThisFallback feature in Fiber -export const enableSuspenseAvoidThisFallback = false; +export const enableSuspenseAvoidThisFallback: boolean = false; export const enableCPUSuspense = __EXPERIMENTAL__; // Test this at Meta before enabling. -export const enableNoCloningMemoCache = false; +export const enableNoCloningMemoCache: boolean = false; export const enableUseEffectEventHook = __EXPERIMENTAL__; @@ -125,22 +125,22 @@ export const enableUseEffectEventHook = __EXPERIMENTAL__; // (handled with an MutationObserver) instead of inline-scripts export const enableFizzExternalRuntime = __EXPERIMENTAL__; -export const alwaysThrottleRetries = true; +export const alwaysThrottleRetries: boolean = true; -export const passChildrenWhenCloningPersistedNodes = false; +export const passChildrenWhenCloningPersistedNodes: boolean = false; /** * Enables a new Fiber flag used in persisted mode to reduce the number * of cloned host components. */ -export const enablePersistedModeClonedFlag = false; +export const enablePersistedModeClonedFlag: boolean = false; -export const enableEagerAlternateStateNodeCleanup = true; +export const enableEagerAlternateStateNodeCleanup: boolean = true; /** * Enables an expiration time for retry lanes to avoid starvation. */ -export const enableRetryLaneExpiration = false; +export const enableRetryLaneExpiration: boolean = false; export const retryLaneExpirationMs = 5000; export const syncLaneExpirationMs = 250; export const transitionLaneExpirationMs = 5000; @@ -149,7 +149,7 @@ export const transitionLaneExpirationMs = 5000; * Enables a new error detection for infinite render loops from updates caused * by setState or similar outside of the component owning the state. */ -export const enableInfiniteRenderLoopDetection = false; +export const enableInfiniteRenderLoopDetection: boolean = false; export const enableFragmentRefs = __EXPERIMENTAL__; @@ -166,35 +166,35 @@ export const enableFragmentRefs = __EXPERIMENTAL__; // const __NEXT_MAJOR__ = __EXPERIMENTAL__; // Renames the internal symbol for elements since they have changed signature/constructor -export const renameElementSymbol = true; +export const renameElementSymbol: boolean = true; /** * Enables a fix to run insertion effect cleanup on hidden subtrees. */ -export const enableHiddenSubtreeInsertionEffectCleanup = false; +export const enableHiddenSubtreeInsertionEffectCleanup: boolean = false; /** * Removes legacy style context defined using static `contextTypes` and consumed with static `childContextTypes`. */ -export const disableLegacyContext = true; +export const disableLegacyContext: boolean = true; /** * Removes legacy style context just from function components. */ -export const disableLegacyContextForFunctionComponents = true; +export const disableLegacyContextForFunctionComponents: boolean = true; // Enable the moveBefore() alternative to insertBefore(). This preserves states of moves. -export const enableMoveBefore = false; +export const enableMoveBefore: boolean = false; // Disabled caching behavior of `react/cache` in client runtimes. -export const disableClientCache = true; +export const disableClientCache: boolean = true; // Warn on any usage of ReactTestRenderer -export const enableReactTestRendererWarning = true; +export const enableReactTestRendererWarning: boolean = true; // Disables legacy mode // This allows us to land breaking changes to remove legacy mode APIs in experimental builds // before removing them in stable in the next Major -export const disableLegacyMode = true; +export const disableLegacyMode: boolean = true; // ----------------------------------------------------------------------------- // Chopping Block @@ -212,16 +212,16 @@ export const disableLegacyMode = true; // Disable support for comment nodes as React DOM containers. Already disabled // in open source, but www codebase still relies on it. Need to remove. -export const disableCommentsAsDOMContainers = true; +export const disableCommentsAsDOMContainers: boolean = true; -export const enableTrustedTypesIntegration = false; +export const enableTrustedTypesIntegration: boolean = false; // Prevent the value and checked attributes from syncing with their related // DOM properties -export const disableInputAttributeSyncing = false; +export const disableInputAttributeSyncing: boolean = false; // Disables children for