react-relay 15.0.0 → 16.1.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 (126) hide show
  1. package/ReactRelayContext.js +1 -1
  2. package/ReactRelayQueryFetcher.js.flow +1 -5
  3. package/ReactRelayQueryRenderer.js.flow +9 -36
  4. package/ReactRelayTypes.js.flow +1 -0
  5. package/buildReactRelayContainer.js.flow +3 -1
  6. package/hooks.js +1 -1
  7. package/index.js +1 -1
  8. package/legacy.js +1 -1
  9. package/lib/ReactRelayContainerUtils.js +0 -11
  10. package/lib/ReactRelayContext.js +0 -11
  11. package/lib/ReactRelayFragmentContainer.js +6 -78
  12. package/lib/ReactRelayFragmentMockRenderer.js +0 -11
  13. package/lib/ReactRelayLocalQueryRenderer.js +0 -17
  14. package/lib/ReactRelayPaginationContainer.js +5 -208
  15. package/lib/ReactRelayQueryFetcher.js +2 -51
  16. package/lib/ReactRelayQueryRenderer.js +6 -94
  17. package/lib/ReactRelayQueryRendererContext.js +0 -11
  18. package/lib/ReactRelayRefetchContainer.js +5 -91
  19. package/lib/ReactRelayTestMocker.js +9 -85
  20. package/lib/ReactRelayTypes.js +0 -11
  21. package/lib/RelayContext.js +0 -21
  22. package/lib/assertFragmentMap.js +0 -15
  23. package/lib/buildReactRelayContainer.js +0 -19
  24. package/lib/getRootVariablesForFragments.js +0 -14
  25. package/lib/hooks.js +0 -15
  26. package/lib/index.js +0 -17
  27. package/lib/isRelayEnvironment.js +1 -18
  28. package/lib/jest-react/enqueueTask.js +0 -20
  29. package/lib/jest-react/internalAct.js +0 -38
  30. package/lib/legacy.js +0 -15
  31. package/lib/multi-actor/ActorChange.js +0 -11
  32. package/lib/multi-actor/index.js +0 -11
  33. package/lib/multi-actor/useRelayActorEnvironment.js +0 -11
  34. package/lib/relay-hooks/EntryPointContainer.react.js +0 -11
  35. package/lib/relay-hooks/EntryPointTypes.flow.js +1 -14
  36. package/lib/relay-hooks/FragmentResource.js +76 -132
  37. package/lib/relay-hooks/HooksImplementation.js +1 -12
  38. package/lib/relay-hooks/InternalLogger.js +0 -11
  39. package/lib/relay-hooks/LRUCache.js +0 -22
  40. package/lib/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js +0 -18
  41. package/lib/relay-hooks/MatchContainer.js +0 -94
  42. package/lib/relay-hooks/NestedRelayEntryPointBuilderUtils.js +9 -0
  43. package/lib/relay-hooks/ProfilerContext.js +0 -15
  44. package/lib/relay-hooks/QueryResource.js +2 -68
  45. package/lib/relay-hooks/RelayEnvironmentProvider.js +0 -11
  46. package/lib/relay-hooks/SuspenseResource.js +0 -34
  47. package/lib/relay-hooks/{react-cache/readFragmentInternal_REACT_CACHE.js → experimental/readFragmentInternal_EXPERIMENTAL.js} +5 -29
  48. package/lib/relay-hooks/{react-cache/useFragmentInternal_REACT_CACHE.js → experimental/useFragmentInternal_EXPERIMENTAL.js} +35 -100
  49. package/lib/relay-hooks/{react-cache/useFragment_REACT_CACHE.js → experimental/useFragment_EXPERIMENTAL.js} +1 -16
  50. package/lib/relay-hooks/{react-cache/usePaginationFragment_REACT_CACHE.js → experimental/usePaginationFragment_EXPERIMENTAL.js} +2 -24
  51. package/lib/relay-hooks/{react-cache/useRefetchableFragmentInternal_REACT_CACHE.js → experimental/useRefetchableFragmentInternal_EXPERIMENTAL.js} +14 -98
  52. package/lib/relay-hooks/{react-cache/useRefetchableFragment_REACT_CACHE.js → experimental/useRefetchableFragment_EXPERIMENTAL.js} +1 -15
  53. package/lib/relay-hooks/loadEntryPoint.js +1 -24
  54. package/lib/relay-hooks/loadQuery.js +2 -106
  55. package/lib/relay-hooks/preloadQuery_DEPRECATED.js +2 -27
  56. package/lib/relay-hooks/prepareEntryPoint_DEPRECATED.js +0 -13
  57. package/lib/relay-hooks/useBlockingPaginationFragment.js +0 -42
  58. package/lib/relay-hooks/useClientQuery.js +0 -18
  59. package/lib/relay-hooks/useEntryPointLoader.js +0 -69
  60. package/lib/relay-hooks/useFetchTrackingRef.js +0 -26
  61. package/lib/relay-hooks/useFragment.js +0 -17
  62. package/lib/relay-hooks/useFragmentNode.js +2 -32
  63. package/lib/relay-hooks/useIsMountedRef.js +0 -11
  64. package/lib/relay-hooks/useIsOperationNodeActive.js +0 -11
  65. package/lib/relay-hooks/useIsParentQueryActive.js +0 -11
  66. package/lib/relay-hooks/useLazyLoadQuery.js +0 -18
  67. package/lib/relay-hooks/useLazyLoadQueryNode.js +12 -37
  68. package/lib/relay-hooks/useLoadMoreFunction.js +9 -34
  69. package/lib/relay-hooks/useMemoOperationDescriptor.js +0 -11
  70. package/lib/relay-hooks/useMemoVariables.js +0 -17
  71. package/lib/relay-hooks/useMutation.js +0 -11
  72. package/lib/relay-hooks/usePaginationFragment.js +1 -26
  73. package/lib/relay-hooks/usePreloadedQuery.js +0 -27
  74. package/lib/relay-hooks/useQueryLoader.js +0 -74
  75. package/lib/relay-hooks/useRefetchableFragment.js +0 -16
  76. package/lib/relay-hooks/useRefetchableFragmentNode.js +14 -97
  77. package/lib/relay-hooks/useRelayEnvironment.js +0 -11
  78. package/lib/relay-hooks/useStaticFragmentNodeWarning.js +0 -15
  79. package/lib/relay-hooks/useSubscribeToInvalidationState.js +0 -25
  80. package/lib/relay-hooks/useSubscription.js +0 -15
  81. package/lib/relay-hooks/useUnsafeRef_DEPRECATED.js +0 -17
  82. package/package.json +2 -2
  83. package/react-relay-hooks.js +2 -2
  84. package/react-relay-hooks.min.js +2 -2
  85. package/react-relay-legacy.js +2 -2
  86. package/react-relay-legacy.min.js +2 -2
  87. package/react-relay.js +2 -2
  88. package/react-relay.min.js +2 -2
  89. package/relay-hooks/EntryPointContainer.react.js.flow +5 -0
  90. package/relay-hooks/EntryPointTypes.flow.js.flow +34 -35
  91. package/relay-hooks/FragmentResource.js.flow +114 -26
  92. package/relay-hooks/HooksImplementation.js.flow +3 -1
  93. package/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js.flow +4 -2
  94. package/relay-hooks/NestedRelayEntryPointBuilderUtils.js.flow +51 -0
  95. package/relay-hooks/__flowtests__/EntryPointTypes/NestedEntrypoints-flowtest.js.flow +7 -5
  96. package/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js.flow +5 -0
  97. package/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js.flow +5 -0
  98. package/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js.flow +2 -0
  99. package/relay-hooks/{react-cache/readFragmentInternal_REACT_CACHE.js.flow → experimental/readFragmentInternal_EXPERIMENTAL.js.flow} +4 -3
  100. package/relay-hooks/{react-cache/useFragmentInternal_REACT_CACHE.js.flow → experimental/useFragmentInternal_EXPERIMENTAL.js.flow} +32 -14
  101. package/relay-hooks/{react-cache/useFragment_REACT_CACHE.js.flow → experimental/useFragment_EXPERIMENTAL.js.flow} +4 -10
  102. package/relay-hooks/{react-cache/usePaginationFragment_REACT_CACHE.js.flow → experimental/usePaginationFragment_EXPERIMENTAL.js.flow} +30 -59
  103. package/relay-hooks/{react-cache/useRefetchableFragmentInternal_REACT_CACHE.js.flow → experimental/useRefetchableFragmentInternal_EXPERIMENTAL.js.flow} +30 -23
  104. package/relay-hooks/experimental/useRefetchableFragment_EXPERIMENTAL.js.flow +49 -0
  105. package/relay-hooks/loadEntryPoint.js.flow +4 -2
  106. package/relay-hooks/loadQuery.js.flow +21 -1
  107. package/relay-hooks/prepareEntryPoint_DEPRECATED.js.flow +4 -2
  108. package/relay-hooks/useBlockingPaginationFragment.js.flow +10 -17
  109. package/relay-hooks/useClientQuery.js.flow +2 -2
  110. package/relay-hooks/useFragmentNode.js.flow +2 -2
  111. package/relay-hooks/useLazyLoadQueryNode.js.flow +17 -1
  112. package/relay-hooks/useLoadMoreFunction.js.flow +15 -9
  113. package/relay-hooks/useMutation.js.flow +26 -9
  114. package/relay-hooks/usePaginationFragment.js.flow +7 -15
  115. package/relay-hooks/useQueryLoader.js.flow +2 -8
  116. package/relay-hooks/useRefetchableFragment.js.flow +14 -16
  117. package/relay-hooks/useRefetchableFragmentNode.js.flow +33 -20
  118. package/lib/relay-hooks/react-cache/RelayReactCache.js +0 -32
  119. package/lib/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js +0 -290
  120. package/lib/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js +0 -49
  121. package/lib/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js +0 -110
  122. package/relay-hooks/react-cache/RelayReactCache.js.flow +0 -40
  123. package/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js.flow +0 -430
  124. package/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js.flow +0 -70
  125. package/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js.flow +0 -150
  126. package/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js.flow +0 -65
@@ -1,290 +0,0 @@
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
- * @format
9
- * @oncall relay
10
- */
11
-
12
- 'use strict';
13
-
14
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
15
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
16
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
- var SuspenseResource = require('../SuspenseResource');
18
- var _require = require('./RelayReactCache'),
19
- getCacheForType = _require.getCacheForType,
20
- getCacheSignal = _require.getCacheSignal;
21
- var invariant = require('invariant');
22
- var _require2 = require('relay-runtime'),
23
- fetchQueryInternal = _require2.__internal.fetchQuery,
24
- RelayFeatureFlags = _require2.RelayFeatureFlags;
25
- var warning = require("fbjs/lib/warning");
26
- var DEFAULT_FETCH_POLICY = 'store-or-network';
27
- var WEAKMAP_SUPPORTED = typeof WeakMap === 'function';
28
- var QueryCache = /*#__PURE__*/function () {
29
- function QueryCache() {
30
- this._map = WEAKMAP_SUPPORTED ? new WeakMap() : new Map();
31
- }
32
- var _proto = QueryCache.prototype;
33
- _proto.get = function get(environment, key) {
34
- var forEnv = this._map.get(environment);
35
- if (!forEnv) {
36
- forEnv = new Map();
37
- this._map.set(environment, forEnv);
38
- }
39
- return forEnv.get(key);
40
- };
41
- _proto.set = function set(environment, key, value) {
42
- var forEnv = this._map.get(environment);
43
- if (!forEnv) {
44
- forEnv = new Map();
45
- this._map.set(environment, forEnv);
46
- }
47
- forEnv.set(key, value);
48
- };
49
- _proto["delete"] = function _delete(environment, key) {
50
- var forEnv = this._map.get(environment);
51
- if (!forEnv) {
52
- return;
53
- }
54
- forEnv["delete"](key);
55
- if (forEnv.size === 0) {
56
- this._map["delete"](environment);
57
- }
58
- };
59
- return QueryCache;
60
- }();
61
- function createQueryCache() {
62
- return new QueryCache();
63
- }
64
- var noopOnCommit = function noopOnCommit() {
65
- return function () {
66
- return undefined;
67
- };
68
- };
69
- var noopPromise = new Promise(function () {});
70
- function getQueryCacheKey(operation, fetchPolicy, renderPolicy, fetchKey) {
71
- return "".concat(fetchPolicy, "-").concat(renderPolicy, "-").concat(operation.request.identifier, "-").concat(fetchKey !== null && fetchKey !== void 0 ? fetchKey : '');
72
- }
73
- function constructQueryResult(operation) {
74
- var rootFragmentRef = {
75
- __id: operation.fragment.dataID,
76
- __fragments: (0, _defineProperty2["default"])({}, operation.fragment.node.name, operation.request.variables),
77
- __fragmentOwner: operation.request
78
- };
79
- return {
80
- fragmentNode: operation.request.node.fragment,
81
- fragmentRef: rootFragmentRef
82
- };
83
- }
84
- function makeInitialCacheEntry() {
85
- return {
86
- status: 'pending',
87
- promise: noopPromise,
88
- onCommit: noopOnCommit,
89
- suspenseResource: null
90
- };
91
- }
92
- function getQueryResultOrFetchQuery_REACT_CACHE(environment, queryOperationDescriptor, options) {
93
- var _options$fetchPolicy, _options$renderPolicy;
94
- var fetchPolicy = (_options$fetchPolicy = options === null || options === void 0 ? void 0 : options.fetchPolicy) !== null && _options$fetchPolicy !== void 0 ? _options$fetchPolicy : DEFAULT_FETCH_POLICY;
95
- var renderPolicy = (_options$renderPolicy = options === null || options === void 0 ? void 0 : options.renderPolicy) !== null && _options$renderPolicy !== void 0 ? _options$renderPolicy : environment.UNSTABLE_getDefaultRenderPolicy();
96
- var cache = getCacheForType(createQueryCache);
97
- var cacheKey = getQueryCacheKey(queryOperationDescriptor, fetchPolicy, renderPolicy, options === null || options === void 0 ? void 0 : options.fetchKey);
98
- var initialEntry = cache.get(environment, cacheKey);
99
- function updateCache(updater) {
100
- var currentEntry = cache.get(environment, cacheKey);
101
- if (!currentEntry) {
102
- currentEntry = makeInitialCacheEntry();
103
- cache.set(environment, cacheKey, currentEntry);
104
- }
105
- // $FlowExpectedError[prop-missing] Extra properties are passed in -- this is fine
106
- var newStatus = updater(currentEntry);
107
- // $FlowExpectedError[cannot-spread-inexact] Flow cannot understand that this is valid...
108
- cache.set(environment, cacheKey, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, currentEntry), newStatus));
109
- // ... but we can because QueryCacheEntry spreads QueryCacheEntryStatus, so spreading
110
- // a QueryCacheEntryStatus into a QueryCacheEntry will result in a valid QueryCacheEntry.
111
- }
112
-
113
- // Initiate a query to fetch the data if needed:
114
- if (RelayFeatureFlags.USE_REACT_CACHE_LEGACY_TIMEOUTS) {
115
- var _entry;
116
- if (initialEntry === undefined) {
117
- onCacheMiss(environment, queryOperationDescriptor, fetchPolicy, renderPolicy, updateCache, options === null || options === void 0 ? void 0 : options.fetchObservable);
118
- var createdEntry = cache.get(environment, cacheKey);
119
- !(createdEntry !== undefined) ? process.env.NODE_ENV !== "production" ? invariant(false, 'An entry should have been created by onCacheMiss. This is a bug in Relay.') : invariant(false) : void 0;
120
- _entry = createdEntry;
121
- } else {
122
- _entry = initialEntry;
123
- }
124
- if (!_entry.suspenseResource) {
125
- _entry.suspenseResource = new SuspenseResource(function () {
126
- var retention = environment.retain(queryOperationDescriptor);
127
- return {
128
- dispose: function dispose() {
129
- retention.dispose();
130
- cache["delete"](environment, cacheKey);
131
- }
132
- };
133
- });
134
- }
135
- if (_entry.onCommit === noopOnCommit) {
136
- _entry.onCommit = function () {
137
- !_entry.suspenseResource ? process.env.NODE_ENV !== "production" ? invariant(false, 'SuspenseResource should have been initialized. This is a bug in Relay.') : invariant(false) : void 0;
138
- var retention = _entry.suspenseResource.permanentRetain(environment);
139
- return function () {
140
- retention.dispose();
141
- };
142
- };
143
- }
144
- _entry.suspenseResource.temporaryRetain(environment);
145
- } else {
146
- if (initialEntry === undefined) {
147
- // This is the behavior we eventually want: We retain the query until the
148
- // presiding Cache component unmounts, at which point the AbortSignal
149
- // will be triggered.
150
- onCacheMiss(environment, queryOperationDescriptor, fetchPolicy, renderPolicy, updateCache, options === null || options === void 0 ? void 0 : options.fetchObservable);
151
-
152
- // Since this is the first time rendering, retain the query. React will
153
- // trigger the abort signal when this cache entry is no longer needed.
154
- var retention = environment.retain(queryOperationDescriptor);
155
- var dispose = function dispose() {
156
- retention.dispose();
157
- cache["delete"](environment, cacheKey);
158
- };
159
- var abortSignal = getCacheSignal();
160
- abortSignal.addEventListener('abort', dispose, {
161
- once: true
162
- });
163
- }
164
- }
165
- var entry = cache.get(environment, cacheKey); // could be a different entry now if synchronously resolved
166
- !(entry !== undefined) ? process.env.NODE_ENV !== "production" ? invariant(false, 'An entry should have been created by onCacheMiss. This is a bug in Relay.') : invariant(false) : void 0;
167
- switch (entry.status) {
168
- case 'pending':
169
- throw entry.promise;
170
- case 'rejected':
171
- throw entry.error;
172
- case 'resolved':
173
- return [entry.result, entry.onCommit];
174
- }
175
- !false ? process.env.NODE_ENV !== "production" ? invariant(false, 'switch statement should be exhaustive') : invariant(false) : void 0;
176
- }
177
- function onCacheMiss(environment, operation, fetchPolicy, renderPolicy, updateCache, customFetchObservable) {
178
- // NB: Besides checking if the data is available, calling `check` will write missing
179
- // data to the store using any missing data handlers specified in the environment.
180
- var queryAvailability = environment.check(operation);
181
- var queryStatus = queryAvailability.status;
182
- var hasFullQuery = queryStatus === 'available';
183
- var canPartialRender = hasFullQuery || renderPolicy === 'partial' && queryStatus !== 'stale';
184
- var shouldFetch;
185
- var shouldRenderNow;
186
- switch (fetchPolicy) {
187
- case 'store-only':
188
- {
189
- shouldFetch = false;
190
- shouldRenderNow = true;
191
- break;
192
- }
193
- case 'store-or-network':
194
- {
195
- shouldFetch = !hasFullQuery;
196
- shouldRenderNow = canPartialRender;
197
- break;
198
- }
199
- case 'store-and-network':
200
- {
201
- shouldFetch = true;
202
- shouldRenderNow = canPartialRender;
203
- break;
204
- }
205
- case 'network-only':
206
- default:
207
- {
208
- shouldFetch = true;
209
- shouldRenderNow = false;
210
- break;
211
- }
212
- }
213
- if (shouldFetch) {
214
- executeOperationAndKeepUpToDate(environment, operation, updateCache, customFetchObservable);
215
- updateCache(function (existing) {
216
- switch (existing.status) {
217
- case 'resolved':
218
- return existing;
219
- case 'rejected':
220
- return existing;
221
- case 'pending':
222
- return shouldRenderNow ? {
223
- status: 'resolved',
224
- result: constructQueryResult(operation)
225
- } : existing;
226
- }
227
- });
228
- } else {
229
- !shouldRenderNow ? process.env.NODE_ENV !== "production" ? invariant(false, 'Should either fetch or be willing to render. This is a bug in Relay.') : invariant(false) : void 0;
230
- updateCache(function (_existing) {
231
- return {
232
- status: 'resolved',
233
- result: constructQueryResult(operation)
234
- };
235
- });
236
- }
237
- }
238
- function executeOperationAndKeepUpToDate(environment, operation, updateCache, customFetchObservable) {
239
- var resolvePromise;
240
- var promise = new Promise(function (r) {
241
- resolvePromise = r;
242
- });
243
- // $FlowExpectedError[prop-missing] Expando to annotate Promises.
244
- promise.displayName = 'Relay(' + operation.request.node.operation.name + ')';
245
- var isFirstPayload = true;
246
-
247
- // FIXME We may still need to cancel network requests for live queries.
248
- var fetchObservable = customFetchObservable !== null && customFetchObservable !== void 0 ? customFetchObservable : fetchQueryInternal(environment, operation);
249
- fetchObservable.subscribe({
250
- start: function start(subscription) {},
251
- error: function error(_error) {
252
- if (isFirstPayload) {
253
- updateCache(function (_existing) {
254
- return {
255
- status: 'rejected',
256
- error: _error
257
- };
258
- });
259
- } else {
260
- // TODO:T92030819 Remove this warning and actually throw the network error
261
- // To complete this task we need to have a way of precisely tracking suspendable points
262
- process.env.NODE_ENV !== "production" ? warning(false, 'getQueryResultOrFetchQuery: An incremental payload for query `%` returned an error: `%`:`%`.', operation.request.node.operation.name, _error.message, _error.stack) : void 0;
263
- }
264
- resolvePromise();
265
- isFirstPayload = false;
266
- },
267
- next: function next(response) {
268
- // Stop suspending on the first payload because of streaming, defer, etc.
269
- updateCache(function (_existing) {
270
- return {
271
- status: 'resolved',
272
- result: constructQueryResult(operation)
273
- };
274
- });
275
- resolvePromise();
276
- isFirstPayload = false;
277
- }
278
- });
279
-
280
- // If the above subscription yields a value synchronously, then one of the updates
281
- // above will have already happened and we'll now be in a resolved or rejected state.
282
- // But in the usual case, we save the promise to the entry here:
283
- updateCache(function (existing) {
284
- return existing.status === 'pending' ? {
285
- status: 'pending',
286
- promise: promise
287
- } : existing;
288
- });
289
- }
290
- module.exports = getQueryResultOrFetchQuery_REACT_CACHE;
@@ -1,49 +0,0 @@
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
- * @format
9
- * @oncall relay
10
- */
11
-
12
- 'use strict';
13
-
14
- var _require = require('../loadQuery'),
15
- useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
16
- var useMemoOperationDescriptor = require('../useMemoOperationDescriptor');
17
- var useRelayEnvironment = require('../useRelayEnvironment');
18
- var getQueryResultOrFetchQuery = require('./getQueryResultOrFetchQuery_REACT_CACHE');
19
- var useFragmentInternal = require('./useFragmentInternal_REACT_CACHE');
20
- var _require2 = require('react'),
21
- useEffect = _require2.useEffect;
22
- function useLazyLoadQuery_REACT_CACHE(gqlQuery, variables, options) {
23
- var _options$networkCache;
24
- useTrackLoadQueryInRender();
25
- var environment = useRelayEnvironment();
26
- var queryOperationDescriptor = useMemoOperationDescriptor(gqlQuery, variables, (_options$networkCache = options === null || options === void 0 ? void 0 : options.networkCacheConfig) !== null && _options$networkCache !== void 0 ? _options$networkCache : {
27
- force: true
28
- });
29
-
30
- // Get the query going if needed -- this may suspend.
31
- var _getQueryResultOrFetc = getQueryResultOrFetchQuery(environment, queryOperationDescriptor, {
32
- fetchPolicy: options === null || options === void 0 ? void 0 : options.fetchPolicy,
33
- renderPolicy: options === null || options === void 0 ? void 0 : options.UNSTABLE_renderPolicy,
34
- fetchKey: options === null || options === void 0 ? void 0 : options.fetchKey
35
- }),
36
- queryResult = _getQueryResultOrFetc[0],
37
- effect = _getQueryResultOrFetc[1];
38
- useEffect(effect);
39
-
40
- // Read the query's root fragment -- this may suspend.
41
- var fragmentNode = queryResult.fragmentNode,
42
- fragmentRef = queryResult.fragmentRef;
43
- // $FlowExpectedError[incompatible-return] Is this a fixable incompatible-return?
44
- return useFragmentInternal(fragmentNode, fragmentRef, 'useLazyLoadQuery()', {
45
- fetchPolicy: options === null || options === void 0 ? void 0 : options.fetchPolicy,
46
- networkCacheConfig: options === null || options === void 0 ? void 0 : options.networkCacheConfig
47
- });
48
- }
49
- module.exports = useLazyLoadQuery_REACT_CACHE;
@@ -1,110 +0,0 @@
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
- * @format
9
- * @oncall relay
10
- */
11
-
12
- 'use strict';
13
-
14
- var _require = require('../loadQuery'),
15
- useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
16
- var useMemoOperationDescriptor = require('../useMemoOperationDescriptor');
17
- var useRelayEnvironment = require('../useRelayEnvironment');
18
- var getQueryResultOrFetchQuery = require('./getQueryResultOrFetchQuery_REACT_CACHE');
19
- var useFragmentInternal = require('./useFragmentInternal_REACT_CACHE');
20
- var invariant = require('invariant');
21
- var _require2 = require('react'),
22
- useDebugValue = _require2.useDebugValue,
23
- useEffect = _require2.useEffect;
24
- var _require3 = require('relay-runtime'),
25
- _require3$__internal = _require3.__internal,
26
- fetchQueryDeduped = _require3$__internal.fetchQueryDeduped,
27
- fetchQuery = _require3$__internal.fetchQuery;
28
- var warning = require("fbjs/lib/warning");
29
- function usePreloadedQuery_REACT_CACHE(gqlQuery, preloadedQuery, options) {
30
- var environment = useRelayEnvironment();
31
- useTrackLoadQueryInRender();
32
- var fetchKey = preloadedQuery.fetchKey,
33
- fetchPolicy = preloadedQuery.fetchPolicy,
34
- source = preloadedQuery.source,
35
- variables = preloadedQuery.variables,
36
- networkCacheConfig = preloadedQuery.networkCacheConfig;
37
- var operation = useMemoOperationDescriptor(gqlQuery, variables, networkCacheConfig);
38
- var fetchObservable;
39
- if (preloadedQuery.kind === 'PreloadedQuery_DEPRECATED') {
40
- !(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;
41
- fetchObservable = fetchQueryDeduped(environment, operation.request.identifier, function () {
42
- if (environment === preloadedQuery.environment && source != null) {
43
- return environment.executeWithSource({
44
- operation: operation,
45
- source: source
46
- });
47
- } else {
48
- return environment.execute({
49
- operation: operation
50
- });
51
- }
52
- });
53
- } else {
54
- 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;
55
- var fallbackFetchObservable = fetchQuery(environment, operation);
56
- if (source != null && environment === preloadedQuery.environment) {
57
- // If the source observable exists and the environments match, reuse
58
- // the source observable.
59
- // If the source observable happens to be empty, we need to fall back
60
- // and re-execute and de-dupe the query (at render time).
61
- fetchObservable = source.ifEmpty(fallbackFetchObservable);
62
- } else if (environment !== preloadedQuery.environment) {
63
- // If a call to loadQuery is made with a particular environment, and that
64
- // preloaded query is passed to usePreloadedQuery in a different environment
65
- // context, we cannot re-use the existing preloaded query.
66
- // Instead, we need to fall back and re-execute and de-dupe the query with
67
- // the new environment (at render time).
68
- // TODO T68036756 track occurences of this warning and turn it into a hard error
69
- 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;
70
- fetchObservable = fallbackFetchObservable;
71
- } else {
72
- // if (source == null)
73
- // If the source observable does not exist, we need to
74
- // fall back and re-execute and de-dupe the query (at render time).
75
- fetchObservable = fallbackFetchObservable;
76
- }
77
- }
78
-
79
- // Get the query going if needed -- this may suspend.
80
- var _getQueryResultOrFetc = getQueryResultOrFetchQuery(environment, operation, {
81
- fetchPolicy: fetchPolicy,
82
- renderPolicy: options === null || options === void 0 ? void 0 : options.UNSTABLE_renderPolicy,
83
- fetchKey: fetchKey,
84
- fetchObservable: fetchObservable
85
- }),
86
- queryResult = _getQueryResultOrFetc[0],
87
- effect = _getQueryResultOrFetc[1];
88
- useEffect(effect);
89
-
90
- // Read the query's root fragment -- this may suspend.
91
- var fragmentNode = queryResult.fragmentNode,
92
- fragmentRef = queryResult.fragmentRef;
93
- var data = useFragmentInternal(fragmentNode, fragmentRef, 'usePreloadedQuery()', {
94
- fetchPolicy: fetchPolicy,
95
- networkCacheConfig: networkCacheConfig
96
- });
97
- if (process.env.NODE_ENV !== "production") {
98
- // eslint-disable-next-line react-hooks/rules-of-hooks
99
- useDebugValue({
100
- query: preloadedQuery.name,
101
- variables: preloadedQuery.variables,
102
- data: data,
103
- fetchKey: fetchKey,
104
- fetchPolicy: fetchPolicy,
105
- renderPolicy: options === null || options === void 0 ? void 0 : options.UNSTABLE_renderPolicy
106
- });
107
- }
108
- return data;
109
- }
110
- module.exports = usePreloadedQuery_REACT_CACHE;
@@ -1,40 +0,0 @@
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
- * @format
9
- * @oncall relay
10
- */
11
-
12
- 'use strict';
13
-
14
- const invariant = require('invariant');
15
- // $FlowFixMe[prop-missing] These exist in experimental builds but aren't in React's types yet.
16
- const {unstable_getCacheForType, unstable_getCacheSignal} = require('react');
17
- const {RelayFeatureFlags} = require('relay-runtime');
18
-
19
- function getCacheForType<T>(factory: () => T): T {
20
- invariant(
21
- typeof unstable_getCacheForType === 'function' &&
22
- RelayFeatureFlags.USE_REACT_CACHE,
23
- 'RelayReactCache.getCacheForType should only be called when the USE_REACT_CACHE feature flag is enabled and when on an experimental React build that supports it.',
24
- );
25
- return unstable_getCacheForType(factory);
26
- }
27
-
28
- function getCacheSignal(): AbortSignal {
29
- invariant(
30
- typeof unstable_getCacheSignal === 'function' &&
31
- RelayFeatureFlags.USE_REACT_CACHE,
32
- 'RelayReactCache.getCacheSignal should only be called when the USE_REACT_CACHE feature flag is enabled and when on an experimental React build that supports it.',
33
- );
34
- return unstable_getCacheSignal();
35
- }
36
-
37
- module.exports = {
38
- getCacheForType,
39
- getCacheSignal,
40
- };