react-relay 14.1.0 → 16.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (196) hide show
  1. package/ReactRelayContainerUtils.js.flow +1 -0
  2. package/ReactRelayContext.js +1 -1
  3. package/ReactRelayContext.js.flow +1 -0
  4. package/ReactRelayFragmentContainer.js.flow +6 -2
  5. package/ReactRelayFragmentMockRenderer.js.flow +1 -0
  6. package/ReactRelayLocalQueryRenderer.js.flow +5 -3
  7. package/ReactRelayPaginationContainer.js.flow +21 -12
  8. package/ReactRelayQueryFetcher.js.flow +20 -10
  9. package/ReactRelayQueryRenderer.js.flow +15 -11
  10. package/ReactRelayQueryRendererContext.js.flow +1 -0
  11. package/ReactRelayRefetchContainer.js.flow +9 -5
  12. package/ReactRelayTestMocker.js.flow +3 -1
  13. package/ReactRelayTypes.js.flow +2 -0
  14. package/RelayContext.js.flow +1 -0
  15. package/__flowtests__/ReactRelayFragmentContainer-flowtest.js.flow +2 -1
  16. package/__flowtests__/ReactRelayPaginationContainer-flowtest.js.flow +1 -0
  17. package/__flowtests__/ReactRelayRefetchContainer-flowtest.js.flow +1 -0
  18. package/__flowtests__/RelayModern-flowtest.js.flow +1 -0
  19. package/__flowtests__/RelayModernFlowtest_badref.graphql.js.flow +1 -0
  20. package/__flowtests__/RelayModernFlowtest_notref.graphql.js.flow +1 -0
  21. package/__flowtests__/RelayModernFlowtest_user.graphql.js.flow +1 -0
  22. package/__flowtests__/RelayModernFlowtest_users.graphql.js.flow +1 -0
  23. package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer.graphql.js.flow +3 -1
  24. package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer2.graphql.js.flow +3 -1
  25. package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtestQuery.graphql.js.flow +4 -2
  26. package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtest_viewer.graphql.js.flow +3 -1
  27. package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtestQuery.graphql.js.flow +4 -2
  28. package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtest_viewer.graphql.js.flow +3 -1
  29. package/__flowtests__/__generated__/RelayModernFlowtest_badref.graphql.js.flow +4 -2
  30. package/__flowtests__/__generated__/RelayModernFlowtest_notref.graphql.js.flow +4 -2
  31. package/__flowtests__/__generated__/RelayModernFlowtest_user.graphql.js.flow +3 -1
  32. package/__flowtests__/__generated__/RelayModernFlowtest_users.graphql.js.flow +3 -1
  33. package/assertFragmentMap.js.flow +1 -0
  34. package/buildReactRelayContainer.js.flow +10 -6
  35. package/getRootVariablesForFragments.js.flow +1 -1
  36. package/hooks.js +1 -1
  37. package/hooks.js.flow +4 -0
  38. package/index.js +1 -1
  39. package/index.js.flow +4 -0
  40. package/isRelayEnvironment.js.flow +1 -0
  41. package/jest-react/enqueueTask.js.flow +1 -1
  42. package/jest-react/index.js.flow +1 -1
  43. package/jest-react/internalAct.js.flow +1 -1
  44. package/legacy.js +1 -1
  45. package/legacy.js.flow +1 -0
  46. package/lib/ReactRelayContainerUtils.js +0 -11
  47. package/lib/ReactRelayContext.js +1 -12
  48. package/lib/ReactRelayFragmentContainer.js +23 -122
  49. package/lib/ReactRelayFragmentMockRenderer.js +0 -12
  50. package/lib/ReactRelayLocalQueryRenderer.js +12 -41
  51. package/lib/ReactRelayPaginationContainer.js +45 -341
  52. package/lib/ReactRelayQueryFetcher.js +36 -111
  53. package/lib/ReactRelayQueryRenderer.js +29 -137
  54. package/lib/ReactRelayQueryRendererContext.js +0 -10
  55. package/lib/ReactRelayRefetchContainer.js +33 -166
  56. package/lib/ReactRelayTestMocker.js +18 -128
  57. package/lib/ReactRelayTypes.js +0 -9
  58. package/lib/RelayContext.js +0 -23
  59. package/lib/assertFragmentMap.js +0 -16
  60. package/lib/buildReactRelayContainer.js +7 -41
  61. package/lib/getRootVariablesForFragments.js +2 -19
  62. package/lib/hooks.js +3 -30
  63. package/lib/index.js +3 -39
  64. package/lib/isRelayEnvironment.js +1 -16
  65. package/lib/jest-react/enqueueTask.js +1 -25
  66. package/lib/jest-react/index.js +0 -1
  67. package/lib/jest-react/internalAct.js +2 -51
  68. package/lib/legacy.js +0 -20
  69. package/lib/multi-actor/ActorChange.js +0 -14
  70. package/lib/multi-actor/index.js +0 -10
  71. package/lib/multi-actor/useRelayActorEnvironment.js +2 -16
  72. package/lib/relay-hooks/EntryPointContainer.react.js +7 -23
  73. package/lib/relay-hooks/EntryPointTypes.flow.js +0 -10
  74. package/lib/relay-hooks/FragmentResource.js +130 -280
  75. package/lib/relay-hooks/HooksImplementation.js +0 -14
  76. package/lib/relay-hooks/InternalLogger.js +0 -11
  77. package/lib/relay-hooks/LRUCache.js +0 -39
  78. package/lib/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js +27 -65
  79. package/lib/relay-hooks/MatchContainer.js +9 -111
  80. package/lib/relay-hooks/NestedRelayEntryPointBuilderUtils.js +9 -0
  81. package/lib/relay-hooks/ProfilerContext.js +0 -14
  82. package/lib/relay-hooks/QueryResource.js +14 -149
  83. package/lib/relay-hooks/RelayEnvironmentProvider.js +3 -17
  84. package/lib/relay-hooks/SuspenseResource.js +2 -59
  85. package/lib/relay-hooks/loadEntryPoint.js +10 -45
  86. package/lib/relay-hooks/loadQuery.js +29 -169
  87. package/lib/relay-hooks/preloadQuery_DEPRECATED.js +8 -58
  88. package/lib/relay-hooks/prepareEntryPoint_DEPRECATED.js +6 -24
  89. package/lib/relay-hooks/react-cache/RelayReactCache.js +4 -20
  90. package/lib/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js +13 -102
  91. package/lib/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js +18 -75
  92. package/lib/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js +79 -222
  93. package/lib/relay-hooks/react-cache/useFragment_REACT_CACHE.js +3 -27
  94. package/lib/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js +11 -33
  95. package/lib/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js +62 -85
  96. package/lib/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js +20 -63
  97. package/lib/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js +53 -179
  98. package/lib/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js +5 -27
  99. package/lib/relay-hooks/useBlockingPaginationFragment.js +58 -121
  100. package/lib/relay-hooks/useClientQuery.js +0 -21
  101. package/lib/relay-hooks/useEntryPointLoader.js +12 -100
  102. package/lib/relay-hooks/useFetchTrackingRef.js +6 -33
  103. package/lib/relay-hooks/useFragment.js +5 -32
  104. package/lib/relay-hooks/useFragmentNode.js +14 -55
  105. package/lib/relay-hooks/useIsMountedRef.js +2 -14
  106. package/lib/relay-hooks/useIsOperationNodeActive.js +6 -29
  107. package/lib/relay-hooks/useIsParentQueryActive.js +1 -15
  108. package/lib/relay-hooks/useLazyLoadQuery.js +2 -23
  109. package/lib/relay-hooks/useLazyLoadQueryNode.js +18 -63
  110. package/lib/relay-hooks/useLoadMoreFunction.js +44 -100
  111. package/lib/relay-hooks/useMemoOperationDescriptor.js +4 -23
  112. package/lib/relay-hooks/useMemoVariables.js +8 -43
  113. package/lib/relay-hooks/useMutation.js +6 -34
  114. package/lib/relay-hooks/usePaginationFragment.js +49 -89
  115. package/lib/relay-hooks/usePreloadedQuery.js +10 -54
  116. package/lib/relay-hooks/useQueryLoader.js +18 -116
  117. package/lib/relay-hooks/useRefetchableFragment.js +4 -30
  118. package/lib/relay-hooks/useRefetchableFragmentNode.js +58 -184
  119. package/lib/relay-hooks/useRelayEnvironment.js +2 -16
  120. package/lib/relay-hooks/useStaticFragmentNodeWarning.js +2 -20
  121. package/lib/relay-hooks/useSubscribeToInvalidationState.js +3 -28
  122. package/lib/relay-hooks/useSubscription.js +3 -22
  123. package/lib/relay-hooks/useUnsafeRef_DEPRECATED.js +12 -0
  124. package/multi-actor/ActorChange.js.flow +1 -1
  125. package/multi-actor/index.js.flow +1 -1
  126. package/multi-actor/useRelayActorEnvironment.js.flow +2 -2
  127. package/package.json +2 -2
  128. package/react-relay-hooks.js +2 -2
  129. package/react-relay-hooks.min.js +2 -2
  130. package/react-relay-legacy.js +2 -2
  131. package/react-relay-legacy.min.js +2 -2
  132. package/react-relay.js +2 -2
  133. package/react-relay.min.js +2 -2
  134. package/relay-hooks/EntryPointContainer.react.js.flow +6 -1
  135. package/relay-hooks/EntryPointTypes.flow.js.flow +23 -20
  136. package/relay-hooks/FragmentResource.js.flow +148 -34
  137. package/relay-hooks/HooksImplementation.js.flow +1 -1
  138. package/relay-hooks/InternalLogger.js.flow +1 -1
  139. package/relay-hooks/LRUCache.js.flow +1 -1
  140. package/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js.flow +19 -10
  141. package/relay-hooks/MatchContainer.js.flow +1 -1
  142. package/relay-hooks/NestedRelayEntryPointBuilderUtils.js.flow +51 -0
  143. package/relay-hooks/ProfilerContext.js.flow +1 -1
  144. package/relay-hooks/QueryResource.js.flow +25 -5
  145. package/relay-hooks/RelayEnvironmentProvider.js.flow +2 -2
  146. package/relay-hooks/SuspenseResource.js.flow +1 -1
  147. package/relay-hooks/__flowtests__/EntryPointTypes/EntryPointElementConfig-flowtest.js.flow +3 -1
  148. package/relay-hooks/__flowtests__/EntryPointTypes/NestedEntrypoints-flowtest.js.flow +9 -7
  149. package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_user.graphql.js.flow +3 -1
  150. package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_users.graphql.js.flow +3 -1
  151. package/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js.flow +40 -33
  152. package/relay-hooks/__flowtests__/useFragment-flowtest.js.flow +1 -1
  153. package/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js.flow +38 -32
  154. package/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js.flow +20 -18
  155. package/relay-hooks/__flowtests__/utils.js.flow +13 -2
  156. package/relay-hooks/loadEntryPoint.js.flow +15 -8
  157. package/relay-hooks/loadQuery.js.flow +32 -8
  158. package/relay-hooks/preloadQuery_DEPRECATED.js.flow +5 -6
  159. package/relay-hooks/prepareEntryPoint_DEPRECATED.js.flow +17 -10
  160. package/relay-hooks/react-cache/RelayReactCache.js.flow +1 -1
  161. package/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js.flow +4 -4
  162. package/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js.flow +5 -4
  163. package/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js.flow +32 -14
  164. package/relay-hooks/react-cache/useFragment_REACT_CACHE.js.flow +4 -10
  165. package/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js.flow +1 -1
  166. package/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js.flow +39 -49
  167. package/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js.flow +1 -2
  168. package/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js.flow +29 -16
  169. package/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js.flow +17 -33
  170. package/relay-hooks/useBlockingPaginationFragment.js.flow +85 -58
  171. package/relay-hooks/useClientQuery.js.flow +3 -3
  172. package/relay-hooks/useEntryPointLoader.js.flow +10 -6
  173. package/relay-hooks/useFetchTrackingRef.js.flow +5 -4
  174. package/relay-hooks/useFragment.js.flow +2 -2
  175. package/relay-hooks/useFragmentNode.js.flow +7 -6
  176. package/relay-hooks/useIsMountedRef.js.flow +1 -1
  177. package/relay-hooks/useIsOperationNodeActive.js.flow +1 -1
  178. package/relay-hooks/useIsParentQueryActive.js.flow +1 -1
  179. package/relay-hooks/useLazyLoadQuery.js.flow +2 -2
  180. package/relay-hooks/useLazyLoadQueryNode.js.flow +2 -2
  181. package/relay-hooks/useLoadMoreFunction.js.flow +27 -16
  182. package/relay-hooks/useMemoOperationDescriptor.js.flow +3 -3
  183. package/relay-hooks/useMemoVariables.js.flow +13 -29
  184. package/relay-hooks/useMutation.js.flow +30 -13
  185. package/relay-hooks/usePaginationFragment.js.flow +55 -54
  186. package/relay-hooks/usePreloadedQuery.js.flow +47 -22
  187. package/relay-hooks/useQueryLoader.js.flow +78 -21
  188. package/relay-hooks/useRefetchableFragment.js.flow +65 -33
  189. package/relay-hooks/useRefetchableFragmentNode.js.flow +38 -17
  190. package/relay-hooks/useRelayEnvironment.js.flow +2 -2
  191. package/relay-hooks/useStaticFragmentNodeWarning.js.flow +3 -3
  192. package/relay-hooks/useSubscribeToInvalidationState.js.flow +2 -2
  193. package/relay-hooks/useSubscription.js.flow +1 -1
  194. package/relay-hooks/useUnsafeRef_DEPRECATED.js.flow +25 -0
  195. package/lib/readContext.js +0 -27
  196. package/readContext.js.flow +0 -29
@@ -1,28 +1,14 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @emails oncall+relay
8
- *
9
- * @format
10
- */
11
1
  'use strict';
12
2
 
13
3
  var warning = require("fbjs/lib/warning");
14
-
15
4
  var implementation = null;
16
-
17
5
  function inject(impl) {
18
6
  process.env.NODE_ENV !== "production" ? warning(implementation !== null, 'Relay HooksImplementation was injected twice.') : void 0;
19
7
  implementation = impl;
20
8
  }
21
-
22
9
  function get() {
23
10
  return implementation;
24
11
  }
25
-
26
12
  module.exports = {
27
13
  inject: inject,
28
14
  get: get
@@ -1,17 +1,6 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @emails oncall+relay
8
- *
9
- * @format
10
- */
11
1
  'use strict';
12
2
 
13
3
  var loggerImpl = function loggerImpl(eventData) {};
14
-
15
4
  module.exports = {
16
5
  setLoggerImplementation: function setLoggerImplementation(loggerFn) {
17
6
  loggerImpl = loggerFn;
@@ -1,90 +1,51 @@
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
- * @emails oncall+relay
9
- * @format
10
- */
11
1
  'use strict';
12
2
 
13
3
  var invariant = require('invariant');
14
-
15
- /**
16
- * JS maps (both plain objects and Map) maintain key insertion
17
- * order, which means there is an easy way to simulate LRU behavior
18
- * that should also perform quite well:
19
- *
20
- * To insert a new value, first delete the key from the inner _map,
21
- * then _map.set(k, v). By deleting and reinserting, you ensure that the
22
- * map sees the key as the last inserted key.
23
- *
24
- * Get does the same: if the key is present, delete and reinsert it.
25
- */
26
4
  var LRUCache = /*#__PURE__*/function () {
27
5
  function LRUCache(capacity) {
28
6
  this._capacity = capacity;
29
7
  !(this._capacity > 0) ? process.env.NODE_ENV !== "production" ? invariant(false, 'LRUCache: Unable to create instance of cache with zero or negative capacity.') : invariant(false) : void 0;
30
8
  this._map = new Map();
31
9
  }
32
-
33
10
  var _proto = LRUCache.prototype;
34
-
35
11
  _proto.set = function set(key, value) {
36
12
  this._map["delete"](key);
37
-
38
13
  this._map.set(key, value);
39
-
40
14
  if (this._map.size > this._capacity) {
41
15
  var firstKey = this._map.keys().next();
42
-
43
16
  if (!firstKey.done) {
44
17
  this._map["delete"](firstKey.value);
45
18
  }
46
19
  }
47
20
  };
48
-
49
21
  _proto.get = function get(key) {
50
22
  var value = this._map.get(key);
51
-
52
23
  if (value != null) {
53
24
  this._map["delete"](key);
54
-
55
25
  this._map.set(key, value);
56
26
  }
57
-
58
27
  return value;
59
28
  };
60
-
61
29
  _proto.has = function has(key) {
62
30
  return this._map.has(key);
63
31
  };
64
-
65
32
  _proto["delete"] = function _delete(key) {
66
33
  this._map["delete"](key);
67
34
  };
68
-
69
35
  _proto.size = function size() {
70
36
  return this._map.size;
71
37
  };
72
-
73
38
  _proto.capacity = function capacity() {
74
39
  return this._capacity - this._map.size;
75
40
  };
76
-
77
41
  _proto.clear = function clear() {
78
42
  this._map.clear();
79
43
  };
80
-
81
44
  return LRUCache;
82
45
  }();
83
-
84
46
  function create(capacity) {
85
47
  return new LRUCache(capacity);
86
48
  }
87
-
88
49
  module.exports = {
89
50
  create: create
90
51
  };
@@ -1,127 +1,90 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @emails oncall+relay
8
- *
9
- * @format
10
- */
11
1
  'use strict';
12
2
 
13
3
  var preloadQuery_DEPRECATED = require('./preloadQuery_DEPRECATED');
14
-
15
4
  var ProfilerContext = require('./ProfilerContext');
16
-
17
5
  var useRelayEnvironment = require('./useRelayEnvironment');
18
-
19
6
  var React = require('react');
20
-
21
7
  var _require = require('react'),
22
- useContext = _require.useContext,
23
- useEffect = _require.useEffect,
24
- useMemo = _require.useMemo;
25
-
8
+ useContext = _require.useContext,
9
+ useEffect = _require.useEffect,
10
+ useMemo = _require.useMemo;
26
11
  var _require2 = require('relay-runtime'),
27
- stableCopy = _require2.stableCopy;
28
-
12
+ stableCopy = _require2.stableCopy;
29
13
  function stableStringify(value) {
30
14
  var _JSON$stringify;
31
-
32
15
  return (_JSON$stringify = JSON.stringify(stableCopy(value))) !== null && _JSON$stringify !== void 0 ? _JSON$stringify : 'null';
33
16
  }
34
-
35
17
  function prepareEntryPoint(environmentProvider, entryPoint, entryPointParams) {
36
- // Start loading the code for the entrypoint
37
18
  var loadingPromise = null;
38
-
39
19
  if (entryPoint.root.getModuleIfRequired() == null) {
40
20
  loadingPromise = entryPoint.root.load();
41
21
  }
42
-
43
22
  var preloadProps = entryPoint.getPreloadProps(entryPointParams);
44
23
  var queries = preloadProps.queries,
45
- entryPoints = preloadProps.entryPoints,
46
- extraProps = preloadProps.extraProps;
24
+ entryPoints = preloadProps.entryPoints,
25
+ extraProps = preloadProps.extraProps;
47
26
  var preloadedQueries = {};
48
27
  var preloadedEntryPoints = {};
49
-
50
28
  if (queries != null) {
51
29
  var queriesPropNames = Object.keys(queries);
52
30
  queriesPropNames.forEach(function (queryPropName) {
53
31
  var _queries$queryPropNam = queries[queryPropName],
54
- environmentProviderOptions = _queries$queryPropNam.environmentProviderOptions,
55
- options = _queries$queryPropNam.options,
56
- parameters = _queries$queryPropNam.parameters,
57
- variables = _queries$queryPropNam.variables;
32
+ environmentProviderOptions = _queries$queryPropNam.environmentProviderOptions,
33
+ options = _queries$queryPropNam.options,
34
+ parameters = _queries$queryPropNam.parameters,
35
+ variables = _queries$queryPropNam.variables;
58
36
  var environment = environmentProvider.getEnvironment(environmentProviderOptions);
59
37
  preloadedQueries[queryPropName] = preloadQuery_DEPRECATED(environment, parameters, variables, options, environmentProviderOptions);
60
38
  });
61
39
  }
62
-
63
40
  if (entryPoints != null) {
64
41
  var entryPointPropNames = Object.keys(entryPoints);
65
42
  entryPointPropNames.forEach(function (entryPointPropName) {
66
43
  var entryPointDescription = entryPoints[entryPointPropName];
67
-
68
44
  if (entryPointDescription == null) {
69
45
  return;
70
46
  }
71
-
72
47
  var nestedEntryPoint = entryPointDescription.entryPoint,
73
- nestedParams = entryPointDescription.entryPointParams;
48
+ nestedParams = entryPointDescription.entryPointParams;
74
49
  preloadedEntryPoints[entryPointPropName] = prepareEntryPoint(environmentProvider, nestedEntryPoint, nestedParams);
75
50
  });
76
51
  }
77
-
78
52
  return {
79
53
  entryPoints: preloadedEntryPoints,
80
54
  extraProps: extraProps !== null && extraProps !== void 0 ? extraProps : null,
81
55
  getComponent: function getComponent() {
82
56
  var component = entryPoint.root.getModuleIfRequired();
83
-
84
57
  if (component == null) {
85
58
  var _loadingPromise;
86
-
87
59
  loadingPromise = (_loadingPromise = loadingPromise) !== null && _loadingPromise !== void 0 ? _loadingPromise : entryPoint.root.load();
88
60
  throw loadingPromise;
89
- } // $FlowFixMe[incompatible-cast] - trust me Flow, its entryPoint component
90
-
91
-
61
+ }
92
62
  return component;
93
63
  },
94
64
  queries: preloadedQueries,
95
65
  rootModuleID: entryPoint.root.getModuleId()
96
66
  };
97
67
  }
98
-
99
68
  function LazyLoadEntryPointContainer_DEPRECATED(_ref) {
100
69
  var entryPoint = _ref.entryPoint,
101
- entryPointParams = _ref.entryPointParams,
102
- props = _ref.props,
103
- environmentProvider = _ref.environmentProvider;
70
+ entryPointParams = _ref.entryPointParams,
71
+ props = _ref.props,
72
+ environmentProvider = _ref.environmentProvider;
104
73
  var environment = useRelayEnvironment();
105
- var getPreloadProps = entryPoint.getPreloadProps; // IMPORTANT: Loading the component may suspend (throw), so the props
106
- // *must* be computed first to fetch the component's data-dependencies in
107
- // parallel with the component itself (the code).
108
-
74
+ var getPreloadProps = entryPoint.getPreloadProps;
109
75
  var entryPointParamsHash = stableStringify(entryPointParams);
110
-
111
76
  var _useMemo = useMemo(function () {
112
- return prepareEntryPoint(environmentProvider !== null && environmentProvider !== void 0 ? environmentProvider : {
113
- getEnvironment: function getEnvironment() {
114
- return environment;
115
- }
116
- }, entryPoint, entryPointParams); // NOTE: stableParams encodes the information from params
117
- // eslint-disable-next-line react-hooks/exhaustive-deps
118
- }, [environment, environmentProvider, getPreloadProps, entryPointParamsHash]),
119
- getComponent = _useMemo.getComponent,
120
- queries = _useMemo.queries,
121
- entryPoints = _useMemo.entryPoints,
122
- extraProps = _useMemo.extraProps,
123
- rootModuleID = _useMemo.rootModuleID;
124
-
77
+ return prepareEntryPoint(environmentProvider !== null && environmentProvider !== void 0 ? environmentProvider : {
78
+ getEnvironment: function getEnvironment() {
79
+ return environment;
80
+ }
81
+ }, entryPoint, entryPointParams);
82
+ }, [environment, environmentProvider, getPreloadProps, entryPointParamsHash]),
83
+ getComponent = _useMemo.getComponent,
84
+ queries = _useMemo.queries,
85
+ entryPoints = _useMemo.entryPoints,
86
+ extraProps = _useMemo.extraProps,
87
+ rootModuleID = _useMemo.rootModuleID;
125
88
  var Component = useMemo(function () {
126
89
  return getComponent();
127
90
  }, [getComponent]);
@@ -140,5 +103,4 @@ function LazyLoadEntryPointContainer_DEPRECATED(_ref) {
140
103
  queries: queries
141
104
  });
142
105
  }
143
-
144
106
  module.exports = LazyLoadEntryPointContainer_DEPRECATED;
@@ -1,126 +1,29 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @emails oncall+relay
8
- *
9
- * @format
10
- */
11
1
  'use strict';
12
2
 
13
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
14
-
15
4
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
16
-
17
5
  var React = require('react');
18
-
19
6
  var useMemo = React.useMemo;
20
- /**
21
- * Renders the results of a data-driven dependency fetched with the `@match`
22
- * directive. The `@match` directive can be used to specify a mapping of
23
- * result types to the containers used to render those types. The result
24
- * value is an opaque object that described which component was selected
25
- * and a reference to its data. Use <MatchContainer/> to render these
26
- * values.
27
- *
28
- * ## Example
29
- *
30
- * For example, consider a piece of media content that might be text or
31
- * an image, where for clients that don't support images the application
32
- * should fall back to rendering the image caption as text. @match can be
33
- * used to dynamically select whether to render a given media item as
34
- * an image or text (on the server) and then fetch the corresponding
35
- * React component and its data dependencies (information about the
36
- * image or about the text).
37
- *
38
- * ```
39
- * // Media.react.js
40
- *
41
- * // Define a React component that uses <MatchContainer /> to render the
42
- * // results of a @module selection
43
- * function Media(props) {
44
- * const {media, ...restProps} = props;
45
- *
46
- * const loader = moduleReference => {
47
- * // given the data returned by your server for the @module directive,
48
- * // return the React component (or throw a Suspense promise if
49
- * // it is loading asynchronously).
50
- * todo_returnModuleOrThrowPromise(moduleReference);
51
- * };
52
- * return <MatchContainer
53
- * loader={loader}
54
- * match={media.mediaAttachment}
55
- * props={restProps}
56
- * />;
57
- * }
58
- *
59
- * module.exports = createSuspenseFragmentContainer(
60
- * Media,
61
- * {
62
- * media: graphql`
63
- * fragment Media_media on Media {
64
- * # ...
65
- * mediaAttachment @match {
66
- * ...ImageContainer_image @module(name: "ImageContainer.react")
67
- * ...TextContainer_text @module(name: "TextContainer.react")
68
- * }
69
- * }
70
- * `
71
- * },
72
- * );
73
- * ```
74
- *
75
- * ## API
76
- *
77
- * MatchContainer accepts the following props:
78
- * - `match`: The results (an opaque object) of a `@match` field.
79
- * - `props`: Props that should be passed through to the dynamically
80
- * selected component. Note that any of the components listed in
81
- * `@module()` could be selected, so all components should accept
82
- * the value passed here.
83
- * - `loader`: A function to load a module given a reference (whatever
84
- * your server returns for the `js(moduleName: String)` field).
85
- *
86
- */
87
- // Note: this type is intentionally non-exact, it is expected that the
88
- // object may contain sibling fields.
89
-
90
7
  function MatchContainer(_ref2) {
91
8
  var _ref;
92
-
93
9
  var fallback = _ref2.fallback,
94
- loader = _ref2.loader,
95
- match = _ref2.match,
96
- props = _ref2.props;
97
-
10
+ loader = _ref2.loader,
11
+ match = _ref2.match,
12
+ props = _ref2.props;
98
13
  if (match != null && typeof match !== 'object') {
99
14
  throw new Error('MatchContainer: Expected `match` value to be an object or null/undefined.');
100
- } // NOTE: the MatchPointer type has a $fragmentSpreads field to ensure that only
101
- // an object that contains a FragmentSpread can be passed. If the fragment
102
- // spread matches, then the metadata fields below (__id, __fragments, etc.)
103
- // will be present. But they can be missing if all the fragment spreads use
104
- // @module and none of the types matched. The cast here is necessary because
105
- // fragment Flow types don't describe metadata fields, only the actual schema
106
- // fields the developer selected.
107
-
108
-
15
+ }
109
16
  var _ref3 = (_ref = match) !== null && _ref !== void 0 ? _ref : {},
110
- __id = _ref3.__id,
111
- __fragments = _ref3.__fragments,
112
- __fragmentOwner = _ref3.__fragmentOwner,
113
- __fragmentPropName = _ref3.__fragmentPropName,
114
- __module_component = _ref3.__module_component;
115
-
17
+ __id = _ref3.__id,
18
+ __fragments = _ref3.__fragments,
19
+ __fragmentOwner = _ref3.__fragmentOwner,
20
+ __fragmentPropName = _ref3.__fragmentPropName,
21
+ __module_component = _ref3.__module_component;
116
22
  if (__fragmentOwner != null && typeof __fragmentOwner !== 'object' || __fragmentPropName != null && typeof __fragmentPropName !== 'string' || __fragments != null && typeof __fragments !== 'object' || __id != null && typeof __id !== 'string') {
117
23
  throw new Error("MatchContainer: Invalid 'match' value, expected an object that has a " + "'...SomeFragment' spread.");
118
24
  }
119
-
120
25
  var LoadedContainer = __module_component != null ? loader(__module_component) : null;
121
26
  var fragmentProps = useMemo(function () {
122
- // TODO: Perform this transformation in RelayReader so that unchanged
123
- // output of subscriptions already has a stable identity.
124
27
  if (__fragmentPropName != null && __id != null && __fragments != null) {
125
28
  var fragProps = {};
126
29
  fragProps[__fragmentPropName] = {
@@ -130,17 +33,12 @@ function MatchContainer(_ref2) {
130
33
  };
131
34
  return fragProps;
132
35
  }
133
-
134
36
  return null;
135
37
  }, [__id, __fragments, __fragmentOwner, __fragmentPropName]);
136
-
137
38
  if (LoadedContainer != null && fragmentProps != null) {
138
- // $FlowFixMe[incompatible-type]
139
- // $FlowFixMe[cannot-spread-indexer]
140
39
  return /*#__PURE__*/React.createElement(LoadedContainer, (0, _extends2["default"])({}, props, fragmentProps));
141
40
  } else {
142
41
  return fallback !== null && fallback !== void 0 ? fallback : null;
143
42
  }
144
43
  }
145
-
146
44
  module.exports = MatchContainer;
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.NestedRelayEntryPoint = NestedRelayEntryPoint;
7
+ function NestedRelayEntryPoint(params) {
8
+ return params;
9
+ }
@@ -1,20 +1,6 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @emails oncall+relay
8
- *
9
- * @format
10
- */
11
- // This contextual profiler can be used to wrap a react sub-tree. It will bind
12
- // the RelayProfiler during the render phase of these components. Allows
13
- // collecting metrics for a specific part of your application.
14
1
  'use strict';
15
2
 
16
3
  var React = require('react');
17
-
18
4
  var ProfilerContext = React.createContext({
19
5
  wrapPrepareQueryResource: function wrapPrepareQueryResource(cb) {
20
6
  return cb();