react-relay 11.0.2 → 13.0.0-rc.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (177) hide show
  1. package/README.md +47 -0
  2. package/ReactRelayContainerUtils.js.flow +1 -1
  3. package/ReactRelayContext.js +1 -1
  4. package/ReactRelayContext.js.flow +3 -4
  5. package/ReactRelayFragmentContainer.js.flow +25 -25
  6. package/ReactRelayFragmentMockRenderer.js.flow +2 -2
  7. package/ReactRelayLocalQueryRenderer.js.flow +7 -8
  8. package/ReactRelayPaginationContainer.js.flow +112 -59
  9. package/ReactRelayQueryFetcher.js.flow +10 -11
  10. package/ReactRelayQueryRenderer.js.flow +116 -82
  11. package/ReactRelayQueryRendererContext.js.flow +1 -1
  12. package/ReactRelayRefetchContainer.js.flow +42 -39
  13. package/ReactRelayTestMocker.js.flow +17 -15
  14. package/ReactRelayTypes.js.flow +11 -11
  15. package/RelayContext.js.flow +4 -4
  16. package/__flowtests__/ReactRelayFragmentContainer-flowtest.js.flow +2 -3
  17. package/__flowtests__/ReactRelayPaginationContainer-flowtest.js.flow +12 -8
  18. package/__flowtests__/ReactRelayRefetchContainer-flowtest.js.flow +11 -7
  19. package/__flowtests__/RelayModern-flowtest.js.flow +79 -47
  20. package/__flowtests__/RelayModernFlowtest_badref.graphql.js.flow +6 -5
  21. package/__flowtests__/RelayModernFlowtest_notref.graphql.js.flow +6 -5
  22. package/__flowtests__/RelayModernFlowtest_user.graphql.js.flow +5 -4
  23. package/__flowtests__/RelayModernFlowtest_users.graphql.js.flow +5 -4
  24. package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer.graphql.js.flow +72 -0
  25. package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer2.graphql.js.flow +72 -0
  26. package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtestQuery.graphql.js.flow +227 -0
  27. package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtest_viewer.graphql.js.flow +164 -0
  28. package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtestQuery.graphql.js.flow +227 -0
  29. package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtest_viewer.graphql.js.flow +164 -0
  30. package/__flowtests__/__generated__/RelayModernFlowtest_badref.graphql.js.flow +66 -0
  31. package/__flowtests__/__generated__/RelayModernFlowtest_notref.graphql.js.flow +66 -0
  32. package/__flowtests__/__generated__/RelayModernFlowtest_user.graphql.js.flow +59 -0
  33. package/__flowtests__/__generated__/RelayModernFlowtest_users.graphql.js.flow +61 -0
  34. package/assertFragmentMap.js.flow +3 -3
  35. package/buildReactRelayContainer.js.flow +12 -11
  36. package/getRootVariablesForFragments.js.flow +3 -5
  37. package/hooks.js +1 -1
  38. package/hooks.js.flow +6 -7
  39. package/index.js +1 -1
  40. package/index.js.flow +7 -8
  41. package/isRelayEnvironment.js.flow +1 -1
  42. package/jest-react/enqueueTask.js.flow +56 -0
  43. package/jest-react/index.js.flow +12 -0
  44. package/jest-react/internalAct.js.flow +138 -0
  45. package/legacy.js +1 -1
  46. package/legacy.js.flow +1 -1
  47. package/lib/ReactRelayContainerUtils.js +1 -1
  48. package/lib/ReactRelayContext.js +1 -1
  49. package/lib/ReactRelayFragmentContainer.js +22 -16
  50. package/lib/ReactRelayFragmentMockRenderer.js +3 -3
  51. package/lib/ReactRelayLocalQueryRenderer.js +8 -9
  52. package/lib/ReactRelayPaginationContainer.js +97 -39
  53. package/lib/ReactRelayQueryFetcher.js +3 -3
  54. package/lib/ReactRelayQueryRenderer.js +87 -54
  55. package/lib/ReactRelayQueryRendererContext.js +1 -1
  56. package/lib/ReactRelayRefetchContainer.js +39 -26
  57. package/lib/ReactRelayTestMocker.js +8 -9
  58. package/lib/ReactRelayTypes.js +1 -1
  59. package/lib/RelayContext.js +4 -3
  60. package/lib/assertFragmentMap.js +3 -2
  61. package/lib/buildReactRelayContainer.js +8 -8
  62. package/lib/getRootVariablesForFragments.js +2 -3
  63. package/lib/hooks.js +6 -6
  64. package/lib/index.js +8 -8
  65. package/lib/isRelayEnvironment.js +1 -1
  66. package/lib/jest-react/enqueueTask.js +53 -0
  67. package/lib/jest-react/index.js +13 -0
  68. package/lib/jest-react/internalAct.js +115 -0
  69. package/lib/legacy.js +1 -1
  70. package/lib/multi-actor/ActorChange.js +30 -0
  71. package/lib/multi-actor/index.js +11 -0
  72. package/lib/multi-actor/useRelayActorEnvironment.js +29 -0
  73. package/lib/readContext.js +1 -1
  74. package/lib/relay-hooks/EntryPointContainer.react.js +4 -4
  75. package/lib/relay-hooks/EntryPointTypes.flow.js +1 -1
  76. package/lib/relay-hooks/FragmentResource.js +342 -89
  77. package/lib/relay-hooks/InternalLogger.js +1 -1
  78. package/lib/relay-hooks/LRUCache.js +1 -1
  79. package/lib/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js +5 -5
  80. package/lib/relay-hooks/MatchContainer.js +2 -2
  81. package/lib/relay-hooks/ProfilerContext.js +1 -1
  82. package/lib/relay-hooks/QueryResource.js +172 -29
  83. package/lib/relay-hooks/RelayEnvironmentProvider.js +6 -4
  84. package/lib/relay-hooks/SuspenseResource.js +130 -0
  85. package/lib/relay-hooks/loadEntryPoint.js +1 -1
  86. package/lib/relay-hooks/loadQuery.js +42 -20
  87. package/lib/relay-hooks/preloadQuery_DEPRECATED.js +25 -16
  88. package/lib/relay-hooks/prepareEntryPoint_DEPRECATED.js +1 -1
  89. package/lib/relay-hooks/useBlockingPaginationFragment.js +5 -6
  90. package/lib/relay-hooks/useEntryPointLoader.js +3 -3
  91. package/lib/relay-hooks/useFetchTrackingRef.js +3 -2
  92. package/lib/relay-hooks/useFragment.js +7 -7
  93. package/lib/relay-hooks/useFragmentNode.js +5 -5
  94. package/lib/relay-hooks/useIsMountedRef.js +1 -1
  95. package/lib/relay-hooks/useIsOperationNodeActive.js +3 -3
  96. package/lib/relay-hooks/useIsParentQueryActive.js +1 -1
  97. package/lib/relay-hooks/useLazyLoadQuery.js +4 -4
  98. package/lib/relay-hooks/useLazyLoadQueryNode.js +11 -5
  99. package/lib/relay-hooks/useLoadMoreFunction.js +9 -13
  100. package/lib/relay-hooks/useMemoOperationDescriptor.js +3 -3
  101. package/lib/relay-hooks/useMemoVariables.js +3 -3
  102. package/lib/relay-hooks/useMutation.js +18 -7
  103. package/lib/relay-hooks/usePaginationFragment.js +3 -4
  104. package/lib/relay-hooks/usePreloadedQuery.js +6 -6
  105. package/lib/relay-hooks/useQueryLoader.js +31 -11
  106. package/lib/relay-hooks/useRefetchableFragment.js +1 -1
  107. package/lib/relay-hooks/useRefetchableFragmentNode.js +14 -18
  108. package/lib/relay-hooks/useRelayEnvironment.js +3 -3
  109. package/lib/relay-hooks/useStaticFragmentNodeWarning.js +3 -3
  110. package/lib/relay-hooks/useSubscribeToInvalidationState.js +3 -2
  111. package/lib/relay-hooks/useSubscription.js +11 -8
  112. package/multi-actor/ActorChange.js.flow +58 -0
  113. package/multi-actor/index.js.flow +14 -0
  114. package/multi-actor/useRelayActorEnvironment.js.flow +49 -0
  115. package/package.json +3 -3
  116. package/react-relay-hooks.js +2 -2
  117. package/react-relay-hooks.min.js +2 -2
  118. package/react-relay-legacy.js +2 -2
  119. package/react-relay-legacy.min.js +2 -2
  120. package/react-relay.js +2 -2
  121. package/react-relay.min.js +2 -2
  122. package/readContext.js.flow +1 -1
  123. package/relay-hooks/EntryPointContainer.react.js.flow +9 -16
  124. package/relay-hooks/EntryPointTypes.flow.js.flow +25 -26
  125. package/relay-hooks/FragmentResource.js.flow +359 -93
  126. package/relay-hooks/InternalLogger.js.flow +1 -1
  127. package/relay-hooks/LRUCache.js.flow +1 -1
  128. package/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js.flow +33 -47
  129. package/relay-hooks/MatchContainer.js.flow +4 -3
  130. package/relay-hooks/ProfilerContext.js.flow +1 -1
  131. package/relay-hooks/QueryResource.js.flow +217 -26
  132. package/relay-hooks/RelayEnvironmentProvider.js.flow +15 -5
  133. package/relay-hooks/SuspenseResource.js.flow +115 -0
  134. package/relay-hooks/__flowtests__/EntryPointTypes/EntryPointElementConfig-flowtest.js.flow +5 -4
  135. package/relay-hooks/__flowtests__/EntryPointTypes/NestedEntrypoints-flowtest.js.flow +2 -2
  136. package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_user.graphql.js.flow +59 -0
  137. package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_users.graphql.js.flow +61 -0
  138. package/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js.flow +11 -10
  139. package/relay-hooks/__flowtests__/useFragment-flowtest.js.flow +55 -32
  140. package/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js.flow +11 -10
  141. package/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js.flow +11 -10
  142. package/relay-hooks/__flowtests__/utils.js.flow +21 -32
  143. package/relay-hooks/loadEntryPoint.js.flow +7 -13
  144. package/relay-hooks/loadQuery.js.flow +50 -32
  145. package/relay-hooks/preloadQuery_DEPRECATED.js.flow +31 -22
  146. package/relay-hooks/prepareEntryPoint_DEPRECATED.js.flow +7 -13
  147. package/relay-hooks/useBlockingPaginationFragment.js.flow +14 -12
  148. package/relay-hooks/useEntryPointLoader.js.flow +8 -11
  149. package/relay-hooks/useFetchTrackingRef.js.flow +3 -3
  150. package/relay-hooks/useFragment.js.flow +31 -62
  151. package/relay-hooks/useFragmentNode.js.flow +6 -8
  152. package/relay-hooks/useIsMountedRef.js.flow +1 -1
  153. package/relay-hooks/useIsOperationNodeActive.js.flow +4 -6
  154. package/relay-hooks/useIsParentQueryActive.js.flow +4 -5
  155. package/relay-hooks/useLazyLoadQuery.js.flow +14 -16
  156. package/relay-hooks/useLazyLoadQueryNode.js.flow +20 -14
  157. package/relay-hooks/useLoadMoreFunction.js.flow +21 -30
  158. package/relay-hooks/useMemoOperationDescriptor.js.flow +6 -8
  159. package/relay-hooks/useMemoVariables.js.flow +7 -7
  160. package/relay-hooks/useMutation.js.flow +27 -27
  161. package/relay-hooks/usePaginationFragment.js.flow +39 -45
  162. package/relay-hooks/usePreloadedQuery.js.flow +14 -20
  163. package/relay-hooks/useQueryLoader.js.flow +42 -23
  164. package/relay-hooks/useRefetchableFragment.js.flow +8 -9
  165. package/relay-hooks/useRefetchableFragmentNode.js.flow +25 -33
  166. package/relay-hooks/useRelayEnvironment.js.flow +3 -5
  167. package/relay-hooks/useStaticFragmentNodeWarning.js.flow +3 -4
  168. package/relay-hooks/useSubscribeToInvalidationState.js.flow +4 -7
  169. package/relay-hooks/useSubscription.js.flow +21 -11
  170. package/lib/relay-hooks/getPaginationMetadata.js +0 -41
  171. package/lib/relay-hooks/getPaginationVariables.js +0 -67
  172. package/lib/relay-hooks/getRefetchMetadata.js +0 -36
  173. package/lib/relay-hooks/getValueAtPath.js +0 -51
  174. package/relay-hooks/getPaginationMetadata.js.flow +0 -74
  175. package/relay-hooks/getPaginationVariables.js.flow +0 -110
  176. package/relay-hooks/getRefetchMetadata.js.flow +0 -80
  177. package/relay-hooks/getValueAtPath.js.flow +0 -46
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -11,7 +11,8 @@
11
11
  // flowlint ambiguous-object-type:error
12
12
  'use strict';
13
13
 
14
- var invariant = require('invariant');
14
+ var _require = require('./loadQuery'),
15
+ useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
15
16
 
16
17
  var useLazyLoadQueryNode = require('./useLazyLoadQueryNode');
17
18
 
@@ -19,10 +20,7 @@ var useMemoOperationDescriptor = require('./useMemoOperationDescriptor');
19
20
 
20
21
  var useRelayEnvironment = require('./useRelayEnvironment');
21
22
 
22
- var warning = require("fbjs/lib/warning");
23
-
24
- var _require = require('./loadQuery'),
25
- useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
23
+ var invariant = require('invariant');
26
24
 
27
25
  var _require2 = require('react'),
28
26
  useDebugValue = _require2.useDebugValue;
@@ -32,6 +30,8 @@ var _require3 = require('relay-runtime'),
32
30
  fetchQueryDeduped = _require3$__internal.fetchQueryDeduped,
33
31
  fetchQuery = _require3$__internal.fetchQuery;
34
32
 
33
+ var warning = require("fbjs/lib/warning");
34
+
35
35
  function usePreloadedQuery(gqlQuery, preloadedQuery, options) {
36
36
  // We need to use this hook in order to be able to track if
37
37
  // loadQuery was called during render
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -15,24 +15,36 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
15
15
 
16
16
  var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
17
17
 
18
- var useIsMountedRef = require('./useIsMountedRef');
19
-
20
- var useRelayEnvironment = require('./useRelayEnvironment');
21
-
22
18
  var _require = require('./loadQuery'),
23
19
  loadQuery = _require.loadQuery,
24
20
  useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
25
21
 
22
+ var useIsMountedRef = require('./useIsMountedRef');
23
+
24
+ var useRelayEnvironment = require('./useRelayEnvironment');
25
+
26
26
  var _require2 = require('react'),
27
27
  useCallback = _require2.useCallback,
28
28
  useEffect = _require2.useEffect,
29
29
  useRef = _require2.useRef,
30
30
  useState = _require2.useState;
31
31
 
32
+ var _require3 = require('relay-runtime'),
33
+ getRequest = _require3.getRequest;
34
+
32
35
  var initialNullQueryReferenceState = {
33
36
  kind: 'NullQueryReference'
34
37
  };
35
38
 
39
+ function requestIsLiveQuery(preloadableRequest) {
40
+ if (preloadableRequest.kind === 'PreloadableConcreteRequest') {
41
+ return preloadableRequest.params.metadata.live !== undefined;
42
+ }
43
+
44
+ var request = getRequest(preloadableRequest);
45
+ return request.params.metadata.live !== undefined;
46
+ }
47
+
36
48
  function useQueryLoader(preloadableRequest, initialQueryReference) {
37
49
  /**
38
50
  * We want to always call `queryReference.dispose()` for every call to
@@ -175,7 +187,11 @@ function useQueryLoader(preloadableRequest, initialQueryReference) {
175
187
  undisposedQueryReferences["delete"](undisposedQueryReference);
176
188
 
177
189
  if (undisposedQueryReference.kind !== 'NullQueryReference') {
178
- undisposedQueryReference.dispose && undisposedQueryReference.dispose();
190
+ if (requestIsLiveQuery(preloadableRequest)) {
191
+ undisposedQueryReference.dispose && undisposedQueryReference.dispose();
192
+ } else {
193
+ undisposedQueryReference.releaseQuery && undisposedQueryReference.releaseQuery();
194
+ }
179
195
  }
180
196
  }
181
197
  } catch (err) {
@@ -184,7 +200,7 @@ function useQueryLoader(preloadableRequest, initialQueryReference) {
184
200
  _iterator.f();
185
201
  }
186
202
  }
187
- }, [queryReference, isMountedRef, queryLoaderCallback]);
203
+ }, [queryReference, isMountedRef, queryLoaderCallback, preloadableRequest]);
188
204
  useEffect(function () {
189
205
  return function disposeAllRemainingQueryReferences() {
190
206
  // undisposedQueryReferences.current is never reassigned
@@ -194,10 +210,14 @@ function useQueryLoader(preloadableRequest, initialQueryReference) {
194
210
 
195
211
  try {
196
212
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
197
- var unhandledStateChange = _step2.value;
213
+ var undisposedQueryReference = _step2.value;
198
214
 
199
- if (unhandledStateChange.kind !== 'NullQueryReference') {
200
- unhandledStateChange.dispose && unhandledStateChange.dispose();
215
+ if (undisposedQueryReference.kind !== 'NullQueryReference') {
216
+ if (requestIsLiveQuery(preloadableRequest)) {
217
+ undisposedQueryReference.dispose && undisposedQueryReference.dispose();
218
+ } else {
219
+ undisposedQueryReference.releaseQuery && undisposedQueryReference.releaseQuery();
220
+ }
201
221
  }
202
222
  }
203
223
  } catch (err) {
@@ -206,7 +226,7 @@ function useQueryLoader(preloadableRequest, initialQueryReference) {
206
226
  _iterator2.f();
207
227
  }
208
228
  };
209
- }, []);
229
+ }, [preloadableRequest]);
210
230
  return [queryReference.kind === 'NullQueryReference' ? null : queryReference, queryLoaderCallback, disposeQuery];
211
231
  }
212
232
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -15,13 +15,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
15
15
 
16
16
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
17
17
 
18
- var ProfilerContext = require('./ProfilerContext');
19
-
20
- var getRefetchMetadata = require('./getRefetchMetadata');
18
+ var _require = require('./FragmentResource'),
19
+ getFragmentResourceForEnvironment = _require.getFragmentResourceForEnvironment;
21
20
 
22
- var getValueAtPath = require('./getValueAtPath');
21
+ var ProfilerContext = require('./ProfilerContext');
23
22
 
24
- var invariant = require('invariant');
23
+ var _require2 = require('./QueryResource'),
24
+ getQueryResourceForEnvironment = _require2.getQueryResourceForEnvironment;
25
25
 
26
26
  var useFragmentNode = require('./useFragmentNode');
27
27
 
@@ -31,13 +31,7 @@ var useQueryLoader = require('./useQueryLoader');
31
31
 
32
32
  var useRelayEnvironment = require('./useRelayEnvironment');
33
33
 
34
- var warning = require("fbjs/lib/warning");
35
-
36
- var _require = require('./FragmentResource'),
37
- getFragmentResourceForEnvironment = _require.getFragmentResourceForEnvironment;
38
-
39
- var _require2 = require('./QueryResource'),
40
- getQueryResourceForEnvironment = _require2.getQueryResourceForEnvironment;
34
+ var invariant = require('invariant');
41
35
 
42
36
  var _require3 = require('react'),
43
37
  useCallback = _require3.useCallback,
@@ -48,7 +42,11 @@ var _require4 = require('relay-runtime'),
48
42
  fetchQuery = _require4.__internal.fetchQuery,
49
43
  createOperationDescriptor = _require4.createOperationDescriptor,
50
44
  getFragmentIdentifier = _require4.getFragmentIdentifier,
51
- getSelector = _require4.getSelector;
45
+ getRefetchMetadata = _require4.getRefetchMetadata,
46
+ getSelector = _require4.getSelector,
47
+ getValueAtPath = _require4.getValueAtPath;
48
+
49
+ var warning = require("fbjs/lib/warning");
52
50
 
53
51
  function reducer(state, action) {
54
52
  switch (action.type) {
@@ -262,7 +260,6 @@ function useRefetchFunction(componentDisplayName, dispatch, disposeQuery, fragme
262
260
  // all variables required by the fragment when calling `refetch()`.
263
261
  // We fill in any variables not passed by the call to `refetch()` with the
264
262
  // variables from the original parent fragment owner.
265
- // $FlowFixMe[cannot-spread-interface]
266
263
 
267
264
 
268
265
  var refetchVariables = (0, _objectSpread2["default"])((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, parentVariables), fragmentVariables), providedRefetchVariables); // If the query needs an identifier value ('id' or similar) and one
@@ -312,7 +309,7 @@ function useRefetchFunction(componentDisplayName, dispatch, disposeQuery, fragme
312
309
  // - fragmentNode and parentFragmentRef are also captured by including
313
310
  // fragmentIdentifier
314
311
  // eslint-disable-next-line react-hooks/exhaustive-deps
315
- [fragmentIdentifier, dispatch, disposeQuery, identifierValue]);
312
+ [fragmentIdentifier, dispatch, disposeQuery, identifierValue, loadQuery]);
316
313
  }
317
314
 
318
315
  var debugFunctions;
@@ -321,8 +318,7 @@ if (process.env.NODE_ENV !== "production") {
321
318
  debugFunctions = {
322
319
  getInitialIDAndType: function getInitialIDAndType(memoRefetchVariables, fragmentRefPathInResponse, environment) {
323
320
  var _require5 = require('relay-runtime'),
324
- Record = _require5.Record; // $FlowFixMe[prop-missing]
325
-
321
+ Record = _require5.Record;
326
322
 
327
323
  var id = memoRefetchVariables === null || memoRefetchVariables === void 0 ? void 0 : memoRefetchVariables.id;
328
324
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -11,13 +11,13 @@
11
11
  // flowlint ambiguous-object-type:error
12
12
  'use strict';
13
13
 
14
- var ReactRelayContext = require('react-relay/ReactRelayContext');
15
-
16
14
  var invariant = require('invariant');
17
15
 
18
16
  var _require = require('react'),
19
17
  useContext = _require.useContext;
20
18
 
19
+ var ReactRelayContext = require('react-relay/ReactRelayContext');
20
+
21
21
  function useRelayEnvironment() {
22
22
  var context = useContext(ReactRelayContext);
23
23
  !(context != null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'useRelayEnvironment: Expected to have found a Relay environment provided by ' + 'a `RelayEnvironmentProvider` component. ' + 'This usually means that useRelayEnvironment was used in a ' + 'component that is not a descendant of a `RelayEnvironmentProvider`. ' + 'Please make sure a `RelayEnvironmentProvider` has been rendered somewhere ' + 'as a parent or ancestor of your component.') : invariant(false) : void 0;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -11,11 +11,11 @@
11
11
  // flowlint ambiguous-object-type:error
12
12
  'use strict';
13
13
 
14
- var warning = require("fbjs/lib/warning");
15
-
16
14
  var _require = require('react'),
17
15
  useRef = _require.useRef;
18
16
 
17
+ var warning = require("fbjs/lib/warning");
18
+
19
19
  function useStaticFragmentNodeWarning(fragmentNode, warningContext) {
20
20
  if (process.env.NODE_ENV !== "production") {
21
21
  // This is calling `useRef` conditionally, but based on the environment
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -16,7 +16,6 @@ var useRelayEnvironment = require('./useRelayEnvironment');
16
16
  var _require = require('react'),
17
17
  useEffect = _require.useEffect,
18
18
  useRef = _require.useRef;
19
-
20
19
  /**
21
20
  * This hook subscribes a callback to the invalidation state of the given data
22
21
  * ids.
@@ -26,6 +25,8 @@ var _require = require('react'),
26
25
  * re-established and the previous one will be disposed.
27
26
  * The subscription will automatically be disposed on unmount
28
27
  */
28
+
29
+
29
30
  function useSubscribeToInvalidationState(dataIDs, callback) {
30
31
  var environment = useRelayEnvironment();
31
32
  var disposableRef = useRef(null);
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -10,12 +10,13 @@
10
10
  // flowlint ambiguous-object-type:error
11
11
  'use strict';
12
12
 
13
- var React = require('react');
14
-
15
13
  var useRelayEnvironment = require('./useRelayEnvironment');
16
14
 
17
- var _require = require('relay-runtime'),
18
- requestSubscription = _require.requestSubscription;
15
+ var _require = require('react'),
16
+ useEffect = _require.useEffect;
17
+
18
+ var _require2 = require('relay-runtime'),
19
+ requestSubscription = _require2.requestSubscription;
19
20
 
20
21
  function useSubscription(config, requestSubscriptionFn) {
21
22
  // N.B. this will re-subscribe every render if config or requestSubscriptionFn
@@ -23,9 +24,11 @@ function useSubscription(config, requestSubscriptionFn) {
23
24
  // Please do not pass an object defined in-line.
24
25
  var actualRequestSubscription = requestSubscriptionFn !== null && requestSubscriptionFn !== void 0 ? requestSubscriptionFn : requestSubscription;
25
26
  var environment = useRelayEnvironment();
26
- React.useEffect(function () {
27
- var _requestSubscription = requestSubscription(environment, config),
28
- dispose = _requestSubscription.dispose;
27
+ useEffect(function () {
28
+ // $FlowFixMe[method-unbinding] added when improving typing for this parameters
29
+ var _actualRequestSubscri = actualRequestSubscription(environment, config),
30
+ dispose = _actualRequestSubscri.dispose; // $FlowFixMe[incompatible-call]
31
+
29
32
 
30
33
  return dispose;
31
34
  }, [environment, config, actualRequestSubscription]);
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict-local
8
+ * @emails oncall+relay
9
+ * @format
10
+ */
11
+
12
+ 'use strict';
13
+
14
+ import type {ActorIdentifier} from 'relay-runtime/multi-actor-environment';
15
+
16
+ const RelayEnvironmentProvider = require('../relay-hooks/RelayEnvironmentProvider');
17
+ const useRelayActorEnvironment = require('./useRelayActorEnvironment');
18
+ const React = require('react');
19
+
20
+ export opaque type ActorChangePoint<TFragmentRef> = $ReadOnly<{
21
+ __fragmentRef: TFragmentRef,
22
+ __viewer: ActorIdentifier,
23
+ }>;
24
+
25
+ type ActorChangeProps<TFragmentRef> = {
26
+ actorChangePoint: ActorChangePoint<TFragmentRef>,
27
+ children: (
28
+ fragmentRef: TFragmentRef,
29
+ actorIdentifier: ActorIdentifier,
30
+ ) => React.MixedElement,
31
+ };
32
+
33
+ function ActorChange<TFragmentRef>(
34
+ props: ActorChangeProps<TFragmentRef>,
35
+ ): React.Element<typeof RelayEnvironmentProvider> {
36
+ const actorEnvironment = useRelayActorEnvironment(
37
+ props.actorChangePoint.__viewer,
38
+ );
39
+ const getEnvironmentForActor = React.useCallback(
40
+ (actorIdentifier: ActorIdentifier) => {
41
+ return actorEnvironment.multiActorEnvironment.forActor(actorIdentifier);
42
+ },
43
+ [actorEnvironment],
44
+ );
45
+
46
+ return (
47
+ <RelayEnvironmentProvider
48
+ environment={actorEnvironment}
49
+ getEnvironmentForActor={getEnvironmentForActor}>
50
+ {props.children(
51
+ props.actorChangePoint.__fragmentRef,
52
+ props.actorChangePoint.__viewer,
53
+ )}
54
+ </RelayEnvironmentProvider>
55
+ );
56
+ }
57
+
58
+ module.exports = ActorChange;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict-local
8
+ * @emails oncall+relay
9
+ * @format
10
+ */
11
+
12
+ 'use strict';
13
+
14
+ export type {ActorChangePoint} from './ActorChange';
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @emails oncall+relay
8
+ * @flow strict-local
9
+ * @format
10
+ */
11
+
12
+ // flowlint ambiguous-object-type:error
13
+
14
+ 'use strict';
15
+
16
+ import type {
17
+ ActorIdentifier,
18
+ IActorEnvironment,
19
+ } from 'relay-runtime/multi-actor-environment';
20
+
21
+ const invariant = require('invariant');
22
+ const {useContext} = require('react');
23
+ const ReactRelayContext = require('react-relay/ReactRelayContext');
24
+
25
+ function useRelayActorEnvironment(
26
+ actorIdentifier: ActorIdentifier,
27
+ ): IActorEnvironment {
28
+ const context = useContext(ReactRelayContext);
29
+ invariant(
30
+ context != null,
31
+ 'useRelayActorEnvironment: Expected to have found a Relay environment provided by ' +
32
+ 'a `RelayEnvironmentProvider` component. ' +
33
+ 'This usually means that useRelayActorEnvironment was used in a ' +
34
+ 'component that is not a descendant of a `RelayEnvironmentProvider`. ' +
35
+ 'Please make sure a `RelayEnvironmentProvider` has been rendered somewhere ' +
36
+ 'as a parent or ancestor of your component.',
37
+ );
38
+ const getEnvironmentForActor = context.getEnvironmentForActor;
39
+ invariant(
40
+ getEnvironmentForActor != null,
41
+ 'useRelayActorEnvironment: Expected to have a function `getEnvironmentForActor`.' +
42
+ 'This usually means that `RelayEnvironmentProvider`. was not properly set up for use in the ' +
43
+ 'multi actor application. Please make sure the provider has defined a `getEnvironmentForActor`.',
44
+ );
45
+
46
+ return getEnvironmentForActor(actorIdentifier);
47
+ }
48
+
49
+ module.exports = useRelayActorEnvironment;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "react-relay",
3
3
  "description": "A framework for building GraphQL-driven React applications.",
4
- "version": "11.0.2",
4
+ "version": "13.0.0-rc.2",
5
5
  "keywords": [
6
6
  "graphql",
7
7
  "relay",
@@ -13,10 +13,10 @@
13
13
  "repository": "facebook/relay",
14
14
  "dependencies": {
15
15
  "@babel/runtime": "^7.0.0",
16
- "fbjs": "^3.0.0",
16
+ "fbjs": "^3.0.2",
17
17
  "invariant": "^2.2.4",
18
18
  "nullthrows": "^1.1.1",
19
- "relay-runtime": "11.0.2"
19
+ "relay-runtime": "13.0.0-rc.2"
20
20
  },
21
21
  "peerDependencies": {
22
22
  "react": "^16.9.0 || ^17"