react-relay 16.2.0 → 17.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) 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/buildReactRelayContainer.js.flow +5 -3
  7. package/getRootVariablesForFragments.js.flow +1 -0
  8. package/hooks.js +1 -1
  9. package/index.js +1 -1
  10. package/legacy.js +1 -1
  11. package/lib/ReactRelayFragmentContainer.js +2 -2
  12. package/lib/buildReactRelayContainer.js +3 -3
  13. package/lib/relay-hooks/legacy/FragmentResource.js +14 -16
  14. package/lib/relay-hooks/{experimental/readFragmentInternal_EXPERIMENTAL.js → readFragmentInternal.js} +7 -5
  15. package/lib/relay-hooks/useFragment.js +3 -13
  16. package/lib/relay-hooks/{experimental/useFragmentInternal_EXPERIMENTAL.js → useFragmentInternal.js} +9 -7
  17. package/lib/relay-hooks/useLazyLoadQueryNode.js +2 -13
  18. package/lib/relay-hooks/usePaginationFragment.js +17 -13
  19. package/lib/relay-hooks/useRefetchableFragment.js +3 -12
  20. package/lib/relay-hooks/{experimental/useRefetchableFragmentInternal_EXPERIMENTAL.js → useRefetchableFragmentInternal.js} +7 -7
  21. package/multi-actor/useRelayActorEnvironment.js.flow +1 -1
  22. package/package.json +2 -2
  23. package/react-relay-hooks.js +2 -2
  24. package/react-relay-hooks.min.js +2 -2
  25. package/react-relay-legacy.js +2 -2
  26. package/react-relay-legacy.min.js +2 -2
  27. package/react-relay.js +2 -2
  28. package/react-relay.min.js +2 -2
  29. package/relay-hooks/EntryPointTypes.flow.js.flow +14 -13
  30. package/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js.flow +14 -1
  31. package/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js.flow +21 -0
  32. package/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js.flow +19 -0
  33. package/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js.flow +22 -0
  34. package/relay-hooks/legacy/FragmentResource.js.flow +13 -16
  35. package/relay-hooks/legacy/useBlockingPaginationFragment.js.flow +2 -2
  36. package/relay-hooks/legacy/useFragmentNode.js.flow +1 -1
  37. package/relay-hooks/legacy/useRefetchableFragmentNode.js.flow +2 -2
  38. package/relay-hooks/loadQuery.js.flow +9 -8
  39. package/relay-hooks/{experimental/readFragmentInternal_EXPERIMENTAL.js.flow → readFragmentInternal.js.flow} +6 -4
  40. package/relay-hooks/useClientQuery.js.flow +1 -1
  41. package/relay-hooks/useEntryPointLoader.js.flow +1 -1
  42. package/relay-hooks/useFetchTrackingRef.js.flow +1 -1
  43. package/relay-hooks/useFragment.js.flow +8 -20
  44. package/relay-hooks/{experimental/useFragmentInternal_EXPERIMENTAL.js.flow → useFragmentInternal.js.flow} +14 -5
  45. package/relay-hooks/useIsMountedRef.js.flow +1 -1
  46. package/relay-hooks/useIsOperationNodeActive.js.flow +1 -1
  47. package/relay-hooks/useIsParentQueryActive.js.flow +5 -2
  48. package/relay-hooks/useLazyLoadQuery.js.flow +3 -2
  49. package/relay-hooks/useLazyLoadQueryNode.js.flow +3 -19
  50. package/relay-hooks/useLoadMoreFunction.js.flow +1 -1
  51. package/relay-hooks/useMemoOperationDescriptor.js.flow +1 -1
  52. package/relay-hooks/useMemoVariables.js.flow +1 -1
  53. package/relay-hooks/useMutation.js.flow +1 -1
  54. package/relay-hooks/usePaginationFragment.js.flow +62 -50
  55. package/relay-hooks/usePreloadedQuery.js.flow +2 -1
  56. package/relay-hooks/useQueryLoader.js.flow +2 -5
  57. package/relay-hooks/useRefetchableFragment.js.flow +7 -37
  58. package/relay-hooks/{experimental/useRefetchableFragmentInternal_EXPERIMENTAL.js.flow → useRefetchableFragmentInternal.js.flow} +11 -11
  59. package/relay-hooks/useRelayEnvironment.js.flow +1 -1
  60. package/relay-hooks/useStaticFragmentNodeWarning.js.flow +3 -1
  61. package/relay-hooks/useSubscribeToInvalidationState.js.flow +1 -1
  62. package/relay-hooks/useSubscription.js.flow +1 -1
  63. package/relay-hooks/useUnsafeRef_DEPRECATED.js.flow +1 -1
  64. package/lib/relay-hooks/HooksImplementation.js +0 -15
  65. package/lib/relay-hooks/experimental/useFragment_EXPERIMENTAL.js +0 -26
  66. package/lib/relay-hooks/experimental/usePaginationFragment_EXPERIMENTAL.js +0 -127
  67. package/lib/relay-hooks/experimental/useRefetchableFragment_EXPERIMENTAL.js +0 -23
  68. package/relay-hooks/HooksImplementation.js.flow +0 -45
  69. package/relay-hooks/experimental/useFragment_EXPERIMENTAL.js.flow +0 -72
  70. package/relay-hooks/experimental/usePaginationFragment_EXPERIMENTAL.js.flow +0 -161
  71. package/relay-hooks/experimental/useRefetchableFragment_EXPERIMENTAL.js.flow +0 -49
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v16.2.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(
@@ -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.2.0
2
+ * Relay v17.0.0
3
3
  *
4
4
  * Copyright (c) Meta Platforms, Inc. and affiliates.
5
5
  *
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v16.2.0
2
+ * Relay v17.0.0
3
3
  *
4
4
  * Copyright (c) Meta Platforms, Inc. and affiliates.
5
5
  *
package/legacy.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v16.2.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;
@@ -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, s.errorResponseFields);
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, snapshot.errorResponseFields);
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() {
@@ -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, state.snapshot.errorResponseFields);
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, snapshot.errorResponseFields);
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
- var useFragmentNode = require('./legacy/useFragmentNode');
5
3
  var _require = require('./loadQuery'),
6
4
  useTrackLoadQueryInRender = _require.useTrackLoadQueryInRender;
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;
@@ -4,9 +4,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
5
5
  var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
6
6
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
7
- var _require = require('../QueryResource'),
7
+ var _require = require('./QueryResource'),
8
8
  getQueryResourceForEnvironment = _require.getQueryResourceForEnvironment;
9
- var useRelayEnvironment = require('../useRelayEnvironment');
9
+ var useRelayEnvironment = require('./useRelayEnvironment');
10
10
  var invariant = require('invariant');
11
11
  var _require2 = require('react'),
12
12
  useDebugValue = _require2.useDebugValue,
@@ -116,14 +116,16 @@ function getSuspendingLiveResolver(state) {
116
116
  }
117
117
  function handlePotentialSnapshotErrorsForState(environment, state) {
118
118
  if (state.kind === 'singular') {
119
- handlePotentialSnapshotErrors(environment, state.snapshot.missingRequiredFields, state.snapshot.relayResolverErrors, state.snapshot.errorResponseFields);
119
+ var _state$snapshot$selec, _state$snapshot$selec2;
120
+ 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);
120
121
  } else if (state.kind === 'plural') {
121
122
  var _iterator5 = (0, _createForOfIteratorHelper2["default"])(state.snapshots),
122
123
  _step5;
123
124
  try {
124
125
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
126
+ var _snapshot$selector$no, _snapshot$selector$no2;
125
127
  var snapshot = _step5.value;
126
- handlePotentialSnapshotErrors(environment, snapshot.missingRequiredFields, snapshot.relayResolverErrors, snapshot.errorResponseFields);
128
+ 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);
127
129
  }
128
130
  } catch (err) {
129
131
  _iterator5.e(err);
@@ -300,7 +302,7 @@ function getFragmentState(environment, fragmentSelector) {
300
302
  };
301
303
  }
302
304
  }
303
- function useFragmentInternal_EXPERIMENTAL(fragmentNode, fragmentRef, hookDisplayName, queryOptions) {
305
+ function useFragmentInternal(fragmentNode, fragmentRef, hookDisplayName, queryOptions) {
304
306
  var _fragmentNode$metadat, _fragmentNode$metadat2;
305
307
  var fragmentSelector = useMemo(function () {
306
308
  return getSelector(fragmentNode, fragmentRef);
@@ -416,7 +418,7 @@ function useFragmentInternal_EXPERIMENTAL(fragmentNode, fragmentRef, hookDisplay
416
418
  return environment.getStore().getLiveResolverPromise(liveStateID);
417
419
  }));
418
420
  }
419
- if (environment !== previousEnvironment || !committedFragmentSelectorRef.current || !areEqualSelectors(committedFragmentSelectorRef.current, fragmentSelector)) {
421
+ if (RelayFeatureFlags.ENABLE_RELAY_OPERATION_TRACKER_SUSPENSE || environment !== previousEnvironment || !committedFragmentSelectorRef.current || !areEqualSelectors(committedFragmentSelectorRef.current, fragmentSelector)) {
420
422
  !(fragmentSelector != null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'refinement, see invariants above') : invariant(false) : void 0;
421
423
  var fragmentOwner = fragmentSelector.kind === 'PluralReaderSelector' ? fragmentSelector.selectors[0].owner : fragmentSelector.owner;
422
424
  var pendingOperationsResult = getPendingOperationsForFragment(environment, fragmentNode, fragmentOwner);
@@ -486,4 +488,4 @@ function useFragmentInternal_EXPERIMENTAL(fragmentNode, fragmentRef, hookDisplay
486
488
  }
487
489
  return data;
488
490
  }
489
- module.exports = useFragmentInternal_EXPERIMENTAL;
491
+ module.exports = useFragmentInternal;
@@ -1,12 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var HooksImplementation = require('./HooksImplementation');
4
- var useFragmentNode = require('./legacy/useFragmentNode');
5
3
  var ProfilerContext = require('./ProfilerContext');
6
4
  var _require = require('./QueryResource'),
7
5
  getQueryCacheIdentifier = _require.getQueryCacheIdentifier,
8
6
  getQueryResourceForEnvironment = _require.getQueryResourceForEnvironment;
9
7
  var useFetchTrackingRef = require('./useFetchTrackingRef');
8
+ var useFragmentInternal = require('./useFragmentInternal');
10
9
  var useRelayEnvironment = require('./useRelayEnvironment');
11
10
  var React = require('react');
12
11
  var useContext = React.useContext,
@@ -62,17 +61,7 @@ function useLazyLoadQueryNode(_ref) {
62
61
  });
63
62
  var fragmentNode = preparedQueryResult.fragmentNode,
64
63
  fragmentRef = preparedQueryResult.fragmentRef;
65
- var data = useFragmentNodeImpl(fragmentNode, fragmentRef, componentDisplayName);
64
+ var data = useFragmentInternal(fragmentNode, fragmentRef, componentDisplayName);
66
65
  return data;
67
66
  }
68
- function useFragmentNodeImpl(fragment, key, componentDisplayName) {
69
- var impl = HooksImplementation.get();
70
- if (impl && impl.useFragment__internal) {
71
- return impl.useFragment__internal(fragment, key, componentDisplayName);
72
- } else {
73
- var _useFragmentNode = useFragmentNode(fragment, key, componentDisplayName),
74
- data = _useFragmentNode.data;
75
- return data;
76
- }
77
- }
78
67
  module.exports = useLazyLoadQueryNode;
@@ -2,9 +2,9 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
4
4
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
5
- var HooksImplementation = require('./HooksImplementation');
6
- var useRefetchableFragmentNode = require('./legacy/useRefetchableFragmentNode');
7
5
  var useLoadMoreFunction = require('./useLoadMoreFunction');
6
+ var useRefetchableFragmentInternal = require('./useRefetchableFragmentInternal');
7
+ var useRelayEnvironment = require('./useRelayEnvironment');
8
8
  var useStaticFragmentNodeWarning = require('./useStaticFragmentNodeWarning');
9
9
  var _require = require('react'),
10
10
  useCallback = _require.useCallback,
@@ -14,7 +14,7 @@ var _require2 = require('relay-runtime'),
14
14
  getFragment = _require2.getFragment,
15
15
  getFragmentIdentifier = _require2.getFragmentIdentifier,
16
16
  getPaginationMetadata = _require2.getPaginationMetadata;
17
- function usePaginationFragment_LEGACY(fragmentInput, parentFragmentRef) {
17
+ function usePaginationFragment(fragmentInput, parentFragmentRef) {
18
18
  var fragmentNode = getFragment(fragmentInput);
19
19
  useStaticFragmentNodeWarning(fragmentNode, 'first argument of usePaginationFragment()');
20
20
  var componentDisplayName = 'usePaginationFragment()';
@@ -22,7 +22,7 @@ function usePaginationFragment_LEGACY(fragmentInput, parentFragmentRef) {
22
22
  connectionPathInFragmentData = _getPaginationMetadat.connectionPathInFragmentData,
23
23
  paginationRequest = _getPaginationMetadat.paginationRequest,
24
24
  paginationMetadata = _getPaginationMetadat.paginationMetadata;
25
- var _useRefetchableFragme = useRefetchableFragmentNode(fragmentNode, parentFragmentRef, componentDisplayName),
25
+ var _useRefetchableFragme = useRefetchableFragmentInternal(fragmentNode, parentFragmentRef, componentDisplayName),
26
26
  fragmentData = _useRefetchableFragme.fragmentData,
27
27
  fragmentRef = _useRefetchableFragme.fragmentRef,
28
28
  refetch = _useRefetchableFragme.refetch;
@@ -86,9 +86,21 @@ function usePaginationFragment_LEGACY(fragmentInput, parentFragmentRef) {
86
86
  };
87
87
  }
88
88
  function useLoadMore(args) {
89
+ var environment = useRelayEnvironment();
89
90
  var _useState = useState(false),
90
91
  isLoadingMore = _useState[0],
91
- setIsLoadingMore = _useState[1];
92
+ reallySetIsLoadingMore = _useState[1];
93
+ var setIsLoadingMore = function setIsLoadingMore(value) {
94
+ var _environment$getSched;
95
+ var schedule = (_environment$getSched = environment.getScheduler()) === null || _environment$getSched === void 0 ? void 0 : _environment$getSched.schedule;
96
+ if (schedule) {
97
+ schedule(function () {
98
+ reallySetIsLoadingMore(value);
99
+ });
100
+ } else {
101
+ reallySetIsLoadingMore(value);
102
+ }
103
+ };
92
104
  var observer = {
93
105
  start: function start() {
94
106
  return setIsLoadingMore(true);
@@ -112,12 +124,4 @@ function useLoadMore(args) {
112
124
  disposeFetch = _useLoadMoreFunction[2];
113
125
  return [loadMore, hasMore, isLoadingMore, disposeFetch];
114
126
  }
115
- function usePaginationFragment(fragmentInput, parentFragmentRef) {
116
- var impl = HooksImplementation.get();
117
- if (impl) {
118
- return impl.usePaginationFragment(fragmentInput, parentFragmentRef);
119
- } else {
120
- return usePaginationFragment_LEGACY(fragmentInput, parentFragmentRef);
121
- }
122
- }
123
127
  module.exports = usePaginationFragment;
@@ -1,16 +1,15 @@
1
1
  'use strict';
2
2
 
3
- var HooksImplementation = require('./HooksImplementation');
4
- var useRefetchableFragmentNode = require('./legacy/useRefetchableFragmentNode');
3
+ var useRefetchableFragmentInternal = require('./useRefetchableFragmentInternal');
5
4
  var useStaticFragmentNodeWarning = require('./useStaticFragmentNodeWarning');
6
5
  var _require = require('react'),
7
6
  useDebugValue = _require.useDebugValue;
8
7
  var _require2 = require('relay-runtime'),
9
8
  getFragment = _require2.getFragment;
10
- function useRefetchableFragment_LEGACY(fragmentInput, fragmentRef) {
9
+ function useRefetchableFragment(fragmentInput, fragmentRef) {
11
10
  var fragmentNode = getFragment(fragmentInput);
12
11
  useStaticFragmentNodeWarning(fragmentNode, 'first argument of useRefetchableFragment()');
13
- var _useRefetchableFragme = useRefetchableFragmentNode(fragmentNode, fragmentRef, 'useRefetchableFragment()'),
12
+ var _useRefetchableFragme = useRefetchableFragmentInternal(fragmentNode, fragmentRef, 'useRefetchableFragment()'),
14
13
  fragmentData = _useRefetchableFragme.fragmentData,
15
14
  refetch = _useRefetchableFragme.refetch;
16
15
  if (process.env.NODE_ENV !== "production") {
@@ -21,12 +20,4 @@ function useRefetchableFragment_LEGACY(fragmentInput, fragmentRef) {
21
20
  }
22
21
  return [fragmentData, refetch];
23
22
  }
24
- function useRefetchableFragment(fragmentInput, parentFragmentRef) {
25
- var impl = HooksImplementation.get();
26
- if (impl) {
27
- return impl.useRefetchableFragment(fragmentInput, parentFragmentRef);
28
- } else {
29
- return useRefetchableFragment_LEGACY(fragmentInput, parentFragmentRef);
30
- }
31
- }
32
23
  module.exports = useRefetchableFragment;
@@ -2,14 +2,14 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
4
4
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
5
- var ProfilerContext = require('../ProfilerContext');
6
- var _require = require('../QueryResource'),
5
+ var ProfilerContext = require('./ProfilerContext');
6
+ var _require = require('./QueryResource'),
7
7
  getQueryResourceForEnvironment = _require.getQueryResourceForEnvironment;
8
- var useIsMountedRef = require('../useIsMountedRef');
9
- var useQueryLoader = require('../useQueryLoader');
10
- var useRelayEnvironment = require('../useRelayEnvironment');
11
- var readFragmentInternal = require('./readFragmentInternal_EXPERIMENTAL');
12
- var useFragmentInternal = require('./useFragmentInternal_EXPERIMENTAL');
8
+ var readFragmentInternal = require('./readFragmentInternal');
9
+ var useFragmentInternal = require('./useFragmentInternal');
10
+ var useIsMountedRef = require('./useIsMountedRef');
11
+ var useQueryLoader = require('./useQueryLoader');
12
+ var useRelayEnvironment = require('./useRelayEnvironment');
13
13
  var invariant = require('invariant');
14
14
  var _require2 = require('react'),
15
15
  useCallback = _require2.useCallback,
@@ -20,7 +20,7 @@ const ReactRelayContext = require('./../ReactRelayContext');
20
20
  const invariant = require('invariant');
21
21
  const {useContext} = require('react');
22
22
 
23
- function useRelayActorEnvironment(
23
+ hook useRelayActorEnvironment(
24
24
  actorIdentifier: ActorIdentifier,
25
25
  ): IActorEnvironment {
26
26
  const context = useContext(ReactRelayContext);
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": "16.2.0",
4
+ "version": "17.0.0",
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": "16.2.0"
23
+ "relay-runtime": "17.0.0"
24
24
  },
25
25
  "peerDependencies": {
26
26
  "react": "^16.9.0 || ^17 || ^18"