relay-runtime 2.0.0-rc.2 → 5.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 (77) hide show
  1. package/index.js +1 -1
  2. package/lib/{generateRelayClientID.js → ClientID.js} +10 -3
  3. package/lib/ConvertToExecuteFunction.js +6 -4
  4. package/lib/DataChecker.js +88 -69
  5. package/lib/NormalizationNode.js +1 -1
  6. package/lib/ReaderNode.js +1 -1
  7. package/lib/RelayCombinedEnvironmentTypes.js +1 -1
  8. package/lib/RelayConcreteNode.js +5 -2
  9. package/lib/RelayConcreteVariables.js +15 -9
  10. package/lib/RelayConnectionHandler.js +27 -20
  11. package/lib/RelayConnectionInterface.js +4 -2
  12. package/lib/RelayCore.js +48 -15
  13. package/lib/RelayDeclarativeMutationConfig.js +16 -15
  14. package/lib/RelayDefaultHandleKey.js +1 -1
  15. package/lib/RelayDefaultHandlerProvider.js +7 -6
  16. package/lib/RelayDefaultMissingFieldHandlers.js +26 -0
  17. package/lib/RelayError.js +7 -2
  18. package/lib/RelayFeatureFlags.js +16 -0
  19. package/lib/RelayInMemoryRecordSource.js +8 -2
  20. package/lib/RelayModernEnvironment.js +159 -237
  21. package/lib/RelayModernFragmentOwner.js +72 -0
  22. package/lib/RelayModernFragmentSpecResolver.js +66 -15
  23. package/lib/RelayModernGraphQLTag.js +9 -5
  24. package/lib/RelayModernOperationDescriptor.js +9 -6
  25. package/lib/RelayModernQueryExecutor.js +791 -0
  26. package/lib/RelayModernRecord.js +44 -24
  27. package/lib/RelayModernSelector.js +208 -82
  28. package/lib/RelayModernStore.js +66 -34
  29. package/lib/RelayNetwork.js +14 -7
  30. package/lib/RelayNetworkLogger.js +6 -2
  31. package/lib/RelayNetworkLoggerTransaction.js +8 -4
  32. package/lib/RelayNetworkTypes.js +1 -1
  33. package/lib/RelayObservable.js +72 -41
  34. package/lib/RelayOperationTracker.js +265 -0
  35. package/lib/RelayProfiler.js +10 -6
  36. package/lib/RelayPublishQueue.js +66 -47
  37. package/lib/RelayQueryResponseCache.js +11 -5
  38. package/lib/RelayReader.js +135 -126
  39. package/lib/RelayRecordProxy.js +24 -20
  40. package/lib/RelayRecordSourceMutator.js +88 -25
  41. package/lib/RelayRecordSourceProxy.js +38 -19
  42. package/lib/RelayRecordSourceSelectorProxy.js +10 -7
  43. package/lib/RelayRecordState.js +1 -1
  44. package/lib/RelayReferenceMarker.js +66 -55
  45. package/lib/RelayReplaySubject.js +134 -0
  46. package/lib/RelayResponseNormalizer.js +245 -134
  47. package/lib/RelayRuntimeTypes.js +1 -1
  48. package/lib/RelayStoreUtils.js +55 -16
  49. package/lib/RelayViewerHandler.js +8 -50
  50. package/lib/StoreInspector.js +171 -0
  51. package/lib/applyRelayModernOptimisticMutation.js +8 -2
  52. package/lib/cloneRelayHandleSourceField.js +17 -7
  53. package/lib/commitLocalUpdate.js +1 -1
  54. package/lib/commitRelayModernMutation.js +33 -13
  55. package/lib/createRelayContext.js +27 -0
  56. package/lib/createRelayNetworkLogger.js +8 -2
  57. package/lib/deepFreeze.js +1 -1
  58. package/lib/defaultGetDataID.js +24 -0
  59. package/lib/fetchQueryInternal.js +232 -0
  60. package/lib/fetchRelayModernQuery.js +5 -3
  61. package/lib/getFragmentIdentifier.js +52 -0
  62. package/lib/getFragmentSpecIdentifier.js +26 -0
  63. package/lib/getRelayHandleKey.js +8 -2
  64. package/lib/getRequestParametersIdentifier.js +26 -0
  65. package/lib/hasOverlappingIDs.js +1 -1
  66. package/lib/index.js +155 -53
  67. package/lib/isPromise.js +1 -1
  68. package/lib/isScalarAndEqual.js +1 -1
  69. package/lib/normalizeRelayPayload.js +19 -10
  70. package/lib/recycleNodesInto.js +23 -5
  71. package/lib/requestRelaySubscription.js +9 -3
  72. package/lib/validateMutation.js +13 -6
  73. package/package.json +2 -2
  74. package/relay-runtime.js +2 -2
  75. package/relay-runtime.min.js +2 -2
  76. package/lib/normalizePayload.js +0 -37
  77. package/lib/simpleClone.js +0 -27
@@ -0,0 +1,232 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its 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
+ * @format
9
+ */
10
+ 'use strict';
11
+
12
+ var Observable = require("./RelayObservable");
13
+
14
+ var RelayReplaySubject = require("./RelayReplaySubject");
15
+
16
+ var getRequestParametersIdentifier = require("./getRequestParametersIdentifier");
17
+
18
+ var invariant = require("fbjs/lib/invariant");
19
+
20
+ var requestCachesByEnvironment = new Map();
21
+ /**
22
+ * Fetches the given query and variables on the provided environment,
23
+ * and de-dupes identical in-flight requests.
24
+ *
25
+ * Observing a request:
26
+ * ====================
27
+ * fetchQuery returns an Observable which you can call .subscribe()
28
+ * on. subscribe() takes an Observer, which you can provide to
29
+ * observe network events:
30
+ *
31
+ * ```
32
+ * fetchQuery(environment, query, variables).subscribe({
33
+ * // Called when network requests starts
34
+ * start: (subscription) => {},
35
+ *
36
+ * // Called after a payload is received and written to the local store
37
+ * next: (payload) => {},
38
+ *
39
+ * // Called when network requests errors
40
+ * error: (error) => {},
41
+ *
42
+ * // Called when network requests fully completes
43
+ * complete: () => {},
44
+ *
45
+ * // Called when network request is unsubscribed
46
+ * unsubscribe: (subscription) => {},
47
+ * });
48
+ * ```
49
+ *
50
+ * In-flight request de-duping:
51
+ * ============================
52
+ * By default, calling fetchQuery multiple times with the same
53
+ * environment, query and variables will not initiate a new request if a request
54
+ * for those same parameters is already in flight.
55
+ *
56
+ * A request is marked in-flight from the moment it starts until the moment it
57
+ * fully completes, regardless of error or successful completion.
58
+ *
59
+ * NOTE: If the request completes _synchronously_, calling fetchQuery
60
+ * a second time with the same arguments in the same tick will _NOT_ de-dupe
61
+ * the request given that it will no longer be in-flight.
62
+ *
63
+ *
64
+ * Data Retention:
65
+ * ===============
66
+ * This function will not retain any query data outside the scope of the
67
+ * request, which means it is not guaranteed that it won't be garbage
68
+ * collected after the request completes.
69
+ * If you need to retain data, you can do so manually with environment.retain().
70
+ *
71
+ * Cancelling requests:
72
+ * ====================
73
+ * If the subscription returned by subscribe is called while the
74
+ * request is in-flight, apart from releasing retained data, the request will
75
+ * also be cancelled.
76
+ *
77
+ * ```
78
+ * const subscription = fetchQuery(...).subscribe(...);
79
+ *
80
+ * // This will cancel the request if it is in-flight.
81
+ * subscription.unsubscribe();
82
+ * ```
83
+ * @private
84
+ */
85
+
86
+ function fetchQuery(environment, query, options) {
87
+ return fetchQueryDeduped(environment, query.node.params, query.variables, function () {
88
+ return environment.execute({
89
+ operation: query,
90
+ cacheConfig: options === null || options === void 0 ? void 0 : options.networkCacheConfig
91
+ });
92
+ });
93
+ }
94
+ /**
95
+ * Low-level implementation details of `fetchQuery`.
96
+ *
97
+ * `fetchQueryDeduped` can also be used to share a single cache for
98
+ * requests that aren't using `fetchQuery` directly (e.g. because they don't
99
+ * have an `OperationDescriptor` when they are called).
100
+ *
101
+ * @private
102
+ */
103
+
104
+
105
+ function fetchQueryDeduped(environment, parameters, variables, fetchFn) {
106
+ return Observable.create(function (sink) {
107
+ var requestCache = getRequestCache(environment);
108
+ var cacheKey = getRequestParametersIdentifier(parameters, variables);
109
+ var cachedRequest = requestCache.get(cacheKey);
110
+
111
+ if (!cachedRequest) {
112
+ fetchFn()["finally"](function () {
113
+ return requestCache["delete"](cacheKey);
114
+ }).subscribe({
115
+ start: function start(subscription) {
116
+ cachedRequest = {
117
+ subject: new RelayReplaySubject(),
118
+ subscription: subscription
119
+ };
120
+ requestCache.set(cacheKey, cachedRequest);
121
+ },
122
+ next: function next(response) {
123
+ getCachedRequest(requestCache, cacheKey).subject.next(response);
124
+ },
125
+ error: function error(_error) {
126
+ getCachedRequest(requestCache, cacheKey).subject.error(_error);
127
+ },
128
+ complete: function complete() {
129
+ getCachedRequest(requestCache, cacheKey).subject.complete();
130
+ }
131
+ });
132
+ }
133
+
134
+ !(cachedRequest != null) ? process.env.NODE_ENV !== "production" ? invariant(false, '[fetchQueryInternal] fetchQueryDeduped: Expected `start` to be ' + 'called synchronously') : invariant(false) : void 0;
135
+ var subscription = cachedRequest.subject.subscribe(sink);
136
+ return function () {
137
+ subscription.unsubscribe();
138
+ var cachedRequestInstance = requestCache.get(cacheKey);
139
+
140
+ if (cachedRequestInstance) {
141
+ var requestSubscription = cachedRequestInstance.subscription;
142
+
143
+ if (requestSubscription != null && cachedRequestInstance.subject.getObserverCount() === 0) {
144
+ requestSubscription.unsubscribe();
145
+ requestCache["delete"](cacheKey);
146
+ }
147
+ }
148
+ };
149
+ });
150
+ }
151
+ /**
152
+ * If a request is in flight for the given query, variables and environment,
153
+ * this function will return a Promise that will resolve when that request has
154
+ * completed and the data has been saved to the store.
155
+ * If no request is in flight, null will be returned
156
+ * @private
157
+ */
158
+
159
+
160
+ function getPromiseForRequestInFlight(environment, query) {
161
+ var requestCache = getRequestCache(environment);
162
+ var cacheKey = getRequestParametersIdentifier(query.node.params, query.variables);
163
+ var cachedRequest = requestCache.get(cacheKey);
164
+
165
+ if (!cachedRequest) {
166
+ return null;
167
+ }
168
+
169
+ return new Promise(function (resolve, reject) {
170
+ var resolveOnNext = false;
171
+ fetchQuery(environment, query).subscribe({
172
+ complete: resolve,
173
+ error: reject,
174
+ next: function next(response) {
175
+ /*
176
+ * The underlying `RelayReplaySubject` will synchronously replay events
177
+ * as soon as we subscribe, but since we want the *next* asynchronous
178
+ * one, we'll ignore them until the replay finishes.
179
+ */
180
+ if (resolveOnNext) {
181
+ resolve(response);
182
+ }
183
+ }
184
+ });
185
+ resolveOnNext = true;
186
+ });
187
+ }
188
+ /**
189
+ * If there is a pending request for the given query, returns an Observable of
190
+ * *all* its responses. Existing responses are published synchronously and
191
+ * subsequent responses are published asynchronously. Returns null if there is
192
+ * no pending request. This is similar to fetchQuery() except that it will not
193
+ * issue a fetch if there isn't already one pending.
194
+ */
195
+
196
+
197
+ function getObservableForRequestInFlight(environment, query) {
198
+ var requestCache = getRequestCache(environment);
199
+ var cacheKey = getRequestParametersIdentifier(query.node.params, query.variables);
200
+ var cachedRequest = requestCache.get(cacheKey);
201
+
202
+ if (!cachedRequest) {
203
+ return null;
204
+ }
205
+
206
+ return fetchQuery(environment, query);
207
+ }
208
+
209
+ function getRequestCache(environment) {
210
+ var cached = requestCachesByEnvironment.get(environment);
211
+
212
+ if (cached != null) {
213
+ return cached;
214
+ }
215
+
216
+ var requestCache = new Map();
217
+ requestCachesByEnvironment.set(environment, requestCache);
218
+ return requestCache;
219
+ }
220
+
221
+ function getCachedRequest(requestCache, cacheKey) {
222
+ var cached = requestCache.get(cacheKey);
223
+ !(cached != null) ? process.env.NODE_ENV !== "production" ? invariant(false, '[fetchQueryInternal] getCachedRequest: Expected request to be cached') : invariant(false) : void 0;
224
+ return cached;
225
+ }
226
+
227
+ module.exports = {
228
+ fetchQuery: fetchQuery,
229
+ getPromiseForRequestInFlight: getPromiseForRequestInFlight,
230
+ getObservableForRequestInFlight: getObservableForRequestInFlight,
231
+ fetchQueryDeduped: fetchQueryDeduped
232
+ };
@@ -4,18 +4,20 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * strict-local
7
+ *
8
8
  * @format
9
9
  */
10
10
  'use strict';
11
11
 
12
+ var invariant = require("fbjs/lib/invariant");
13
+
12
14
  /**
13
15
  * A helper function to fetch the results of a query. Note that results for
14
16
  * fragment spreads are masked: fields must be explicitly listed in the query in
15
17
  * order to be accessible in the result object.
16
18
  */
17
19
  function fetchRelayModernQuery(environment, taggedNode, variables, cacheConfig) {
18
- !environment.unstable_internal ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'fetchRelayModernQuery: Expected a valid Relay environment, got `%s`.', environment) : require("fbjs/lib/invariant")(false) : void 0;
20
+ !environment.unstable_internal ? process.env.NODE_ENV !== "production" ? invariant(false, 'fetchRelayModernQuery: Expected a valid Relay environment, got `%s`.', environment) : invariant(false) : void 0;
19
21
  var _environment$unstable = environment.unstable_internal,
20
22
  createOperationDescriptor = _environment$unstable.createOperationDescriptor,
21
23
  getRequest = _environment$unstable.getRequest;
@@ -30,7 +32,7 @@ function fetchRelayModernQuery(environment, taggedNode, variables, cacheConfig)
30
32
  operation: operation,
31
33
  cacheConfig: cacheConfig
32
34
  }).map(function () {
33
- return environment.lookup(operation.fragment).data;
35
+ return environment.lookup(operation.fragment, operation).data;
34
36
  }).toPromise();
35
37
  }
36
38
 
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its 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
+ * @format
9
+ * @emails oncall+relay
10
+ */
11
+ 'use strict';
12
+
13
+ var RelayCore = require("./RelayCore");
14
+
15
+ var getDataIDsFromFragment = RelayCore.getDataIDsFromFragment,
16
+ getVariablesFromFragment = RelayCore.getVariablesFromFragment;
17
+
18
+ var _require = require("./RelayModernFragmentOwner"),
19
+ getFragmentOwner = _require.getFragmentOwner;
20
+
21
+ var stableCopy = require("./stableCopy");
22
+
23
+ function getFragmentIdentifier(fragmentNode, fragmentRef) {
24
+ var _ref3, _ref4, _ref6;
25
+
26
+ var fragmentOwner = getFragmentOwner(fragmentNode, // $FlowFixMe - TODO T39154660 Use FragmentPointer type instead of mixed
27
+ fragmentRef);
28
+ var fragmentVariables = getVariablesFromFragment( // We get the variables from the fragment owner in the fragment ref, so we
29
+ // don't pass them here. This API can change once fragment ownership
30
+ // stops being optional
31
+ // TODO(T39494051)
32
+ {}, fragmentNode, fragmentRef, fragmentOwner);
33
+ var dataIDs = getDataIDsFromFragment(fragmentNode, fragmentRef);
34
+ var fragmentOwnerID = Array.isArray(fragmentOwner) ? fragmentOwner.map(function (owner) {
35
+ var _ref, _ref2;
36
+
37
+ return (_ref = (_ref2 = owner === null || owner === void 0 ? void 0 : owner.node.params.id) !== null && _ref2 !== void 0 ? _ref2 : owner === null || owner === void 0 ? void 0 : owner.node.params.name) !== null && _ref !== void 0 ? _ref : '';
38
+ }) : (_ref3 = (_ref4 = fragmentOwner === null || fragmentOwner === void 0 ? void 0 : fragmentOwner.node.params.id) !== null && _ref4 !== void 0 ? _ref4 : fragmentOwner === null || fragmentOwner === void 0 ? void 0 : fragmentOwner.node.params.name) !== null && _ref3 !== void 0 ? _ref3 : '';
39
+ var fragmentOwnerVariables = Array.isArray(fragmentOwner) ? fragmentOwner.map(function (owner) {
40
+ var _ref5;
41
+
42
+ return (_ref5 = owner === null || owner === void 0 ? void 0 : owner.variables) !== null && _ref5 !== void 0 ? _ref5 : null;
43
+ }) : (_ref6 = fragmentOwner === null || fragmentOwner === void 0 ? void 0 : fragmentOwner.variables) !== null && _ref6 !== void 0 ? _ref6 : null;
44
+ return "".concat(fragmentNode.name, "-").concat(JSON.stringify(stableCopy({
45
+ dataIDs: dataIDs,
46
+ fragmentVariables: fragmentVariables,
47
+ fragmentOwnerID: fragmentOwnerID,
48
+ fragmentOwnerVariables: fragmentOwnerVariables
49
+ })));
50
+ }
51
+
52
+ module.exports = getFragmentIdentifier;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its 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
+ * @format
9
+ * @emails oncall+relay
10
+ */
11
+ 'use strict';
12
+
13
+ var getFragmentIdentifier = require("./getFragmentIdentifier");
14
+
15
+ var mapObject = require("fbjs/lib/mapObject");
16
+
17
+ var stableCopy = require("./stableCopy");
18
+
19
+ function getFragmentSpecIdentifier(fragmentNodes, fragmentRefs) {
20
+ return JSON.stringify(stableCopy(mapObject(fragmentNodes, function (fragmentNode, key) {
21
+ var fragmentRef = fragmentRefs[key];
22
+ return getFragmentIdentifier(fragmentNode, fragmentRef);
23
+ })));
24
+ }
25
+
26
+ module.exports = getFragmentSpecIdentifier;
@@ -9,18 +9,24 @@
9
9
  */
10
10
  'use strict';
11
11
 
12
+ var invariant = require("fbjs/lib/invariant");
13
+
14
+ var _require = require("./RelayDefaultHandleKey"),
15
+ DEFAULT_HANDLE_KEY = _require.DEFAULT_HANDLE_KEY;
12
16
  /**
13
17
  * @internal
14
18
  *
15
19
  * Helper to create a unique name for a handle field based on the handle name, handle key and
16
20
  * source field.
17
21
  */
22
+
23
+
18
24
  function getRelayHandleKey(handleName, key, fieldName) {
19
- if (key && key !== require("./RelayDefaultHandleKey").DEFAULT_HANDLE_KEY) {
25
+ if (key && key !== DEFAULT_HANDLE_KEY) {
20
26
  return "__".concat(key, "_").concat(handleName);
21
27
  }
22
28
 
23
- !(fieldName != null) ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'getRelayHandleKey: Expected either `fieldName` or `key` in `handle` to be provided') : require("fbjs/lib/invariant")(false) : void 0;
29
+ !(fieldName != null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'getRelayHandleKey: Expected either `fieldName` or `key` in `handle` to be provided') : invariant(false) : void 0;
24
30
  return "__".concat(fieldName, "_").concat(handleName);
25
31
  }
26
32
 
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its 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
+ * @format
9
+ */
10
+ 'use strict';
11
+
12
+ var invariant = require("fbjs/lib/invariant");
13
+
14
+ var stableCopy = require("./stableCopy");
15
+
16
+ /**
17
+ * Returns a stable identifier for the given pair of `RequestParameters` +
18
+ * variables.
19
+ */
20
+ function getRequestParametersIdentifier(parameters, variables) {
21
+ var requestID = parameters.id != null ? parameters.id : parameters.text;
22
+ !(requestID != null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'getRequestParametersIdentifier: Expected request `%s` to have either a ' + 'valid `id` or `text` property', parameters.name) : invariant(false) : void 0;
23
+ return requestID + JSON.stringify(stableCopy(variables));
24
+ }
25
+
26
+ module.exports = getRequestParametersIdentifier;
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * strict-local
7
+ *
8
8
  * @format
9
9
  */
10
10
  'use strict';
package/lib/index.js CHANGED
@@ -9,6 +9,89 @@
9
9
  */
10
10
  'use strict';
11
11
 
12
+ var RelayConcreteNode = require("./RelayConcreteNode");
13
+
14
+ var RelayConcreteVariables = require("./RelayConcreteVariables");
15
+
16
+ var RelayConnectionHandler = require("./RelayConnectionHandler");
17
+
18
+ var RelayConnectionInterface = require("./RelayConnectionInterface");
19
+
20
+ var RelayCore = require("./RelayCore");
21
+
22
+ var RelayDeclarativeMutationConfig = require("./RelayDeclarativeMutationConfig");
23
+
24
+ var RelayDefaultHandleKey = require("./RelayDefaultHandleKey");
25
+
26
+ var RelayDefaultHandlerProvider = require("./RelayDefaultHandlerProvider");
27
+
28
+ var RelayDefaultMissingFieldHandlers = require("./RelayDefaultMissingFieldHandlers");
29
+
30
+ var RelayError = require("./RelayError");
31
+
32
+ var RelayFeatureFlags = require("./RelayFeatureFlags");
33
+
34
+ var RelayInMemoryRecordSource = require("./RelayInMemoryRecordSource");
35
+
36
+ var RelayModernEnvironment = require("./RelayModernEnvironment");
37
+
38
+ var RelayModernFragmentOwner = require("./RelayModernFragmentOwner");
39
+
40
+ var RelayModernGraphQLTag = require("./RelayModernGraphQLTag");
41
+
42
+ var RelayModernStore = require("./RelayModernStore");
43
+
44
+ var RelayNetwork = require("./RelayNetwork");
45
+
46
+ var RelayNetworkLoggerTransaction = require("./RelayNetworkLoggerTransaction");
47
+
48
+ var RelayObservable = require("./RelayObservable");
49
+
50
+ var RelayProfiler = require("./RelayProfiler");
51
+
52
+ var RelayQueryResponseCache = require("./RelayQueryResponseCache");
53
+
54
+ var RelayStoreUtils = require("./RelayStoreUtils");
55
+
56
+ var RelayViewerHandler = require("./RelayViewerHandler");
57
+
58
+ var applyRelayModernOptimisticMutation = require("./applyRelayModernOptimisticMutation");
59
+
60
+ var commitLocalUpdate = require("./commitLocalUpdate");
61
+
62
+ var commitRelayModernMutation = require("./commitRelayModernMutation");
63
+
64
+ var createRelayContext = require("./createRelayContext");
65
+
66
+ var createRelayNetworkLogger = require("./createRelayNetworkLogger");
67
+
68
+ var deepFreeze = require("./deepFreeze");
69
+
70
+ var fetchQueryInternal = require("./fetchQueryInternal");
71
+
72
+ var fetchRelayModernQuery = require("./fetchRelayModernQuery");
73
+
74
+ var getFragmentIdentifier = require("./getFragmentIdentifier");
75
+
76
+ var getFragmentSpecIdentifier = require("./getFragmentSpecIdentifier");
77
+
78
+ var getRelayHandleKey = require("./getRelayHandleKey");
79
+
80
+ var getRequestParametersIdentifier = require("./getRequestParametersIdentifier");
81
+
82
+ var isRelayModernEnvironment = require("./isRelayModernEnvironment");
83
+
84
+ var isScalarAndEqual = require("./isScalarAndEqual");
85
+
86
+ var recycleNodesInto = require("./recycleNodesInto");
87
+
88
+ var requestRelaySubscription = require("./requestRelaySubscription");
89
+
90
+ var stableCopy = require("./stableCopy");
91
+
92
+ var _require = require("./ClientID"),
93
+ generateClientID = _require.generateClientID;
94
+
12
95
  // As early as possible, check for the existence of the JavaScript globals which
13
96
  // Relay Runtime relies upon, and produce a clear message if they do not exist.
14
97
  if (process.env.NODE_ENV !== "production") {
@@ -23,65 +106,84 @@ if (process.env.NODE_ENV !== "production") {
23
106
 
24
107
  module.exports = {
25
108
  // Core API
26
- Environment: require("./RelayModernEnvironment"),
27
- Network: require("./RelayNetwork"),
28
- Observable: require("./RelayObservable"),
29
- QueryResponseCache: require("./RelayQueryResponseCache"),
30
- RecordSource: require("./RelayInMemoryRecordSource"),
31
- Store: require("./RelayModernStore"),
32
- areEqualSelectors: require("./RelayCore").areEqualSelectors,
33
- createFragmentSpecResolver: require("./RelayCore").createFragmentSpecResolver,
34
- createOperationDescriptor: require("./RelayCore").createOperationDescriptor,
35
- getDataIDsFromObject: require("./RelayCore").getDataIDsFromObject,
36
- getFragment: require("./RelayModernGraphQLTag").getFragment,
37
- getPaginationFragment: require("./RelayModernGraphQLTag").getPaginationFragment,
38
- getRefetchableFragment: require("./RelayModernGraphQLTag").getRefetchableFragment,
39
- getRequest: require("./RelayModernGraphQLTag").getRequest,
40
- getSelector: require("./RelayCore").getSelector,
41
- getSelectorList: require("./RelayCore").getSelectorList,
42
- getSelectorsFromObject: require("./RelayCore").getSelectorsFromObject,
43
- getStorageKey: require("./RelayStoreUtils").getStorageKey,
44
- getVariablesFromObject: require("./RelayCore").getVariablesFromObject,
45
- graphql: require("./RelayModernGraphQLTag").graphql,
109
+ Environment: RelayModernEnvironment,
110
+ Network: RelayNetwork,
111
+ Observable: RelayObservable,
112
+ QueryResponseCache: RelayQueryResponseCache,
113
+ RecordSource: RelayInMemoryRecordSource,
114
+ Store: RelayModernStore,
115
+ areEqualSelectors: RelayCore.areEqualSelectors,
116
+ createFragmentSpecResolver: RelayCore.createFragmentSpecResolver,
117
+ createOperationDescriptor: RelayCore.createOperationDescriptor,
118
+ getDataIDsFromFragment: RelayCore.getDataIDsFromFragment,
119
+ getDataIDsFromObject: RelayCore.getDataIDsFromObject,
120
+ getFragment: RelayModernGraphQLTag.getFragment,
121
+ getFragmentOwner: RelayModernFragmentOwner.getFragmentOwner,
122
+ getFragmentOwners: RelayModernFragmentOwner.getFragmentOwners,
123
+ getPaginationFragment: RelayModernGraphQLTag.getPaginationFragment,
124
+ getModuleComponentKey: RelayStoreUtils.getModuleComponentKey,
125
+ getModuleOperationKey: RelayStoreUtils.getModuleOperationKey,
126
+ getRefetchableFragment: RelayModernGraphQLTag.getRefetchableFragment,
127
+ getRequest: RelayModernGraphQLTag.getRequest,
128
+ getSingularSelector: RelayCore.getSingularSelector,
129
+ getPluralSelector: RelayCore.getPluralSelector,
130
+ getSelector: RelayCore.getSelector,
131
+ getSelectorsFromObject: RelayCore.getSelectorsFromObject,
132
+ getStorageKey: RelayStoreUtils.getStorageKey,
133
+ getVariablesFromSingularFragment: RelayCore.getVariablesFromSingularFragment,
134
+ getVariablesFromPluralFragment: RelayCore.getVariablesFromPluralFragment,
135
+ getVariablesFromFragment: RelayCore.getVariablesFromFragment,
136
+ getVariablesFromObject: RelayCore.getVariablesFromObject,
137
+ graphql: RelayModernGraphQLTag.graphql,
46
138
  // Declarative mutation API
47
- MutationTypes: require("./RelayDeclarativeMutationConfig").MutationTypes,
48
- RangeOperations: require("./RelayDeclarativeMutationConfig").RangeOperations,
139
+ MutationTypes: RelayDeclarativeMutationConfig.MutationTypes,
140
+ RangeOperations: RelayDeclarativeMutationConfig.RangeOperations,
49
141
  // Extensions
50
- DefaultHandlerProvider: require("./RelayDefaultHandlerProvider"),
51
- ConnectionHandler: require("./RelayConnectionHandler"),
52
- ViewerHandler: require("./RelayViewerHandler"),
142
+ DefaultHandlerProvider: RelayDefaultHandlerProvider,
143
+ DefaultMissingFieldHandlers: RelayDefaultMissingFieldHandlers,
144
+ ConnectionHandler: RelayConnectionHandler,
145
+ ViewerHandler: RelayViewerHandler,
53
146
  // Helpers (can be implemented via the above API)
54
- applyOptimisticMutation: require("./applyRelayModernOptimisticMutation"),
55
- commitLocalUpdate: require("./commitLocalUpdate"),
56
- commitMutation: require("./commitRelayModernMutation"),
57
- fetchQuery: require("./fetchRelayModernQuery"),
58
- isRelayModernEnvironment: require("./isRelayModernEnvironment"),
59
- requestSubscription: require("./requestRelaySubscription"),
147
+ applyOptimisticMutation: applyRelayModernOptimisticMutation,
148
+ commitLocalUpdate: commitLocalUpdate,
149
+ commitMutation: commitRelayModernMutation,
150
+ fetchQuery: fetchRelayModernQuery,
151
+ isRelayModernEnvironment: isRelayModernEnvironment,
152
+ requestSubscription: requestRelaySubscription,
60
153
  // Configuration interface for legacy or special uses
61
- ConnectionInterface: require("./RelayConnectionInterface"),
154
+ ConnectionInterface: RelayConnectionInterface,
62
155
  // Utilities
63
- RelayProfiler: require("./RelayProfiler"),
156
+ RelayProfiler: RelayProfiler,
64
157
  // INTERNAL-ONLY: These exports might be removed at any point.
65
- RelayConcreteNode: require("./RelayConcreteNode"),
66
- RelayError: require("./RelayError"),
67
- RelayNetworkLoggerTransaction: require("./RelayNetworkLoggerTransaction"),
68
- DEFAULT_HANDLE_KEY: require("./RelayDefaultHandleKey").DEFAULT_HANDLE_KEY,
69
- FRAGMENTS_KEY: require("./RelayStoreUtils").FRAGMENTS_KEY,
70
- FRAGMENT_OWNER_KEY: require("./RelayStoreUtils").FRAGMENT_OWNER_KEY,
71
- ID_KEY: require("./RelayStoreUtils").ID_KEY,
72
- REF_KEY: require("./RelayStoreUtils").REF_KEY,
73
- REFS_KEY: require("./RelayStoreUtils").REFS_KEY,
74
- ROOT_ID: require("./RelayStoreUtils").ROOT_ID,
75
- ROOT_TYPE: require("./RelayStoreUtils").ROOT_TYPE,
76
- createRelayNetworkLogger: require("./createRelayNetworkLogger"),
77
- deepFreeze: require("./deepFreeze"),
78
- generateClientID: require("./generateRelayClientID"),
79
- getRelayHandleKey: require("./getRelayHandleKey"),
80
- isScalarAndEqual: require("./isScalarAndEqual"),
81
- recycleNodesInto: require("./recycleNodesInto"),
82
- simpleClone: require("./simpleClone"),
83
- stableCopy: require("./stableCopy"),
158
+ RelayConcreteNode: RelayConcreteNode,
159
+ RelayError: RelayError,
160
+ RelayFeatureFlags: RelayFeatureFlags,
161
+ RelayNetworkLoggerTransaction: RelayNetworkLoggerTransaction,
162
+ DEFAULT_HANDLE_KEY: RelayDefaultHandleKey.DEFAULT_HANDLE_KEY,
163
+ FRAGMENTS_KEY: RelayStoreUtils.FRAGMENTS_KEY,
164
+ FRAGMENT_OWNER_KEY: RelayStoreUtils.FRAGMENT_OWNER_KEY,
165
+ ID_KEY: RelayStoreUtils.ID_KEY,
166
+ REF_KEY: RelayStoreUtils.REF_KEY,
167
+ REFS_KEY: RelayStoreUtils.REFS_KEY,
168
+ ROOT_ID: RelayStoreUtils.ROOT_ID,
169
+ ROOT_TYPE: RelayStoreUtils.ROOT_TYPE,
170
+ TYPENAME_KEY: RelayStoreUtils.TYPENAME_KEY,
171
+ createRelayNetworkLogger: createRelayNetworkLogger,
172
+ deepFreeze: deepFreeze,
173
+ generateClientID: generateClientID,
174
+ getRelayHandleKey: getRelayHandleKey,
175
+ isScalarAndEqual: isScalarAndEqual,
176
+ recycleNodesInto: recycleNodesInto,
177
+ stableCopy: stableCopy,
178
+ getFragmentIdentifier: getFragmentIdentifier,
179
+ getFragmentSpecIdentifier: getFragmentSpecIdentifier,
180
+ getRequestParametersIdentifier: getRequestParametersIdentifier,
84
181
  __internal: {
85
- getModernOperationVariables: require("./RelayConcreteVariables").getOperationVariables
182
+ createRelayContext: createRelayContext,
183
+ getModernOperationVariables: RelayConcreteVariables.getOperationVariables,
184
+ fetchQuery: fetchQueryInternal.fetchQuery,
185
+ fetchQueryDeduped: fetchQueryInternal.fetchQueryDeduped,
186
+ getPromiseForRequestInFlight: fetchQueryInternal.getPromiseForRequestInFlight,
187
+ getObservableForRequestInFlight: fetchQueryInternal.getObservableForRequestInFlight
86
188
  }
87
189
  };
package/lib/isPromise.js CHANGED
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * strict
7
+ *
8
8
  * @format
9
9
  */
10
10
  'use strict';
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * strict
7
+ *
8
8
  * @format
9
9
  */
10
10
  'use strict';