react-relay 14.1.0 → 15.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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;