react-relay 14.0.0 → 14.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/ReactRelayContainerUtils.js.flow +0 -2
  2. package/ReactRelayContext.js +1 -1
  3. package/ReactRelayContext.js.flow +0 -2
  4. package/ReactRelayFragmentContainer.js.flow +0 -2
  5. package/ReactRelayFragmentMockRenderer.js.flow +0 -2
  6. package/ReactRelayLocalQueryRenderer.js.flow +0 -2
  7. package/ReactRelayPaginationContainer.js.flow +0 -2
  8. package/ReactRelayQueryFetcher.js.flow +9 -11
  9. package/ReactRelayQueryRenderer.js.flow +10 -12
  10. package/ReactRelayQueryRendererContext.js.flow +1 -3
  11. package/ReactRelayRefetchContainer.js.flow +0 -4
  12. package/ReactRelayTestMocker.js.flow +0 -2
  13. package/ReactRelayTypes.js.flow +6 -8
  14. package/RelayContext.js.flow +0 -2
  15. package/__flowtests__/ReactRelayFragmentContainer-flowtest.js.flow +2 -4
  16. package/__flowtests__/ReactRelayPaginationContainer-flowtest.js.flow +3 -5
  17. package/__flowtests__/ReactRelayRefetchContainer-flowtest.js.flow +3 -5
  18. package/__flowtests__/RelayModern-flowtest.js.flow +2 -4
  19. package/__flowtests__/RelayModernFlowtest_badref.graphql.js.flow +2 -4
  20. package/__flowtests__/RelayModernFlowtest_notref.graphql.js.flow +2 -4
  21. package/__flowtests__/RelayModernFlowtest_user.graphql.js.flow +2 -4
  22. package/__flowtests__/RelayModernFlowtest_users.graphql.js.flow +2 -4
  23. package/assertFragmentMap.js.flow +0 -2
  24. package/buildReactRelayContainer.js.flow +0 -2
  25. package/getRootVariablesForFragments.js.flow +0 -2
  26. package/hooks.js +1 -1
  27. package/hooks.js.flow +0 -2
  28. package/index.js +1 -1
  29. package/index.js.flow +2 -2
  30. package/isRelayEnvironment.js.flow +0 -2
  31. package/legacy.js +1 -1
  32. package/legacy.js.flow +0 -2
  33. package/lib/ReactRelayContainerUtils.js +0 -1
  34. package/lib/ReactRelayContext.js +0 -1
  35. package/lib/ReactRelayFragmentContainer.js +10 -9
  36. package/lib/ReactRelayFragmentMockRenderer.js +0 -1
  37. package/lib/ReactRelayLocalQueryRenderer.js +0 -1
  38. package/lib/ReactRelayPaginationContainer.js +14 -11
  39. package/lib/ReactRelayQueryFetcher.js +1 -2
  40. package/lib/ReactRelayQueryRenderer.js +1 -2
  41. package/lib/ReactRelayQueryRendererContext.js +0 -1
  42. package/lib/ReactRelayRefetchContainer.js +11 -14
  43. package/lib/ReactRelayTestMocker.js +1 -2
  44. package/lib/ReactRelayTypes.js +0 -1
  45. package/lib/RelayContext.js +0 -1
  46. package/lib/assertFragmentMap.js +0 -1
  47. package/lib/buildReactRelayContainer.js +1 -2
  48. package/lib/getRootVariablesForFragments.js +1 -2
  49. package/lib/hooks.js +0 -1
  50. package/lib/index.js +3 -1
  51. package/lib/isRelayEnvironment.js +0 -1
  52. package/lib/legacy.js +0 -1
  53. package/lib/multi-actor/useRelayActorEnvironment.js +0 -1
  54. package/lib/readContext.js +0 -1
  55. package/lib/relay-hooks/EntryPointContainer.react.js +0 -1
  56. package/lib/relay-hooks/EntryPointTypes.flow.js +0 -1
  57. package/lib/relay-hooks/FragmentResource.js +7 -7
  58. package/lib/relay-hooks/HooksImplementation.js +1 -1
  59. package/lib/relay-hooks/InternalLogger.js +0 -1
  60. package/lib/relay-hooks/LRUCache.js +0 -1
  61. package/lib/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js +0 -1
  62. package/lib/relay-hooks/MatchContainer.js +1 -2
  63. package/lib/relay-hooks/ProfilerContext.js +0 -1
  64. package/lib/relay-hooks/QueryResource.js +1 -2
  65. package/lib/relay-hooks/RelayEnvironmentProvider.js +0 -1
  66. package/lib/relay-hooks/SuspenseResource.js +1 -2
  67. package/lib/relay-hooks/loadQuery.js +1 -1
  68. package/lib/relay-hooks/preloadQuery_DEPRECATED.js +1 -2
  69. package/lib/relay-hooks/prepareEntryPoint_DEPRECATED.js +0 -1
  70. package/lib/relay-hooks/react-cache/RelayReactCache.js +0 -1
  71. package/lib/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js +3 -3
  72. package/lib/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js +239 -0
  73. package/lib/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js +183 -125
  74. package/lib/relay-hooks/react-cache/useFragment_REACT_CACHE.js +0 -1
  75. package/lib/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js +0 -1
  76. package/lib/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js +150 -0
  77. package/lib/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js +0 -1
  78. package/lib/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js +367 -0
  79. package/lib/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js +45 -0
  80. package/lib/relay-hooks/useBlockingPaginationFragment.js +4 -3
  81. package/lib/relay-hooks/useClientQuery.js +33 -0
  82. package/lib/relay-hooks/useEntryPointLoader.js +1 -2
  83. package/lib/relay-hooks/useFetchTrackingRef.js +0 -1
  84. package/lib/relay-hooks/useFragment.js +0 -1
  85. package/lib/relay-hooks/useFragmentNode.js +0 -1
  86. package/lib/relay-hooks/useIsMountedRef.js +0 -1
  87. package/lib/relay-hooks/useLazyLoadQuery.js +1 -15
  88. package/lib/relay-hooks/useLazyLoadQueryNode.js +0 -1
  89. package/lib/relay-hooks/useLoadMoreFunction.js +1 -2
  90. package/lib/relay-hooks/useMemoOperationDescriptor.js +0 -1
  91. package/lib/relay-hooks/useMemoVariables.js +0 -1
  92. package/lib/relay-hooks/useMutation.js +1 -2
  93. package/lib/relay-hooks/usePaginationFragment.js +15 -3
  94. package/lib/relay-hooks/usePreloadedQuery.js +1 -15
  95. package/lib/relay-hooks/useQueryLoader.js +1 -2
  96. package/lib/relay-hooks/useRefetchableFragment.js +14 -2
  97. package/lib/relay-hooks/useRefetchableFragmentNode.js +1 -2
  98. package/lib/relay-hooks/useRelayEnvironment.js +0 -1
  99. package/lib/relay-hooks/useStaticFragmentNodeWarning.js +0 -1
  100. package/lib/relay-hooks/useSubscribeToInvalidationState.js +0 -1
  101. package/lib/relay-hooks/useSubscription.js +0 -1
  102. package/multi-actor/useRelayActorEnvironment.js.flow +0 -2
  103. package/package.json +2 -2
  104. package/react-relay-hooks.js +2 -2
  105. package/react-relay-hooks.min.js +2 -2
  106. package/react-relay-legacy.js +2 -2
  107. package/react-relay-legacy.min.js +2 -2
  108. package/react-relay.js +2 -2
  109. package/react-relay.min.js +2 -2
  110. package/readContext.js.flow +0 -2
  111. package/relay-hooks/EntryPointContainer.react.js.flow +2 -4
  112. package/relay-hooks/EntryPointTypes.flow.js.flow +30 -32
  113. package/relay-hooks/FragmentResource.js.flow +9 -11
  114. package/relay-hooks/HooksImplementation.js.flow +6 -8
  115. package/relay-hooks/InternalLogger.js.flow +0 -2
  116. package/relay-hooks/LRUCache.js.flow +0 -2
  117. package/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js.flow +4 -6
  118. package/relay-hooks/MatchContainer.js.flow +5 -7
  119. package/relay-hooks/ProfilerContext.js.flow +0 -2
  120. package/relay-hooks/QueryResource.js.flow +4 -6
  121. package/relay-hooks/RelayEnvironmentProvider.js.flow +2 -4
  122. package/relay-hooks/SuspenseResource.js.flow +0 -2
  123. package/relay-hooks/__flowtests__/EntryPointTypes/EntryPointElementConfig-flowtest.js.flow +3 -3
  124. package/relay-hooks/__flowtests__/EntryPointTypes/NestedEntrypoints-flowtest.js.flow +2 -2
  125. package/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js.flow +4 -6
  126. package/relay-hooks/__flowtests__/useFragment-flowtest.js.flow +0 -2
  127. package/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js.flow +4 -6
  128. package/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js.flow +0 -2
  129. package/relay-hooks/__flowtests__/utils.js.flow +8 -10
  130. package/relay-hooks/preloadQuery_DEPRECATED.js.flow +4 -6
  131. package/relay-hooks/prepareEntryPoint_DEPRECATED.js.flow +0 -2
  132. package/relay-hooks/react-cache/RelayReactCache.js.flow +0 -2
  133. package/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js.flow +22 -16
  134. package/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js.flow +297 -0
  135. package/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js.flow +134 -94
  136. package/relay-hooks/react-cache/useFragment_REACT_CACHE.js.flow +0 -2
  137. package/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js.flow +2 -4
  138. package/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js.flow +171 -0
  139. package/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js.flow +2 -4
  140. package/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js.flow +595 -0
  141. package/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js.flow +65 -0
  142. package/relay-hooks/useBlockingPaginationFragment.js.flow +4 -6
  143. package/relay-hooks/useClientQuery.js.flow +39 -0
  144. package/relay-hooks/useEntryPointLoader.js.flow +6 -8
  145. package/relay-hooks/useFetchTrackingRef.js.flow +2 -4
  146. package/relay-hooks/useFragment.js.flow +0 -2
  147. package/relay-hooks/useFragmentNode.js.flow +2 -4
  148. package/relay-hooks/useIsMountedRef.js.flow +1 -3
  149. package/relay-hooks/useLazyLoadQuery.js.flow +7 -30
  150. package/relay-hooks/useLazyLoadQueryNode.js.flow +2 -4
  151. package/relay-hooks/useLoadMoreFunction.js.flow +6 -8
  152. package/relay-hooks/useMemoOperationDescriptor.js.flow +0 -2
  153. package/relay-hooks/useMemoVariables.js.flow +0 -2
  154. package/relay-hooks/useMutation.js.flow +2 -4
  155. package/relay-hooks/usePaginationFragment.js.flow +44 -19
  156. package/relay-hooks/usePreloadedQuery.js.flow +5 -24
  157. package/relay-hooks/useQueryLoader.js.flow +4 -6
  158. package/relay-hooks/useRefetchableFragment.js.flow +32 -3
  159. package/relay-hooks/useRefetchableFragmentNode.js.flow +16 -18
  160. package/relay-hooks/useRelayEnvironment.js.flow +0 -2
  161. package/relay-hooks/useStaticFragmentNodeWarning.js.flow +0 -2
  162. package/relay-hooks/useSubscribeToInvalidationState.js.flow +0 -2
  163. package/relay-hooks/useSubscription.js.flow +0 -2
@@ -11,19 +11,17 @@
11
11
 
12
12
  'use strict';
13
13
 
14
- // flowlint ambiguous-object-type:error
15
-
16
14
  import typeof useFragment from './useFragment';
17
- import type {UseLazyLoadQueryHookType} from './useLazyLoadQuery';
18
- import type {UsePreloadedQueryHookType} from './usePreloadedQuery';
15
+ import type {UsePaginationFragmentType} from './usePaginationFragment';
16
+ import type {UseRefetchableFragmentType} from './useRefetchableFragment';
19
17
 
20
18
  const warning = require('warning');
21
19
 
22
- type HooksImplementation = {|
20
+ type HooksImplementation = {
23
21
  useFragment: useFragment,
24
- useLazyLoadQuery: UseLazyLoadQueryHookType,
25
- usePreloadedQuery: UsePreloadedQueryHookType,
26
- |};
22
+ usePaginationFragment: UsePaginationFragmentType,
23
+ useRefetchableFragment: UseRefetchableFragmentType,
24
+ };
27
25
 
28
26
  let implementation: HooksImplementation | null = null;
29
27
 
@@ -9,8 +9,6 @@
9
9
  * @format
10
10
  */
11
11
 
12
- // flowlint ambiguous-object-type:error
13
-
14
12
  'use strict';
15
13
 
16
14
  type LogEvent = (eventData: string) => void;
@@ -9,8 +9,6 @@
9
9
  * @format
10
10
  */
11
11
 
12
- // flowlint ambiguous-object-type:error
13
-
14
12
  'use strict';
15
13
 
16
14
  const invariant = require('invariant');
@@ -9,8 +9,6 @@
9
9
  * @format
10
10
  */
11
11
 
12
- // flowlint ambiguous-object-type:error
13
-
14
12
  'use strict';
15
13
 
16
14
  import type {
@@ -27,13 +25,13 @@ const React = require('react');
27
25
  const {useContext, useEffect, useMemo} = require('react');
28
26
  const {stableCopy} = require('relay-runtime');
29
27
 
30
- type PreloadedEntryPoint<TEntryPointComponent> = $ReadOnly<{|
28
+ type PreloadedEntryPoint<TEntryPointComponent> = $ReadOnly<{
31
29
  entryPoints: React.ElementConfig<TEntryPointComponent>['entryPoints'],
32
30
  extraProps: React.ElementConfig<TEntryPointComponent>['extraProps'],
33
31
  getComponent: () => TEntryPointComponent,
34
32
  queries: React.ElementConfig<TEntryPointComponent>['queries'],
35
33
  rootModuleID: string,
36
- |}>;
34
+ }>;
37
35
 
38
36
  type EntryPointContainerProps<
39
37
  TEntryPointParams,
@@ -42,7 +40,7 @@ type EntryPointContainerProps<
42
40
  TRuntimeProps,
43
41
  TExtraProps,
44
42
  > = $ReadOnly<
45
- $ReadOnly<{|
43
+ $ReadOnly<{
46
44
  entryPoint: EntryPoint<
47
45
  TEntryPointParams,
48
46
  EntryPointComponent<
@@ -55,7 +53,7 @@ type EntryPointContainerProps<
55
53
  entryPointParams: TEntryPointParams,
56
54
  environmentProvider?: IEnvironmentProvider<EnvironmentProviderOptions>,
57
55
  props: TRuntimeProps,
58
- |}>,
56
+ }>,
59
57
  >;
60
58
 
61
59
  function stableStringify(value: mixed): string {
@@ -9,8 +9,6 @@
9
9
  * @format
10
10
  */
11
11
 
12
- // flowlint ambiguous-object-type:error
13
-
14
12
  'use strict';
15
13
 
16
14
  const React = require('react');
@@ -87,7 +85,7 @@ const {useMemo} = React;
87
85
 
88
86
  // Note: this type is intentionally non-exact, it is expected that the
89
87
  // object may contain sibling fields.
90
- type TypenameOnlyPointer = {|+__typename: string|};
88
+ type TypenameOnlyPointer = {+__typename: string};
91
89
  export type MatchPointer = {
92
90
  +__fragmentPropName?: ?string,
93
91
  +__module_component?: mixed,
@@ -95,12 +93,12 @@ export type MatchPointer = {
95
93
  ...
96
94
  };
97
95
 
98
- export type MatchContainerProps<TProps: {...}, TFallback: React.Node> = {|
96
+ export type MatchContainerProps<TProps: {...}, TFallback: React.Node> = {
99
97
  +fallback?: ?TFallback,
100
98
  +loader: (module: mixed) => React.AbstractComponent<TProps>,
101
99
  +match: ?MatchPointer | ?TypenameOnlyPointer,
102
100
  +props?: TProps,
103
- |};
101
+ };
104
102
 
105
103
  function MatchContainer<TProps: {...}, TFallback: React.Node | null>({
106
104
  fallback,
@@ -150,11 +148,11 @@ function MatchContainer<TProps: {...}, TFallback: React.Node | null>({
150
148
  // output of subscriptions already has a stable identity.
151
149
  if (__fragmentPropName != null && __id != null && __fragments != null) {
152
150
  const fragProps: {
153
- [string]: {|
151
+ [string]: {
154
152
  __fragmentOwner: $FlowFixMe,
155
153
  __fragments: $FlowFixMe,
156
154
  __id: string,
157
- |},
155
+ },
158
156
  } = {};
159
157
  fragProps[__fragmentPropName] = {__id, __fragments, __fragmentOwner};
160
158
  return fragProps;
@@ -9,8 +9,6 @@
9
9
  * @format
10
10
  */
11
11
 
12
- // flowlint ambiguous-object-type:error
13
-
14
12
  // This contextual profiler can be used to wrap a react sub-tree. It will bind
15
13
  // the RelayProfiler during the render phase of these components. Allows
16
14
  // collecting metrics for a specific part of your application.
@@ -9,8 +9,6 @@
9
9
  * @format
10
10
  */
11
11
 
12
- // flowlint ambiguous-object-type:error
13
-
14
12
  'use strict';
15
13
 
16
14
  import type {Cache} from './LRUCache';
@@ -41,7 +39,7 @@ const DEFAULT_FETCH_POLICY = 'store-or-network';
41
39
  export type QueryResource = QueryResourceImpl;
42
40
 
43
41
  type QueryResourceCache = Cache<QueryResourceCacheEntry>;
44
- type QueryResourceCacheEntry = {|
42
+ type QueryResourceCacheEntry = {
45
43
  +id: number,
46
44
  +cacheIdentifier: string,
47
45
  +operationAvailability: ?OperationAvailability,
@@ -56,17 +54,17 @@ type QueryResourceCacheEntry = {|
56
54
  temporaryRetain(environment: IEnvironment): Disposable,
57
55
  permanentRetain(environment: IEnvironment): Disposable,
58
56
  releaseTemporaryRetain(): void,
59
- |};
57
+ };
60
58
  export opaque type QueryResult: {
61
59
  fragmentNode: ReaderFragment,
62
60
  fragmentRef: mixed,
63
61
  ...
64
- } = {|
62
+ } = {
65
63
  cacheIdentifier: string,
66
64
  fragmentNode: ReaderFragment,
67
65
  fragmentRef: mixed,
68
66
  operation: OperationDescriptor,
69
- |};
67
+ };
70
68
 
71
69
  const WEAKMAP_SUPPORTED = typeof WeakMap === 'function';
72
70
  interface IMap<K, V> {
@@ -9,8 +9,6 @@
9
9
  * @format
10
10
  */
11
11
 
12
- // flowlint ambiguous-object-type:error
13
-
14
12
  'use strict';
15
13
 
16
14
  import type {IEnvironment} from 'relay-runtime';
@@ -24,13 +22,13 @@ const ReactRelayContext = require('react-relay/ReactRelayContext');
24
22
 
25
23
  const {useMemo} = React;
26
24
 
27
- type Props = $ReadOnly<{|
25
+ type Props = $ReadOnly<{
28
26
  children: React.Node,
29
27
  environment: IEnvironment,
30
28
  getEnvironmentForActor?: ?(
31
29
  actorIdentifier: ActorIdentifier,
32
30
  ) => IActorEnvironment,
33
- |}>;
31
+ }>;
34
32
 
35
33
  function RelayEnvironmentProvider(props: Props): React.Node {
36
34
  const {children, environment, getEnvironmentForActor} = props;
@@ -9,8 +9,6 @@
9
9
  * @format
10
10
  */
11
11
 
12
- // flowlint ambiguous-object-type:error
13
-
14
12
  'use strict';
15
13
 
16
14
  import type {Disposable, IEnvironment} from 'relay-runtime';
@@ -17,15 +17,15 @@ import type {
17
17
  EntryPointProps,
18
18
  } from '../../EntryPointTypes.flow';
19
19
 
20
- type MyComponentOtherProps = $ReadOnly<{|
20
+ type MyComponentOtherProps = $ReadOnly<{
21
21
  foo: string,
22
- |}>;
22
+ }>;
23
23
 
24
24
  type MyComponentProps = EntryPointProps<{}, {}, MyComponentOtherProps, {}>;
25
25
 
26
26
  const MyComponent = (_props: MyComponentProps) => null;
27
27
 
28
- type PreloadParams = $ReadOnly<{||}>;
28
+ type PreloadParams = $ReadOnly<{}>;
29
29
 
30
30
  type MyComponentEntryPointType = EntryPoint<PreloadParams, typeof MyComponent>;
31
31
 
@@ -27,9 +27,9 @@ type NestedEntrypointComponentProps = EntryPointProps<{}>;
27
27
  const NestedEntrypointComponent = (_props: NestedEntrypointComponentProps) =>
28
28
  null;
29
29
 
30
- type NestedEntrypointPreloadParams = $ReadOnly<{|
30
+ type NestedEntrypointPreloadParams = $ReadOnly<{
31
31
  subEntrypointPreloadParam: string,
32
- |}>;
32
+ }>;
33
33
 
34
34
  type NestedEntryPointType = EntryPoint<
35
35
  NestedEntrypointPreloadParams,
@@ -9,8 +9,6 @@
9
9
  * @format
10
10
  */
11
11
 
12
- // flowlint ambiguous-object-type:error
13
-
14
12
  import type {LoadMoreFn} from '../useLoadMoreFunction';
15
13
  import type {
16
14
  FetchFn,
@@ -36,14 +34,14 @@ type ExpectedReturnType<
36
34
  TQuery: OperationType,
37
35
  TQueryVariables,
38
36
  TFragmentData,
39
- > = {|
37
+ > = {
40
38
  data: TFragmentData,
41
39
  loadNext: LoadMoreFn<TQuery>,
42
40
  loadPrevious: LoadMoreFn<TQuery>,
43
41
  hasNext: boolean,
44
42
  hasPrevious: boolean,
45
43
  refetch: FetchFn<TQueryVariables>,
46
- |};
44
+ };
47
45
 
48
46
  /* eslint-disable react-hooks/rules-of-hooks */
49
47
 
@@ -103,8 +101,8 @@ refetch(variables, {
103
101
  });
104
102
 
105
103
  // LoadMore options
106
- declare var extraVariables: {|nickname: string|};
107
- declare var invalidVariables: {|foo: string|};
104
+ declare var extraVariables: {nickname: string};
105
+ declare var invalidVariables: {foo: string};
108
106
 
109
107
  const {loadNext} = useBlockingPaginationFragment<QueryOperation, _>(
110
108
  fragmentInput,
@@ -9,8 +9,6 @@
9
9
  * @format
10
10
  */
11
11
 
12
- // flowlint ambiguous-object-type:error
13
-
14
12
  import type {
15
13
  useFragmentFlowtest_user$data,
16
14
  useFragmentFlowtest_user$key,
@@ -9,8 +9,6 @@
9
9
  * @format
10
10
  */
11
11
 
12
- // flowlint ambiguous-object-type:error
13
-
14
12
  import type {LoadMoreFn} from '../useLoadMoreFunction';
15
13
  import type {
16
14
  FetchFn,
@@ -36,7 +34,7 @@ type ExpectedReturnType<
36
34
  TQuery: OperationType,
37
35
  TQueryVariables,
38
36
  TFragmentData,
39
- > = {|
37
+ > = {
40
38
  data: TFragmentData,
41
39
  loadNext: LoadMoreFn<TQuery>,
42
40
  loadPrevious: LoadMoreFn<TQuery>,
@@ -45,7 +43,7 @@ type ExpectedReturnType<
45
43
  isLoadingNext: boolean,
46
44
  isLoadingPrevious: boolean,
47
45
  refetch: FetchFn<TQueryVariables>,
48
- |};
46
+ };
49
47
 
50
48
  /* eslint-disable react-hooks/rules-of-hooks */
51
49
 
@@ -105,8 +103,8 @@ refetch(variables, {
105
103
  });
106
104
 
107
105
  // LoadMore options
108
- declare var extraVariables: {|nickname: string|};
109
- declare var invalidVariables: {|foo: string|};
106
+ declare var extraVariables: {nickname: string};
107
+ declare var invalidVariables: {foo: string};
110
108
 
111
109
  const {loadNext} = usePaginationFragment<QueryOperation, _>(
112
110
  fragmentInput,
@@ -9,8 +9,6 @@
9
9
  * @format
10
10
  */
11
11
 
12
- // flowlint ambiguous-object-type:error
13
-
14
12
  import type {
15
13
  FetchFn,
16
14
  NonNullableData,
@@ -9,8 +9,6 @@
9
9
  * @format
10
10
  */
11
11
 
12
- // flowlint ambiguous-object-type:error
13
-
14
12
  'use strict';
15
13
 
16
14
  import type {Disposable, Fragment, FragmentType} from 'relay-runtime';
@@ -28,18 +26,18 @@ export type Example_user$key = {
28
26
  ...
29
27
  };
30
28
 
31
- export type NonNullableData = {|
29
+ export type NonNullableData = {
32
30
  +id: string,
33
31
  +count: number,
34
- |};
32
+ };
35
33
  export type NullableData = ?NonNullableData;
36
34
  export type NonNullablePluralData = $ReadOnlyArray<NonNullableData>;
37
35
  export type NullablePluralData = ?$ReadOnlyArray<NonNullableData>;
38
36
 
39
- export type AnotherNonNullableData = {|
37
+ export type AnotherNonNullableData = {
40
38
  +name: ?string,
41
39
  +friends: ?number,
42
- |};
40
+ };
43
41
 
44
42
  declare export var keyNonNullable: Example_user$key;
45
43
 
@@ -66,16 +64,16 @@ declare export var fragmentData: {
66
64
  ...
67
65
  };
68
66
 
69
- export type QueryOperation = {|
67
+ export type QueryOperation = {
70
68
  +variables: QueryVariables,
71
69
  +response: {...},
72
- |};
70
+ };
73
71
 
74
- export type QueryVariables = {|
72
+ export type QueryVariables = {
75
73
  id: string,
76
74
  nickname: ?string,
77
75
  name: string,
78
- |};
76
+ };
79
77
 
80
78
  export type QueryVariablesSubset = {
81
79
  id: string,
@@ -9,8 +9,6 @@
9
9
  * @format
10
10
  */
11
11
 
12
- // flowlint ambiguous-object-type:error
13
-
14
12
  'use strict';
15
13
 
16
14
  import type {
@@ -51,7 +49,7 @@ const pendingQueriesByEnvironment = WEAKMAP_SUPPORTED
51
49
  : new Map();
52
50
 
53
51
  type PendingQueryEntry =
54
- | $ReadOnly<{|
52
+ | $ReadOnly<{
55
53
  cacheKey: string,
56
54
  fetchKey: ?string | ?number,
57
55
  fetchPolicy: PreloadFetchPolicy,
@@ -61,8 +59,8 @@ type PendingQueryEntry =
61
59
  status: PreloadQueryStatus,
62
60
  subject: ReplaySubject<GraphQLResponse>,
63
61
  subscription: Subscription,
64
- |}>
65
- | $ReadOnly<{|
62
+ }>
63
+ | $ReadOnly<{
66
64
  cacheKey: string,
67
65
  fetchKey: ?string | ?number,
68
66
  fetchPolicy: PreloadFetchPolicy,
@@ -70,7 +68,7 @@ type PendingQueryEntry =
70
68
  id: ?string,
71
69
  name: string,
72
70
  status: PreloadQueryStatus,
73
- |}>;
71
+ }>;
74
72
 
75
73
  function preloadQuery<TQuery: OperationType, TEnvironmentProviderOptions>(
76
74
  environment: IEnvironment,
@@ -9,8 +9,6 @@
9
9
  * @format
10
10
  */
11
11
 
12
- // flowlint ambiguous-object-type:error
13
-
14
12
  'use strict';
15
13
 
16
14
  import type {
@@ -9,8 +9,6 @@
9
9
  * @format
10
10
  */
11
11
 
12
- // flowlint ambiguous-object-type:error
13
-
14
12
  'use strict';
15
13
 
16
14
  const invariant = require('invariant');
@@ -9,8 +9,6 @@
9
9
  * @format
10
10
  */
11
11
 
12
- // flowlint ambiguous-object-type:error
13
-
14
12
  'use strict';
15
13
 
16
14
  import type {
@@ -34,10 +32,10 @@ const warning = require('warning');
34
32
 
35
33
  type QueryCacheCommitable = () => () => void;
36
34
 
37
- type QueryResult = {|
35
+ type QueryResult = {
38
36
  fragmentNode: ReaderFragment,
39
37
  fragmentRef: mixed,
40
- |};
38
+ };
41
39
 
42
40
  // Note that the status of a cache entry will be 'resolved' when partial
43
41
  // rendering is allowed, even if a fetch is ongoing. The pending status
@@ -49,34 +47,42 @@ type QueryResult = {|
49
47
  // before any components have mounted. It is unused when Legacy Timeouts
50
48
  // mode is off.
51
49
  type QueryCacheEntryStatus =
52
- | {|
50
+ | {
53
51
  status: 'resolved',
54
52
  result: QueryResult,
55
- |}
56
- | {|
53
+ }
54
+ | {
57
55
  status: 'pending',
58
56
  promise: Promise<void>,
59
- |}
60
- | {|
57
+ }
58
+ | {
61
59
  status: 'rejected',
62
60
  error: Error,
63
- |};
61
+ };
64
62
 
65
- type QueryCacheEntry = {|
63
+ type QueryCacheEntry = {
66
64
  ...QueryCacheEntryStatus,
67
65
  onCommit: QueryCacheCommitable,
68
66
  suspenseResource: SuspenseResource | null,
69
- |};
67
+ };
70
68
 
71
69
  const DEFAULT_FETCH_POLICY = 'store-or-network';
72
70
 
71
+ const WEAKMAP_SUPPORTED = typeof WeakMap === 'function';
72
+
73
+ interface IMap<K, V> {
74
+ delete(key: K): boolean;
75
+ get(key: K): V | void;
76
+ set(key: K, value: V): IMap<K, V>;
77
+ }
78
+
73
79
  type QueryCacheKey = string;
74
80
 
75
81
  class QueryCache {
76
- _map: Map<IEnvironment, Map<QueryCacheKey, QueryCacheEntry>>;
82
+ _map: IMap<IEnvironment, Map<QueryCacheKey, QueryCacheEntry>>;
77
83
 
78
84
  constructor() {
79
- this._map = new Map();
85
+ this._map = WEAKMAP_SUPPORTED ? new WeakMap() : new Map();
80
86
  }
81
87
 
82
88
  get(environment: IEnvironment, key: QueryCacheKey): QueryCacheEntry | void {
@@ -160,12 +166,12 @@ function makeInitialCacheEntry() {
160
166
  function getQueryResultOrFetchQuery_REACT_CACHE(
161
167
  environment: IEnvironment,
162
168
  queryOperationDescriptor: OperationDescriptor,
163
- options?: {|
169
+ options?: {
164
170
  fetchPolicy?: FetchPolicy,
165
171
  renderPolicy?: RenderPolicy,
166
172
  fetchKey?: ?string | ?number,
167
173
  fetchObservable?: Observable<GraphQLResponse>,
168
- |},
174
+ },
169
175
  ): [QueryResult, QueryCacheCommitable] {
170
176
  const fetchPolicy = options?.fetchPolicy ?? DEFAULT_FETCH_POLICY;
171
177
  const renderPolicy =