react-relay 14.0.0 → 15.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (194) hide show
  1. package/ReactRelayContainerUtils.js.flow +1 -2
  2. package/ReactRelayContext.js +1 -1
  3. package/ReactRelayContext.js.flow +1 -2
  4. package/ReactRelayFragmentContainer.js.flow +6 -4
  5. package/ReactRelayFragmentMockRenderer.js.flow +1 -2
  6. package/ReactRelayLocalQueryRenderer.js.flow +5 -5
  7. package/ReactRelayPaginationContainer.js.flow +21 -14
  8. package/ReactRelayQueryFetcher.js.flow +28 -16
  9. package/ReactRelayQueryRenderer.js.flow +42 -13
  10. package/ReactRelayQueryRendererContext.js.flow +2 -3
  11. package/ReactRelayRefetchContainer.js.flow +9 -9
  12. package/ReactRelayTestMocker.js.flow +3 -3
  13. package/ReactRelayTypes.js.flow +7 -8
  14. package/RelayContext.js.flow +1 -2
  15. package/__flowtests__/ReactRelayFragmentContainer-flowtest.js.flow +4 -5
  16. package/__flowtests__/ReactRelayPaginationContainer-flowtest.js.flow +4 -5
  17. package/__flowtests__/ReactRelayRefetchContainer-flowtest.js.flow +4 -5
  18. package/__flowtests__/RelayModern-flowtest.js.flow +3 -4
  19. package/__flowtests__/RelayModernFlowtest_badref.graphql.js.flow +3 -4
  20. package/__flowtests__/RelayModernFlowtest_notref.graphql.js.flow +3 -4
  21. package/__flowtests__/RelayModernFlowtest_user.graphql.js.flow +3 -4
  22. package/__flowtests__/RelayModernFlowtest_users.graphql.js.flow +3 -4
  23. package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer.graphql.js.flow +3 -1
  24. package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer2.graphql.js.flow +3 -1
  25. package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtestQuery.graphql.js.flow +4 -2
  26. package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtest_viewer.graphql.js.flow +3 -1
  27. package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtestQuery.graphql.js.flow +4 -2
  28. package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtest_viewer.graphql.js.flow +3 -1
  29. package/__flowtests__/__generated__/RelayModernFlowtest_badref.graphql.js.flow +4 -2
  30. package/__flowtests__/__generated__/RelayModernFlowtest_notref.graphql.js.flow +4 -2
  31. package/__flowtests__/__generated__/RelayModernFlowtest_user.graphql.js.flow +3 -1
  32. package/__flowtests__/__generated__/RelayModernFlowtest_users.graphql.js.flow +3 -1
  33. package/assertFragmentMap.js.flow +1 -2
  34. package/buildReactRelayContainer.js.flow +7 -7
  35. package/getRootVariablesForFragments.js.flow +1 -3
  36. package/hooks.js +1 -1
  37. package/hooks.js.flow +4 -2
  38. package/index.js +1 -1
  39. package/index.js.flow +6 -2
  40. package/isRelayEnvironment.js.flow +1 -2
  41. package/jest-react/enqueueTask.js.flow +1 -1
  42. package/jest-react/index.js.flow +1 -1
  43. package/jest-react/internalAct.js.flow +1 -1
  44. package/legacy.js +1 -1
  45. package/legacy.js.flow +1 -2
  46. package/lib/ReactRelayContainerUtils.js +2 -3
  47. package/lib/ReactRelayContext.js +3 -4
  48. package/lib/ReactRelayFragmentContainer.js +47 -73
  49. package/lib/ReactRelayFragmentMockRenderer.js +2 -4
  50. package/lib/ReactRelayLocalQueryRenderer.js +18 -31
  51. package/lib/ReactRelayPaginationContainer.js +74 -164
  52. package/lib/ReactRelayQueryFetcher.js +49 -76
  53. package/lib/ReactRelayQueryRenderer.js +63 -84
  54. package/lib/ReactRelayQueryRendererContext.js +2 -2
  55. package/lib/ReactRelayRefetchContainer.js +58 -108
  56. package/lib/ReactRelayTestMocker.js +33 -68
  57. package/lib/ReactRelayTypes.js +2 -1
  58. package/lib/RelayContext.js +4 -7
  59. package/lib/assertFragmentMap.js +3 -5
  60. package/lib/buildReactRelayContainer.js +11 -27
  61. package/lib/getRootVariablesForFragments.js +6 -10
  62. package/lib/hooks.js +5 -18
  63. package/lib/index.js +7 -24
  64. package/lib/isRelayEnvironment.js +5 -4
  65. package/lib/jest-react/enqueueTask.js +5 -9
  66. package/lib/jest-react/index.js +0 -1
  67. package/lib/jest-react/internalAct.js +9 -20
  68. package/lib/legacy.js +2 -8
  69. package/lib/multi-actor/ActorChange.js +2 -5
  70. package/lib/multi-actor/index.js +2 -1
  71. package/lib/multi-actor/useRelayActorEnvironment.js +4 -8
  72. package/lib/relay-hooks/EntryPointContainer.react.js +9 -15
  73. package/lib/relay-hooks/EntryPointTypes.flow.js +5 -3
  74. package/lib/relay-hooks/FragmentResource.js +109 -203
  75. package/lib/relay-hooks/HooksImplementation.js +3 -6
  76. package/lib/relay-hooks/InternalLogger.js +2 -3
  77. package/lib/relay-hooks/LRUCache.js +2 -20
  78. package/lib/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js +33 -54
  79. package/lib/relay-hooks/MatchContainer.js +15 -24
  80. package/lib/relay-hooks/ProfilerContext.js +3 -3
  81. package/lib/relay-hooks/QueryResource.js +31 -101
  82. package/lib/relay-hooks/RelayEnvironmentProvider.js +5 -9
  83. package/lib/relay-hooks/SuspenseResource.js +9 -33
  84. package/lib/relay-hooks/loadEntryPoint.js +19 -31
  85. package/lib/relay-hooks/loadQuery.js +42 -78
  86. package/lib/relay-hooks/preloadQuery_DEPRECATED.js +11 -37
  87. package/lib/relay-hooks/prepareEntryPoint_DEPRECATED.js +9 -15
  88. package/lib/relay-hooks/react-cache/RelayReactCache.js +7 -12
  89. package/lib/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js +27 -81
  90. package/lib/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js +206 -0
  91. package/lib/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js +195 -215
  92. package/lib/relay-hooks/react-cache/useFragment_REACT_CACHE.js +5 -15
  93. package/lib/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js +17 -24
  94. package/lib/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js +149 -0
  95. package/lib/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js +24 -39
  96. package/lib/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js +325 -0
  97. package/lib/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js +37 -0
  98. package/lib/relay-hooks/useBlockingPaginationFragment.js +73 -93
  99. package/lib/relay-hooks/useClientQuery.js +30 -0
  100. package/lib/relay-hooks/useEntryPointLoader.js +18 -38
  101. package/lib/relay-hooks/useFetchTrackingRef.js +10 -12
  102. package/lib/relay-hooks/useFragment.js +8 -19
  103. package/lib/relay-hooks/useFragmentNode.js +20 -32
  104. package/lib/relay-hooks/useIsMountedRef.js +4 -6
  105. package/lib/relay-hooks/useIsOperationNodeActive.js +8 -20
  106. package/lib/relay-hooks/useIsParentQueryActive.js +3 -6
  107. package/lib/relay-hooks/useLazyLoadQuery.js +7 -24
  108. package/lib/relay-hooks/useLazyLoadQueryNode.js +23 -34
  109. package/lib/relay-hooks/useLoadMoreFunction.js +46 -78
  110. package/lib/relay-hooks/useMemoOperationDescriptor.js +6 -15
  111. package/lib/relay-hooks/useMemoVariables.js +15 -34
  112. package/lib/relay-hooks/useMutation.js +9 -27
  113. package/lib/relay-hooks/usePaginationFragment.js +73 -76
  114. package/lib/relay-hooks/usePreloadedQuery.js +13 -44
  115. package/lib/relay-hooks/useQueryLoader.js +24 -49
  116. package/lib/relay-hooks/useRefetchableFragment.js +19 -17
  117. package/lib/relay-hooks/useRefetchableFragmentNode.js +65 -109
  118. package/lib/relay-hooks/useRelayEnvironment.js +4 -8
  119. package/lib/relay-hooks/useStaticFragmentNodeWarning.js +4 -8
  120. package/lib/relay-hooks/useSubscribeToInvalidationState.js +8 -9
  121. package/lib/relay-hooks/useSubscription.js +5 -10
  122. package/lib/relay-hooks/useUnsafeRef_DEPRECATED.js +29 -0
  123. package/multi-actor/ActorChange.js.flow +1 -1
  124. package/multi-actor/index.js.flow +1 -1
  125. package/multi-actor/useRelayActorEnvironment.js.flow +2 -4
  126. package/package.json +2 -2
  127. package/react-relay-hooks.js +2 -2
  128. package/react-relay-hooks.min.js +2 -2
  129. package/react-relay-legacy.js +2 -2
  130. package/react-relay-legacy.min.js +2 -2
  131. package/react-relay.js +2 -2
  132. package/react-relay.min.js +2 -2
  133. package/relay-hooks/EntryPointContainer.react.js.flow +3 -5
  134. package/relay-hooks/EntryPointTypes.flow.js.flow +37 -37
  135. package/relay-hooks/FragmentResource.js.flow +43 -19
  136. package/relay-hooks/HooksImplementation.js.flow +7 -9
  137. package/relay-hooks/InternalLogger.js.flow +1 -3
  138. package/relay-hooks/LRUCache.js.flow +1 -3
  139. package/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js.flow +19 -14
  140. package/relay-hooks/MatchContainer.js.flow +6 -8
  141. package/relay-hooks/ProfilerContext.js.flow +1 -3
  142. package/relay-hooks/QueryResource.js.flow +29 -11
  143. package/relay-hooks/RelayEnvironmentProvider.js.flow +4 -6
  144. package/relay-hooks/SuspenseResource.js.flow +1 -3
  145. package/relay-hooks/__flowtests__/EntryPointTypes/EntryPointElementConfig-flowtest.js.flow +6 -4
  146. package/relay-hooks/__flowtests__/EntryPointTypes/NestedEntrypoints-flowtest.js.flow +4 -4
  147. package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_user.graphql.js.flow +3 -1
  148. package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_users.graphql.js.flow +3 -1
  149. package/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js.flow +39 -39
  150. package/relay-hooks/__flowtests__/useFragment-flowtest.js.flow +1 -3
  151. package/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js.flow +37 -38
  152. package/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js.flow +18 -20
  153. package/relay-hooks/__flowtests__/utils.js.flow +21 -12
  154. package/relay-hooks/loadEntryPoint.js.flow +11 -6
  155. package/relay-hooks/loadQuery.js.flow +11 -7
  156. package/relay-hooks/preloadQuery_DEPRECATED.js.flow +9 -12
  157. package/relay-hooks/prepareEntryPoint_DEPRECATED.js.flow +13 -10
  158. package/relay-hooks/react-cache/RelayReactCache.js.flow +1 -3
  159. package/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js.flow +26 -20
  160. package/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js.flow +297 -0
  161. package/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js.flow +136 -96
  162. package/relay-hooks/react-cache/useFragment_REACT_CACHE.js.flow +1 -3
  163. package/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js.flow +3 -5
  164. package/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js.flow +190 -0
  165. package/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js.flow +3 -6
  166. package/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js.flow +601 -0
  167. package/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js.flow +65 -0
  168. package/relay-hooks/useBlockingPaginationFragment.js.flow +86 -59
  169. package/relay-hooks/useClientQuery.js.flow +39 -0
  170. package/relay-hooks/useEntryPointLoader.js.flow +16 -14
  171. package/relay-hooks/useFetchTrackingRef.js.flow +7 -8
  172. package/relay-hooks/useFragment.js.flow +2 -4
  173. package/relay-hooks/useFragmentNode.js.flow +7 -8
  174. package/relay-hooks/useIsMountedRef.js.flow +2 -4
  175. package/relay-hooks/useIsOperationNodeActive.js.flow +1 -1
  176. package/relay-hooks/useIsParentQueryActive.js.flow +1 -1
  177. package/relay-hooks/useLazyLoadQuery.js.flow +9 -32
  178. package/relay-hooks/useLazyLoadQueryNode.js.flow +4 -6
  179. package/relay-hooks/useLoadMoreFunction.js.flow +20 -17
  180. package/relay-hooks/useMemoOperationDescriptor.js.flow +3 -5
  181. package/relay-hooks/useMemoVariables.js.flow +13 -31
  182. package/relay-hooks/useMutation.js.flow +6 -8
  183. package/relay-hooks/usePaginationFragment.js.flow +75 -43
  184. package/relay-hooks/usePreloadedQuery.js.flow +49 -43
  185. package/relay-hooks/useQueryLoader.js.flow +89 -28
  186. package/relay-hooks/useRefetchableFragment.js.flow +83 -23
  187. package/relay-hooks/useRefetchableFragmentNode.js.flow +26 -22
  188. package/relay-hooks/useRelayEnvironment.js.flow +2 -4
  189. package/relay-hooks/useStaticFragmentNodeWarning.js.flow +3 -5
  190. package/relay-hooks/useSubscribeToInvalidationState.js.flow +2 -4
  191. package/relay-hooks/useSubscription.js.flow +1 -3
  192. package/relay-hooks/useUnsafeRef_DEPRECATED.js.flow +25 -0
  193. package/lib/readContext.js +0 -28
  194. package/readContext.js.flow +0 -31
@@ -4,37 +4,29 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @emails oncall+relay
8
7
  *
9
8
  * @format
9
+ * @oncall relay
10
10
  */
11
- // flowlint ambiguous-object-type:error
12
- 'use strict';
13
11
 
14
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
12
+ 'use strict';
15
13
 
14
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
16
15
  var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
17
-
18
16
  var loadEntryPoint = require('./loadEntryPoint');
19
-
20
17
  var _require = require('./loadQuery'),
21
- useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
22
-
18
+ useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
23
19
  var useIsMountedRef = require('./useIsMountedRef');
24
-
25
20
  var _require2 = require('react'),
26
- useCallback = _require2.useCallback,
27
- useEffect = _require2.useEffect,
28
- useRef = _require2.useRef,
29
- useState = _require2.useState;
30
-
21
+ useCallback = _require2.useCallback,
22
+ useEffect = _require2.useEffect,
23
+ useRef = _require2.useRef,
24
+ useState = _require2.useState;
31
25
  var initialNullEntryPointReferenceState = {
32
26
  kind: 'NullEntryPointReference'
33
27
  };
34
-
35
28
  function useLoadEntryPoint(environmentProvider, entryPoint, options) {
36
29
  var _options$TEST_ONLY__i, _options$TEST_ONLY__i2, _options$TEST_ONLY__i3, _options$TEST_ONLY__i4;
37
-
38
30
  /**
39
31
  * We want to always call `entryPointReference.dispose()` for every call to
40
32
  * `setEntryPointReference(loadEntryPoint(...))` so that no leaks of data in Relay
@@ -54,20 +46,18 @@ function useLoadEntryPoint(environmentProvider, entryPoint, options) {
54
46
  * Finally, when the hook unmounts, we also dispose of all remaining uncommitted
55
47
  * entry point references.
56
48
  */
49
+
57
50
  useTrackLoadQueryInRender();
58
51
  var initialEntryPointReferenceInternal = (_options$TEST_ONLY__i = options === null || options === void 0 ? void 0 : (_options$TEST_ONLY__i2 = options.TEST_ONLY__initialEntryPointData) === null || _options$TEST_ONLY__i2 === void 0 ? void 0 : _options$TEST_ONLY__i2.entryPointReference) !== null && _options$TEST_ONLY__i !== void 0 ? _options$TEST_ONLY__i : initialNullEntryPointReferenceState;
59
52
  var initialEntryPointParamsInternal = (_options$TEST_ONLY__i3 = options === null || options === void 0 ? void 0 : (_options$TEST_ONLY__i4 = options.TEST_ONLY__initialEntryPointData) === null || _options$TEST_ONLY__i4 === void 0 ? void 0 : _options$TEST_ONLY__i4.entryPointParams) !== null && _options$TEST_ONLY__i3 !== void 0 ? _options$TEST_ONLY__i3 : null;
60
53
  var isMountedRef = useIsMountedRef();
61
54
  var undisposedEntryPointReferencesRef = useRef(new Set([initialEntryPointReferenceInternal]));
62
-
63
55
  var _useState = useState(initialEntryPointReferenceInternal),
64
- entryPointReference = _useState[0],
65
- setEntryPointReference = _useState[1];
66
-
56
+ entryPointReference = _useState[0],
57
+ setEntryPointReference = _useState[1];
67
58
  var _useState2 = useState(initialEntryPointParamsInternal),
68
- entryPointParams = _useState2[0],
69
- setEntryPointParams = _useState2[1];
70
-
59
+ entryPointParams = _useState2[0],
60
+ setEntryPointParams = _useState2[1];
71
61
  var disposeEntryPoint = useCallback(function () {
72
62
  if (isMountedRef.current) {
73
63
  var nullEntryPointReference = {
@@ -110,13 +100,13 @@ function useLoadEntryPoint(environmentProvider, entryPoint, options) {
110
100
  // so that the entryPointReference's queries are correctly re-retained, and
111
101
  // potentially refetched if necessary.
112
102
  maybeHiddenOrFastRefresh.current = false;
113
-
114
103
  if (entryPointReference.kind !== 'NullEntryPointReference' && entryPointParams != null) {
115
104
  entryPointLoaderCallback(entryPointParams);
116
105
  }
117
-
118
106
  return;
119
- } // When a new entryPointReference is committed, we iterate over all
107
+ }
108
+
109
+ // When a new entryPointReference is committed, we iterate over all
120
110
  // entrypoint refs in undisposedEntryPointReferences and dispose all of
121
111
  // the refs that aren't the currently committed one. This ensures
122
112
  // that we don't leave any dangling entrypoint references for the
@@ -135,24 +125,17 @@ function useLoadEntryPoint(environmentProvider, entryPoint, options) {
135
125
  // associated with commits that were initiated prior to the currently
136
126
  // committing state change. (A useEffect callback is called during the commit
137
127
  // phase.)
138
-
139
-
140
128
  var undisposedEntryPointReferences = undisposedEntryPointReferencesRef.current;
141
-
142
129
  if (isMountedRef.current) {
143
130
  var _iterator = (0, _createForOfIteratorHelper2["default"])(undisposedEntryPointReferences),
144
- _step;
145
-
131
+ _step;
146
132
  try {
147
133
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
148
134
  var undisposedEntryPointReference = _step.value;
149
-
150
135
  if (undisposedEntryPointReference === entryPointReference) {
151
136
  break;
152
137
  }
153
-
154
138
  undisposedEntryPointReferences["delete"](undisposedEntryPointReference);
155
-
156
139
  if (undisposedEntryPointReference.kind !== 'NullEntryPointReference') {
157
140
  undisposedEntryPointReference.dispose();
158
141
  }
@@ -169,12 +152,10 @@ function useLoadEntryPoint(environmentProvider, entryPoint, options) {
169
152
  // undisposedEntryPointReferences.current is never reassigned
170
153
  // eslint-disable-next-line react-hooks/exhaustive-deps
171
154
  var _iterator2 = (0, _createForOfIteratorHelper2["default"])(undisposedEntryPointReferencesRef.current),
172
- _step2;
173
-
155
+ _step2;
174
156
  try {
175
157
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
176
158
  var unhandledStateChange = _step2.value;
177
-
178
159
  if (unhandledStateChange.kind !== 'NullEntryPointReference') {
179
160
  unhandledStateChange.dispose();
180
161
  }
@@ -188,5 +169,4 @@ function useLoadEntryPoint(environmentProvider, entryPoint, options) {
188
169
  }, []);
189
170
  return [entryPointReference.kind === 'NullEntryPointReference' ? null : entryPointReference, entryPointLoaderCallback, disposeEntryPoint];
190
171
  }
191
-
192
172
  module.exports = useLoadEntryPoint;
@@ -4,17 +4,18 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @emails oncall+relay
8
7
  *
9
8
  * @format
9
+ * @oncall relay
10
10
  */
11
- // flowlint ambiguous-object-type:error
11
+
12
12
  'use strict';
13
13
 
14
+ var useUnsafeRef_DEPRECATED = require('./useUnsafeRef_DEPRECATED');
14
15
  var _require = require('react'),
15
- useCallback = _require.useCallback,
16
- useEffect = _require.useEffect,
17
- useRef = _require.useRef;
16
+ useCallback = _require.useCallback,
17
+ useEffect = _require.useEffect;
18
+
18
19
  /**
19
20
  * This hook returns a mutable React ref that holds the value of whether a
20
21
  * fetch request is in flight. The reason this is a mutable ref instead of
@@ -27,17 +28,14 @@ var _require = require('react'),
27
28
  * The additional functions returned by this Hook can be used to mutate
28
29
  * the ref.
29
30
  */
30
-
31
-
32
31
  function useFetchTrackingRef() {
33
- var subscriptionRef = useRef(null);
34
- var isFetchingRef = useRef(false);
32
+ var subscriptionRef = useUnsafeRef_DEPRECATED(null);
33
+ var isFetchingRef = useUnsafeRef_DEPRECATED(false);
35
34
  var disposeFetch = useCallback(function () {
36
35
  if (subscriptionRef.current != null) {
37
36
  subscriptionRef.current.unsubscribe();
38
37
  subscriptionRef.current = null;
39
38
  }
40
-
41
39
  isFetchingRef.current = false;
42
40
  }, []);
43
41
  var startFetch = useCallback(function (subscription) {
@@ -47,8 +45,9 @@ function useFetchTrackingRef() {
47
45
  var completeFetch = useCallback(function () {
48
46
  subscriptionRef.current = null;
49
47
  isFetchingRef.current = false;
50
- }, []); // Dipose of ongoing fetch on unmount
48
+ }, []);
51
49
 
50
+ // Dipose of ongoing fetch on unmount
52
51
  useEffect(function () {
53
52
  return disposeFetch;
54
53
  }, [disposeFetch]);
@@ -59,5 +58,4 @@ function useFetchTrackingRef() {
59
58
  completeFetch: completeFetch
60
59
  };
61
60
  }
62
-
63
61
  module.exports = useFetchTrackingRef;
@@ -4,38 +4,30 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @emails oncall+relay
8
7
  *
9
8
  * @format
9
+ * @oncall relay
10
10
  */
11
- // flowlint ambiguous-object-type:error
11
+
12
12
  'use strict';
13
13
 
14
14
  var HooksImplementation = require('./HooksImplementation');
15
-
16
15
  var _require = require('./loadQuery'),
17
- useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
18
-
16
+ useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
19
17
  var useFragmentNode = require('./useFragmentNode');
20
-
21
18
  var useStaticFragmentNodeWarning = require('./useStaticFragmentNodeWarning');
22
-
23
19
  var _require2 = require('react'),
24
- useDebugValue = _require2.useDebugValue;
25
-
20
+ useDebugValue = _require2.useDebugValue;
26
21
  var _require3 = require('relay-runtime'),
27
- getFragment = _require3.getFragment;
28
-
22
+ getFragment = _require3.getFragment;
29
23
  function useFragment_LEGACY(fragment, key) {
30
24
  // We need to use this hook in order to be able to track if
31
25
  // loadQuery was called during render
32
26
  useTrackLoadQueryInRender();
33
27
  var fragmentNode = getFragment(fragment);
34
28
  useStaticFragmentNodeWarning(fragmentNode, 'first argument of useFragment()');
35
-
36
29
  var _useFragmentNode = useFragmentNode(fragmentNode, key, 'useFragment()'),
37
- data = _useFragmentNode.data;
38
-
30
+ data = _useFragmentNode.data;
39
31
  if (process.env.NODE_ENV !== "production") {
40
32
  // eslint-disable-next-line react-hooks/rules-of-hooks
41
33
  useDebugValue({
@@ -43,20 +35,17 @@ function useFragment_LEGACY(fragment, key) {
43
35
  data: data
44
36
  });
45
37
  }
46
-
47
38
  return data;
48
39
  }
49
-
50
40
  function useFragment(fragment, key) {
51
41
  var impl = HooksImplementation.get();
52
-
53
42
  if (impl) {
54
43
  // $FlowFixMe This is safe because impl.useFragment has the type of useFragment...
55
- return impl.useFragment(fragment, key); // (i.e. type declared above, but not the supertype used in this function definition)
44
+ return impl.useFragment(fragment, key);
45
+ // (i.e. type declared above, but not the supertype used in this function definition)
56
46
  } else {
57
47
  // eslint-disable-next-line react-hooks/rules-of-hooks
58
48
  return useFragment_LEGACY(fragment, key);
59
49
  }
60
50
  }
61
-
62
51
  module.exports = useFragment;
@@ -4,72 +4,62 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @emails oncall+relay
8
7
  *
9
8
  * @format
9
+ * @oncall relay
10
10
  */
11
- // flowlint ambiguous-object-type:error
11
+
12
12
  'use strict';
13
13
 
14
14
  var _require = require('./FragmentResource'),
15
- getFragmentResourceForEnvironment = _require.getFragmentResourceForEnvironment;
16
-
15
+ getFragmentResourceForEnvironment = _require.getFragmentResourceForEnvironment;
17
16
  var useRelayEnvironment = require('./useRelayEnvironment');
18
-
17
+ var useUnsafeRef_DEPRECATED = require('./useUnsafeRef_DEPRECATED');
19
18
  var _require2 = require('react'),
20
- useEffect = _require2.useEffect,
21
- useRef = _require2.useRef,
22
- useState = _require2.useState;
23
-
19
+ useEffect = _require2.useEffect,
20
+ useState = _require2.useState;
24
21
  var _require3 = require('relay-runtime'),
25
- getFragmentIdentifier = _require3.getFragmentIdentifier;
26
-
22
+ getFragmentIdentifier = _require3.getFragmentIdentifier;
27
23
  var warning = require("fbjs/lib/warning");
28
-
29
24
  function useFragmentNode(fragmentNode, fragmentRef, componentDisplayName) {
30
25
  var environment = useRelayEnvironment();
31
26
  var FragmentResource = getFragmentResourceForEnvironment(environment);
32
- var isMountedRef = useRef(false);
33
-
27
+ var isMountedRef = useUnsafeRef_DEPRECATED(false);
34
28
  var _useState = useState(0),
35
- forceUpdate = _useState[1];
36
-
37
- var fragmentIdentifier = getFragmentIdentifier(fragmentNode, fragmentRef); // Read fragment data; this might suspend.
29
+ forceUpdate = _useState[1];
30
+ var fragmentIdentifier = getFragmentIdentifier(fragmentNode, fragmentRef);
38
31
 
32
+ // Read fragment data; this might suspend.
39
33
  var fragmentResult = FragmentResource.readWithIdentifier(fragmentNode, fragmentRef, fragmentIdentifier, componentDisplayName);
40
- var isListeningForUpdatesRef = useRef(true);
41
-
34
+ var isListeningForUpdatesRef = useUnsafeRef_DEPRECATED(true);
42
35
  function enableStoreUpdates() {
43
36
  isListeningForUpdatesRef.current = true;
44
37
  var didMissUpdates = FragmentResource.checkMissedUpdates(fragmentResult)[0];
45
-
46
38
  if (didMissUpdates) {
47
39
  handleDataUpdate();
48
40
  }
49
41
  }
50
-
51
42
  function disableStoreUpdates() {
52
43
  isListeningForUpdatesRef.current = false;
53
44
  }
54
-
55
45
  function handleDataUpdate() {
56
46
  if (isMountedRef.current === false || isListeningForUpdatesRef.current === false) {
57
47
  return;
58
- } // React bails out on noop state updates as an optimization.
48
+ }
49
+
50
+ // React bails out on noop state updates as an optimization.
59
51
  // If we want to force an update via setState, we need to pass an value.
60
52
  // The actual value can be arbitrary though, e.g. an incremented number.
61
-
62
-
63
53
  forceUpdate(function (count) {
64
54
  return count + 1;
65
55
  });
66
- } // Establish Relay store subscriptions in the commit phase, only if
56
+ }
57
+
58
+ // Establish Relay store subscriptions in the commit phase, only if
67
59
  // rendering for the first time, or if we need to subscribe to new data
68
60
  // If the fragment identifier changes, it means that the variables on the
69
61
  // fragment owner changed, or the fragment ref points to different records.
70
62
  // In this case, we need to resubscribe to the Relay store.
71
-
72
-
73
63
  useEffect(function () {
74
64
  isMountedRef.current = true;
75
65
  var disposable = FragmentResource.subscribe(fragmentResult, handleDataUpdate);
@@ -80,11 +70,11 @@ function useFragmentNode(fragmentNode, fragmentRef, componentDisplayName) {
80
70
  // the Relay store
81
71
  isMountedRef.current = false;
82
72
  disposable.dispose();
83
- }; // NOTE: We disable react-hooks-deps warning because environment and fragmentIdentifier
73
+ };
74
+ // NOTE: We disable react-hooks-deps warning because environment and fragmentIdentifier
84
75
  // is capturing all information about whether the effect should be re-ran.
85
76
  // eslint-disable-next-line react-hooks/exhaustive-deps
86
77
  }, [environment, fragmentIdentifier]);
87
-
88
78
  if (process.env.NODE_ENV !== "production") {
89
79
  if (fragmentRef != null && (fragmentResult.data === undefined || Array.isArray(fragmentResult.data) && fragmentResult.data.length > 0 && fragmentResult.data.every(function (data) {
90
80
  return data === undefined;
@@ -92,7 +82,6 @@ function useFragmentNode(fragmentNode, fragmentRef, componentDisplayName) {
92
82
  process.env.NODE_ENV !== "production" ? warning(false, 'Relay: Expected to have been able to read non-null data for ' + 'fragment `%s` declared in ' + '`%s`, since fragment reference was non-null. ' + "Make sure that that `%s`'s parent isn't " + 'holding on to and/or passing a fragment reference for data that ' + 'has been deleted.', fragmentNode.name, componentDisplayName, componentDisplayName) : void 0;
93
83
  }
94
84
  }
95
-
96
85
  return {
97
86
  // $FlowFixMe[incompatible-return]
98
87
  data: fragmentResult.data,
@@ -100,5 +89,4 @@ function useFragmentNode(fragmentNode, fragmentRef, componentDisplayName) {
100
89
  enableStoreUpdates: enableStoreUpdates
101
90
  };
102
91
  }
103
-
104
92
  module.exports = useFragmentNode;
@@ -4,17 +4,16 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @emails oncall+relay
8
7
  *
9
8
  * @format
9
+ * @oncall relay
10
10
  */
11
- // flowlint ambiguous-object-type:error
11
+
12
12
  'use strict';
13
13
 
14
14
  var _require = require('react'),
15
- useEffect = _require.useEffect,
16
- useRef = _require.useRef;
17
-
15
+ useEffect = _require.useEffect,
16
+ useRef = _require.useRef;
18
17
  function useIsMountedRef() {
19
18
  var isMountedRef = useRef(true);
20
19
  useEffect(function () {
@@ -25,5 +24,4 @@ function useIsMountedRef() {
25
24
  }, []);
26
25
  return isMountedRef;
27
26
  }
28
-
29
27
  module.exports = useIsMountedRef;
@@ -4,58 +4,47 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @emails oncall+relay
8
7
  *
9
8
  * @format
9
+ * @oncall relay
10
10
  */
11
+
11
12
  'use strict';
12
13
 
13
14
  var useRelayEnvironment = require('./useRelayEnvironment');
14
-
15
15
  var invariant = require('invariant');
16
-
17
16
  var React = require('react');
18
-
19
17
  var _require = require('relay-runtime'),
20
- getObservableForActiveRequest = _require.__internal.getObservableForActiveRequest,
21
- getSelector = _require.getSelector;
22
-
18
+ getObservableForActiveRequest = _require.__internal.getObservableForActiveRequest,
19
+ getSelector = _require.getSelector;
23
20
  var useEffect = React.useEffect,
24
- useState = React.useState,
25
- useMemo = React.useMemo;
26
-
21
+ useState = React.useState,
22
+ useMemo = React.useMemo;
27
23
  function useIsOperationNodeActive(fragmentNode, fragmentRef) {
28
24
  var environment = useRelayEnvironment();
29
25
  var observable = useMemo(function () {
30
26
  var selector = getSelector(fragmentNode, fragmentRef);
31
-
32
27
  if (selector == null) {
33
28
  return null;
34
29
  }
35
-
36
30
  !(selector.kind === 'SingularReaderSelector') ? process.env.NODE_ENV !== "production" ? invariant(false, 'useIsOperationNodeActive: Plural fragments are not supported.') : invariant(false) : void 0;
37
31
  return getObservableForActiveRequest(environment, selector.owner);
38
32
  }, [environment, fragmentNode, fragmentRef]);
39
-
40
33
  var _useState = useState(observable != null),
41
- isActive = _useState[0],
42
- setIsActive = _useState[1];
43
-
34
+ isActive = _useState[0],
35
+ setIsActive = _useState[1];
44
36
  useEffect(function () {
45
37
  var subscription;
46
38
  setIsActive(observable != null);
47
-
48
39
  if (observable != null) {
49
40
  var onCompleteOrError = function onCompleteOrError() {
50
41
  setIsActive(false);
51
42
  };
52
-
53
43
  subscription = observable.subscribe({
54
44
  complete: onCompleteOrError,
55
45
  error: onCompleteOrError
56
46
  });
57
47
  }
58
-
59
48
  return function () {
60
49
  if (subscription) {
61
50
  subscription.unsubscribe();
@@ -64,5 +53,4 @@ function useIsOperationNodeActive(fragmentNode, fragmentRef) {
64
53
  }, [observable]);
65
54
  return isActive;
66
55
  }
67
-
68
56
  module.exports = useIsOperationNodeActive;
@@ -4,23 +4,20 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @emails oncall+relay
8
7
  *
9
8
  * @format
9
+ * @oncall relay
10
10
  */
11
+
11
12
  'use strict';
12
13
 
13
14
  var useIsOperationNodeActive = require('./useIsOperationNodeActive');
14
-
15
15
  var useStaticFragmentNodeWarning = require('./useStaticFragmentNodeWarning');
16
-
17
16
  var _require = require('relay-runtime'),
18
- getFragment = _require.getFragment;
19
-
17
+ getFragment = _require.getFragment;
20
18
  function useIsParentQueryActive(fragmentInput, fragmentRef) {
21
19
  var fragmentNode = getFragment(fragmentInput);
22
20
  useStaticFragmentNodeWarning(fragmentNode, 'first argument of useIsParentQueryActive()');
23
21
  return useIsOperationNodeActive(fragmentNode, fragmentRef);
24
22
  }
25
-
26
23
  module.exports = useIsParentQueryActive;
@@ -4,31 +4,26 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @emails oncall+relay
8
7
  *
9
8
  * @format
9
+ * @oncall relay
10
10
  */
11
- // flowlint ambiguous-object-type:error
12
- 'use strict';
13
11
 
14
- var HooksImplementation = require('./HooksImplementation');
12
+ 'use strict';
15
13
 
16
14
  var _require = require('./loadQuery'),
17
- useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
18
-
15
+ useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
19
16
  var useLazyLoadQueryNode = require('./useLazyLoadQueryNode');
20
-
21
17
  var useMemoOperationDescriptor = require('./useMemoOperationDescriptor');
22
-
23
18
  var useRelayEnvironment = require('./useRelayEnvironment');
24
-
25
19
  var _require2 = require('relay-runtime'),
26
- fetchQuery = _require2.__internal.fetchQuery; // This separate type export is only needed as long as we are injecting
20
+ fetchQuery = _require2.__internal.fetchQuery;
21
+
22
+ // This separate type export is only needed as long as we are injecting
27
23
  // a separate hooks implementation in ./HooksImplementation -- it can
28
24
  // be removed after we stop doing that.
29
25
 
30
-
31
- function useLazyLoadQuery_LEGACY(gqlQuery, variables, options) {
26
+ function useLazyLoadQuery(gqlQuery, variables, options) {
32
27
  // We need to use this hook in order to be able to track if
33
28
  // loadQuery was called during render
34
29
  useTrackLoadQueryInRender();
@@ -46,16 +41,4 @@ function useLazyLoadQuery_LEGACY(gqlQuery, variables, options) {
46
41
  });
47
42
  return data;
48
43
  }
49
-
50
- function useLazyLoadQuery(gqlQuery, variables, options) {
51
- var impl = HooksImplementation.get();
52
-
53
- if (impl) {
54
- return impl.useLazyLoadQuery(gqlQuery, variables, options);
55
- } else {
56
- // eslint-disable-next-line react-hooks/rules-of-hooks
57
- return useLazyLoadQuery_LEGACY(gqlQuery, variables, options);
58
- }
59
- }
60
-
61
44
  module.exports = useLazyLoadQuery;
@@ -4,51 +4,41 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @emails oncall+relay
8
7
  *
9
8
  * @format
9
+ * @oncall relay
10
10
  */
11
- // flowlint ambiguous-object-type:error
11
+
12
12
  'use strict';
13
13
 
14
14
  var ProfilerContext = require('./ProfilerContext');
15
-
16
15
  var _require = require('./QueryResource'),
17
- getQueryCacheIdentifier = _require.getQueryCacheIdentifier,
18
- getQueryResourceForEnvironment = _require.getQueryResourceForEnvironment;
19
-
16
+ getQueryCacheIdentifier = _require.getQueryCacheIdentifier,
17
+ getQueryResourceForEnvironment = _require.getQueryResourceForEnvironment;
20
18
  var useFetchTrackingRef = require('./useFetchTrackingRef');
21
-
22
19
  var useFragmentNode = require('./useFragmentNode');
23
-
24
20
  var useRelayEnvironment = require('./useRelayEnvironment');
25
-
26
21
  var React = require('react');
27
-
28
22
  var useContext = React.useContext,
29
- useEffect = React.useEffect,
30
- useState = React.useState,
31
- useRef = React.useRef;
32
-
23
+ useEffect = React.useEffect,
24
+ useState = React.useState,
25
+ useRef = React.useRef;
33
26
  function useLazyLoadQueryNode(_ref) {
34
27
  var query = _ref.query,
35
- componentDisplayName = _ref.componentDisplayName,
36
- fetchObservable = _ref.fetchObservable,
37
- fetchPolicy = _ref.fetchPolicy,
38
- fetchKey = _ref.fetchKey,
39
- renderPolicy = _ref.renderPolicy;
28
+ componentDisplayName = _ref.componentDisplayName,
29
+ fetchObservable = _ref.fetchObservable,
30
+ fetchPolicy = _ref.fetchPolicy,
31
+ fetchKey = _ref.fetchKey,
32
+ renderPolicy = _ref.renderPolicy;
40
33
  var environment = useRelayEnvironment();
41
34
  var profilerContext = useContext(ProfilerContext);
42
35
  var QueryResource = getQueryResourceForEnvironment(environment);
43
-
44
36
  var _useState = useState(0),
45
- forceUpdateKey = _useState[0],
46
- forceUpdate = _useState[1];
47
-
37
+ forceUpdateKey = _useState[0],
38
+ forceUpdate = _useState[1];
48
39
  var _useFetchTrackingRef = useFetchTrackingRef(),
49
- startFetch = _useFetchTrackingRef.startFetch,
50
- completeFetch = _useFetchTrackingRef.completeFetch;
51
-
40
+ startFetch = _useFetchTrackingRef.startFetch,
41
+ completeFetch = _useFetchTrackingRef.completeFetch;
52
42
  var cacheBreaker = "".concat(forceUpdateKey, "-").concat(fetchKey !== null && fetchKey !== void 0 ? fetchKey : '');
53
43
  var cacheIdentifier = getQueryCacheIdentifier(environment, query, fetchPolicy, renderPolicy, cacheBreaker);
54
44
  var preparedQueryResult = profilerContext.wrapPrepareQueryResource(function () {
@@ -87,11 +77,11 @@ function useLazyLoadQueryNode(_ref) {
87
77
  });
88
78
  return;
89
79
  }
90
-
91
80
  var disposable = QueryResource.retain(preparedQueryResult, profilerContext);
92
81
  return function () {
93
82
  disposable.dispose();
94
- }; // NOTE: We disable react-hooks-deps warning because the `environment`
83
+ };
84
+ // NOTE: We disable react-hooks-deps warning because the `environment`
95
85
  // and `cacheIdentifier` identities are capturing all information about whether
96
86
  // the effect should be re-executed and the query re-retained.
97
87
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -100,15 +90,14 @@ function useLazyLoadQueryNode(_ref) {
100
90
  // Release any temporary retain that's not released. At this point, if the
101
91
  // cacheIdentifier doesn't change, the query is still permanently retained,
102
92
  // and the temporary retain is redundant.
103
- QueryResource.releaseTemporaryRetain(preparedQueryResult); // This effect is intended to run on every commit, thus no dependency
93
+ QueryResource.releaseTemporaryRetain(preparedQueryResult);
94
+ // This effect is intended to run on every commit, thus no dependency
104
95
  });
105
- var fragmentNode = preparedQueryResult.fragmentNode,
106
- fragmentRef = preparedQueryResult.fragmentRef;
107
96
 
97
+ var fragmentNode = preparedQueryResult.fragmentNode,
98
+ fragmentRef = preparedQueryResult.fragmentRef;
108
99
  var _useFragmentNode = useFragmentNode(fragmentNode, fragmentRef, componentDisplayName),
109
- data = _useFragmentNode.data;
110
-
100
+ data = _useFragmentNode.data;
111
101
  return data;
112
102
  }
113
-
114
103
  module.exports = useLazyLoadQueryNode;