From f0dbef284b74bc865070dc5c4b90631756ec8dd6 Mon Sep 17 00:00:00 2001 From: George Zahariev Date: Mon, 17 Apr 2023 09:20:49 -0700 Subject: [PATCH] Codemod `$Shape` to `Partial` in Relay files, suppressing errors Reviewed By: SamChou19815 Differential Revision: D44976718 fbshipit-source-id: 1bb01ae431c7cef5f3a9b0f3f6d420b12bc397dc --- packages/react-relay/ReactRelayQueryRenderer.js | 11 ++++++++--- .../LazyLoadEntryPointContainer_DEPRECATED.react.js | 6 ++++-- .../useBlockingPaginationFragment-flowtest.js | 5 +++++ .../__flowtests__/usePaginationFragment-flowtest.js | 5 +++++ .../__flowtests__/useRefetchableFragment-flowtest.js | 2 ++ packages/react-relay/relay-hooks/loadEntryPoint.js | 6 ++++-- .../relay-hooks/prepareEntryPoint_DEPRECATED.js | 6 ++++-- .../relay-hooks/useBlockingPaginationFragment.js | 3 ++- .../react-relay/relay-hooks/useLoadMoreFunction.js | 4 ++-- .../react-relay/relay-hooks/useRefetchableFragment.js | 3 ++- .../relay-hooks/useRefetchableFragmentNode.js | 2 +- 11 files changed, 39 insertions(+), 14 deletions(-) diff --git a/packages/react-relay/ReactRelayQueryRenderer.js b/packages/react-relay/ReactRelayQueryRenderer.js index f82a203fa8423..9489f79c42534 100644 --- a/packages/react-relay/ReactRelayQueryRenderer.js +++ b/packages/react-relay/ReactRelayQueryRenderer.js @@ -131,6 +131,7 @@ class ReactRelayQueryRenderer extends React.Component { this._maybeHiddenOrFastRefresh = false; + // $FlowFixMe[incompatible-type] this.state = { prevPropsEnvironment: props.environment, prevPropsVariables: props.variables, @@ -149,7 +150,7 @@ class ReactRelayQueryRenderer extends React.Component { static getDerivedStateFromProps( nextProps: Props, prevState: State, - ): $Shape | null { + ): Partial | null { if ( prevState.prevQuery !== nextProps.query || prevState.prevPropsEnvironment !== nextProps.environment || @@ -175,6 +176,7 @@ class ReactRelayQueryRenderer extends React.Component { const {requestCacheKey, queryFetcher} = newState; if (requestCacheKey != null && requestCache[requestCacheKey] != null) { if (RelayFeatureFlags.ENABLE_QUERY_RENDERER_SET_STATE_PREVENTION) { + // $FlowFixMe[incompatible-use] const fetchResult = queryFetcher.getFetchResult(); if (fetchResult != null) { const snapshot = fetchResult.snapshot ?? null; @@ -188,15 +190,18 @@ class ReactRelayQueryRenderer extends React.Component { newState.renderProps = getRenderProps( error, snapshot, + // $FlowFixMe[incompatible-call] queryFetcher, prevState.retryCallbacks, ); newState.snapshot = snapshot; newState.requestCacheKey = null; } else { + // $FlowFixMe[incompatible-use] queryFetcher.setOnDataChange(this._handleDataChange); } } else { + // $FlowFixMe[incompatible-use] queryFetcher.setOnDataChange(this._handleDataChange); } } @@ -366,7 +371,7 @@ function getRequestCacheKey( function resetQueryStateForUpdate( props: Props, prevState: State, -): $Shape { +): Partial { const {query} = props; const prevSelectionReferences = @@ -403,7 +408,7 @@ function fetchQueryAndComputeStateFromProps( queryFetcher: ReactRelayQueryFetcher, retryCallbacks: RetryCallbacks, requestCacheKey: ?string, -): $Shape { +): Partial { const {environment, query, variables, cacheConfig} = props; const genericEnvironment = (environment: IEnvironment); if (query) { diff --git a/packages/react-relay/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js b/packages/react-relay/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js index 293b339d8bfae..4b705537430de 100644 --- a/packages/react-relay/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js +++ b/packages/react-relay/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js @@ -85,8 +85,10 @@ function prepareEntryPoint< } const preloadProps = entryPoint.getPreloadProps(entryPointParams); const {queries, entryPoints, extraProps} = preloadProps; - const preloadedQueries: $Shape = {}; - const preloadedEntryPoints: $Shape = {}; + // $FlowFixMe[incompatible-type] + const preloadedQueries: Partial = {}; + // $FlowFixMe[incompatible-type] + const preloadedEntryPoints: Partial = {}; if (queries != null) { const queriesPropNames = Object.keys(queries); queriesPropNames.forEach(queryPropName => { diff --git a/packages/react-relay/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js b/packages/react-relay/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js index 89d267a360a92..8b679e3ce6f08 100644 --- a/packages/react-relay/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js +++ b/packages/react-relay/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js @@ -45,6 +45,8 @@ type ExpectedReturnType< /* eslint-disable react-hooks/rules-of-hooks */ // Nullability of returned data type is correct +// $FlowFixMe[prop-missing] +// $FlowFixMe[incompatible-cast] (useBlockingPaginationFragment( refetchableFragmentInput, keyNonNullable, @@ -112,9 +114,12 @@ const {loadNext} = useBlockingPaginationFragment( ); // Accepts extraVariables loadNext(10, { + // $FlowFixMe[prop-missing] + // $FlowFixMe[incompatible-call] UNSTABLE_extraVariables: extraVariables, }); +// $FlowFixMe[prop-missing] loadNext(10, { // $FlowExpectedError: doesn't accept variables not available in the Flow type UNSTABLE_extraVariables: invalidVariables, diff --git a/packages/react-relay/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js b/packages/react-relay/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js index 5c2cccd49f55a..32baf5fe1ffe4 100644 --- a/packages/react-relay/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js +++ b/packages/react-relay/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js @@ -47,6 +47,8 @@ type ExpectedReturnType< /* eslint-disable react-hooks/rules-of-hooks */ // Nullability of returned data type is correct +// $FlowFixMe[prop-missing] +// $FlowFixMe[incompatible-cast] (usePaginationFragment( refetchableFragmentInput, keyNonNullable, @@ -113,9 +115,12 @@ const {loadNext} = usePaginationFragment( ); // Accepts extraVariables loadNext(10, { + // $FlowFixMe[prop-missing] + // $FlowFixMe[incompatible-call] UNSTABLE_extraVariables: extraVariables, }); +// $FlowFixMe[prop-missing] loadNext(10, { // $FlowExpectedError: doesn't accept variables not available in the Flow type UNSTABLE_extraVariables: invalidVariables, diff --git a/packages/react-relay/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js b/packages/react-relay/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js index 5fa4f41928044..0e0bf981f10f4 100644 --- a/packages/react-relay/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js +++ b/packages/react-relay/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js @@ -31,6 +31,8 @@ import { /* eslint-disable react-hooks/rules-of-hooks */ // Nullability of returned data type is correct +// $FlowFixMe[prop-missing] +// $FlowFixMe[incompatible-cast] (useRefetchableFragment(refetchableFragmentInput, keyNonNullable): [ NonNullableData, FetchFn, diff --git a/packages/react-relay/relay-hooks/loadEntryPoint.js b/packages/react-relay/relay-hooks/loadEntryPoint.js index 3ee355f217fe1..208e01705d05c 100644 --- a/packages/react-relay/relay-hooks/loadEntryPoint.js +++ b/packages/react-relay/relay-hooks/loadEntryPoint.js @@ -46,8 +46,10 @@ function loadEntryPoint< } const preloadProps = entryPoint.getPreloadProps(entryPointParams); const {queries, entryPoints, extraProps} = preloadProps; - const preloadedQueries: $Shape = {}; - const preloadedEntryPoints: $Shape = {}; + // $FlowFixMe[incompatible-type] + const preloadedQueries: Partial = {}; + // $FlowFixMe[incompatible-type] + const preloadedEntryPoints: Partial = {}; if (queries != null) { const queriesPropNames = Object.keys(queries); queriesPropNames.forEach(queryPropName => { diff --git a/packages/react-relay/relay-hooks/prepareEntryPoint_DEPRECATED.js b/packages/react-relay/relay-hooks/prepareEntryPoint_DEPRECATED.js index 1b71f0d03ff77..3a4638d88600d 100644 --- a/packages/react-relay/relay-hooks/prepareEntryPoint_DEPRECATED.js +++ b/packages/react-relay/relay-hooks/prepareEntryPoint_DEPRECATED.js @@ -45,8 +45,10 @@ function prepareEntryPoint< } const preloadProps = entryPoint.getPreloadProps(entryPointParams); const {queries, entryPoints} = preloadProps; - const preloadedQueries: $Shape = {}; - const preloadedEntryPoints: $Shape = {}; + // $FlowFixMe[incompatible-type] + const preloadedQueries: Partial = {}; + // $FlowFixMe[incompatible-type] + const preloadedEntryPoints: Partial = {}; if (queries != null) { const queriesPropNames = Object.keys(queries); queriesPropNames.forEach(queryPropName => { diff --git a/packages/react-relay/relay-hooks/useBlockingPaginationFragment.js b/packages/react-relay/relay-hooks/useBlockingPaginationFragment.js index 226d1026c02e5..c74b749c53a2a 100644 --- a/packages/react-relay/relay-hooks/useBlockingPaginationFragment.js +++ b/packages/react-relay/relay-hooks/useBlockingPaginationFragment.js @@ -39,7 +39,7 @@ type RefetchVariables = // - non-nullable if the provided ref type is nullable, and the caller need to provide the full set of variables // prettier-ignore $Call< - & (( { +$fragmentSpreads: TFragmentType, ... }) => $Shape) + & (( { +$fragmentSpreads: TFragmentType, ... }) => Partial) & ((?{ +$fragmentSpreads: TFragmentType, ... }) => TVariables), TKey, >; @@ -157,6 +157,7 @@ function useBlockingPaginationFragment< (variables: TVariables, options: void | Options) => { disposeFetchNext(); disposeFetchPrevious(); + // $FlowFixMe[incompatible-variance] return refetch(variables, {...options, __environment: undefined}); }, [disposeFetchNext, disposeFetchPrevious, refetch], diff --git a/packages/react-relay/relay-hooks/useLoadMoreFunction.js b/packages/react-relay/relay-hooks/useLoadMoreFunction.js index 416aca20fba98..acb04a6d58d35 100644 --- a/packages/react-relay/relay-hooks/useLoadMoreFunction.js +++ b/packages/react-relay/relay-hooks/useLoadMoreFunction.js @@ -42,7 +42,7 @@ export type LoadMoreFn = ( count: number, options?: { onComplete?: (Error | null) => void, - UNSTABLE_extraVariables?: $Shape, + UNSTABLE_extraVariables?: Partial, }, ) => Disposable; @@ -125,7 +125,7 @@ function useLoadMoreFunction( ( count: number, options: void | { - UNSTABLE_extraVariables?: $Shape, + UNSTABLE_extraVariables?: Partial, onComplete?: (Error | null) => void, }, ) => { diff --git a/packages/react-relay/relay-hooks/useRefetchableFragment.js b/packages/react-relay/relay-hooks/useRefetchableFragment.js index 731d30389d702..de312c40556b3 100644 --- a/packages/react-relay/relay-hooks/useRefetchableFragment.js +++ b/packages/react-relay/relay-hooks/useRefetchableFragment.js @@ -31,7 +31,7 @@ type RefetchVariables = // - non-nullable if the provided ref type is non-nullable // prettier-ignore $Call< - & (( { +$fragmentSpreads: TFragmentType, ... }) => $Shape) + & (( { +$fragmentSpreads: TFragmentType, ... }) => Partial) & ((?{ +$fragmentSpreads: TFragmentType, ... }) => TVariables), TKey, >; @@ -100,6 +100,7 @@ function useRefetchableFragment_LEGACY< // $FlowFixMe[incompatible-return] // $FlowFixMe[prop-missing] + // $FlowFixMe[incompatible-variance] return [fragmentData, refetch]; } diff --git a/packages/react-relay/relay-hooks/useRefetchableFragmentNode.js b/packages/react-relay/relay-hooks/useRefetchableFragmentNode.js index b7c6ead508e7c..b7c3ac014424e 100644 --- a/packages/react-relay/relay-hooks/useRefetchableFragmentNode.js +++ b/packages/react-relay/relay-hooks/useRefetchableFragmentNode.js @@ -100,7 +100,7 @@ type RefetchFnExact = RefetchFnBase< type RefetchFnInexact< TQuery: OperationType, TOptions = Options, -> = RefetchFnBase<$Shape>, TOptions>; +> = RefetchFnBase>, TOptions>; type Action = | {