react-relay 16.1.0 → 17.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. package/ReactRelayContext.js +1 -1
  2. package/ReactRelayFragmentContainer.js.flow +8 -6
  3. package/ReactRelayLocalQueryRenderer.js.flow +4 -1
  4. package/ReactRelayPaginationContainer.js.flow +2 -0
  5. package/ReactRelayQueryRenderer.js.flow +1 -1
  6. package/ReactRelayTypes.js.flow +1 -0
  7. package/buildReactRelayContainer.js.flow +5 -3
  8. package/getRootVariablesForFragments.js.flow +1 -0
  9. package/hooks.js +1 -1
  10. package/hooks.js.flow +1 -1
  11. package/index.js +1 -1
  12. package/index.js.flow +1 -1
  13. package/legacy.js +1 -1
  14. package/lib/ReactRelayFragmentContainer.js +2 -2
  15. package/lib/buildReactRelayContainer.js +3 -3
  16. package/lib/relay-hooks/SuspenseResource.js +7 -4
  17. package/lib/relay-hooks/{FragmentResource.js → legacy/FragmentResource.js} +19 -20
  18. package/lib/relay-hooks/{useBlockingPaginationFragment.js → legacy/useBlockingPaginationFragment.js} +2 -2
  19. package/lib/relay-hooks/{useFragmentNode.js → legacy/useFragmentNode.js} +2 -2
  20. package/lib/relay-hooks/{useRefetchableFragmentNode.js → legacy/useRefetchableFragmentNode.js} +8 -8
  21. package/lib/relay-hooks/{experimental/readFragmentInternal_EXPERIMENTAL.js → readFragmentInternal.js} +7 -5
  22. package/lib/relay-hooks/useFragment.js +3 -13
  23. package/lib/relay-hooks/{experimental/useFragmentInternal_EXPERIMENTAL.js → useFragmentInternal.js} +67 -31
  24. package/lib/relay-hooks/useLazyLoadQueryNode.js +2 -13
  25. package/lib/relay-hooks/usePaginationFragment.js +17 -13
  26. package/lib/relay-hooks/useRefetchableFragment.js +3 -12
  27. package/lib/relay-hooks/{experimental/useRefetchableFragmentInternal_EXPERIMENTAL.js → useRefetchableFragmentInternal.js} +7 -7
  28. package/multi-actor/useRelayActorEnvironment.js.flow +1 -1
  29. package/package.json +2 -2
  30. package/react-relay-hooks.js +2 -2
  31. package/react-relay-hooks.min.js +2 -2
  32. package/react-relay-legacy.js +2 -2
  33. package/react-relay-legacy.min.js +2 -2
  34. package/react-relay.js +2 -2
  35. package/react-relay.min.js +2 -2
  36. package/relay-hooks/EntryPointTypes.flow.js.flow +22 -27
  37. package/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js.flow +14 -1
  38. package/relay-hooks/NestedRelayEntryPointBuilderUtils.js.flow +5 -11
  39. package/relay-hooks/SuspenseResource.js.flow +11 -8
  40. package/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js.flow +22 -1
  41. package/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js.flow +19 -0
  42. package/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js.flow +22 -0
  43. package/relay-hooks/{FragmentResource.js.flow → legacy/FragmentResource.js.flow} +21 -21
  44. package/relay-hooks/{useBlockingPaginationFragment.js.flow → legacy/useBlockingPaginationFragment.js.flow} +6 -6
  45. package/relay-hooks/{useFragmentNode.js.flow → legacy/useFragmentNode.js.flow} +3 -3
  46. package/relay-hooks/{useRefetchableFragmentNode.js.flow → legacy/useRefetchableFragmentNode.js.flow} +9 -9
  47. package/relay-hooks/loadQuery.js.flow +9 -8
  48. package/relay-hooks/{experimental/readFragmentInternal_EXPERIMENTAL.js.flow → readFragmentInternal.js.flow} +8 -4
  49. package/relay-hooks/useClientQuery.js.flow +1 -1
  50. package/relay-hooks/useEntryPointLoader.js.flow +1 -1
  51. package/relay-hooks/useFetchTrackingRef.js.flow +1 -1
  52. package/relay-hooks/useFragment.js.flow +16 -22
  53. package/relay-hooks/{experimental/useFragmentInternal_EXPERIMENTAL.js.flow → useFragmentInternal.js.flow} +71 -19
  54. package/relay-hooks/useIsMountedRef.js.flow +1 -1
  55. package/relay-hooks/useIsOperationNodeActive.js.flow +1 -1
  56. package/relay-hooks/useIsParentQueryActive.js.flow +5 -2
  57. package/relay-hooks/useLazyLoadQuery.js.flow +3 -2
  58. package/relay-hooks/useLazyLoadQueryNode.js.flow +3 -19
  59. package/relay-hooks/useLoadMoreFunction.js.flow +1 -1
  60. package/relay-hooks/useMemoOperationDescriptor.js.flow +1 -1
  61. package/relay-hooks/useMemoVariables.js.flow +1 -1
  62. package/relay-hooks/useMutation.js.flow +1 -1
  63. package/relay-hooks/usePaginationFragment.js.flow +62 -50
  64. package/relay-hooks/usePreloadedQuery.js.flow +2 -1
  65. package/relay-hooks/useQueryLoader.js.flow +2 -5
  66. package/relay-hooks/useRefetchableFragment.js.flow +7 -37
  67. package/relay-hooks/{experimental/useRefetchableFragmentInternal_EXPERIMENTAL.js.flow → useRefetchableFragmentInternal.js.flow} +11 -11
  68. package/relay-hooks/useRelayEnvironment.js.flow +1 -1
  69. package/relay-hooks/useStaticFragmentNodeWarning.js.flow +3 -1
  70. package/relay-hooks/useSubscribeToInvalidationState.js.flow +1 -1
  71. package/relay-hooks/useSubscription.js.flow +1 -1
  72. package/relay-hooks/useUnsafeRef_DEPRECATED.js.flow +1 -1
  73. package/lib/relay-hooks/HooksImplementation.js +0 -15
  74. package/lib/relay-hooks/experimental/useFragment_EXPERIMENTAL.js +0 -26
  75. package/lib/relay-hooks/experimental/usePaginationFragment_EXPERIMENTAL.js +0 -127
  76. package/lib/relay-hooks/experimental/useRefetchableFragment_EXPERIMENTAL.js +0 -23
  77. package/relay-hooks/HooksImplementation.js.flow +0 -45
  78. package/relay-hooks/experimental/useFragment_EXPERIMENTAL.js.flow +0 -66
  79. package/relay-hooks/experimental/usePaginationFragment_EXPERIMENTAL.js.flow +0 -161
  80. package/relay-hooks/experimental/useRefetchableFragment_EXPERIMENTAL.js.flow +0 -49
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v16.1.0
2
+ * Relay v17.0.0
3
3
  *
4
4
  * Copyright (c) Meta Platforms, Inc. and affiliates.
5
5
  *
@@ -242,12 +242,14 @@ function createContainerWithFragments<
242
242
  // eslint-disable-next-line no-unused-vars
243
243
  const {componentRef, __relayContext, __rootIsQueryRenderer, ...props} =
244
244
  this.props;
245
- return React.createElement(Component, {
246
- ...props,
247
- ...this.state.data,
248
- ref: componentRef,
249
- relay: this.state.relayProp,
250
- });
245
+ return (
246
+ <Component
247
+ {...props}
248
+ {...this.state.data}
249
+ ref={componentRef}
250
+ relay={this.state.relayProp}
251
+ />
252
+ );
251
253
  }
252
254
  };
253
255
  }
@@ -40,14 +40,17 @@ const queryRendererContext: ReactRelayQueryRendererContextType = {
40
40
  rootIsQueryRenderer: true,
41
41
  };
42
42
 
43
- function useDeepCompare<T: {...}>(value: T): T {
43
+ hook useDeepCompare<T: {...}>(value: T): T {
44
44
  const latestValue = React.useRef(value);
45
+ // $FlowFixMe[react-rule-unsafe-ref]
45
46
  if (!areEqual(latestValue.current, value)) {
46
47
  if (__DEV__) {
47
48
  deepFreeze(value);
48
49
  }
50
+ // $FlowFixMe[react-rule-unsafe-ref]
49
51
  latestValue.current = value;
50
52
  }
53
+ // $FlowFixMe[react-rule-unsafe-ref]
51
54
  return latestValue.current;
52
55
  }
53
56
 
@@ -595,7 +595,9 @@ function createContainerWithFragments<
595
595
  PAGE_INFO,
596
596
  connectionData,
597
597
  );
598
+ // $FlowFixMe[invalid-computed-prop]
598
599
  const edges = connectionData[EDGES];
600
+ // $FlowFixMe[invalid-computed-prop]
599
601
  const pageInfo = connectionData[PAGE_INFO];
600
602
  if (edges == null || pageInfo == null) {
601
603
  return null;
@@ -378,7 +378,7 @@ function fetchQueryAndComputeStateFromProps(
378
378
  requestCacheKey: ?string,
379
379
  ): Partial<State> {
380
380
  const {environment, query, variables, cacheConfig} = props;
381
- const genericEnvironment = (environment: IEnvironment);
381
+ const genericEnvironment: IEnvironment = environment;
382
382
  if (query) {
383
383
  const request = getRequest(query);
384
384
  const operation = createOperationDescriptor(
@@ -103,6 +103,7 @@ export type $FragmentRef<T> = {
103
103
  */
104
104
  // prettier-ignore
105
105
  // $FlowFixMe[extra-type-arg] xplat redux flow type error
106
+ // $FlowFixMe[deprecated-type]
106
107
  export type $RelayProps<Props, RelayPropT = RelayProp> = $ObjMap<
107
108
  $Diff<Props, { relay: RelayPropT | void, ... }>,
108
109
  & (<T: { +$fragmentType: empty, ... }>( T) => T)
@@ -52,12 +52,13 @@ function buildReactRelayContainer<TBase: React$ComponentType<any>>(
52
52
  const Container = createContainerWithFragments(ComponentClass, fragments);
53
53
  Container.displayName = containerName;
54
54
 
55
- function forwardRef(
55
+ function ForwardRef(
56
56
  props: any,
57
57
  ref:
58
58
  | ((null | React$ElementRef<TBase>) => mixed)
59
59
  | {-current: null | React$ElementRef<TBase>, ...},
60
60
  ) {
61
+ // $FlowFixMe[react-rule-hook]
61
62
  const context = useContext(ReactRelayContext);
62
63
  invariant(
63
64
  context != null,
@@ -66,6 +67,7 @@ function buildReactRelayContainer<TBase: React$ComponentType<any>>(
66
67
  containerName,
67
68
  containerName,
68
69
  );
70
+ // $FlowFixMe[react-rule-hook]
69
71
  const queryRendererContext = useContext(ReactRelayQueryRendererContext);
70
72
 
71
73
  return (
@@ -79,8 +81,8 @@ function buildReactRelayContainer<TBase: React$ComponentType<any>>(
79
81
  />
80
82
  );
81
83
  }
82
- forwardRef.displayName = containerName;
83
- const ForwardContainer = React.forwardRef(forwardRef);
84
+ ForwardRef.displayName = containerName;
85
+ const ForwardContainer = React.forwardRef(ForwardRef);
84
86
 
85
87
  if (__DEV__) {
86
88
  // Used by RelayModernTestUtils
@@ -25,6 +25,7 @@ function getRootVariablesForFragments<TProps: {...}>(
25
25
  // should all point to the same owner
26
26
  Object.keys(fragments).forEach(key => {
27
27
  const fragmentNode = fragments[key];
28
+ // $FlowFixMe[invalid-computed-prop]
28
29
  const fragmentRef = props[key];
29
30
  const selector = getSelector(fragmentNode, fragmentRef);
30
31
  const fragmentOwnerVariables =
package/hooks.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v16.1.0
2
+ * Relay v17.0.0
3
3
  *
4
4
  * Copyright (c) Meta Platforms, Inc. and affiliates.
5
5
  *
package/hooks.js.flow CHANGED
@@ -42,7 +42,7 @@ export type {
42
42
  RefetchFn,
43
43
  RefetchFnDynamic,
44
44
  Options as RefetchOptions,
45
- } from './relay-hooks/useRefetchableFragmentNode';
45
+ } from './relay-hooks/legacy/useRefetchableFragmentNode';
46
46
  export type {
47
47
  DataID,
48
48
  DeclarativeMutationConfig,
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v16.1.0
2
+ * Relay v17.0.0
3
3
  *
4
4
  * Copyright (c) Meta Platforms, Inc. and affiliates.
5
5
  *
package/index.js.flow CHANGED
@@ -59,7 +59,7 @@ export type {
59
59
  RefetchFn,
60
60
  RefetchFnDynamic,
61
61
  Options as RefetchOptions,
62
- } from './relay-hooks/useRefetchableFragmentNode';
62
+ } from './relay-hooks/legacy/useRefetchableFragmentNode';
63
63
  export type {
64
64
  DataID,
65
65
  DeclarativeMutationConfig,
package/legacy.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v16.1.0
2
+ * Relay v17.0.0
3
3
  *
4
4
  * Copyright (c) Meta Platforms, Inc. and affiliates.
5
5
  *
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
4
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
4
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
5
5
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
6
6
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
7
7
  var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
@@ -141,7 +141,7 @@ function createContainerWithFragments(Component, fragments) {
141
141
  __relayContext = _this$props.__relayContext,
142
142
  __rootIsQueryRenderer = _this$props.__rootIsQueryRenderer,
143
143
  props = (0, _objectWithoutPropertiesLoose2["default"])(_this$props, _excluded);
144
- return React.createElement(Component, (0, _objectSpread2["default"])((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, props), this.state.data), {}, {
144
+ return /*#__PURE__*/React.createElement(Component, (0, _extends2["default"])({}, props, this.state.data, {
145
145
  ref: componentRef,
146
146
  relay: this.state.relayProp
147
147
  }));
@@ -22,7 +22,7 @@ function buildReactRelayContainer(ComponentClass, fragmentSpec, createContainerW
22
22
  }
23
23
  var Container = createContainerWithFragments(ComponentClass, fragments);
24
24
  Container.displayName = containerName;
25
- function forwardRef(props, ref) {
25
+ function ForwardRef(props, ref) {
26
26
  var _queryRendererContext;
27
27
  var context = useContext(ReactRelayContext);
28
28
  !(context != null) ? process.env.NODE_ENV !== "production" ? invariant(false, '`%s` tried to render a context that was not valid this means that ' + '`%s` was rendered outside of a query renderer.', containerName, containerName) : invariant(false) : void 0;
@@ -33,8 +33,8 @@ function buildReactRelayContainer(ComponentClass, fragmentSpec, createContainerW
33
33
  componentRef: props.componentRef || ref
34
34
  }));
35
35
  }
36
- forwardRef.displayName = containerName;
37
- var ForwardContainer = React.forwardRef(forwardRef);
36
+ ForwardRef.displayName = containerName;
37
+ var ForwardContainer = React.forwardRef(ForwardRef);
38
38
  if (process.env.NODE_ENV !== "production") {
39
39
  ForwardContainer.__ComponentClass = ComponentClass;
40
40
  ForwardContainer.displayName = containerName;
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
4
4
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
5
- var invariant = require('invariant');
5
+ var warning = require("fbjs/lib/warning");
6
6
  var TEMPORARY_RETAIN_DURATION_MS = 5 * 60 * 1000;
7
7
  var SuspenseResource = /*#__PURE__*/function () {
8
8
  function SuspenseResource(retain) {
@@ -19,9 +19,12 @@ var SuspenseResource = /*#__PURE__*/function () {
19
19
  dispose: function dispose() {
20
20
  _this._retainCount = Math.max(0, _this._retainCount - 1);
21
21
  if (_this._retainCount === 0) {
22
- !(_this._retainDisposable != null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'Relay: Expected disposable to release query to be defined.' + "If you're seeing this, this is likely a bug in Relay.") : invariant(false) : void 0;
23
- _this._retainDisposable.dispose();
24
- _this._retainDisposable = null;
22
+ if (_this._retainDisposable != null) {
23
+ _this._retainDisposable.dispose();
24
+ _this._retainDisposable = null;
25
+ } else {
26
+ process.env.NODE_ENV !== "production" ? warning(false, 'Relay: Expected disposable to release query to be defined.' + "If you're seeing this, this is likely a bug in Relay.") : void 0;
27
+ }
25
28
  }
26
29
  }
27
30
  };
@@ -4,10 +4,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
5
5
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
6
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
7
- var LRUCache = require('./LRUCache');
8
- var _require = require('./QueryResource'),
7
+ var LRUCache = require('../LRUCache');
8
+ var _require = require('../QueryResource'),
9
9
  getQueryResourceForEnvironment = _require.getQueryResourceForEnvironment;
10
- var SuspenseResource = require('./SuspenseResource');
10
+ var SuspenseResource = require('../SuspenseResource');
11
11
  var invariant = require('invariant');
12
12
  var _require2 = require('relay-runtime'),
13
13
  _require2$__internal = _require2.__internal,
@@ -131,9 +131,7 @@ var FragmentResourceImpl = /*#__PURE__*/function () {
131
131
  function FragmentResourceImpl(environment) {
132
132
  this._environment = environment;
133
133
  this._cache = LRUCache.create(CACHE_CAPACITY);
134
- if (RelayFeatureFlags.ENABLE_CLIENT_EDGES) {
135
- this._clientEdgeQueryResultsCache = new ClientEdgeQueryResultsCache(environment);
136
- }
134
+ this._clientEdgeQueryResultsCache = new ClientEdgeQueryResultsCache(environment);
137
135
  }
138
136
  var _proto2 = FragmentResourceImpl.prototype;
139
137
  _proto2.read = function read(fragmentNode, fragmentRef, componentDisplayName, fragmentKey) {
@@ -216,7 +214,7 @@ var FragmentResourceImpl = /*#__PURE__*/function () {
216
214
  return fragmentResult;
217
215
  }
218
216
  var clientEdgeRequests = null;
219
- if (RelayFeatureFlags.ENABLE_CLIENT_EDGES && ((_fragmentNode$metadat2 = fragmentNode.metadata) === null || _fragmentNode$metadat2 === void 0 ? void 0 : _fragmentNode$metadat2.hasClientEdges) === true && hasMissingClientEdges(snapshot)) {
217
+ if (((_fragmentNode$metadat2 = fragmentNode.metadata) === null || _fragmentNode$metadat2 === void 0 ? void 0 : _fragmentNode$metadat2.hasClientEdges) === true && hasMissingClientEdges(snapshot)) {
220
218
  clientEdgeRequests = [];
221
219
  var queryResource = getQueryResourceForEnvironment(this._environment);
222
220
  var queryResults = [];
@@ -237,7 +235,7 @@ var FragmentResourceImpl = /*#__PURE__*/function () {
237
235
  this._clientEdgeQueryResultsCache.recordQueryResults(fragmentIdentifier, queryResults);
238
236
  }
239
237
  var clientEdgePromises = [];
240
- if (RelayFeatureFlags.ENABLE_CLIENT_EDGES && clientEdgeRequests) {
238
+ if (clientEdgeRequests) {
241
239
  clientEdgePromises = clientEdgeRequests.map(function (request) {
242
240
  return getPromiseForActiveRequest(_this3._environment, request);
243
241
  }).filter(Boolean);
@@ -311,10 +309,12 @@ var FragmentResourceImpl = /*#__PURE__*/function () {
311
309
  var _this4 = this;
312
310
  if (Array.isArray(snapshot)) {
313
311
  snapshot.forEach(function (s) {
314
- handlePotentialSnapshotErrors(_this4._environment, s.missingRequiredFields, s.relayResolverErrors);
312
+ var _s$selector$node$meta, _s$selector$node$meta2;
313
+ handlePotentialSnapshotErrors(_this4._environment, s.missingRequiredFields, s.relayResolverErrors, s.errorResponseFields, (_s$selector$node$meta = (_s$selector$node$meta2 = s.selector.node.metadata) === null || _s$selector$node$meta2 === void 0 ? void 0 : _s$selector$node$meta2.throwOnFieldError) !== null && _s$selector$node$meta !== void 0 ? _s$selector$node$meta : false);
315
314
  });
316
315
  } else {
317
- handlePotentialSnapshotErrors(this._environment, snapshot.missingRequiredFields, snapshot.relayResolverErrors);
316
+ var _snapshot$selector$no, _snapshot$selector$no2;
317
+ handlePotentialSnapshotErrors(this._environment, snapshot.missingRequiredFields, snapshot.relayResolverErrors, snapshot.errorResponseFields, (_snapshot$selector$no = (_snapshot$selector$no2 = snapshot.selector.node.metadata) === null || _snapshot$selector$no2 === void 0 ? void 0 : _snapshot$selector$no2.throwOnFieldError) !== null && _snapshot$selector$no !== void 0 ? _snapshot$selector$no : false);
318
318
  }
319
319
  };
320
320
  _proto2.readSpec = function readSpec(fragmentNodes, fragmentRefs, componentDisplayName) {
@@ -326,6 +326,7 @@ var FragmentResourceImpl = /*#__PURE__*/function () {
326
326
  };
327
327
  _proto2.subscribe = function subscribe(fragmentResult, callback) {
328
328
  var _this5 = this;
329
+ var _this$_clientEdgeQuer, _this$_clientEdgeQuer2;
329
330
  var environment = this._environment;
330
331
  var cacheKey = fragmentResult.cacheKey;
331
332
  var renderedSnapshot = fragmentResult.snapshot;
@@ -370,15 +371,12 @@ var FragmentResourceImpl = /*#__PURE__*/function () {
370
371
  callback();
371
372
  }));
372
373
  }
373
- if (RelayFeatureFlags.ENABLE_CLIENT_EDGES) {
374
- var _this$_clientEdgeQuer, _this$_clientEdgeQuer2;
375
- var clientEdgeQueryResults = (_this$_clientEdgeQuer = (_this$_clientEdgeQuer2 = this._clientEdgeQueryResultsCache) === null || _this$_clientEdgeQuer2 === void 0 ? void 0 : _this$_clientEdgeQuer2.get(cacheKey)) !== null && _this$_clientEdgeQuer !== void 0 ? _this$_clientEdgeQuer : undefined;
376
- if (clientEdgeQueryResults !== null && clientEdgeQueryResults !== void 0 && clientEdgeQueryResults.length) {
377
- var queryResource = getQueryResourceForEnvironment(this._environment);
378
- clientEdgeQueryResults.forEach(function (queryResult) {
379
- disposables.push(queryResource.retain(queryResult));
380
- });
381
- }
374
+ var clientEdgeQueryResults = (_this$_clientEdgeQuer = (_this$_clientEdgeQuer2 = this._clientEdgeQueryResultsCache) === null || _this$_clientEdgeQuer2 === void 0 ? void 0 : _this$_clientEdgeQuer2.get(cacheKey)) !== null && _this$_clientEdgeQuer !== void 0 ? _this$_clientEdgeQuer : undefined;
375
+ if (clientEdgeQueryResults !== null && clientEdgeQueryResults !== void 0 && clientEdgeQueryResults.length) {
376
+ var queryResource = getQueryResourceForEnvironment(this._environment);
377
+ clientEdgeQueryResults.forEach(function (queryResult) {
378
+ disposables.push(queryResource.retain(queryResult));
379
+ });
382
380
  }
383
381
  return {
384
382
  dispose: function dispose() {
@@ -459,7 +457,8 @@ var FragmentResourceImpl = /*#__PURE__*/function () {
459
457
  seenRecords: currentSnapshot.seenRecords,
460
458
  selector: currentSnapshot.selector,
461
459
  missingRequiredFields: currentSnapshot.missingRequiredFields,
462
- relayResolverErrors: currentSnapshot.relayResolverErrors
460
+ relayResolverErrors: currentSnapshot.relayResolverErrors,
461
+ errorResponseFields: currentSnapshot.errorResponseFields
463
462
  };
464
463
  if (updatedData !== renderData) {
465
464
  var _result = getFragmentResult(cacheKey, updatedCurrentSnapshot, storeEpoch);
@@ -4,9 +4,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
5
5
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
6
6
  var _excluded = ["disableStoreUpdates", "enableStoreUpdates"];
7
- var useLoadMoreFunction = require('./useLoadMoreFunction');
7
+ var useLoadMoreFunction = require('../useLoadMoreFunction');
8
+ var useStaticFragmentNodeWarning = require('../useStaticFragmentNodeWarning');
8
9
  var useRefetchableFragmentNode = require('./useRefetchableFragmentNode');
9
- var useStaticFragmentNodeWarning = require('./useStaticFragmentNodeWarning');
10
10
  var invariant = require('invariant');
11
11
  var _require = require('react'),
12
12
  useCallback = _require.useCallback,
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
+ var useRelayEnvironment = require('../useRelayEnvironment');
4
+ var useUnsafeRef_DEPRECATED = require('../useUnsafeRef_DEPRECATED');
3
5
  var _require = require('./FragmentResource'),
4
6
  getFragmentResourceForEnvironment = _require.getFragmentResourceForEnvironment;
5
- var useRelayEnvironment = require('./useRelayEnvironment');
6
- var useUnsafeRef_DEPRECATED = require('./useUnsafeRef_DEPRECATED');
7
7
  var _require2 = require('react'),
8
8
  useEffect = _require2.useEffect,
9
9
  useState = _require2.useState;
@@ -2,15 +2,15 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
4
4
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
5
- var _require = require('./FragmentResource'),
6
- getFragmentResourceForEnvironment = _require.getFragmentResourceForEnvironment;
7
- var ProfilerContext = require('./ProfilerContext');
8
- var _require2 = require('./QueryResource'),
9
- getQueryResourceForEnvironment = _require2.getQueryResourceForEnvironment;
5
+ var ProfilerContext = require('../ProfilerContext');
6
+ var _require = require('../QueryResource'),
7
+ getQueryResourceForEnvironment = _require.getQueryResourceForEnvironment;
8
+ var useIsMountedRef = require('../useIsMountedRef');
9
+ var useQueryLoader = require('../useQueryLoader');
10
+ var useRelayEnvironment = require('../useRelayEnvironment');
11
+ var _require2 = require('./FragmentResource'),
12
+ getFragmentResourceForEnvironment = _require2.getFragmentResourceForEnvironment;
10
13
  var useFragmentNode = require('./useFragmentNode');
11
- var useIsMountedRef = require('./useIsMountedRef');
12
- var useQueryLoader = require('./useQueryLoader');
13
- var useRelayEnvironment = require('./useRelayEnvironment');
14
14
  var invariant = require('invariant');
15
15
  var _require3 = require('react'),
16
16
  useCallback = _require3.useCallback,
@@ -3,7 +3,7 @@
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
4
4
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
5
5
  var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
6
- var _require = require('../QueryResource'),
6
+ var _require = require('./QueryResource'),
7
7
  getQueryResourceForEnvironment = _require.getQueryResourceForEnvironment;
8
8
  var invariant = require('invariant');
9
9
  var _require2 = require('relay-runtime'),
@@ -66,14 +66,16 @@ function getMissingClientEdges(state) {
66
66
  }
67
67
  function handlePotentialSnapshotErrorsForState(environment, state) {
68
68
  if (state.kind === 'singular') {
69
- handlePotentialSnapshotErrors(environment, state.snapshot.missingRequiredFields, state.snapshot.relayResolverErrors);
69
+ var _state$snapshot$selec, _state$snapshot$selec2;
70
+ handlePotentialSnapshotErrors(environment, state.snapshot.missingRequiredFields, state.snapshot.relayResolverErrors, state.snapshot.errorResponseFields, (_state$snapshot$selec = (_state$snapshot$selec2 = state.snapshot.selector.node.metadata) === null || _state$snapshot$selec2 === void 0 ? void 0 : _state$snapshot$selec2.throwOnFieldError) !== null && _state$snapshot$selec !== void 0 ? _state$snapshot$selec : false);
70
71
  } else if (state.kind === 'plural') {
71
72
  var _iterator3 = (0, _createForOfIteratorHelper2["default"])(state.snapshots),
72
73
  _step3;
73
74
  try {
74
75
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
76
+ var _snapshot$selector$no, _snapshot$selector$no2;
75
77
  var snapshot = _step3.value;
76
- handlePotentialSnapshotErrors(environment, snapshot.missingRequiredFields, snapshot.relayResolverErrors);
78
+ handlePotentialSnapshotErrors(environment, snapshot.missingRequiredFields, snapshot.relayResolverErrors, snapshot.errorResponseFields, (_snapshot$selector$no = (_snapshot$selector$no2 = snapshot.selector.node.metadata) === null || _snapshot$selector$no2 === void 0 ? void 0 : _snapshot$selector$no2.throwOnFieldError) !== null && _snapshot$selector$no !== void 0 ? _snapshot$selector$no : false);
77
79
  }
78
80
  } catch (err) {
79
81
  _iterator3.e(err);
@@ -118,7 +120,7 @@ function getFragmentState(environment, fragmentSelector) {
118
120
  };
119
121
  }
120
122
  }
121
- function readFragmentInternal_EXPERIMENTAL(environment, fragmentNode, fragmentRef, hookDisplayName, queryOptions, fragmentKey) {
123
+ function readFragmentInternal(environment, fragmentNode, fragmentRef, hookDisplayName, queryOptions, fragmentKey) {
122
124
  var _fragmentNode$metadat, _fragmentNode$metadat2;
123
125
  var fragmentSelector = getSelector(fragmentNode, fragmentRef);
124
126
  var isPlural = (fragmentNode === null || fragmentNode === void 0 ? void 0 : (_fragmentNode$metadat = fragmentNode.metadata) === null || _fragmentNode$metadat === void 0 ? void 0 : _fragmentNode$metadat.plural) === true;
@@ -179,4 +181,4 @@ function readFragmentInternal_EXPERIMENTAL(environment, fragmentNode, fragmentRe
179
181
  clientEdgeQueries: clientEdgeQueries
180
182
  };
181
183
  }
182
- module.exports = readFragmentInternal_EXPERIMENTAL;
184
+ module.exports = readFragmentInternal;
@@ -1,20 +1,18 @@
1
1
  'use strict';
2
2
 
3
- var HooksImplementation = require('./HooksImplementation');
4
3
  var _require = require('./loadQuery'),
5
4
  useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
6
- var useFragmentNode = require('./useFragmentNode');
5
+ var useFragmentInternal = require('./useFragmentInternal');
7
6
  var useStaticFragmentNodeWarning = require('./useStaticFragmentNodeWarning');
8
7
  var _require2 = require('react'),
9
8
  useDebugValue = _require2.useDebugValue;
10
9
  var _require3 = require('relay-runtime'),
11
10
  getFragment = _require3.getFragment;
12
- function useFragment_LEGACY(fragment, key) {
11
+ function useFragment(fragment, key) {
13
12
  useTrackLoadQueryInRender();
14
13
  var fragmentNode = getFragment(fragment);
15
14
  useStaticFragmentNodeWarning(fragmentNode, 'first argument of useFragment()');
16
- var _useFragmentNode = useFragmentNode(fragmentNode, key, 'useFragment()'),
17
- data = _useFragmentNode.data;
15
+ var data = useFragmentInternal(fragmentNode, key, 'useFragment()');
18
16
  if (process.env.NODE_ENV !== "production") {
19
17
  useDebugValue({
20
18
  fragment: fragmentNode.name,
@@ -23,12 +21,4 @@ function useFragment_LEGACY(fragment, key) {
23
21
  }
24
22
  return data;
25
23
  }
26
- function useFragment(fragment, key) {
27
- var impl = HooksImplementation.get();
28
- if (impl) {
29
- return impl.useFragment(fragment, key);
30
- } else {
31
- return useFragment_LEGACY(fragment, key);
32
- }
33
- }
34
24
  module.exports = useFragment;