react-relay 20.1.1 → 21.0.1

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 (154) hide show
  1. package/ReactRelayContext.js +1 -1
  2. package/ReactRelayContext.js.flow +2 -2
  3. package/ReactRelayFragmentContainer.js.flow +8 -9
  4. package/ReactRelayLocalQueryRenderer.js.flow +11 -3
  5. package/ReactRelayLoggingContext.js.flow +3 -3
  6. package/ReactRelayPaginationContainer.js.flow +32 -25
  7. package/ReactRelayQueryFetcher.js.flow +1 -1
  8. package/ReactRelayQueryRenderer.js.flow +2 -2
  9. package/ReactRelayQueryRendererContext.js.flow +2 -2
  10. package/ReactRelayRefetchContainer.js.flow +17 -14
  11. package/ReactRelayTestMocker.js.flow +10 -10
  12. package/ReactRelayTypes.d.ts +377 -0
  13. package/ReactRelayTypes.js.flow +47 -43
  14. package/RelayContext.js.flow +3 -3
  15. package/__flowtests__/ReactRelayFragmentContainer-flowtest.js.flow +11 -11
  16. package/__flowtests__/ReactRelayPaginationContainer-flowtest.js.flow +5 -5
  17. package/__flowtests__/ReactRelayRefetchContainer-flowtest.js.flow +5 -5
  18. package/__flowtests__/RelayModern-flowtest.js.flow +32 -32
  19. package/__flowtests__/RelayModernFlowtest_users.graphql.js.flow +1 -1
  20. package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer.graphql.js.flow +3 -4
  21. package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer2.graphql.js.flow +3 -4
  22. package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtestQuery.graphql.js.flow +9 -10
  23. package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtest_viewer.graphql.js.flow +4 -5
  24. package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtestQuery.graphql.js.flow +9 -10
  25. package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtest_viewer.graphql.js.flow +4 -5
  26. package/__flowtests__/__generated__/RelayModernFlowtest_badref.graphql.js.flow +3 -4
  27. package/__flowtests__/__generated__/RelayModernFlowtest_notref.graphql.js.flow +3 -4
  28. package/__flowtests__/__generated__/RelayModernFlowtest_user.graphql.js.flow +3 -4
  29. package/__flowtests__/__generated__/RelayModernFlowtest_users.graphql.js.flow +5 -6
  30. package/buildReactRelayContainer.js.flow +5 -5
  31. package/getRootVariablesForFragments.js.flow +1 -1
  32. package/hooks.d.ts +89 -0
  33. package/hooks.js +1 -1
  34. package/hooks.js.flow +23 -8
  35. package/index.d.ts +9 -0
  36. package/index.js +1 -1
  37. package/index.js.flow +40 -14
  38. package/isRelayEnvironment.js.flow +1 -1
  39. package/jest-react/internalAct.js.flow +1 -1
  40. package/legacy.d.ts +143 -0
  41. package/legacy.js +1 -1
  42. package/legacy.js.flow +32 -13
  43. package/lib/ReactRelayFragmentContainer.js +1 -1
  44. package/lib/ReactRelayPaginationContainer.js +8 -8
  45. package/lib/ReactRelayRefetchContainer.js +8 -8
  46. package/lib/ReactRelayTestMocker.js +5 -5
  47. package/lib/hooks.js +18 -8
  48. package/lib/index.js +30 -14
  49. package/lib/legacy.js +26 -13
  50. package/lib/relay-hooks/legacy/useBlockingPaginationFragment.js +5 -5
  51. package/lib/relay-hooks/legacy/useRefetchableFragmentNode.js +34 -34
  52. package/lib/relay-hooks/loadEntryPoint.js +2 -2
  53. package/lib/relay-hooks/loadQuery.js +14 -14
  54. package/lib/relay-hooks/preloadQuery_DEPRECATED.js +10 -10
  55. package/lib/relay-hooks/readFragmentInternal.js +6 -6
  56. package/lib/relay-hooks/rsc/serverFetchQuery.js +20 -0
  57. package/lib/relay-hooks/rsc/serverPreloadQuery.js +31 -0
  58. package/lib/relay-hooks/rsc/serverReadFragment.js +15 -0
  59. package/lib/relay-hooks/rsc/useQueryFromServer.js +62 -0
  60. package/lib/relay-hooks/useFragmentInternal_CURRENT.js +49 -25
  61. package/lib/relay-hooks/useFragmentInternal_EXPERIMENTAL.js +81 -44
  62. package/lib/relay-hooks/useLazyLoadQueryNode.js +32 -19
  63. package/lib/relay-hooks/useMutation.js +6 -14
  64. package/lib/relay-hooks/useMutationAction_EXPERIMENTAL.js +26 -0
  65. package/lib/relay-hooks/usePreloadedQuery.js +52 -47
  66. package/lib/relay-hooks/useQueryLoader.js +2 -2
  67. package/lib/relay-hooks/useQueryLoader_EXPERIMENTAL.js +2 -2
  68. package/lib/relay-hooks/useRefetchableFragmentInternal.js +31 -31
  69. package/lib/rsc-client_EXPERIMENTAL.js +7 -0
  70. package/lib/rsc_EXPERIMENTAL.js +43 -0
  71. package/multi-actor/ActorChange.js.flow +1 -1
  72. package/package.json +3 -2
  73. package/relay-hooks/EntryPointContainer.react.d.ts +22 -0
  74. package/relay-hooks/EntryPointContainer.react.js.flow +6 -6
  75. package/relay-hooks/EntryPointTypes.flow.js.flow +106 -108
  76. package/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js.flow +23 -21
  77. package/relay-hooks/MatchContainer.d.ts +95 -0
  78. package/relay-hooks/MatchContainer.js.flow +17 -11
  79. package/relay-hooks/NestedRelayEntryPointBuilderUtils.js.flow +3 -9
  80. package/relay-hooks/ProfilerContext.d.ts +18 -0
  81. package/relay-hooks/QueryResource.js.flow +9 -9
  82. package/relay-hooks/RelayEnvironmentProvider.d.ts +16 -0
  83. package/relay-hooks/RelayEnvironmentProvider.js.flow +2 -2
  84. package/relay-hooks/__flowtests__/EntryPointTypes/EntryPointElementConfig-flowtest.js.flow +6 -6
  85. package/relay-hooks/__flowtests__/EntryPointTypes/ExtractQueryTypes-flowtest.js.flow +50 -3
  86. package/relay-hooks/__flowtests__/EntryPointTypes/NestedEntrypoints-flowtest.js.flow +9 -9
  87. package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_user.graphql.js.flow +3 -4
  88. package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_users.graphql.js.flow +5 -6
  89. package/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js.flow +27 -32
  90. package/relay-hooks/__flowtests__/useFragment-flowtest.js.flow +25 -25
  91. package/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js.flow +26 -32
  92. package/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js.flow +23 -30
  93. package/relay-hooks/__flowtests__/utils.js.flow +17 -17
  94. package/relay-hooks/getConnectionState.js.flow +2 -2
  95. package/relay-hooks/legacy/FragmentResource.js.flow +13 -13
  96. package/relay-hooks/legacy/useBlockingPaginationFragment.js.flow +28 -25
  97. package/relay-hooks/legacy/useFragmentNode.js.flow +4 -4
  98. package/relay-hooks/legacy/useRefetchableFragmentNode.js.flow +79 -81
  99. package/relay-hooks/loadEntryPoint.d.ts +14 -0
  100. package/relay-hooks/loadEntryPoint.js.flow +15 -13
  101. package/relay-hooks/loadQuery.d.ts +20 -0
  102. package/relay-hooks/loadQuery.js.flow +19 -19
  103. package/relay-hooks/preloadQuery_DEPRECATED.js.flow +16 -13
  104. package/relay-hooks/prepareEntryPoint_DEPRECATED.js.flow +7 -7
  105. package/relay-hooks/readFragmentInternal.js.flow +11 -11
  106. package/relay-hooks/rsc/serverFetchQuery.js.flow +31 -0
  107. package/relay-hooks/rsc/serverPreloadQuery.js.flow +69 -0
  108. package/relay-hooks/rsc/serverReadFragment.js.flow +33 -0
  109. package/relay-hooks/rsc/useQueryFromServer.js.flow +135 -0
  110. package/relay-hooks/useClientQuery.d.ts +16 -0
  111. package/relay-hooks/useClientQuery.js.flow +2 -2
  112. package/relay-hooks/useEntryPointLoader.d.ts +21 -0
  113. package/relay-hooks/useEntryPointLoader.js.flow +11 -11
  114. package/relay-hooks/useFragment.d.ts +36 -0
  115. package/relay-hooks/useFragment.js.flow +8 -8
  116. package/relay-hooks/useFragmentInternal.js.flow +1 -1
  117. package/relay-hooks/useFragmentInternal_CURRENT.js.flow +54 -22
  118. package/relay-hooks/useFragmentInternal_EXPERIMENTAL.js.flow +95 -46
  119. package/relay-hooks/useIsOperationNodeActive.js.flow +1 -1
  120. package/relay-hooks/useIsParentQueryActive.js.flow +5 -1
  121. package/relay-hooks/useLazyLoadQuery.d.ts +19 -0
  122. package/relay-hooks/useLazyLoadQuery.js.flow +14 -7
  123. package/relay-hooks/useLazyLoadQueryNode.js.flow +67 -28
  124. package/relay-hooks/useLoadMoreFunction.d.ts +56 -0
  125. package/relay-hooks/useLoadMoreFunction.js.flow +7 -6
  126. package/relay-hooks/useLoadMoreFunction_EXPERIMENTAL.js.flow +5 -5
  127. package/relay-hooks/useMemoVariables.js.flow +1 -1
  128. package/relay-hooks/useMutation.d.ts +36 -0
  129. package/relay-hooks/useMutation.js.flow +9 -17
  130. package/relay-hooks/useMutationAction_EXPERIMENTAL.js.flow +68 -0
  131. package/relay-hooks/usePaginationFragment.d.ts +33 -0
  132. package/relay-hooks/usePaginationFragment.js.flow +19 -11
  133. package/relay-hooks/usePrefetchableForwardPaginationFragment.js.flow +23 -18
  134. package/relay-hooks/usePrefetchableForwardPaginationFragment_EXPERIMENTAL.js.flow +23 -18
  135. package/relay-hooks/usePreloadedQuery.d.ts +17 -0
  136. package/relay-hooks/usePreloadedQuery.js.flow +119 -85
  137. package/relay-hooks/useQueryLoader.d.ts +33 -0
  138. package/relay-hooks/useQueryLoader.js.flow +28 -24
  139. package/relay-hooks/useQueryLoader_EXPERIMENTAL.js.flow +10 -10
  140. package/relay-hooks/useRefetchableFragment.d.ts +23 -0
  141. package/relay-hooks/useRefetchableFragment.js.flow +20 -11
  142. package/relay-hooks/useRefetchableFragmentInternal.js.flow +77 -79
  143. package/relay-hooks/useRelayEnvironment.d.ts +10 -0
  144. package/relay-hooks/useRelayLoggingContext.js.flow +1 -1
  145. package/relay-hooks/useSubscribeToInvalidationState.d.ts +19 -0
  146. package/relay-hooks/useSubscribeToInvalidationState.js.flow +1 -1
  147. package/relay-hooks/useSubscription.d.ts +14 -0
  148. package/relay-hooks/useSubscription.js.flow +1 -1
  149. package/rsc-client_EXPERIMENTAL.d.ts +17 -0
  150. package/rsc-client_EXPERIMENTAL.js +10 -0
  151. package/rsc-client_EXPERIMENTAL.js.flow +23 -0
  152. package/rsc_EXPERIMENTAL.d.ts +48 -0
  153. package/rsc_EXPERIMENTAL.js +10 -0
  154. package/rsc_EXPERIMENTAL.js.flow +90 -0
@@ -13,64 +13,69 @@ var _require2 = require('relay-runtime'),
13
13
  var warning = require("fbjs/lib/warning");
14
14
  function usePreloadedQuery(gqlQuery, preloadedQuery, options) {
15
15
  var environment = useRelayEnvironment();
16
- var fetchKey = preloadedQuery.fetchKey,
17
- fetchPolicy = preloadedQuery.fetchPolicy,
18
- source = preloadedQuery.source,
19
- variables = preloadedQuery.variables,
20
- networkCacheConfig = preloadedQuery.networkCacheConfig;
21
- var operation = useMemoOperationDescriptor(gqlQuery, variables, networkCacheConfig);
16
+ var operation = useMemoOperationDescriptor(gqlQuery, preloadedQuery != null ? preloadedQuery.variables : {}, preloadedQuery != null ? preloadedQuery.networkCacheConfig : undefined);
22
17
  var useLazyLoadQueryNodeParams;
23
- if (preloadedQuery.kind === 'PreloadedQuery_DEPRECATED') {
24
- !(operation.request.node.params.name === preloadedQuery.name) ? process.env.NODE_ENV !== "production" ? invariant(false, 'usePreloadedQuery(): Expected data to be prefetched for query `%s`, ' + 'got prefetch results for query `%s`.', operation.request.node.params.name, preloadedQuery.name) : invariant(false) : void 0;
25
- useLazyLoadQueryNodeParams = {
26
- componentDisplayName: 'usePreloadedQuery()',
27
- fetchKey: fetchKey,
28
- fetchObservable: fetchQueryDeduped(environment, operation.request.identifier, function () {
29
- if (environment === preloadedQuery.environment && source != null) {
30
- return environment.executeWithSource({
31
- operation: operation,
32
- source: source
33
- });
34
- } else {
35
- return environment.execute({
36
- operation: operation
37
- });
38
- }
39
- }),
40
- fetchPolicy: fetchPolicy,
41
- query: operation,
42
- renderPolicy: options === null || options === void 0 ? void 0 : options.UNSTABLE_renderPolicy
43
- };
44
- } else {
45
- process.env.NODE_ENV !== "production" ? warning(preloadedQuery.isDisposed === false, 'usePreloadedQuery(): Expected preloadedQuery to not be disposed yet. ' + 'This is because disposing the query marks it for future garbage ' + 'collection, and as such query results may no longer be present in the Relay ' + 'store. In the future, this will become a hard error.') : void 0;
46
- var fallbackFetchObservable = fetchQuery(environment, operation);
47
- var fetchObservable;
48
- if (source != null && environment === preloadedQuery.environment) {
49
- fetchObservable = source.ifEmpty(fallbackFetchObservable);
50
- } else if (environment !== preloadedQuery.environment) {
51
- process.env.NODE_ENV !== "production" ? warning(false, 'usePreloadedQuery(): usePreloadedQuery was passed a preloaded query ' + 'that was created with a different environment than the one that is currently ' + 'in context. In the future, this will become a hard error.') : void 0;
52
- fetchObservable = fallbackFetchObservable;
18
+ if (preloadedQuery != null) {
19
+ var fetchKey = preloadedQuery.fetchKey,
20
+ fetchPolicy = preloadedQuery.fetchPolicy,
21
+ source = preloadedQuery.source;
22
+ if (preloadedQuery.kind === 'PreloadedQuery_DEPRECATED') {
23
+ !(operation.request.node.params.name === preloadedQuery.name) ? process.env.NODE_ENV !== "production" ? invariant(false, 'usePreloadedQuery(): Expected data to be prefetched for query `%s`, ' + 'got prefetch results for query `%s`.', operation.request.node.params.name, preloadedQuery.name) : invariant(false) : void 0;
24
+ useLazyLoadQueryNodeParams = {
25
+ componentDisplayName: 'usePreloadedQuery()',
26
+ fetchKey: fetchKey,
27
+ fetchObservable: fetchQueryDeduped(environment, operation.request.identifier, function () {
28
+ if (environment === preloadedQuery.environment && source != null) {
29
+ return environment.executeWithSource({
30
+ operation: operation,
31
+ source: source
32
+ });
33
+ } else {
34
+ return environment.execute({
35
+ operation: operation
36
+ });
37
+ }
38
+ }),
39
+ fetchPolicy: fetchPolicy,
40
+ query: operation,
41
+ renderPolicy: options === null || options === void 0 ? void 0 : options.UNSTABLE_renderPolicy
42
+ };
53
43
  } else {
54
- fetchObservable = fallbackFetchObservable;
44
+ process.env.NODE_ENV !== "production" ? warning(preloadedQuery.isDisposed === false, 'usePreloadedQuery(): Expected preloadedQuery to not be disposed yet. ' + 'This is because disposing the query marks it for future garbage ' + 'collection, and as such query results may no longer be present in the Relay ' + 'store. In the future, this will become a hard error.') : void 0;
45
+ var fallbackFetchObservable = fetchQuery(environment, operation);
46
+ var fetchObservable;
47
+ if (source != null && environment === preloadedQuery.environment) {
48
+ fetchObservable = source.ifEmpty(fallbackFetchObservable);
49
+ } else if (environment !== preloadedQuery.environment) {
50
+ process.env.NODE_ENV !== "production" ? warning(false, 'usePreloadedQuery(): usePreloadedQuery was passed a preloaded query ' + 'that was created with a different environment than the one that is currently ' + 'in context. In the future, this will become a hard error.') : void 0;
51
+ fetchObservable = fallbackFetchObservable;
52
+ } else {
53
+ fetchObservable = fallbackFetchObservable;
54
+ }
55
+ useLazyLoadQueryNodeParams = {
56
+ componentDisplayName: 'usePreloadedQuery()',
57
+ fetchKey: fetchKey,
58
+ fetchObservable: fetchObservable,
59
+ fetchPolicy: fetchPolicy,
60
+ query: operation,
61
+ renderPolicy: options === null || options === void 0 ? void 0 : options.UNSTABLE_renderPolicy
62
+ };
55
63
  }
64
+ } else {
56
65
  useLazyLoadQueryNodeParams = {
57
66
  componentDisplayName: 'usePreloadedQuery()',
58
- fetchObservable: fetchObservable,
59
- fetchKey: fetchKey,
60
- fetchPolicy: fetchPolicy,
61
- query: operation,
62
- renderPolicy: options === null || options === void 0 ? void 0 : options.UNSTABLE_renderPolicy
67
+ fragmentNode: gqlQuery.fragment
63
68
  };
64
69
  }
65
70
  var data = useLazyLoadQueryNode(useLazyLoadQueryNodeParams);
66
71
  if (process.env.NODE_ENV !== "production") {
67
72
  useDebugValue({
68
- query: preloadedQuery.name,
69
- variables: preloadedQuery.variables,
70
73
  data: data,
71
- fetchKey: fetchKey,
72
- fetchPolicy: fetchPolicy,
73
- renderPolicy: options === null || options === void 0 ? void 0 : options.UNSTABLE_renderPolicy
74
+ fetchKey: preloadedQuery === null || preloadedQuery === void 0 ? void 0 : preloadedQuery.fetchKey,
75
+ fetchPolicy: preloadedQuery === null || preloadedQuery === void 0 ? void 0 : preloadedQuery.fetchPolicy,
76
+ query: preloadedQuery === null || preloadedQuery === void 0 ? void 0 : preloadedQuery.name,
77
+ renderPolicy: options === null || options === void 0 ? void 0 : options.UNSTABLE_renderPolicy,
78
+ variables: preloadedQuery === null || preloadedQuery === void 0 ? void 0 : preloadedQuery.variables
74
79
  });
75
80
  }
76
81
  return data;
@@ -59,9 +59,9 @@ function useQueryLoader_CURRENT(preloadableRequest, initialQueryReference) {
59
59
  }, [isMountedRef]);
60
60
  var queryLoaderCallback = useCallback(function (variables, options) {
61
61
  var mergedOptions = options != null && options.hasOwnProperty('__environment') ? {
62
+ __nameForWarning: options.__nameForWarning,
62
63
  fetchPolicy: options.fetchPolicy,
63
- networkCacheConfig: options.networkCacheConfig,
64
- __nameForWarning: options.__nameForWarning
64
+ networkCacheConfig: options.networkCacheConfig
65
65
  } : options;
66
66
  if (isMountedRef.current) {
67
67
  var _options$__environmen;
@@ -62,9 +62,9 @@ function useQueryLoader_EXPERIMENTAL(preloadableRequest, initialQueryReference)
62
62
  return;
63
63
  }
64
64
  var mergedOptions = options != null && options.hasOwnProperty('__environment') ? {
65
+ __nameForWarning: options.__nameForWarning,
65
66
  fetchPolicy: options.fetchPolicy,
66
- networkCacheConfig: options.networkCacheConfig,
67
- __nameForWarning: options.__nameForWarning
67
+ networkCacheConfig: options.networkCacheConfig
68
68
  } : options;
69
69
  var updatedQueryReference = loadQuery((_options$__environmen = options === null || options === void 0 ? void 0 : options.__environment) !== null && _options$__environmen !== void 0 ? _options$__environmen : environment, preloadableRequest, variables, mergedOptions);
70
70
  (_undisposedQueryRefer3 = undisposedQueryReferencesRef.current) === null || _undisposedQueryRefer3 === void 0 ? void 0 : _undisposedQueryRefer3.add(updatedQueryReference);
@@ -91,9 +91,9 @@ function useRefetchableFragmentInternal(fragmentNode, parentFragmentRef, compone
91
91
  var fragmentRef = parentFragmentRef;
92
92
  if (shouldReset) {
93
93
  dispatch({
94
- type: 'reset',
95
94
  environment: environment,
96
- fragmentIdentifier: fragmentIdentifier
95
+ fragmentIdentifier: fragmentIdentifier,
96
+ type: 'reset'
97
97
  });
98
98
  disposeQuery();
99
99
  } else if (refetchQuery != null && queryRef != null) {
@@ -107,13 +107,13 @@ function useRefetchableFragmentInternal(fragmentNode, parentFragmentRef, compone
107
107
  var fetchObservable = queryRef.source != null ? queryRef.source : fetchQuery(environment, refetchQuery);
108
108
  var queryResult = profilerContext.wrapPrepareQueryResource(function () {
109
109
  return QueryResource.prepare(refetchQuery, fetchObservable, fetchPolicy, renderPolicy, {
110
- error: handleQueryCompleted,
111
110
  complete: function complete() {
112
111
  if (process.env.NODE_ENV !== "production") {
113
112
  debugFunctions.checkSameTypeAfterRefetch(debugPreviousIDAndTypename, environment, fragmentNode, componentDisplayName);
114
113
  }
115
114
  handleQueryCompleted();
116
- }
115
+ },
116
+ error: handleQueryCompleted
117
117
  }, queryRef.fetchKey, profilerContext);
118
118
  });
119
119
  var queryData = readFragmentInternal(environment, queryResult.fragmentNode, queryResult.fragmentRef, componentDisplayName).data;
@@ -174,17 +174,17 @@ function useRefetchFunction(componentDisplayName, dispatch, disposeQuery, fragme
174
174
  force: true
175
175
  });
176
176
  loadQuery(refetchQuery.request.variables, {
177
- fetchPolicy: fetchPolicy,
178
177
  __environment: refetchEnvironment,
179
- __nameForWarning: 'refetch'
178
+ __nameForWarning: 'refetch',
179
+ fetchPolicy: fetchPolicy
180
180
  });
181
181
  dispatch({
182
- type: 'refetch',
183
182
  fetchPolicy: fetchPolicy,
184
183
  onComplete: onComplete,
185
184
  refetchEnvironment: refetchEnvironment,
186
185
  refetchQuery: refetchQuery,
187
- renderPolicy: renderPolicy
186
+ renderPolicy: renderPolicy,
187
+ type: 'refetch'
188
188
  });
189
189
  return {
190
190
  dispose: disposeQuery
@@ -194,23 +194,16 @@ function useRefetchFunction(componentDisplayName, dispatch, disposeQuery, fragme
194
194
  var debugFunctions;
195
195
  if (process.env.NODE_ENV !== "production") {
196
196
  debugFunctions = {
197
- getInitialIDAndType: function getInitialIDAndType(memoRefetchVariables, fragmentRefPathInResponse, identifierQueryVariableName, environment) {
198
- var _require4 = require('relay-runtime'),
199
- Record = _require4.Record;
200
- var id = memoRefetchVariables === null || memoRefetchVariables === void 0 ? void 0 : memoRefetchVariables[identifierQueryVariableName !== null && identifierQueryVariableName !== void 0 ? identifierQueryVariableName : 'id'];
201
- if (fragmentRefPathInResponse.length !== 1 || fragmentRefPathInResponse[0] !== 'node' || id == null) {
202
- return null;
197
+ checkSameIDAfterRefetch: function checkSameIDAfterRefetch(previousIDAndTypename, refetchedFragmentRef, fragmentNode, componentDisplayName) {
198
+ if (previousIDAndTypename == null || refetchedFragmentRef == null) {
199
+ return;
203
200
  }
204
- var recordSource = environment.getStore().getSource();
205
- var record = recordSource.get(id);
206
- var typename = record == null ? null : Record.getType(record);
207
- if (typename == null) {
208
- return null;
201
+ var _require4 = require('relay-runtime'),
202
+ ID_KEY = _require4.ID_KEY;
203
+ var resultID = refetchedFragmentRef[ID_KEY];
204
+ if (resultID != null && resultID !== previousIDAndTypename.id) {
205
+ process.env.NODE_ENV !== "production" ? warning(false, 'Relay: Call to `refetch` returned a different id, expected ' + '`%s`, got `%s`, on `%s` in `%s`. ' + 'Please make sure the server correctly implements ' + 'unique id requirement.', resultID, previousIDAndTypename.id, fragmentNode.name, componentDisplayName) : void 0;
209
206
  }
210
- return {
211
- id: id,
212
- typename: typename
213
- };
214
207
  },
215
208
  checkSameTypeAfterRefetch: function checkSameTypeAfterRefetch(previousIDAndType, environment, fragmentNode, componentDisplayName) {
216
209
  var _require5 = require('relay-runtime'),
@@ -225,16 +218,23 @@ if (process.env.NODE_ENV !== "production") {
225
218
  process.env.NODE_ENV !== "production" ? warning(false, 'Relay: Call to `refetch` returned data with a different ' + '__typename: was `%s`, now `%s`, on `%s` in `%s`. ' + 'Please make sure the server correctly implements' + 'unique id requirement.', previousIDAndType.typename, typename, fragmentNode.name, componentDisplayName) : void 0;
226
219
  }
227
220
  },
228
- checkSameIDAfterRefetch: function checkSameIDAfterRefetch(previousIDAndTypename, refetchedFragmentRef, fragmentNode, componentDisplayName) {
229
- if (previousIDAndTypename == null || refetchedFragmentRef == null) {
230
- return;
231
- }
221
+ getInitialIDAndType: function getInitialIDAndType(memoRefetchVariables, fragmentRefPathInResponse, identifierQueryVariableName, environment) {
232
222
  var _require6 = require('relay-runtime'),
233
- ID_KEY = _require6.ID_KEY;
234
- var resultID = refetchedFragmentRef[ID_KEY];
235
- if (resultID != null && resultID !== previousIDAndTypename.id) {
236
- process.env.NODE_ENV !== "production" ? warning(false, 'Relay: Call to `refetch` returned a different id, expected ' + '`%s`, got `%s`, on `%s` in `%s`. ' + 'Please make sure the server correctly implements ' + 'unique id requirement.', resultID, previousIDAndTypename.id, fragmentNode.name, componentDisplayName) : void 0;
223
+ Record = _require6.Record;
224
+ var id = memoRefetchVariables === null || memoRefetchVariables === void 0 ? void 0 : memoRefetchVariables[identifierQueryVariableName !== null && identifierQueryVariableName !== void 0 ? identifierQueryVariableName : 'id'];
225
+ if (fragmentRefPathInResponse.length !== 1 || fragmentRefPathInResponse[0] !== 'node' || id == null) {
226
+ return null;
237
227
  }
228
+ var recordSource = environment.getStore().getSource();
229
+ var record = recordSource.get(id);
230
+ var typename = record == null ? null : Record.getType(record);
231
+ if (typename == null) {
232
+ return null;
233
+ }
234
+ return {
235
+ id: id,
236
+ typename: typename
237
+ };
238
238
  }
239
239
  };
240
240
  }
@@ -0,0 +1,7 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ var useQueryFromServer = require('./relay-hooks/rsc/useQueryFromServer');
5
+ module.exports = {
6
+ useQueryFromServer: useQueryFromServer
7
+ };
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+
3
+ var _asyncToGenerator = require("@babel/runtime/helpers/asyncToGenerator").default;
4
+ var serverFetchQueryImpl = require('./relay-hooks/rsc/serverFetchQuery');
5
+ var serverPreloadQueryImpl = require('./relay-hooks/rsc/serverPreloadQuery');
6
+ var serverReadFragmentImpl = require('./relay-hooks/rsc/serverReadFragment');
7
+ var invariant = require('invariant');
8
+ var React = require('react');
9
+ function createServerEnvironment(create) {
10
+ var cache = React.cache;
11
+ !(typeof cache === 'function') ? process.env.NODE_ENV !== "production" ? invariant(false, 'Relay RSC APIs require React 19+') : invariant(false) : void 0;
12
+ var getEnvironment = cache(create);
13
+ function serverFetchQuery(_x, _x2) {
14
+ return _serverFetchQuery.apply(this, arguments);
15
+ }
16
+ function _serverFetchQuery() {
17
+ _serverFetchQuery = _asyncToGenerator(function* (query, variables) {
18
+ return serverFetchQueryImpl(getEnvironment(), query, variables);
19
+ });
20
+ return _serverFetchQuery.apply(this, arguments);
21
+ }
22
+ function serverPreloadQuery(query, variables) {
23
+ return serverPreloadQueryImpl(getEnvironment(), query, variables);
24
+ }
25
+ function serverReadFragment(_x3, _x4) {
26
+ return _serverReadFragment.apply(this, arguments);
27
+ }
28
+ function _serverReadFragment() {
29
+ _serverReadFragment = _asyncToGenerator(function* (fragment, fragmentRef) {
30
+ return serverReadFragmentImpl(getEnvironment(), fragment, fragmentRef);
31
+ });
32
+ return _serverReadFragment.apply(this, arguments);
33
+ }
34
+ return {
35
+ getEnvironment: getEnvironment,
36
+ serverFetchQuery: serverFetchQuery,
37
+ serverPreloadQuery: serverPreloadQuery,
38
+ serverReadFragment: serverReadFragment
39
+ };
40
+ }
41
+ module.exports = {
42
+ createServerEnvironment: createServerEnvironment
43
+ };
@@ -17,7 +17,7 @@ const RelayEnvironmentProvider = require('../relay-hooks/RelayEnvironmentProvide
17
17
  const useRelayActorEnvironment = require('./useRelayActorEnvironment');
18
18
  const React = require('react');
19
19
 
20
- export opaque type ActorChangePoint<TFragmentRef> = $ReadOnly<{
20
+ export opaque type ActorChangePoint<TFragmentRef> = Readonly<{
21
21
  __fragmentRef: TFragmentRef,
22
22
  __viewer: ActorIdentifier,
23
23
  }>;
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": "20.1.1",
4
+ "version": "21.0.1",
5
5
  "keywords": [
6
6
  "graphql",
7
7
  "relay",
@@ -20,7 +20,7 @@
20
20
  "fbjs": "^3.0.2",
21
21
  "invariant": "^2.2.4",
22
22
  "nullthrows": "^1.1.1",
23
- "relay-runtime": "20.1.1"
23
+ "relay-runtime": "21.0.1"
24
24
  },
25
25
  "peerDependencies": {
26
26
  "react": "^16.9.0 || ^17 || ^18 || ^19"
@@ -29,5 +29,6 @@
29
29
  "": "./"
30
30
  },
31
31
  "main": "index.js",
32
+ "types": "index.d.ts",
32
33
  "haste_commonjs": true
33
34
  }
@@ -0,0 +1,22 @@
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
+
8
+ import {EntryPointComponent, PreloadedEntryPoint} from '../ReactRelayTypes';
9
+ import { ReactElement } from 'react';
10
+
11
+ type GetComponentFromPreloadedEntryPoint<T> = T extends PreloadedEntryPoint<infer C> ? C : never;
12
+ type GetRuntimePropsFromComponent<T> = T extends EntryPointComponent<any, any, infer R, any> ? R : never;
13
+
14
+ export function EntryPointContainer<TPreloadedEntryPoint extends PreloadedEntryPoint<any>>({
15
+ entryPointReference,
16
+ props,
17
+ }: Readonly<{
18
+ entryPointReference: TPreloadedEntryPoint;
19
+ props: GetRuntimePropsFromComponent<GetComponentFromPreloadedEntryPoint<TPreloadedEntryPoint>>;
20
+ }>): ReactElement;
21
+
22
+ export {};
@@ -24,16 +24,16 @@ const warning = require('warning');
24
24
 
25
25
  component EntryPointContainer<
26
26
  // $FlowFixMe[unsupported-variance-annotation]
27
- TRuntimeProps: {...},
28
- TRenders: React.Node,
27
+ TRuntimeProps extends {...},
28
+ TRenders extends React.Node,
29
29
  // $FlowFixMe[unsupported-variance-annotation]
30
- TEntryPointComponent: EntryPointComponent<
31
- // $FlowExpectedErrors[unclear-type] Use any to accept all kinds of EntryPointComponent
30
+ TEntryPointComponent extends EntryPointComponent<
31
+ // $FlowExpectedError[unclear-type] s[unclear-type] Use any to accept all kinds of EntryPointComponent
32
32
  any,
33
- // $FlowExpectedErrors[unclear-type] Use any to accept all kinds of EntryPointComponent
33
+ // $FlowExpectedError[unclear-type] s[unclear-type] Use any to accept all kinds of EntryPointComponent
34
34
  any,
35
35
  TRuntimeProps,
36
- // $FlowExpectedErrors[unclear-type] Use any to accept all kinds of EntryPointComponent
36
+ // $FlowExpectedError[unclear-type] s[unclear-type] Use any to accept all kinds of EntryPointComponent
37
37
  any,
38
38
  TRenders,
39
39
  >,