react-relay 14.0.0 → 15.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 (194) hide show
  1. package/ReactRelayContainerUtils.js.flow +1 -2
  2. package/ReactRelayContext.js +1 -1
  3. package/ReactRelayContext.js.flow +1 -2
  4. package/ReactRelayFragmentContainer.js.flow +6 -4
  5. package/ReactRelayFragmentMockRenderer.js.flow +1 -2
  6. package/ReactRelayLocalQueryRenderer.js.flow +5 -5
  7. package/ReactRelayPaginationContainer.js.flow +21 -14
  8. package/ReactRelayQueryFetcher.js.flow +28 -16
  9. package/ReactRelayQueryRenderer.js.flow +42 -13
  10. package/ReactRelayQueryRendererContext.js.flow +2 -3
  11. package/ReactRelayRefetchContainer.js.flow +9 -9
  12. package/ReactRelayTestMocker.js.flow +3 -3
  13. package/ReactRelayTypes.js.flow +7 -8
  14. package/RelayContext.js.flow +1 -2
  15. package/__flowtests__/ReactRelayFragmentContainer-flowtest.js.flow +4 -5
  16. package/__flowtests__/ReactRelayPaginationContainer-flowtest.js.flow +4 -5
  17. package/__flowtests__/ReactRelayRefetchContainer-flowtest.js.flow +4 -5
  18. package/__flowtests__/RelayModern-flowtest.js.flow +3 -4
  19. package/__flowtests__/RelayModernFlowtest_badref.graphql.js.flow +3 -4
  20. package/__flowtests__/RelayModernFlowtest_notref.graphql.js.flow +3 -4
  21. package/__flowtests__/RelayModernFlowtest_user.graphql.js.flow +3 -4
  22. package/__flowtests__/RelayModernFlowtest_users.graphql.js.flow +3 -4
  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 -2
  34. package/buildReactRelayContainer.js.flow +7 -7
  35. package/getRootVariablesForFragments.js.flow +1 -3
  36. package/hooks.js +1 -1
  37. package/hooks.js.flow +4 -2
  38. package/index.js +1 -1
  39. package/index.js.flow +6 -2
  40. package/isRelayEnvironment.js.flow +1 -2
  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 -2
  46. package/lib/ReactRelayContainerUtils.js +2 -3
  47. package/lib/ReactRelayContext.js +3 -4
  48. package/lib/ReactRelayFragmentContainer.js +47 -73
  49. package/lib/ReactRelayFragmentMockRenderer.js +2 -4
  50. package/lib/ReactRelayLocalQueryRenderer.js +18 -31
  51. package/lib/ReactRelayPaginationContainer.js +74 -164
  52. package/lib/ReactRelayQueryFetcher.js +49 -76
  53. package/lib/ReactRelayQueryRenderer.js +63 -84
  54. package/lib/ReactRelayQueryRendererContext.js +2 -2
  55. package/lib/ReactRelayRefetchContainer.js +58 -108
  56. package/lib/ReactRelayTestMocker.js +33 -68
  57. package/lib/ReactRelayTypes.js +2 -1
  58. package/lib/RelayContext.js +4 -7
  59. package/lib/assertFragmentMap.js +3 -5
  60. package/lib/buildReactRelayContainer.js +11 -27
  61. package/lib/getRootVariablesForFragments.js +6 -10
  62. package/lib/hooks.js +5 -18
  63. package/lib/index.js +7 -24
  64. package/lib/isRelayEnvironment.js +5 -4
  65. package/lib/jest-react/enqueueTask.js +5 -9
  66. package/lib/jest-react/index.js +0 -1
  67. package/lib/jest-react/internalAct.js +9 -20
  68. package/lib/legacy.js +2 -8
  69. package/lib/multi-actor/ActorChange.js +2 -5
  70. package/lib/multi-actor/index.js +2 -1
  71. package/lib/multi-actor/useRelayActorEnvironment.js +4 -8
  72. package/lib/relay-hooks/EntryPointContainer.react.js +9 -15
  73. package/lib/relay-hooks/EntryPointTypes.flow.js +5 -3
  74. package/lib/relay-hooks/FragmentResource.js +109 -203
  75. package/lib/relay-hooks/HooksImplementation.js +3 -6
  76. package/lib/relay-hooks/InternalLogger.js +2 -3
  77. package/lib/relay-hooks/LRUCache.js +2 -20
  78. package/lib/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js +33 -54
  79. package/lib/relay-hooks/MatchContainer.js +15 -24
  80. package/lib/relay-hooks/ProfilerContext.js +3 -3
  81. package/lib/relay-hooks/QueryResource.js +31 -101
  82. package/lib/relay-hooks/RelayEnvironmentProvider.js +5 -9
  83. package/lib/relay-hooks/SuspenseResource.js +9 -33
  84. package/lib/relay-hooks/loadEntryPoint.js +19 -31
  85. package/lib/relay-hooks/loadQuery.js +42 -78
  86. package/lib/relay-hooks/preloadQuery_DEPRECATED.js +11 -37
  87. package/lib/relay-hooks/prepareEntryPoint_DEPRECATED.js +9 -15
  88. package/lib/relay-hooks/react-cache/RelayReactCache.js +7 -12
  89. package/lib/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js +27 -81
  90. package/lib/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js +206 -0
  91. package/lib/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js +195 -215
  92. package/lib/relay-hooks/react-cache/useFragment_REACT_CACHE.js +5 -15
  93. package/lib/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js +17 -24
  94. package/lib/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js +149 -0
  95. package/lib/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js +24 -39
  96. package/lib/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js +325 -0
  97. package/lib/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js +37 -0
  98. package/lib/relay-hooks/useBlockingPaginationFragment.js +73 -93
  99. package/lib/relay-hooks/useClientQuery.js +30 -0
  100. package/lib/relay-hooks/useEntryPointLoader.js +18 -38
  101. package/lib/relay-hooks/useFetchTrackingRef.js +10 -12
  102. package/lib/relay-hooks/useFragment.js +8 -19
  103. package/lib/relay-hooks/useFragmentNode.js +20 -32
  104. package/lib/relay-hooks/useIsMountedRef.js +4 -6
  105. package/lib/relay-hooks/useIsOperationNodeActive.js +8 -20
  106. package/lib/relay-hooks/useIsParentQueryActive.js +3 -6
  107. package/lib/relay-hooks/useLazyLoadQuery.js +7 -24
  108. package/lib/relay-hooks/useLazyLoadQueryNode.js +23 -34
  109. package/lib/relay-hooks/useLoadMoreFunction.js +46 -78
  110. package/lib/relay-hooks/useMemoOperationDescriptor.js +6 -15
  111. package/lib/relay-hooks/useMemoVariables.js +15 -34
  112. package/lib/relay-hooks/useMutation.js +9 -27
  113. package/lib/relay-hooks/usePaginationFragment.js +73 -76
  114. package/lib/relay-hooks/usePreloadedQuery.js +13 -44
  115. package/lib/relay-hooks/useQueryLoader.js +24 -49
  116. package/lib/relay-hooks/useRefetchableFragment.js +19 -17
  117. package/lib/relay-hooks/useRefetchableFragmentNode.js +65 -109
  118. package/lib/relay-hooks/useRelayEnvironment.js +4 -8
  119. package/lib/relay-hooks/useStaticFragmentNodeWarning.js +4 -8
  120. package/lib/relay-hooks/useSubscribeToInvalidationState.js +8 -9
  121. package/lib/relay-hooks/useSubscription.js +5 -10
  122. package/lib/relay-hooks/useUnsafeRef_DEPRECATED.js +29 -0
  123. package/multi-actor/ActorChange.js.flow +1 -1
  124. package/multi-actor/index.js.flow +1 -1
  125. package/multi-actor/useRelayActorEnvironment.js.flow +2 -4
  126. package/package.json +2 -2
  127. package/react-relay-hooks.js +2 -2
  128. package/react-relay-hooks.min.js +2 -2
  129. package/react-relay-legacy.js +2 -2
  130. package/react-relay-legacy.min.js +2 -2
  131. package/react-relay.js +2 -2
  132. package/react-relay.min.js +2 -2
  133. package/relay-hooks/EntryPointContainer.react.js.flow +3 -5
  134. package/relay-hooks/EntryPointTypes.flow.js.flow +37 -37
  135. package/relay-hooks/FragmentResource.js.flow +43 -19
  136. package/relay-hooks/HooksImplementation.js.flow +7 -9
  137. package/relay-hooks/InternalLogger.js.flow +1 -3
  138. package/relay-hooks/LRUCache.js.flow +1 -3
  139. package/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js.flow +19 -14
  140. package/relay-hooks/MatchContainer.js.flow +6 -8
  141. package/relay-hooks/ProfilerContext.js.flow +1 -3
  142. package/relay-hooks/QueryResource.js.flow +29 -11
  143. package/relay-hooks/RelayEnvironmentProvider.js.flow +4 -6
  144. package/relay-hooks/SuspenseResource.js.flow +1 -3
  145. package/relay-hooks/__flowtests__/EntryPointTypes/EntryPointElementConfig-flowtest.js.flow +6 -4
  146. package/relay-hooks/__flowtests__/EntryPointTypes/NestedEntrypoints-flowtest.js.flow +4 -4
  147. package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_user.graphql.js.flow +3 -1
  148. package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_users.graphql.js.flow +3 -1
  149. package/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js.flow +39 -39
  150. package/relay-hooks/__flowtests__/useFragment-flowtest.js.flow +1 -3
  151. package/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js.flow +37 -38
  152. package/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js.flow +18 -20
  153. package/relay-hooks/__flowtests__/utils.js.flow +21 -12
  154. package/relay-hooks/loadEntryPoint.js.flow +11 -6
  155. package/relay-hooks/loadQuery.js.flow +11 -7
  156. package/relay-hooks/preloadQuery_DEPRECATED.js.flow +9 -12
  157. package/relay-hooks/prepareEntryPoint_DEPRECATED.js.flow +13 -10
  158. package/relay-hooks/react-cache/RelayReactCache.js.flow +1 -3
  159. package/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js.flow +26 -20
  160. package/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js.flow +297 -0
  161. package/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js.flow +136 -96
  162. package/relay-hooks/react-cache/useFragment_REACT_CACHE.js.flow +1 -3
  163. package/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js.flow +3 -5
  164. package/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js.flow +190 -0
  165. package/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js.flow +3 -6
  166. package/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js.flow +601 -0
  167. package/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js.flow +65 -0
  168. package/relay-hooks/useBlockingPaginationFragment.js.flow +86 -59
  169. package/relay-hooks/useClientQuery.js.flow +39 -0
  170. package/relay-hooks/useEntryPointLoader.js.flow +16 -14
  171. package/relay-hooks/useFetchTrackingRef.js.flow +7 -8
  172. package/relay-hooks/useFragment.js.flow +2 -4
  173. package/relay-hooks/useFragmentNode.js.flow +7 -8
  174. package/relay-hooks/useIsMountedRef.js.flow +2 -4
  175. package/relay-hooks/useIsOperationNodeActive.js.flow +1 -1
  176. package/relay-hooks/useIsParentQueryActive.js.flow +1 -1
  177. package/relay-hooks/useLazyLoadQuery.js.flow +9 -32
  178. package/relay-hooks/useLazyLoadQueryNode.js.flow +4 -6
  179. package/relay-hooks/useLoadMoreFunction.js.flow +20 -17
  180. package/relay-hooks/useMemoOperationDescriptor.js.flow +3 -5
  181. package/relay-hooks/useMemoVariables.js.flow +13 -31
  182. package/relay-hooks/useMutation.js.flow +6 -8
  183. package/relay-hooks/usePaginationFragment.js.flow +75 -43
  184. package/relay-hooks/usePreloadedQuery.js.flow +49 -43
  185. package/relay-hooks/useQueryLoader.js.flow +89 -28
  186. package/relay-hooks/useRefetchableFragment.js.flow +83 -23
  187. package/relay-hooks/useRefetchableFragmentNode.js.flow +26 -22
  188. package/relay-hooks/useRelayEnvironment.js.flow +2 -4
  189. package/relay-hooks/useStaticFragmentNodeWarning.js.flow +3 -5
  190. package/relay-hooks/useSubscribeToInvalidationState.js.flow +2 -4
  191. package/relay-hooks/useSubscription.js.flow +1 -3
  192. package/relay-hooks/useUnsafeRef_DEPRECATED.js.flow +25 -0
  193. package/lib/readContext.js +0 -28
  194. package/readContext.js.flow +0 -31
@@ -6,62 +6,52 @@
6
6
  *
7
7
  *
8
8
  * @format
9
+ * @oncall relay
9
10
  */
10
- // flowlint ambiguous-object-type:error
11
- 'use strict';
12
11
 
13
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
12
+ 'use strict';
14
13
 
14
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
15
15
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
16
-
17
16
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
18
-
19
17
  var areEqual = require("fbjs/lib/areEqual");
20
-
21
18
  var invariant = require('invariant');
22
-
23
19
  var _require = require('relay-runtime'),
24
- Network = _require.Network,
25
- createOperationDescriptor = _require.createOperationDescriptor,
26
- isRelayModernEnvironment = _require.isRelayModernEnvironment;
27
-
20
+ Network = _require.Network,
21
+ createOperationDescriptor = _require.createOperationDescriptor,
22
+ isRelayModernEnvironment = _require.isRelayModernEnvironment;
28
23
  var warning = require("fbjs/lib/warning");
29
-
30
24
  /**
31
25
  * The next id to return from `generateId()`.
32
26
  */
33
27
  var nextId = 0;
34
-
35
28
  var ReactRelayTestMocker = /*#__PURE__*/function () {
36
29
  function ReactRelayTestMocker(env) {
37
30
  (0, _defineProperty2["default"])(this, "_defaults", {});
38
31
  (0, _defineProperty2["default"])(this, "_pendingFetches", []);
39
-
40
32
  if (isRelayModernEnvironment(env)) {
41
33
  this._mockNetworkLayer(env);
42
34
  } else {
43
35
  process.env.NODE_ENV !== "production" ? warning(false, 'Network mocking is currently only supported in Relay Modern. ' + 'You will not be able to resolve requests made with Relay ' + 'Classic environments.') : void 0;
44
36
  }
45
-
46
37
  this._environment = env;
47
38
  }
48
-
49
39
  ReactRelayTestMocker.mockOutEnvironment = function mockOutEnvironment(env) {
50
40
  return new ReactRelayTestMocker(env);
51
41
  }
42
+
52
43
  /**
53
44
  * Get a unique id number (as a string). Note: will wrap around after 2^32
54
45
  * calls, if your test needs that many IDs.
55
46
  *
56
47
  * @returns a unique id string
57
- */
58
- ;
59
-
48
+ */;
60
49
  ReactRelayTestMocker.generateId = function generateId() {
61
50
  var toRet = nextId.toString();
62
51
  nextId++;
63
52
  return toRet;
64
53
  }
54
+
65
55
  /**
66
56
  * Create a unique identifier for a (query, variables) pair.
67
57
  * @param request: the request associated with the query
@@ -70,18 +60,15 @@ var ReactRelayTestMocker = /*#__PURE__*/function () {
70
60
  *
71
61
  * @returns a string which can later be used to uniquely identify this query
72
62
  * in the list of pending queries
73
- */
74
- ;
75
-
63
+ */;
76
64
  ReactRelayTestMocker.getIdentifier = function getIdentifier(request) {
77
65
  return request.name;
78
66
  }
67
+
79
68
  /**
80
69
  * Remove variables that we don't need from the query that will make it more
81
70
  * annoying to test (e.g. client_mutation_id, actor_id)
82
- */
83
- ;
84
-
71
+ */;
85
72
  ReactRelayTestMocker.stripUnused = function stripUnused(variables) {
86
73
  if (variables.input) {
87
74
  var toRemove = ['client_mutation_id', 'actor_id', 'clientMutationId', 'actorId'];
@@ -93,23 +80,19 @@ var ReactRelayTestMocker = /*#__PURE__*/function () {
93
80
  });
94
81
  return strippedVariables;
95
82
  }
96
-
97
83
  return variables;
98
84
  }
85
+
99
86
  /**
100
87
  * Replace the environment's network layer with a mocked out one to allow for
101
88
  * better testing. Mocking the network allows testing without using a mocked
102
89
  * out QueryRenderer, and will allow for easier testing of components wrapped
103
90
  * in refetch containers, for example. It also allows test writers to see how
104
91
  * their components behave under error conditions.
105
- */
106
- ;
107
-
92
+ */;
108
93
  var _proto = ReactRelayTestMocker.prototype;
109
-
110
94
  _proto._mockNetworkLayer = function _mockNetworkLayer(env) {
111
95
  var _this = this;
112
-
113
96
  var fetch = function fetch(request, variables, cacheConfig) {
114
97
  var resolve;
115
98
  var reject;
@@ -118,13 +101,13 @@ var ReactRelayTestMocker = /*#__PURE__*/function () {
118
101
  reject = rej;
119
102
  });
120
103
  var strippedVars = ReactRelayTestMocker.stripUnused(variables);
121
- var ident = ReactRelayTestMocker.getIdentifier(request); // there's a default value for this query, use it
104
+ var ident = ReactRelayTestMocker.getIdentifier(request);
122
105
 
106
+ // there's a default value for this query, use it
123
107
  if (_this._defaults[ident]) {
124
108
  var payload = _this._defaults[ident];
125
109
  return typeof payload === 'function' ? payload(strippedVars) : payload;
126
110
  }
127
-
128
111
  _this._pendingFetches.push({
129
112
  ident: ident,
130
113
  cacheConfig: cacheConfig,
@@ -135,16 +118,13 @@ var ReactRelayTestMocker = /*#__PURE__*/function () {
135
118
  request: request,
136
119
  variables: strippedVars
137
120
  });
138
-
139
121
  return promise;
140
122
  };
141
-
142
123
  var isLoading = function isLoading(ident) {
143
124
  return _this._pendingFetches.some(function (pending) {
144
125
  return pending.ident === ident;
145
126
  });
146
127
  };
147
-
148
128
  var resolveRawQuery = function resolveRawQuery(toResolve, payload) {
149
129
  _this._pendingFetches = _this._pendingFetches.filter(function (pending) {
150
130
  return pending !== toResolve;
@@ -152,7 +132,6 @@ var ReactRelayTestMocker = /*#__PURE__*/function () {
152
132
  var deferred = toResolve.deferred;
153
133
  deferred.resolve(payload);
154
134
  };
155
-
156
135
  var rejectQuery = function rejectQuery(toResolve, payload) {
157
136
  _this._pendingFetches = _this._pendingFetches.filter(function (pending) {
158
137
  return pending !== toResolve;
@@ -160,7 +139,6 @@ var ReactRelayTestMocker = /*#__PURE__*/function () {
160
139
  var deferred = toResolve.deferred;
161
140
  deferred.reject(payload.error);
162
141
  };
163
-
164
142
  env.mock = {
165
143
  isLoading: isLoading,
166
144
  rejectQuery: rejectQuery,
@@ -168,32 +146,29 @@ var ReactRelayTestMocker = /*#__PURE__*/function () {
168
146
  fetch: fetch
169
147
  };
170
148
  env.hasMockedNetwork = true;
171
-
172
149
  env.__setNet(Network.create(fetch));
173
-
174
150
  return env;
175
151
  }
152
+
176
153
  /**
177
154
  * set a default payload for a given query
178
- */
179
- ;
180
-
155
+ */;
181
156
  _proto.setDefault = function setDefault(toSet) {
182
157
  var query = toSet.query,
183
- payload = toSet.payload;
158
+ payload = toSet.payload;
184
159
  var ident = ReactRelayTestMocker.getIdentifier(query.params);
185
160
  this._defaults[ident] = payload;
186
161
  }
162
+
187
163
  /**
188
164
  * remove a default payload for a given query
189
- */
190
- ;
191
-
165
+ */;
192
166
  _proto.unsetDefault = function unsetDefault(toUnset) {
193
167
  var query = toUnset.query;
194
168
  var ident = ReactRelayTestMocker.getIdentifier(query.params);
195
169
  delete this._defaults[ident];
196
170
  }
171
+
197
172
  /**
198
173
  * Write directly to the Relay store instead of trying to resolve a query that
199
174
  * was sent via the network.
@@ -201,18 +176,16 @@ var ReactRelayTestMocker = /*#__PURE__*/function () {
201
176
  * Use this method when testing a component wrapped in a fragment container
202
177
  * (via `createFragmentContainer`). The component under test should also be
203
178
  * wrapped in a `RelayTestRenderer`.
204
- */
205
- ;
206
-
179
+ */;
207
180
  _proto.dataWrite = function dataWrite(config) {
208
181
  var query = config.query,
209
- variables = config.variables,
210
- payload = config.payload;
182
+ variables = config.variables,
183
+ payload = config.payload;
211
184
  var operationDescriptor = createOperationDescriptor(query, variables);
212
185
  !(payload.data != null && payload.errors === undefined) ? process.env.NODE_ENV !== "production" ? invariant(false, 'Only `data` can be written when using `writeDirect`. You may need to ' + 'wrap your payload in an object like `{data: payload}`.') : invariant(false) : void 0;
213
-
214
186
  this._environment.commitPayload(operationDescriptor, payload.data);
215
187
  }
188
+
216
189
  /**
217
190
  * Write the data specified in config's payload to the instance's environment.
218
191
  * NOTE: callers may need to invoke `jest.runOnlyPendingTimers()` after
@@ -220,30 +193,23 @@ var ReactRelayTestMocker = /*#__PURE__*/function () {
220
193
  *
221
194
  * @param config: an object containing the data to write and the query and
222
195
  * variables that the payload is simulating a response to
223
- */
224
- ;
225
-
196
+ */;
226
197
  _proto.networkWrite = function networkWrite(config) {
227
198
  !this._environment.hasMockedNetwork ? process.env.NODE_ENV !== "production" ? invariant(false, 'You cannot resolve queries without a mocked environment. Did you mean ' + 'to use `writeDirect` instead?') : invariant(false) : void 0;
228
199
  var query = config.query,
229
- variables = config.variables,
230
- payload = config.payload;
200
+ variables = config.variables,
201
+ payload = config.payload;
231
202
  var ident = ReactRelayTestMocker.getIdentifier(query.params);
232
203
  var usedVars;
233
-
234
204
  if (variables) {
235
205
  var operationDescriptor = createOperationDescriptor(query, variables);
236
206
  usedVars = ReactRelayTestMocker.stripUnused(operationDescriptor.request.variables);
237
207
  }
238
-
239
208
  var toResolve;
240
-
241
209
  this._pendingFetches.forEach(function (pending) {
242
210
  var pendingVars = pending.variables;
243
-
244
211
  if (pending.ident === ident) {
245
212
  !(!toResolve || variables) ? process.env.NODE_ENV !== "production" ? invariant(false, 'Multiple queries with the same name are currently pending. You ' + 'should pass variables to `write` so that it can determine which ' + 'to resolve') : invariant(false) : void 0;
246
-
247
213
  if (variables) {
248
214
  if (areEqual(pendingVars, usedVars)) {
249
215
  toResolve = pending;
@@ -253,12 +219,13 @@ var ReactRelayTestMocker = /*#__PURE__*/function () {
253
219
  }
254
220
  }
255
221
  });
256
-
257
222
  var varMessage = usedVars ? ' - variables: ' + JSON.stringify(usedVars) : '';
258
223
  !toResolve ? process.env.NODE_ENV !== "production" ? invariant(false, 'You are attempting to resolve a query that has not been fetched ' + '(%s%s).\n\tPlease ensure you passed the correct variables, or use ' + '`writeDirect` instead.', ident, varMessage) : invariant(false) : void 0;
259
- var realPayload = // $FlowFixMe[incompatible-call]
260
- typeof payload === 'function' ? payload(toResolve.variables) : payload; // if there are errors, reject the query
224
+ var realPayload =
225
+ // $FlowFixMe[incompatible-call]
226
+ typeof payload === 'function' ? payload(toResolve.variables) : payload;
261
227
 
228
+ // if there are errors, reject the query
262
229
  if (realPayload.errors != null && realPayload.errors.length > 0) {
263
230
  this._environment.mock.rejectQuery(toResolve, {
264
231
  error: realPayload.errors[0]
@@ -267,8 +234,6 @@ var ReactRelayTestMocker = /*#__PURE__*/function () {
267
234
  this._environment.mock.resolveRawQuery(toResolve, realPayload);
268
235
  }
269
236
  };
270
-
271
237
  return ReactRelayTestMocker;
272
238
  }();
273
-
274
239
  module.exports = ReactRelayTestMocker;
@@ -6,6 +6,7 @@
6
6
  *
7
7
  *
8
8
  * @format
9
+ * @oncall relay
9
10
  */
10
- // flowlint ambiguous-object-type:error
11
+
11
12
  'use strict';
@@ -6,33 +6,30 @@
6
6
  *
7
7
  *
8
8
  * @format
9
+ * @oncall relay
9
10
  */
10
- // flowlint ambiguous-object-type:error
11
+
11
12
  'use strict';
12
13
 
13
14
  var isRelayEnvironment = require('./isRelayEnvironment');
14
-
15
15
  var invariant = require('invariant');
16
+
16
17
  /**
17
18
  * Asserts that the input is a matches the `RelayContext` type defined in
18
19
  * `RelayEnvironmentTypes` and returns it as that type.
19
20
  */
20
-
21
-
22
21
  function assertRelayContext(relay) {
23
22
  !isRelayContext(relay) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayContext: Expected `context.relay` to be an object conforming to ' + 'the `RelayContext` interface, got `%s`.', relay) : invariant(false) : void 0;
24
23
  return relay;
25
24
  }
25
+
26
26
  /**
27
27
  * Determine if the input is a plain object that matches the `RelayContext`
28
28
  * type defined in `RelayEnvironmentTypes`.
29
29
  */
30
-
31
-
32
30
  function isRelayContext(context) {
33
31
  return typeof context === 'object' && context !== null && !Array.isArray(context) && isRelayEnvironment(context.environment);
34
32
  }
35
-
36
33
  module.exports = {
37
34
  assertRelayContext: assertRelayContext,
38
35
  isRelayContext: isRelayContext
@@ -6,19 +6,18 @@
6
6
  *
7
7
  *
8
8
  * @format
9
+ * @oncall relay
9
10
  */
10
- // flowlint ambiguous-object-type:error
11
+
11
12
  'use strict';
12
13
 
13
14
  var invariant = require('invariant');
15
+
14
16
  /**
15
17
  * Fail fast if the user supplies invalid fragments as input.
16
18
  */
17
-
18
-
19
19
  function assertFragmentMap(componentName, fragmentSpec) {
20
20
  !(fragmentSpec && typeof fragmentSpec === 'object') ? process.env.NODE_ENV !== "production" ? invariant(false, 'Could not create Relay Container for `%s`. ' + 'Expected a set of GraphQL fragments, got `%s` instead.', componentName, fragmentSpec) : invariant(false) : void 0;
21
-
22
21
  for (var key in fragmentSpec) {
23
22
  if (fragmentSpec.hasOwnProperty(key)) {
24
23
  var fragment = fragmentSpec[key];
@@ -26,5 +25,4 @@ function assertFragmentMap(componentName, fragmentSpec) {
26
25
  }
27
26
  }
28
27
  }
29
-
30
28
  module.exports = assertFragmentMap;
@@ -6,33 +6,24 @@
6
6
  *
7
7
  *
8
8
  * @format
9
+ * @oncall relay
9
10
  */
10
- // flowlint ambiguous-object-type:error
11
- 'use strict';
12
11
 
13
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
12
+ 'use strict';
14
13
 
14
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
15
15
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
16
-
17
16
  var assertFragmentMap = require('./assertFragmentMap');
18
-
19
17
  var _require = require('./ReactRelayContainerUtils'),
20
- getComponentName = _require.getComponentName,
21
- getContainerName = _require.getContainerName;
22
-
18
+ getComponentName = _require.getComponentName,
19
+ getContainerName = _require.getContainerName;
23
20
  var ReactRelayContext = require('./ReactRelayContext');
24
-
25
21
  var ReactRelayQueryRendererContext = require('./ReactRelayQueryRendererContext');
26
-
27
- var readContext = require('./readContext');
28
-
29
22
  var invariant = require('invariant');
30
-
31
23
  var React = require('react');
32
-
33
24
  var _require2 = require('relay-runtime'),
34
- getFragment = _require2.getFragment;
35
-
25
+ getFragment = _require2.getFragment;
26
+ var useContext = React.useContext;
36
27
  /**
37
28
  * Helper to create the Relay HOCs with ref forwarding, setting the displayName
38
29
  * and reading the React context.
@@ -42,38 +33,31 @@ function buildReactRelayContainer(ComponentClass, fragmentSpec, createContainerW
42
33
  var containerName = getContainerName(ComponentClass);
43
34
  assertFragmentMap(getComponentName(ComponentClass), fragmentSpec);
44
35
  var fragments = {};
45
-
46
36
  for (var key in fragmentSpec) {
47
37
  fragments[key] = getFragment(fragmentSpec[key]);
48
38
  }
49
-
50
39
  var Container = createContainerWithFragments(ComponentClass, fragments);
51
40
  Container.displayName = containerName;
52
-
53
41
  function forwardRef(props, ref) {
54
42
  var _queryRendererContext;
55
-
56
- var context = readContext(ReactRelayContext);
43
+ var context = useContext(ReactRelayContext);
57
44
  !(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;
58
- var queryRendererContext = readContext(ReactRelayQueryRendererContext);
45
+ var queryRendererContext = useContext(ReactRelayQueryRendererContext);
59
46
  return /*#__PURE__*/React.createElement(Container, (0, _extends2["default"])({}, props, {
60
47
  __relayContext: context,
61
48
  __rootIsQueryRenderer: (_queryRendererContext = queryRendererContext === null || queryRendererContext === void 0 ? void 0 : queryRendererContext.rootIsQueryRenderer) !== null && _queryRendererContext !== void 0 ? _queryRendererContext : false,
62
49
  componentRef: props.componentRef || ref
63
50
  }));
64
51
  }
65
-
66
52
  forwardRef.displayName = containerName;
67
53
  var ForwardContainer = React.forwardRef(forwardRef);
68
-
69
54
  if (process.env.NODE_ENV !== "production") {
70
55
  // Used by RelayModernTestUtils
71
56
  ForwardContainer.__ComponentClass = ComponentClass;
72
57
  ForwardContainer.displayName = containerName;
73
- } // $FlowFixMe[incompatible-return]
74
-
58
+ }
75
59
 
60
+ // $FlowFixMe[incompatible-return]
76
61
  return ForwardContainer;
77
62
  }
78
-
79
63
  module.exports = buildReactRelayContainer;
@@ -6,25 +6,22 @@
6
6
  *
7
7
  *
8
8
  * @format
9
+ * @oncall relay
9
10
  */
10
- // flowlint ambiguous-object-type:error
11
- 'use strict';
12
11
 
13
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
12
+ 'use strict';
14
13
 
14
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
15
15
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
16
-
17
16
  var _require = require('relay-runtime'),
18
- getSelector = _require.getSelector;
19
-
17
+ getSelector = _require.getSelector;
20
18
  function getRootVariablesForFragments(fragments, props) {
21
- var rootVariables = {}; // NOTE: For extra safety, we make sure the rootVariables include the
19
+ var rootVariables = {};
20
+ // NOTE: For extra safety, we make sure the rootVariables include the
22
21
  // variables from all owners in this fragmentSpec, even though they
23
22
  // should all point to the same owner
24
-
25
23
  Object.keys(fragments).forEach(function (key) {
26
24
  var _selector$selectors$, _selector$selectors$2, _selector$owner$varia;
27
-
28
25
  var fragmentNode = fragments[key];
29
26
  var fragmentRef = props[key];
30
27
  var selector = getSelector(fragmentNode, fragmentRef);
@@ -33,5 +30,4 @@ function getRootVariablesForFragments(fragments, props) {
33
30
  });
34
31
  return rootVariables;
35
32
  }
36
-
37
33
  module.exports = getRootVariablesForFragments;
package/lib/hooks.js CHANGED
@@ -6,43 +6,29 @@
6
6
  *
7
7
  *
8
8
  * @format
9
+ * @oncall relay
9
10
  */
10
- // flowlint ambiguous-object-type:error
11
+
11
12
  'use strict';
12
13
 
13
14
  var EntryPointContainer = require('./relay-hooks/EntryPointContainer.react');
14
-
15
15
  var loadEntryPoint = require('./relay-hooks/loadEntryPoint');
16
-
17
16
  var _require = require('./relay-hooks/loadQuery'),
18
- loadQuery = _require.loadQuery;
19
-
17
+ loadQuery = _require.loadQuery;
18
+ var ProfilerContext = require('./relay-hooks/ProfilerContext');
20
19
  var RelayEnvironmentProvider = require('./relay-hooks/RelayEnvironmentProvider');
21
-
22
20
  var useEntryPointLoader = require('./relay-hooks/useEntryPointLoader');
23
-
24
21
  var useFragment = require('./relay-hooks/useFragment');
25
-
26
22
  var useLazyLoadQuery = require('./relay-hooks/useLazyLoadQuery');
27
-
28
23
  var useMutation = require('./relay-hooks/useMutation');
29
-
30
24
  var usePaginationFragment = require('./relay-hooks/usePaginationFragment');
31
-
32
25
  var usePreloadedQuery = require('./relay-hooks/usePreloadedQuery');
33
-
34
26
  var useQueryLoader = require('./relay-hooks/useQueryLoader');
35
-
36
27
  var useRefetchableFragment = require('./relay-hooks/useRefetchableFragment');
37
-
38
28
  var useRelayEnvironment = require('./relay-hooks/useRelayEnvironment');
39
-
40
29
  var useSubscribeToInvalidationState = require('./relay-hooks/useSubscribeToInvalidationState');
41
-
42
30
  var useSubscription = require('./relay-hooks/useSubscription');
43
-
44
31
  var RelayRuntime = require('relay-runtime');
45
-
46
32
  /**
47
33
  * The public interface for Relay Hooks.
48
34
  * This will eventually become the main public interface for react-relay.
@@ -57,6 +43,7 @@ module.exports = {
57
43
  requestSubscription: RelayRuntime.requestSubscription,
58
44
  EntryPointContainer: EntryPointContainer,
59
45
  RelayEnvironmentProvider: RelayEnvironmentProvider,
46
+ ProfilerContext: ProfilerContext,
60
47
  fetchQuery: RelayRuntime.fetchQuery,
61
48
  loadQuery: loadQuery,
62
49
  loadEntryPoint: loadEntryPoint,
package/lib/index.js CHANGED
@@ -6,55 +6,36 @@
6
6
  *
7
7
  *
8
8
  * @format
9
+ * @oncall relay
9
10
  */
10
- // flowlint ambiguous-object-type:error
11
+
11
12
  'use strict';
12
13
 
13
14
  var ReactRelayContext = require('./ReactRelayContext');
14
-
15
15
  var ReactRelayFragmentContainer = require('./ReactRelayFragmentContainer');
16
-
17
16
  var ReactRelayLocalQueryRenderer = require('./ReactRelayLocalQueryRenderer');
18
-
19
17
  var ReactRelayPaginationContainer = require('./ReactRelayPaginationContainer');
20
-
21
18
  var ReactRelayQueryRenderer = require('./ReactRelayQueryRenderer');
22
-
23
19
  var ReactRelayRefetchContainer = require('./ReactRelayRefetchContainer');
24
-
25
20
  var EntryPointContainer = require('./relay-hooks/EntryPointContainer.react');
26
-
27
21
  var loadEntryPoint = require('./relay-hooks/loadEntryPoint');
28
-
29
22
  var _require = require('./relay-hooks/loadQuery'),
30
- loadQuery = _require.loadQuery;
31
-
23
+ loadQuery = _require.loadQuery;
24
+ var ProfilerContext = require('./relay-hooks/ProfilerContext');
32
25
  var RelayEnvironmentProvider = require('./relay-hooks/RelayEnvironmentProvider');
33
-
26
+ var useClientQuery = require('./relay-hooks/useClientQuery');
34
27
  var useEntryPointLoader = require('./relay-hooks/useEntryPointLoader');
35
-
36
28
  var useFragment = require('./relay-hooks/useFragment');
37
-
38
29
  var useLazyLoadQuery = require('./relay-hooks/useLazyLoadQuery');
39
-
40
30
  var useMutation = require('./relay-hooks/useMutation');
41
-
42
31
  var usePaginationFragment = require('./relay-hooks/usePaginationFragment');
43
-
44
32
  var usePreloadedQuery = require('./relay-hooks/usePreloadedQuery');
45
-
46
33
  var useQueryLoader = require('./relay-hooks/useQueryLoader');
47
-
48
34
  var useRefetchableFragment = require('./relay-hooks/useRefetchableFragment');
49
-
50
35
  var useRelayEnvironment = require('./relay-hooks/useRelayEnvironment');
51
-
52
36
  var useSubscribeToInvalidationState = require('./relay-hooks/useSubscribeToInvalidationState');
53
-
54
37
  var useSubscription = require('./relay-hooks/useSubscription');
55
-
56
38
  var RelayRuntime = require('relay-runtime');
57
-
58
39
  /**
59
40
  * The public interface to react-relay.
60
41
  * Currently contains both Relay Hooks and legacy Container APIs.
@@ -80,9 +61,11 @@ module.exports = {
80
61
  // Relay Hooks
81
62
  EntryPointContainer: EntryPointContainer,
82
63
  RelayEnvironmentProvider: RelayEnvironmentProvider,
64
+ ProfilerContext: ProfilerContext,
83
65
  fetchQuery: RelayRuntime.fetchQuery,
84
66
  loadQuery: loadQuery,
85
67
  loadEntryPoint: loadEntryPoint,
68
+ useClientQuery: useClientQuery,
86
69
  useFragment: useFragment,
87
70
  useLazyLoadQuery: useLazyLoadQuery,
88
71
  useEntryPointLoader: useEntryPointLoader,
@@ -6,17 +6,18 @@
6
6
  *
7
7
  *
8
8
  * @format
9
+ * @oncall relay
9
10
  */
10
- // flowlint ambiguous-object-type:error
11
+
11
12
  'use strict';
13
+
12
14
  /**
13
15
  * Determine if a given value is an object that implements the `Environment`
14
16
  * interface defined in `RelayEnvironmentTypes`.
15
17
  */
16
-
17
18
  function isRelayEnvironment(environment) {
18
- return typeof environment === 'object' && environment !== null && // TODO: add applyMutation/sendMutation once ready in both cores
19
+ return typeof environment === 'object' && environment !== null &&
20
+ // TODO: add applyMutation/sendMutation once ready in both cores
19
21
  typeof environment.check === 'function' && typeof environment.lookup === 'function' && typeof environment.retain === 'function' && typeof environment.execute === 'function' && typeof environment.subscribe === 'function';
20
22
  }
21
-
22
23
  module.exports = isRelayEnvironment;