react-relay 14.0.0 → 14.1.0

Sign up to get free protection for your applications and to get access to all the features.
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 =