react-relay 14.0.0 → 15.0.0

Sign up to get free protection for your applications and to get access to all the features.
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;