react-relay 14.1.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 -0
  2. package/ReactRelayContext.js +1 -1
  3. package/ReactRelayContext.js.flow +1 -0
  4. package/ReactRelayFragmentContainer.js.flow +6 -2
  5. package/ReactRelayFragmentMockRenderer.js.flow +1 -0
  6. package/ReactRelayLocalQueryRenderer.js.flow +5 -3
  7. package/ReactRelayPaginationContainer.js.flow +21 -12
  8. package/ReactRelayQueryFetcher.js.flow +19 -5
  9. package/ReactRelayQueryRenderer.js.flow +32 -1
  10. package/ReactRelayQueryRendererContext.js.flow +1 -0
  11. package/ReactRelayRefetchContainer.js.flow +9 -5
  12. package/ReactRelayTestMocker.js.flow +3 -1
  13. package/ReactRelayTypes.js.flow +1 -0
  14. package/RelayContext.js.flow +1 -0
  15. package/__flowtests__/ReactRelayFragmentContainer-flowtest.js.flow +2 -1
  16. package/__flowtests__/ReactRelayPaginationContainer-flowtest.js.flow +1 -0
  17. package/__flowtests__/ReactRelayRefetchContainer-flowtest.js.flow +1 -0
  18. package/__flowtests__/RelayModern-flowtest.js.flow +1 -0
  19. package/__flowtests__/RelayModernFlowtest_badref.graphql.js.flow +1 -0
  20. package/__flowtests__/RelayModernFlowtest_notref.graphql.js.flow +1 -0
  21. package/__flowtests__/RelayModernFlowtest_user.graphql.js.flow +1 -0
  22. package/__flowtests__/RelayModernFlowtest_users.graphql.js.flow +1 -0
  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 -0
  34. package/buildReactRelayContainer.js.flow +7 -5
  35. package/getRootVariablesForFragments.js.flow +1 -1
  36. package/hooks.js +1 -1
  37. package/hooks.js.flow +4 -0
  38. package/index.js +1 -1
  39. package/index.js.flow +4 -0
  40. package/isRelayEnvironment.js.flow +1 -0
  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 -0
  46. package/lib/ReactRelayContainerUtils.js +2 -2
  47. package/lib/ReactRelayContext.js +3 -3
  48. package/lib/ReactRelayFragmentContainer.js +39 -66
  49. package/lib/ReactRelayFragmentMockRenderer.js +2 -3
  50. package/lib/ReactRelayLocalQueryRenderer.js +18 -30
  51. package/lib/ReactRelayPaginationContainer.js +66 -159
  52. package/lib/ReactRelayQueryFetcher.js +48 -74
  53. package/lib/ReactRelayQueryRenderer.js +62 -82
  54. package/lib/ReactRelayQueryRendererContext.js +2 -1
  55. package/lib/ReactRelayRefetchContainer.js +52 -99
  56. package/lib/ReactRelayTestMocker.js +32 -66
  57. package/lib/ReactRelayTypes.js +2 -0
  58. package/lib/RelayContext.js +4 -6
  59. package/lib/assertFragmentMap.js +3 -4
  60. package/lib/buildReactRelayContainer.js +10 -25
  61. package/lib/getRootVariablesForFragments.js +5 -8
  62. package/lib/hooks.js +5 -17
  63. package/lib/index.js +5 -24
  64. package/lib/isRelayEnvironment.js +5 -3
  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 -7
  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 -7
  72. package/lib/relay-hooks/EntryPointContainer.react.js +9 -14
  73. package/lib/relay-hooks/EntryPointTypes.flow.js +5 -2
  74. package/lib/relay-hooks/FragmentResource.js +102 -196
  75. package/lib/relay-hooks/HooksImplementation.js +2 -5
  76. package/lib/relay-hooks/InternalLogger.js +2 -2
  77. package/lib/relay-hooks/LRUCache.js +2 -19
  78. package/lib/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js +33 -53
  79. package/lib/relay-hooks/MatchContainer.js +14 -22
  80. package/lib/relay-hooks/ProfilerContext.js +3 -2
  81. package/lib/relay-hooks/QueryResource.js +30 -99
  82. package/lib/relay-hooks/RelayEnvironmentProvider.js +5 -8
  83. package/lib/relay-hooks/SuspenseResource.js +8 -31
  84. package/lib/relay-hooks/loadEntryPoint.js +19 -31
  85. package/lib/relay-hooks/loadQuery.js +41 -77
  86. package/lib/relay-hooks/preloadQuery_DEPRECATED.js +10 -35
  87. package/lib/relay-hooks/prepareEntryPoint_DEPRECATED.js +9 -14
  88. package/lib/relay-hooks/react-cache/RelayReactCache.js +7 -11
  89. package/lib/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js +24 -78
  90. package/lib/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js +23 -56
  91. package/lib/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js +65 -143
  92. package/lib/relay-hooks/react-cache/useFragment_REACT_CACHE.js +5 -14
  93. package/lib/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js +17 -23
  94. package/lib/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js +73 -74
  95. package/lib/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js +24 -38
  96. package/lib/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js +60 -102
  97. package/lib/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js +7 -15
  98. package/lib/relay-hooks/useBlockingPaginationFragment.js +71 -92
  99. package/lib/relay-hooks/useClientQuery.js +3 -6
  100. package/lib/relay-hooks/useEntryPointLoader.js +17 -36
  101. package/lib/relay-hooks/useFetchTrackingRef.js +10 -11
  102. package/lib/relay-hooks/useFragment.js +8 -18
  103. package/lib/relay-hooks/useFragmentNode.js +20 -31
  104. package/lib/relay-hooks/useIsMountedRef.js +4 -5
  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 +6 -9
  108. package/lib/relay-hooks/useLazyLoadQueryNode.js +23 -33
  109. package/lib/relay-hooks/useLoadMoreFunction.js +45 -76
  110. package/lib/relay-hooks/useMemoOperationDescriptor.js +6 -14
  111. package/lib/relay-hooks/useMemoVariables.js +15 -33
  112. package/lib/relay-hooks/useMutation.js +8 -25
  113. package/lib/relay-hooks/usePaginationFragment.js +61 -76
  114. package/lib/relay-hooks/usePreloadedQuery.js +12 -29
  115. package/lib/relay-hooks/useQueryLoader.js +23 -47
  116. package/lib/relay-hooks/useRefetchableFragment.js +8 -18
  117. package/lib/relay-hooks/useRefetchableFragmentNode.js +64 -107
  118. package/lib/relay-hooks/useRelayEnvironment.js +4 -7
  119. package/lib/relay-hooks/useStaticFragmentNodeWarning.js +4 -7
  120. package/lib/relay-hooks/useSubscribeToInvalidationState.js +8 -8
  121. package/lib/relay-hooks/useSubscription.js +5 -9
  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 -2
  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 +1 -1
  134. package/relay-hooks/EntryPointTypes.flow.js.flow +7 -5
  135. package/relay-hooks/FragmentResource.js.flow +34 -8
  136. package/relay-hooks/HooksImplementation.js.flow +1 -1
  137. package/relay-hooks/InternalLogger.js.flow +1 -1
  138. package/relay-hooks/LRUCache.js.flow +1 -1
  139. package/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js.flow +15 -8
  140. package/relay-hooks/MatchContainer.js.flow +1 -1
  141. package/relay-hooks/ProfilerContext.js.flow +1 -1
  142. package/relay-hooks/QueryResource.js.flow +25 -5
  143. package/relay-hooks/RelayEnvironmentProvider.js.flow +2 -2
  144. package/relay-hooks/SuspenseResource.js.flow +1 -1
  145. package/relay-hooks/__flowtests__/EntryPointTypes/EntryPointElementConfig-flowtest.js.flow +3 -1
  146. package/relay-hooks/__flowtests__/EntryPointTypes/NestedEntrypoints-flowtest.js.flow +2 -2
  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 +35 -33
  150. package/relay-hooks/__flowtests__/useFragment-flowtest.js.flow +1 -1
  151. package/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js.flow +33 -32
  152. package/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js.flow +18 -18
  153. package/relay-hooks/__flowtests__/utils.js.flow +13 -2
  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 +5 -6
  157. package/relay-hooks/prepareEntryPoint_DEPRECATED.js.flow +13 -8
  158. package/relay-hooks/react-cache/RelayReactCache.js.flow +1 -1
  159. package/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js.flow +4 -4
  160. package/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js.flow +3 -3
  161. package/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js.flow +4 -4
  162. package/relay-hooks/react-cache/useFragment_REACT_CACHE.js.flow +1 -1
  163. package/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js.flow +1 -1
  164. package/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js.flow +41 -22
  165. package/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js.flow +1 -2
  166. package/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js.flow +11 -5
  167. package/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js.flow +2 -2
  168. package/relay-hooks/useBlockingPaginationFragment.js.flow +85 -56
  169. package/relay-hooks/useClientQuery.js.flow +1 -1
  170. package/relay-hooks/useEntryPointLoader.js.flow +10 -6
  171. package/relay-hooks/useFetchTrackingRef.js.flow +5 -4
  172. package/relay-hooks/useFragment.js.flow +2 -2
  173. package/relay-hooks/useFragmentNode.js.flow +5 -4
  174. package/relay-hooks/useIsMountedRef.js.flow +1 -1
  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 +2 -2
  178. package/relay-hooks/useLazyLoadQueryNode.js.flow +2 -2
  179. package/relay-hooks/useLoadMoreFunction.js.flow +14 -9
  180. package/relay-hooks/useMemoOperationDescriptor.js.flow +3 -3
  181. package/relay-hooks/useMemoVariables.js.flow +13 -29
  182. package/relay-hooks/useMutation.js.flow +4 -4
  183. package/relay-hooks/usePaginationFragment.js.flow +53 -46
  184. package/relay-hooks/usePreloadedQuery.js.flow +47 -22
  185. package/relay-hooks/useQueryLoader.js.flow +85 -22
  186. package/relay-hooks/useRefetchableFragment.js.flow +64 -33
  187. package/relay-hooks/useRefetchableFragmentNode.js.flow +10 -4
  188. package/relay-hooks/useRelayEnvironment.js.flow +2 -2
  189. package/relay-hooks/useStaticFragmentNodeWarning.js.flow +3 -3
  190. package/relay-hooks/useSubscribeToInvalidationState.js.flow +2 -2
  191. package/relay-hooks/useSubscription.js.flow +1 -1
  192. package/relay-hooks/useUnsafeRef_DEPRECATED.js.flow +25 -0
  193. package/lib/readContext.js +0 -27
  194. package/readContext.js.flow +0 -29
@@ -4,99 +4,86 @@
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 _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
14
-
15
15
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
16
-
17
16
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
18
-
19
17
  var _excluded = ["disableStoreUpdates", "enableStoreUpdates"];
20
-
21
18
  var useLoadMoreFunction = require('./useLoadMoreFunction');
22
-
23
19
  var useRefetchableFragmentNode = require('./useRefetchableFragmentNode');
24
-
25
20
  var useStaticFragmentNodeWarning = require('./useStaticFragmentNodeWarning');
26
-
27
21
  var invariant = require('invariant');
28
-
29
22
  var _require = require('react'),
30
- useCallback = _require.useCallback,
31
- useEffect = _require.useEffect,
32
- useRef = _require.useRef,
33
- useState = _require.useState;
34
-
23
+ useCallback = _require.useCallback,
24
+ useEffect = _require.useEffect,
25
+ useRef = _require.useRef,
26
+ useState = _require.useState;
35
27
  var _require2 = require('relay-runtime'),
36
- getFragment = _require2.getFragment,
37
- getFragmentIdentifier = _require2.getFragmentIdentifier,
38
- getPaginationMetadata = _require2.getPaginationMetadata;
39
-
28
+ getFragment = _require2.getFragment,
29
+ getFragmentIdentifier = _require2.getFragmentIdentifier,
30
+ getPaginationMetadata = _require2.getPaginationMetadata;
40
31
  function useBlockingPaginationFragment(fragmentInput, parentFragmentRef) {
41
32
  var componentDisplayName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'useBlockingPaginationFragment()';
42
33
  var fragmentNode = getFragment(fragmentInput);
43
34
  useStaticFragmentNodeWarning(fragmentNode, "first argument of ".concat(componentDisplayName));
44
-
45
35
  var _getPaginationMetadat = getPaginationMetadata(fragmentNode, componentDisplayName),
46
- connectionPathInFragmentData = _getPaginationMetadat.connectionPathInFragmentData,
47
- identifierField = _getPaginationMetadat.identifierField,
48
- paginationRequest = _getPaginationMetadat.paginationRequest,
49
- paginationMetadata = _getPaginationMetadat.paginationMetadata,
50
- stream = _getPaginationMetadat.stream;
51
-
36
+ connectionPathInFragmentData = _getPaginationMetadat.connectionPathInFragmentData,
37
+ identifierField = _getPaginationMetadat.identifierField,
38
+ paginationRequest = _getPaginationMetadat.paginationRequest,
39
+ paginationMetadata = _getPaginationMetadat.paginationMetadata,
40
+ stream = _getPaginationMetadat.stream;
52
41
  !(stream === false) ? process.env.NODE_ENV !== "production" ? invariant(false, 'Relay: @stream_connection is not compatible with `useBlockingPaginationFragment`. ' + 'Use `useStreamingPaginationFragment` instead.') : invariant(false) : void 0;
53
-
54
42
  var _useRefetchableFragme = useRefetchableFragmentNode(fragmentNode, parentFragmentRef, componentDisplayName),
55
- fragmentData = _useRefetchableFragme.fragmentData,
56
- fragmentRef = _useRefetchableFragme.fragmentRef,
57
- refetch = _useRefetchableFragme.refetch,
58
- disableStoreUpdates = _useRefetchableFragme.disableStoreUpdates,
59
- enableStoreUpdates = _useRefetchableFragme.enableStoreUpdates;
60
-
61
- var fragmentIdentifier = getFragmentIdentifier(fragmentNode, fragmentRef); // Backward pagination
62
-
43
+ fragmentData = _useRefetchableFragme.fragmentData,
44
+ fragmentRef = _useRefetchableFragme.fragmentRef,
45
+ refetch = _useRefetchableFragme.refetch,
46
+ disableStoreUpdates = _useRefetchableFragme.disableStoreUpdates,
47
+ enableStoreUpdates = _useRefetchableFragme.enableStoreUpdates;
48
+ var fragmentIdentifier = getFragmentIdentifier(fragmentNode, fragmentRef);
49
+
50
+ // Backward pagination
63
51
  var _useLoadMore = useLoadMore({
64
- componentDisplayName: componentDisplayName,
65
- connectionPathInFragmentData: connectionPathInFragmentData,
66
- direction: 'backward',
67
- disableStoreUpdates: disableStoreUpdates,
68
- enableStoreUpdates: enableStoreUpdates,
69
- fragmentData: fragmentData,
70
- fragmentIdentifier: fragmentIdentifier,
71
- fragmentNode: fragmentNode,
72
- fragmentRef: fragmentRef,
73
- identifierField: identifierField,
74
- paginationMetadata: paginationMetadata,
75
- paginationRequest: paginationRequest
76
- }),
77
- loadPrevious = _useLoadMore[0],
78
- hasPrevious = _useLoadMore[1],
79
- disposeFetchPrevious = _useLoadMore[2]; // Forward pagination
80
-
81
-
52
+ componentDisplayName: componentDisplayName,
53
+ connectionPathInFragmentData: connectionPathInFragmentData,
54
+ direction: 'backward',
55
+ disableStoreUpdates: disableStoreUpdates,
56
+ enableStoreUpdates: enableStoreUpdates,
57
+ fragmentData: fragmentData,
58
+ fragmentIdentifier: fragmentIdentifier,
59
+ fragmentNode: fragmentNode,
60
+ fragmentRef: fragmentRef,
61
+ identifierField: identifierField,
62
+ paginationMetadata: paginationMetadata,
63
+ paginationRequest: paginationRequest
64
+ }),
65
+ loadPrevious = _useLoadMore[0],
66
+ hasPrevious = _useLoadMore[1],
67
+ disposeFetchPrevious = _useLoadMore[2];
68
+
69
+ // Forward pagination
82
70
  var _useLoadMore2 = useLoadMore({
83
- componentDisplayName: componentDisplayName,
84
- connectionPathInFragmentData: connectionPathInFragmentData,
85
- direction: 'forward',
86
- disableStoreUpdates: disableStoreUpdates,
87
- enableStoreUpdates: enableStoreUpdates,
88
- fragmentData: fragmentData,
89
- fragmentIdentifier: fragmentIdentifier,
90
- fragmentNode: fragmentNode,
91
- fragmentRef: fragmentRef,
92
- identifierField: identifierField,
93
- paginationMetadata: paginationMetadata,
94
- paginationRequest: paginationRequest
95
- }),
96
- loadNext = _useLoadMore2[0],
97
- hasNext = _useLoadMore2[1],
98
- disposeFetchNext = _useLoadMore2[2];
99
-
71
+ componentDisplayName: componentDisplayName,
72
+ connectionPathInFragmentData: connectionPathInFragmentData,
73
+ direction: 'forward',
74
+ disableStoreUpdates: disableStoreUpdates,
75
+ enableStoreUpdates: enableStoreUpdates,
76
+ fragmentData: fragmentData,
77
+ fragmentIdentifier: fragmentIdentifier,
78
+ fragmentNode: fragmentNode,
79
+ fragmentRef: fragmentRef,
80
+ identifierField: identifierField,
81
+ paginationMetadata: paginationMetadata,
82
+ paginationRequest: paginationRequest
83
+ }),
84
+ loadNext = _useLoadMore2[0],
85
+ hasNext = _useLoadMore2[1],
86
+ disposeFetchNext = _useLoadMore2[2];
100
87
  var refetchPagination = useCallback(function (variables, options) {
101
88
  disposeFetchNext();
102
89
  disposeFetchPrevious();
@@ -105,6 +92,7 @@ function useBlockingPaginationFragment(fragmentInput, parentFragmentRef) {
105
92
  }));
106
93
  }, [disposeFetchNext, disposeFetchPrevious, refetch]);
107
94
  return {
95
+ // $FlowFixMe[incompatible-cast]
108
96
  data: fragmentData,
109
97
  loadNext: loadNext,
110
98
  loadPrevious: loadPrevious,
@@ -113,30 +101,24 @@ function useBlockingPaginationFragment(fragmentInput, parentFragmentRef) {
113
101
  refetch: refetchPagination
114
102
  };
115
103
  }
116
-
117
104
  function useLoadMore(args) {
118
105
  var disableStoreUpdates = args.disableStoreUpdates,
119
- enableStoreUpdates = args.enableStoreUpdates,
120
- loadMoreArgs = (0, _objectWithoutPropertiesLoose2["default"])(args, _excluded);
121
-
106
+ enableStoreUpdates = args.enableStoreUpdates,
107
+ loadMoreArgs = (0, _objectWithoutPropertiesLoose2["default"])(args, _excluded);
122
108
  var _useState = useState(null),
123
- requestPromise = _useState[0],
124
- setRequestPromise = _useState[1];
125
-
109
+ requestPromise = _useState[0],
110
+ setRequestPromise = _useState[1];
126
111
  var requestPromiseRef = useRef(null);
127
112
  var promiseResolveRef = useRef(null);
128
-
129
113
  var promiseResolve = function promiseResolve() {
130
114
  if (promiseResolveRef.current != null) {
131
115
  promiseResolveRef.current();
132
116
  promiseResolveRef.current = null;
133
117
  }
134
118
  };
135
-
136
119
  var handleReset = function handleReset() {
137
120
  promiseResolve();
138
121
  };
139
-
140
122
  var observer = {
141
123
  complete: promiseResolve,
142
124
  // NOTE: loadMore is a no-op if a request is already in flight, so we
@@ -166,34 +148,31 @@ function useLoadMore(args) {
166
148
  // and blow away the whole list of items.
167
149
  error: promiseResolve
168
150
  };
169
-
170
151
  var _useLoadMoreFunction = useLoadMoreFunction((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, loadMoreArgs), {}, {
171
- observer: observer,
172
- onReset: handleReset
173
- })),
174
- loadMore = _useLoadMoreFunction[0],
175
- hasMore = _useLoadMoreFunction[1],
176
- disposeFetch = _useLoadMoreFunction[2]; // NOTE: To determine if we need to suspend, we check that the promise in
152
+ observer: observer,
153
+ onReset: handleReset
154
+ })),
155
+ loadMore = _useLoadMoreFunction[0],
156
+ hasMore = _useLoadMoreFunction[1],
157
+ disposeFetch = _useLoadMoreFunction[2];
158
+
159
+ // NOTE: To determine if we need to suspend, we check that the promise in
177
160
  // state is the same as the promise on the ref, which ensures that we
178
161
  // wont incorrectly suspend on other higher-pri updates before the update
179
162
  // to suspend has committed.
180
-
181
-
182
163
  if (requestPromise != null && requestPromise === requestPromiseRef.current) {
183
164
  throw requestPromise;
184
165
  }
185
-
186
166
  useEffect(function () {
187
167
  if (requestPromise !== requestPromiseRef.current) {
188
168
  // NOTE: After suspense pagination has resolved, we re-enable store updates
189
169
  // for this fragment. This may cause the component to re-render if
190
170
  // we missed any updates to the fragment data other than the pagination update.
191
171
  enableStoreUpdates();
192
- } // NOTE: We know the identity of enableStoreUpdates wont change
172
+ }
173
+ // NOTE: We know the identity of enableStoreUpdates wont change
193
174
  // eslint-disable-next-line react-hooks/exhaustive-deps
194
-
195
175
  }, [requestPromise]);
196
176
  return [loadMore, hasMore, disposeFetch];
197
177
  }
198
-
199
178
  module.exports = useBlockingPaginationFragment;
@@ -4,24 +4,22 @@
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 _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
14
-
15
15
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
16
-
17
16
  var useLazyLoadQuery = require('./useLazyLoadQuery');
17
+
18
18
  /**
19
19
  * This hook can be used to render client-only queries.
20
20
  * These queries are consist of queries for client-only data,
21
21
  * schematized via local schema extensions and/or Relay resolvers.
22
22
  */
23
-
24
-
25
23
  function useClientQuery(gqlQuery, variables, options) {
26
24
  // $FlowFixMe[incompatible-type] client queries can be used with useLazyLoadQuery, but only with `store-only` policy.
27
25
  var query = gqlQuery;
@@ -29,5 +27,4 @@ function useClientQuery(gqlQuery, variables, options) {
29
27
  fetchPolicy: 'store-only'
30
28
  }));
31
29
  }
32
-
33
30
  module.exports = useClientQuery;
@@ -4,36 +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
+
11
12
  'use strict';
12
13
 
13
14
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
14
-
15
15
  var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
16
-
17
16
  var loadEntryPoint = require('./loadEntryPoint');
18
-
19
17
  var _require = require('./loadQuery'),
20
- useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
21
-
18
+ useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
22
19
  var useIsMountedRef = require('./useIsMountedRef');
23
-
24
20
  var _require2 = require('react'),
25
- useCallback = _require2.useCallback,
26
- useEffect = _require2.useEffect,
27
- useRef = _require2.useRef,
28
- useState = _require2.useState;
29
-
21
+ useCallback = _require2.useCallback,
22
+ useEffect = _require2.useEffect,
23
+ useRef = _require2.useRef,
24
+ useState = _require2.useState;
30
25
  var initialNullEntryPointReferenceState = {
31
26
  kind: 'NullEntryPointReference'
32
27
  };
33
-
34
28
  function useLoadEntryPoint(environmentProvider, entryPoint, options) {
35
29
  var _options$TEST_ONLY__i, _options$TEST_ONLY__i2, _options$TEST_ONLY__i3, _options$TEST_ONLY__i4;
36
-
37
30
  /**
38
31
  * We want to always call `entryPointReference.dispose()` for every call to
39
32
  * `setEntryPointReference(loadEntryPoint(...))` so that no leaks of data in Relay
@@ -53,20 +46,18 @@ function useLoadEntryPoint(environmentProvider, entryPoint, options) {
53
46
  * Finally, when the hook unmounts, we also dispose of all remaining uncommitted
54
47
  * entry point references.
55
48
  */
49
+
56
50
  useTrackLoadQueryInRender();
57
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;
58
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;
59
53
  var isMountedRef = useIsMountedRef();
60
54
  var undisposedEntryPointReferencesRef = useRef(new Set([initialEntryPointReferenceInternal]));
61
-
62
55
  var _useState = useState(initialEntryPointReferenceInternal),
63
- entryPointReference = _useState[0],
64
- setEntryPointReference = _useState[1];
65
-
56
+ entryPointReference = _useState[0],
57
+ setEntryPointReference = _useState[1];
66
58
  var _useState2 = useState(initialEntryPointParamsInternal),
67
- entryPointParams = _useState2[0],
68
- setEntryPointParams = _useState2[1];
69
-
59
+ entryPointParams = _useState2[0],
60
+ setEntryPointParams = _useState2[1];
70
61
  var disposeEntryPoint = useCallback(function () {
71
62
  if (isMountedRef.current) {
72
63
  var nullEntryPointReference = {
@@ -109,13 +100,13 @@ function useLoadEntryPoint(environmentProvider, entryPoint, options) {
109
100
  // so that the entryPointReference's queries are correctly re-retained, and
110
101
  // potentially refetched if necessary.
111
102
  maybeHiddenOrFastRefresh.current = false;
112
-
113
103
  if (entryPointReference.kind !== 'NullEntryPointReference' && entryPointParams != null) {
114
104
  entryPointLoaderCallback(entryPointParams);
115
105
  }
116
-
117
106
  return;
118
- } // When a new entryPointReference is committed, we iterate over all
107
+ }
108
+
109
+ // When a new entryPointReference is committed, we iterate over all
119
110
  // entrypoint refs in undisposedEntryPointReferences and dispose all of
120
111
  // the refs that aren't the currently committed one. This ensures
121
112
  // that we don't leave any dangling entrypoint references for the
@@ -134,24 +125,17 @@ function useLoadEntryPoint(environmentProvider, entryPoint, options) {
134
125
  // associated with commits that were initiated prior to the currently
135
126
  // committing state change. (A useEffect callback is called during the commit
136
127
  // phase.)
137
-
138
-
139
128
  var undisposedEntryPointReferences = undisposedEntryPointReferencesRef.current;
140
-
141
129
  if (isMountedRef.current) {
142
130
  var _iterator = (0, _createForOfIteratorHelper2["default"])(undisposedEntryPointReferences),
143
- _step;
144
-
131
+ _step;
145
132
  try {
146
133
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
147
134
  var undisposedEntryPointReference = _step.value;
148
-
149
135
  if (undisposedEntryPointReference === entryPointReference) {
150
136
  break;
151
137
  }
152
-
153
138
  undisposedEntryPointReferences["delete"](undisposedEntryPointReference);
154
-
155
139
  if (undisposedEntryPointReference.kind !== 'NullEntryPointReference') {
156
140
  undisposedEntryPointReference.dispose();
157
141
  }
@@ -168,12 +152,10 @@ function useLoadEntryPoint(environmentProvider, entryPoint, options) {
168
152
  // undisposedEntryPointReferences.current is never reassigned
169
153
  // eslint-disable-next-line react-hooks/exhaustive-deps
170
154
  var _iterator2 = (0, _createForOfIteratorHelper2["default"])(undisposedEntryPointReferencesRef.current),
171
- _step2;
172
-
155
+ _step2;
173
156
  try {
174
157
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
175
158
  var unhandledStateChange = _step2.value;
176
-
177
159
  if (unhandledStateChange.kind !== 'NullEntryPointReference') {
178
160
  unhandledStateChange.dispose();
179
161
  }
@@ -187,5 +169,4 @@ function useLoadEntryPoint(environmentProvider, entryPoint, options) {
187
169
  }, []);
188
170
  return [entryPointReference.kind === 'NullEntryPointReference' ? null : entryPointReference, entryPointLoaderCallback, disposeEntryPoint];
189
171
  }
190
-
191
172
  module.exports = useLoadEntryPoint;
@@ -4,16 +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
+
11
12
  'use strict';
12
13
 
14
+ var useUnsafeRef_DEPRECATED = require('./useUnsafeRef_DEPRECATED');
13
15
  var _require = require('react'),
14
- useCallback = _require.useCallback,
15
- useEffect = _require.useEffect,
16
- useRef = _require.useRef;
16
+ useCallback = _require.useCallback,
17
+ useEffect = _require.useEffect;
18
+
17
19
  /**
18
20
  * This hook returns a mutable React ref that holds the value of whether a
19
21
  * fetch request is in flight. The reason this is a mutable ref instead of
@@ -26,17 +28,14 @@ var _require = require('react'),
26
28
  * The additional functions returned by this Hook can be used to mutate
27
29
  * the ref.
28
30
  */
29
-
30
-
31
31
  function useFetchTrackingRef() {
32
- var subscriptionRef = useRef(null);
33
- var isFetchingRef = useRef(false);
32
+ var subscriptionRef = useUnsafeRef_DEPRECATED(null);
33
+ var isFetchingRef = useUnsafeRef_DEPRECATED(false);
34
34
  var disposeFetch = useCallback(function () {
35
35
  if (subscriptionRef.current != null) {
36
36
  subscriptionRef.current.unsubscribe();
37
37
  subscriptionRef.current = null;
38
38
  }
39
-
40
39
  isFetchingRef.current = false;
41
40
  }, []);
42
41
  var startFetch = useCallback(function (subscription) {
@@ -46,8 +45,9 @@ function useFetchTrackingRef() {
46
45
  var completeFetch = useCallback(function () {
47
46
  subscriptionRef.current = null;
48
47
  isFetchingRef.current = false;
49
- }, []); // Dipose of ongoing fetch on unmount
48
+ }, []);
50
49
 
50
+ // Dipose of ongoing fetch on unmount
51
51
  useEffect(function () {
52
52
  return disposeFetch;
53
53
  }, [disposeFetch]);
@@ -58,5 +58,4 @@ function useFetchTrackingRef() {
58
58
  completeFetch: completeFetch
59
59
  };
60
60
  }
61
-
62
61
  module.exports = useFetchTrackingRef;
@@ -4,37 +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
+
11
12
  'use strict';
12
13
 
13
14
  var HooksImplementation = require('./HooksImplementation');
14
-
15
15
  var _require = require('./loadQuery'),
16
- useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
17
-
16
+ useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
18
17
  var useFragmentNode = require('./useFragmentNode');
19
-
20
18
  var useStaticFragmentNodeWarning = require('./useStaticFragmentNodeWarning');
21
-
22
19
  var _require2 = require('react'),
23
- useDebugValue = _require2.useDebugValue;
24
-
20
+ useDebugValue = _require2.useDebugValue;
25
21
  var _require3 = require('relay-runtime'),
26
- getFragment = _require3.getFragment;
27
-
22
+ getFragment = _require3.getFragment;
28
23
  function useFragment_LEGACY(fragment, key) {
29
24
  // We need to use this hook in order to be able to track if
30
25
  // loadQuery was called during render
31
26
  useTrackLoadQueryInRender();
32
27
  var fragmentNode = getFragment(fragment);
33
28
  useStaticFragmentNodeWarning(fragmentNode, 'first argument of useFragment()');
34
-
35
29
  var _useFragmentNode = useFragmentNode(fragmentNode, key, 'useFragment()'),
36
- data = _useFragmentNode.data;
37
-
30
+ data = _useFragmentNode.data;
38
31
  if (process.env.NODE_ENV !== "production") {
39
32
  // eslint-disable-next-line react-hooks/rules-of-hooks
40
33
  useDebugValue({
@@ -42,20 +35,17 @@ function useFragment_LEGACY(fragment, key) {
42
35
  data: data
43
36
  });
44
37
  }
45
-
46
38
  return data;
47
39
  }
48
-
49
40
  function useFragment(fragment, key) {
50
41
  var impl = HooksImplementation.get();
51
-
52
42
  if (impl) {
53
43
  // $FlowFixMe This is safe because impl.useFragment has the type of useFragment...
54
- 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)
55
46
  } else {
56
47
  // eslint-disable-next-line react-hooks/rules-of-hooks
57
48
  return useFragment_LEGACY(fragment, key);
58
49
  }
59
50
  }
60
-
61
51
  module.exports = useFragment;
@@ -4,71 +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
+
11
12
  'use strict';
12
13
 
13
14
  var _require = require('./FragmentResource'),
14
- getFragmentResourceForEnvironment = _require.getFragmentResourceForEnvironment;
15
-
15
+ getFragmentResourceForEnvironment = _require.getFragmentResourceForEnvironment;
16
16
  var useRelayEnvironment = require('./useRelayEnvironment');
17
-
17
+ var useUnsafeRef_DEPRECATED = require('./useUnsafeRef_DEPRECATED');
18
18
  var _require2 = require('react'),
19
- useEffect = _require2.useEffect,
20
- useRef = _require2.useRef,
21
- useState = _require2.useState;
22
-
19
+ useEffect = _require2.useEffect,
20
+ useState = _require2.useState;
23
21
  var _require3 = require('relay-runtime'),
24
- getFragmentIdentifier = _require3.getFragmentIdentifier;
25
-
22
+ getFragmentIdentifier = _require3.getFragmentIdentifier;
26
23
  var warning = require("fbjs/lib/warning");
27
-
28
24
  function useFragmentNode(fragmentNode, fragmentRef, componentDisplayName) {
29
25
  var environment = useRelayEnvironment();
30
26
  var FragmentResource = getFragmentResourceForEnvironment(environment);
31
- var isMountedRef = useRef(false);
32
-
27
+ var isMountedRef = useUnsafeRef_DEPRECATED(false);
33
28
  var _useState = useState(0),
34
- forceUpdate = _useState[1];
35
-
36
- var fragmentIdentifier = getFragmentIdentifier(fragmentNode, fragmentRef); // Read fragment data; this might suspend.
29
+ forceUpdate = _useState[1];
30
+ var fragmentIdentifier = getFragmentIdentifier(fragmentNode, fragmentRef);
37
31
 
32
+ // Read fragment data; this might suspend.
38
33
  var fragmentResult = FragmentResource.readWithIdentifier(fragmentNode, fragmentRef, fragmentIdentifier, componentDisplayName);
39
- var isListeningForUpdatesRef = useRef(true);
40
-
34
+ var isListeningForUpdatesRef = useUnsafeRef_DEPRECATED(true);
41
35
  function enableStoreUpdates() {
42
36
  isListeningForUpdatesRef.current = true;
43
37
  var didMissUpdates = FragmentResource.checkMissedUpdates(fragmentResult)[0];
44
-
45
38
  if (didMissUpdates) {
46
39
  handleDataUpdate();
47
40
  }
48
41
  }
49
-
50
42
  function disableStoreUpdates() {
51
43
  isListeningForUpdatesRef.current = false;
52
44
  }
53
-
54
45
  function handleDataUpdate() {
55
46
  if (isMountedRef.current === false || isListeningForUpdatesRef.current === false) {
56
47
  return;
57
- } // React bails out on noop state updates as an optimization.
48
+ }
49
+
50
+ // React bails out on noop state updates as an optimization.
58
51
  // If we want to force an update via setState, we need to pass an value.
59
52
  // The actual value can be arbitrary though, e.g. an incremented number.
60
-
61
-
62
53
  forceUpdate(function (count) {
63
54
  return count + 1;
64
55
  });
65
- } // Establish Relay store subscriptions in the commit phase, only if
56
+ }
57
+
58
+ // Establish Relay store subscriptions in the commit phase, only if
66
59
  // rendering for the first time, or if we need to subscribe to new data
67
60
  // If the fragment identifier changes, it means that the variables on the
68
61
  // fragment owner changed, or the fragment ref points to different records.
69
62
  // In this case, we need to resubscribe to the Relay store.
70
-
71
-
72
63
  useEffect(function () {
73
64
  isMountedRef.current = true;
74
65
  var disposable = FragmentResource.subscribe(fragmentResult, handleDataUpdate);
@@ -79,11 +70,11 @@ function useFragmentNode(fragmentNode, fragmentRef, componentDisplayName) {
79
70
  // the Relay store
80
71
  isMountedRef.current = false;
81
72
  disposable.dispose();
82
- }; // NOTE: We disable react-hooks-deps warning because environment and fragmentIdentifier
73
+ };
74
+ // NOTE: We disable react-hooks-deps warning because environment and fragmentIdentifier
83
75
  // is capturing all information about whether the effect should be re-ran.
84
76
  // eslint-disable-next-line react-hooks/exhaustive-deps
85
77
  }, [environment, fragmentIdentifier]);
86
-
87
78
  if (process.env.NODE_ENV !== "production") {
88
79
  if (fragmentRef != null && (fragmentResult.data === undefined || Array.isArray(fragmentResult.data) && fragmentResult.data.length > 0 && fragmentResult.data.every(function (data) {
89
80
  return data === undefined;
@@ -91,7 +82,6 @@ function useFragmentNode(fragmentNode, fragmentRef, componentDisplayName) {
91
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;
92
83
  }
93
84
  }
94
-
95
85
  return {
96
86
  // $FlowFixMe[incompatible-return]
97
87
  data: fragmentResult.data,
@@ -99,5 +89,4 @@ function useFragmentNode(fragmentNode, fragmentRef, componentDisplayName) {
99
89
  enableStoreUpdates: enableStoreUpdates
100
90
  };
101
91
  }
102
-
103
92
  module.exports = useFragmentNode;