relay-runtime 7.0.0 → 9.1.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.
- package/handlers/RelayDefaultHandlerProvider.js.flow +34 -0
- package/handlers/connection/ConnectionHandler.js.flow +549 -0
- package/handlers/connection/ConnectionInterface.js.flow +92 -0
- package/index.js +1 -1
- package/index.js.flow +314 -0
- package/lib/handlers/RelayDefaultHandlerProvider.js +3 -2
- package/lib/handlers/connection/{RelayConnectionHandler.js → ConnectionHandler.js} +34 -35
- package/lib/handlers/connection/{RelayConnectionInterface.js → ConnectionInterface.js} +3 -30
- package/lib/index.js +29 -27
- package/lib/mutations/RelayDeclarativeMutationConfig.js +30 -52
- package/lib/mutations/RelayRecordProxy.js +6 -3
- package/lib/mutations/RelayRecordSourceMutator.js +3 -9
- package/lib/mutations/RelayRecordSourceProxy.js +21 -24
- package/lib/mutations/RelayRecordSourceSelectorProxy.js +18 -14
- package/lib/mutations/applyOptimisticMutation.js +2 -1
- package/lib/mutations/commitLocalUpdate.js +1 -0
- package/lib/mutations/commitMutation.js +26 -8
- package/lib/mutations/validateMutation.js +21 -11
- package/lib/network/ConvertToExecuteFunction.js +1 -0
- package/lib/network/RelayNetwork.js +1 -0
- package/lib/network/RelayNetworkTypes.js +1 -0
- package/lib/network/RelayObservable.js +10 -9
- package/lib/network/RelayQueryResponseCache.js +9 -7
- package/lib/query/{RelayModernGraphQLTag.js → GraphQLTag.js} +15 -8
- package/lib/query/fetchQuery.js +2 -1
- package/lib/query/fetchQueryInternal.js +30 -20
- package/lib/store/ClientID.js +1 -0
- package/lib/store/DataChecker.js +47 -97
- package/lib/store/RelayConcreteVariables.js +7 -2
- package/lib/store/RelayModernEnvironment.js +82 -41
- package/lib/store/RelayModernFragmentSpecResolver.js +61 -21
- package/lib/store/RelayModernOperationDescriptor.js +2 -1
- package/lib/store/RelayModernQueryExecutor.js +476 -333
- package/lib/store/RelayModernRecord.js +39 -9
- package/lib/store/RelayModernSelector.js +2 -1
- package/lib/store/RelayModernStore.js +359 -371
- package/lib/store/RelayOperationTracker.js +36 -78
- package/lib/store/RelayOptimisticRecordSource.js +8 -5
- package/lib/store/RelayPublishQueue.js +66 -53
- package/lib/store/RelayReader.js +2 -24
- package/lib/store/RelayRecordSource.js +3 -9
- package/lib/store/RelayRecordSourceMapImpl.js +14 -18
- package/lib/store/RelayRecordState.js +1 -0
- package/lib/store/RelayReferenceMarker.js +8 -58
- package/lib/store/RelayResponseNormalizer.js +15 -144
- package/lib/store/RelayStoreTypes.js +1 -0
- package/lib/store/RelayStoreUtils.js +34 -10
- package/lib/store/StoreInspector.js +11 -5
- package/lib/store/ViewerPattern.js +1 -0
- package/lib/store/cloneRelayHandleSourceField.js +1 -0
- package/lib/store/createFragmentSpecResolver.js +1 -0
- package/lib/store/createRelayContext.js +1 -0
- package/lib/store/defaultGetDataID.js +1 -0
- package/lib/store/hasOverlappingIDs.js +1 -0
- package/lib/store/isRelayModernEnvironment.js +1 -0
- package/lib/store/normalizeRelayPayload.js +8 -4
- package/lib/store/readInlineData.js +2 -1
- package/lib/subscription/requestSubscription.js +6 -3
- package/lib/util/JSResourceTypes.flow.js +12 -0
- package/lib/util/NormalizationNode.js +1 -0
- package/lib/util/ReaderNode.js +1 -0
- package/lib/util/RelayConcreteNode.js +3 -0
- package/lib/util/RelayDefaultHandleKey.js +1 -0
- package/lib/util/RelayError.js +2 -1
- package/lib/util/RelayFeatureFlags.js +3 -2
- package/lib/util/RelayProfiler.js +1 -0
- package/lib/util/RelayReplaySubject.js +2 -3
- package/lib/util/RelayRuntimeTypes.js +1 -0
- package/lib/util/createPayloadFor3DField.js +34 -0
- package/lib/util/deepFreeze.js +1 -0
- package/lib/util/generateID.js +1 -0
- package/lib/util/getFragmentIdentifier.js +1 -0
- package/lib/util/getRelayHandleKey.js +1 -0
- package/lib/util/getRequestIdentifier.js +1 -0
- package/lib/util/isPromise.js +1 -0
- package/lib/util/isScalarAndEqual.js +1 -0
- package/lib/util/recycleNodesInto.js +1 -0
- package/lib/util/resolveImmediate.js +1 -0
- package/lib/util/stableCopy.js +1 -0
- package/mutations/RelayDeclarativeMutationConfig.js.flow +380 -0
- package/mutations/RelayRecordProxy.js.flow +165 -0
- package/mutations/RelayRecordSourceMutator.js.flow +238 -0
- package/mutations/RelayRecordSourceProxy.js.flow +164 -0
- package/mutations/RelayRecordSourceSelectorProxy.js.flow +119 -0
- package/mutations/applyOptimisticMutation.js.flow +76 -0
- package/mutations/commitLocalUpdate.js.flow +24 -0
- package/mutations/commitMutation.js.flow +184 -0
- package/mutations/validateMutation.js.flow +211 -0
- package/network/ConvertToExecuteFunction.js.flow +49 -0
- package/network/RelayNetwork.js.flow +84 -0
- package/network/RelayNetworkTypes.js.flow +123 -0
- package/network/RelayObservable.js.flow +634 -0
- package/network/RelayQueryResponseCache.js.flow +111 -0
- package/package.json +1 -1
- package/query/GraphQLTag.js.flow +166 -0
- package/query/fetchQuery.js.flow +47 -0
- package/query/fetchQueryInternal.js.flow +349 -0
- package/relay-runtime.js +2 -2
- package/relay-runtime.min.js +2 -2
- package/store/ClientID.js.flow +43 -0
- package/store/DataChecker.js.flow +426 -0
- package/store/RelayConcreteVariables.js.flow +96 -0
- package/store/RelayModernEnvironment.js.flow +526 -0
- package/store/RelayModernFragmentSpecResolver.js.flow +426 -0
- package/store/RelayModernOperationDescriptor.js.flow +88 -0
- package/store/RelayModernQueryExecutor.js.flow +1327 -0
- package/store/RelayModernRecord.js.flow +403 -0
- package/store/RelayModernSelector.js.flow +444 -0
- package/store/RelayModernStore.js.flow +757 -0
- package/store/RelayOperationTracker.js.flow +164 -0
- package/store/RelayOptimisticRecordSource.js.flow +119 -0
- package/store/RelayPublishQueue.js.flow +401 -0
- package/store/RelayReader.js.flow +376 -0
- package/store/RelayRecordSource.js.flow +29 -0
- package/store/RelayRecordSourceMapImpl.js.flow +87 -0
- package/store/RelayRecordState.js.flow +37 -0
- package/store/RelayReferenceMarker.js.flow +236 -0
- package/store/RelayResponseNormalizer.js.flow +556 -0
- package/store/RelayStoreTypes.js.flow +873 -0
- package/store/RelayStoreUtils.js.flow +218 -0
- package/store/StoreInspector.js.flow +173 -0
- package/store/ViewerPattern.js.flow +26 -0
- package/store/cloneRelayHandleSourceField.js.flow +66 -0
- package/store/createFragmentSpecResolver.js.flow +55 -0
- package/store/createRelayContext.js.flow +44 -0
- package/store/defaultGetDataID.js.flow +27 -0
- package/store/hasOverlappingIDs.js.flow +34 -0
- package/store/isRelayModernEnvironment.js.flow +27 -0
- package/store/normalizeRelayPayload.js.flow +51 -0
- package/store/readInlineData.js.flow +75 -0
- package/subscription/requestSubscription.js.flow +100 -0
- package/util/JSResourceTypes.flow.js.flow +20 -0
- package/util/NormalizationNode.js.flow +191 -0
- package/util/ReaderNode.js.flow +208 -0
- package/util/RelayConcreteNode.js.flow +80 -0
- package/util/RelayDefaultHandleKey.js.flow +17 -0
- package/util/RelayError.js.flow +33 -0
- package/util/RelayFeatureFlags.js.flow +30 -0
- package/util/RelayProfiler.js.flow +284 -0
- package/util/RelayReplaySubject.js.flow +134 -0
- package/util/RelayRuntimeTypes.js.flow +70 -0
- package/util/createPayloadFor3DField.js.flow +43 -0
- package/util/deepFreeze.js.flow +36 -0
- package/util/generateID.js.flow +21 -0
- package/util/getFragmentIdentifier.js.flow +52 -0
- package/util/getRelayHandleKey.js.flow +41 -0
- package/util/getRequestIdentifier.js.flow +41 -0
- package/util/isPromise.js.flow +21 -0
- package/util/isScalarAndEqual.js.flow +26 -0
- package/util/recycleNodesInto.js.flow +80 -0
- package/util/resolveImmediate.js.flow +30 -0
- package/util/stableCopy.js.flow +35 -0
- package/lib/handlers/RelayDefaultMissingFieldHandlers.js +0 -26
- package/lib/store/RelayConnection.js +0 -36
- package/lib/store/RelayConnectionResolver.js +0 -177
- package/lib/store/RelayRecordSourceObjectImpl.js +0 -78
- package/lib/util/getFragmentSpecIdentifier.js +0 -26
|
@@ -7,11 +7,16 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
|
+
// flowlint ambiguous-object-type:error
|
|
10
11
|
'use strict';
|
|
11
12
|
|
|
12
13
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
13
14
|
|
|
14
|
-
var
|
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
+
|
|
17
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
18
|
+
|
|
19
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
15
20
|
|
|
16
21
|
var invariant = require("fbjs/lib/invariant");
|
|
17
22
|
|
|
@@ -29,7 +34,7 @@ function getFragmentVariables(fragment, rootVariables, argumentVariables) {
|
|
|
29
34
|
return;
|
|
30
35
|
}
|
|
31
36
|
|
|
32
|
-
variables = variables || (
|
|
37
|
+
variables = variables || _objectSpread({}, argumentVariables);
|
|
33
38
|
|
|
34
39
|
switch (definition.kind) {
|
|
35
40
|
case 'LocalArgument':
|
|
@@ -8,13 +8,20 @@
|
|
|
8
8
|
* @emails oncall+relay
|
|
9
9
|
* @format
|
|
10
10
|
*/
|
|
11
|
+
// flowlint ambiguous-object-type:error
|
|
11
12
|
'use strict';
|
|
12
13
|
|
|
13
|
-
var
|
|
14
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
15
|
+
|
|
16
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
|
+
|
|
18
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
19
|
+
|
|
20
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
14
21
|
|
|
15
22
|
var RelayDefaultHandlerProvider = require('../handlers/RelayDefaultHandlerProvider');
|
|
16
23
|
|
|
17
|
-
var
|
|
24
|
+
var RelayFeatureFlags = require('../util/RelayFeatureFlags');
|
|
18
25
|
|
|
19
26
|
var RelayModernQueryExecutor = require('./RelayModernQueryExecutor');
|
|
20
27
|
|
|
@@ -32,16 +39,15 @@ var generateID = require('../util/generateID');
|
|
|
32
39
|
|
|
33
40
|
var invariant = require("fbjs/lib/invariant");
|
|
34
41
|
|
|
35
|
-
var RelayModernEnvironment =
|
|
36
|
-
/*#__PURE__*/
|
|
37
|
-
function () {
|
|
42
|
+
var RelayModernEnvironment = /*#__PURE__*/function () {
|
|
38
43
|
function RelayModernEnvironment(config) {
|
|
39
44
|
var _this = this;
|
|
40
45
|
|
|
41
|
-
var _config$log, _config$UNSTABLE_DO_N, _config$scheduler, _config$
|
|
46
|
+
var _config$log, _config$UNSTABLE_defa, _config$UNSTABLE_DO_N, _config$scheduler, _config$isServer, _config$operationTrac;
|
|
42
47
|
|
|
43
48
|
this.configName = config.configName;
|
|
44
49
|
var handlerProvider = config.handlerProvider ? config.handlerProvider : RelayDefaultHandlerProvider;
|
|
50
|
+
this._treatMissingFieldsAsNull = config.treatMissingFieldsAsNull === true;
|
|
45
51
|
var operationLoader = config.operationLoader;
|
|
46
52
|
|
|
47
53
|
if (process.env.NODE_ENV !== "production") {
|
|
@@ -51,12 +57,16 @@ function () {
|
|
|
51
57
|
}
|
|
52
58
|
|
|
53
59
|
this.__log = (_config$log = config.log) !== null && _config$log !== void 0 ? _config$log : emptyFunction;
|
|
60
|
+
this._defaultRenderPolicy = ((_config$UNSTABLE_defa = config.UNSTABLE_defaultRenderPolicy) !== null && _config$UNSTABLE_defa !== void 0 ? _config$UNSTABLE_defa : RelayFeatureFlags.ENABLE_PARTIAL_RENDERING_DEFAULT === true) ? 'partial' : 'full';
|
|
54
61
|
this._operationLoader = operationLoader;
|
|
62
|
+
this._operationExecutions = new Map();
|
|
55
63
|
this._network = config.network;
|
|
56
64
|
this._getDataID = (_config$UNSTABLE_DO_N = config.UNSTABLE_DO_NOT_USE_getDataID) !== null && _config$UNSTABLE_DO_N !== void 0 ? _config$UNSTABLE_DO_N : defaultGetDataID;
|
|
57
65
|
this._publishQueue = new RelayPublishQueue(config.store, handlerProvider, this._getDataID);
|
|
58
66
|
this._scheduler = (_config$scheduler = config.scheduler) !== null && _config$scheduler !== void 0 ? _config$scheduler : null;
|
|
59
67
|
this._store = config.store;
|
|
68
|
+
this.options = config.options;
|
|
69
|
+
this._isServer = (_config$isServer = config.isServer) !== null && _config$isServer !== void 0 ? _config$isServer : false;
|
|
60
70
|
|
|
61
71
|
this.__setNet = function (newNet) {
|
|
62
72
|
return _this._network = newNet;
|
|
@@ -81,7 +91,7 @@ function () {
|
|
|
81
91
|
devToolsHook.registerEnvironment(this);
|
|
82
92
|
}
|
|
83
93
|
|
|
84
|
-
this._missingFieldHandlers =
|
|
94
|
+
this._missingFieldHandlers = config.missingFieldHandlers;
|
|
85
95
|
this._operationTracker = (_config$operationTrac = config.operationTracker) !== null && _config$operationTrac !== void 0 ? _config$operationTrac : new RelayOperationTracker();
|
|
86
96
|
}
|
|
87
97
|
|
|
@@ -99,6 +109,16 @@ function () {
|
|
|
99
109
|
return this._operationTracker;
|
|
100
110
|
};
|
|
101
111
|
|
|
112
|
+
_proto.isRequestActive = function isRequestActive(requestIdentifier) {
|
|
113
|
+
var activeState = this._operationExecutions.get(requestIdentifier);
|
|
114
|
+
|
|
115
|
+
return activeState === 'active';
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
_proto.UNSTABLE_getDefaultRenderPolicy = function UNSTABLE_getDefaultRenderPolicy() {
|
|
119
|
+
return this._defaultRenderPolicy;
|
|
120
|
+
};
|
|
121
|
+
|
|
102
122
|
_proto.applyUpdate = function applyUpdate(optimisticUpdate) {
|
|
103
123
|
var _this2 = this;
|
|
104
124
|
|
|
@@ -138,15 +158,18 @@ function () {
|
|
|
138
158
|
var source = RelayObservable.create(function (_sink) {});
|
|
139
159
|
var executor = RelayModernQueryExecutor.execute({
|
|
140
160
|
operation: optimisticConfig.operation,
|
|
161
|
+
operationExecutions: _this3._operationExecutions,
|
|
141
162
|
operationLoader: _this3._operationLoader,
|
|
142
163
|
optimisticConfig: optimisticConfig,
|
|
143
164
|
publishQueue: _this3._publishQueue,
|
|
144
165
|
scheduler: _this3._scheduler,
|
|
145
166
|
sink: sink,
|
|
146
167
|
source: source,
|
|
168
|
+
store: _this3._store,
|
|
147
169
|
updater: null,
|
|
148
170
|
operationTracker: _this3._operationTracker,
|
|
149
|
-
getDataID: _this3._getDataID
|
|
171
|
+
getDataID: _this3._getDataID,
|
|
172
|
+
treatMissingFieldsAsNull: _this3._treatMissingFieldsAsNull
|
|
150
173
|
});
|
|
151
174
|
return function () {
|
|
152
175
|
return executor.cancel();
|
|
@@ -159,12 +182,12 @@ function () {
|
|
|
159
182
|
};
|
|
160
183
|
};
|
|
161
184
|
|
|
162
|
-
_proto.check = function check(
|
|
163
|
-
if (this._missingFieldHandlers == null) {
|
|
164
|
-
return this._store.check(
|
|
185
|
+
_proto.check = function check(operation) {
|
|
186
|
+
if (this._missingFieldHandlers == null || this._missingFieldHandlers.length === 0) {
|
|
187
|
+
return this._store.check(operation);
|
|
165
188
|
}
|
|
166
189
|
|
|
167
|
-
return this._checkSelectorAndHandleMissingFields(
|
|
190
|
+
return this._checkSelectorAndHandleMissingFields(operation, this._missingFieldHandlers);
|
|
168
191
|
};
|
|
169
192
|
|
|
170
193
|
_proto.commitPayload = function commitPayload(operation, payload) {
|
|
@@ -173,6 +196,7 @@ function () {
|
|
|
173
196
|
RelayObservable.create(function (sink) {
|
|
174
197
|
var executor = RelayModernQueryExecutor.execute({
|
|
175
198
|
operation: operation,
|
|
199
|
+
operationExecutions: _this4._operationExecutions,
|
|
176
200
|
operationLoader: _this4._operationLoader,
|
|
177
201
|
optimisticConfig: null,
|
|
178
202
|
publishQueue: _this4._publishQueue,
|
|
@@ -182,9 +206,12 @@ function () {
|
|
|
182
206
|
source: RelayObservable.from({
|
|
183
207
|
data: payload
|
|
184
208
|
}),
|
|
209
|
+
store: _this4._store,
|
|
185
210
|
updater: null,
|
|
186
211
|
operationTracker: _this4._operationTracker,
|
|
187
|
-
getDataID: _this4._getDataID
|
|
212
|
+
getDataID: _this4._getDataID,
|
|
213
|
+
isClientPayload: true,
|
|
214
|
+
treatMissingFieldsAsNull: _this4._treatMissingFieldsAsNull
|
|
188
215
|
});
|
|
189
216
|
return function () {
|
|
190
217
|
return executor.cancel();
|
|
@@ -206,16 +233,20 @@ function () {
|
|
|
206
233
|
return this._store.subscribe(snapshot, callback);
|
|
207
234
|
};
|
|
208
235
|
|
|
209
|
-
_proto.retain = function retain(
|
|
210
|
-
return this._store.retain(
|
|
236
|
+
_proto.retain = function retain(operation) {
|
|
237
|
+
return this._store.retain(operation);
|
|
211
238
|
};
|
|
212
239
|
|
|
213
|
-
_proto.
|
|
214
|
-
|
|
240
|
+
_proto.isServer = function isServer() {
|
|
241
|
+
return this._isServer;
|
|
242
|
+
};
|
|
215
243
|
|
|
244
|
+
_proto._checkSelectorAndHandleMissingFields = function _checkSelectorAndHandleMissingFields(operation, handlers) {
|
|
216
245
|
var target = RelayRecordSource.create();
|
|
217
|
-
|
|
218
|
-
|
|
246
|
+
|
|
247
|
+
var result = this._store.check(operation, {
|
|
248
|
+
target: target,
|
|
249
|
+
handlers: handlers
|
|
219
250
|
});
|
|
220
251
|
|
|
221
252
|
if (target.size() > 0) {
|
|
@@ -237,7 +268,7 @@ function () {
|
|
|
237
268
|
;
|
|
238
269
|
|
|
239
270
|
_proto.execute = function execute(_ref) {
|
|
240
|
-
var
|
|
271
|
+
var _this5 = this;
|
|
241
272
|
|
|
242
273
|
var operation = _ref.operation,
|
|
243
274
|
cacheConfig = _ref.cacheConfig,
|
|
@@ -248,19 +279,22 @@ function () {
|
|
|
248
279
|
logRequestInfo = _this$__createLogObse[1];
|
|
249
280
|
|
|
250
281
|
return RelayObservable.create(function (sink) {
|
|
251
|
-
var source =
|
|
282
|
+
var source = _this5._network.execute(operation.request.node.params, operation.request.variables, cacheConfig || {}, null, logRequestInfo);
|
|
252
283
|
|
|
253
284
|
var executor = RelayModernQueryExecutor.execute({
|
|
254
285
|
operation: operation,
|
|
255
|
-
|
|
286
|
+
operationExecutions: _this5._operationExecutions,
|
|
287
|
+
operationLoader: _this5._operationLoader,
|
|
256
288
|
optimisticConfig: null,
|
|
257
|
-
publishQueue:
|
|
258
|
-
scheduler:
|
|
289
|
+
publishQueue: _this5._publishQueue,
|
|
290
|
+
scheduler: _this5._scheduler,
|
|
259
291
|
sink: sink,
|
|
260
292
|
source: source,
|
|
293
|
+
store: _this5._store,
|
|
261
294
|
updater: updater,
|
|
262
|
-
operationTracker:
|
|
263
|
-
getDataID:
|
|
295
|
+
operationTracker: _this5._operationTracker,
|
|
296
|
+
getDataID: _this5._getDataID,
|
|
297
|
+
treatMissingFieldsAsNull: _this5._treatMissingFieldsAsNull
|
|
264
298
|
});
|
|
265
299
|
return function () {
|
|
266
300
|
return executor.cancel();
|
|
@@ -280,9 +314,10 @@ function () {
|
|
|
280
314
|
;
|
|
281
315
|
|
|
282
316
|
_proto.executeMutation = function executeMutation(_ref2) {
|
|
283
|
-
var
|
|
317
|
+
var _this6 = this;
|
|
284
318
|
|
|
285
|
-
var
|
|
319
|
+
var cacheConfig = _ref2.cacheConfig,
|
|
320
|
+
operation = _ref2.operation,
|
|
286
321
|
optimisticResponse = _ref2.optimisticResponse,
|
|
287
322
|
optimisticUpdater = _ref2.optimisticUpdater,
|
|
288
323
|
updater = _ref2.updater,
|
|
@@ -303,21 +338,24 @@ function () {
|
|
|
303
338
|
};
|
|
304
339
|
}
|
|
305
340
|
|
|
306
|
-
var source =
|
|
341
|
+
var source = _this6._network.execute(operation.request.node.params, operation.request.variables, _objectSpread({}, cacheConfig, {
|
|
307
342
|
force: true
|
|
308
|
-
}, uploadables, logRequestInfo);
|
|
343
|
+
}), uploadables, logRequestInfo);
|
|
309
344
|
|
|
310
345
|
var executor = RelayModernQueryExecutor.execute({
|
|
311
346
|
operation: operation,
|
|
312
|
-
|
|
347
|
+
operationExecutions: _this6._operationExecutions,
|
|
348
|
+
operationLoader: _this6._operationLoader,
|
|
313
349
|
optimisticConfig: optimisticConfig,
|
|
314
|
-
publishQueue:
|
|
315
|
-
scheduler:
|
|
350
|
+
publishQueue: _this6._publishQueue,
|
|
351
|
+
scheduler: _this6._scheduler,
|
|
316
352
|
sink: sink,
|
|
317
353
|
source: source,
|
|
354
|
+
store: _this6._store,
|
|
318
355
|
updater: updater,
|
|
319
|
-
operationTracker:
|
|
320
|
-
getDataID:
|
|
356
|
+
operationTracker: _this6._operationTracker,
|
|
357
|
+
getDataID: _this6._getDataID,
|
|
358
|
+
treatMissingFieldsAsNull: _this6._treatMissingFieldsAsNull
|
|
321
359
|
});
|
|
322
360
|
return function () {
|
|
323
361
|
return executor.cancel();
|
|
@@ -336,21 +374,24 @@ function () {
|
|
|
336
374
|
;
|
|
337
375
|
|
|
338
376
|
_proto.executeWithSource = function executeWithSource(_ref3) {
|
|
339
|
-
var
|
|
377
|
+
var _this7 = this;
|
|
340
378
|
|
|
341
379
|
var operation = _ref3.operation,
|
|
342
380
|
source = _ref3.source;
|
|
343
381
|
return RelayObservable.create(function (sink) {
|
|
344
382
|
var executor = RelayModernQueryExecutor.execute({
|
|
345
383
|
operation: operation,
|
|
346
|
-
|
|
347
|
-
|
|
384
|
+
operationExecutions: _this7._operationExecutions,
|
|
385
|
+
operationLoader: _this7._operationLoader,
|
|
386
|
+
operationTracker: _this7._operationTracker,
|
|
348
387
|
optimisticConfig: null,
|
|
349
|
-
publishQueue:
|
|
350
|
-
scheduler:
|
|
388
|
+
publishQueue: _this7._publishQueue,
|
|
389
|
+
scheduler: _this7._scheduler,
|
|
351
390
|
sink: sink,
|
|
352
391
|
source: source,
|
|
353
|
-
|
|
392
|
+
store: _this7._store,
|
|
393
|
+
getDataID: _this7._getDataID,
|
|
394
|
+
treatMissingFieldsAsNull: _this7._treatMissingFieldsAsNull
|
|
354
395
|
});
|
|
355
396
|
return function () {
|
|
356
397
|
return executor.cancel();
|
|
@@ -7,27 +7,37 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
|
+
// flowlint ambiguous-object-type:error
|
|
10
11
|
'use strict';
|
|
11
12
|
|
|
12
13
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
13
14
|
|
|
14
|
-
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));
|
|
15
|
-
|
|
16
15
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
16
|
|
|
17
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
18
|
+
|
|
19
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
20
|
+
|
|
21
|
+
var RelayFeatureFlags = require('../util/RelayFeatureFlags');
|
|
22
|
+
|
|
18
23
|
var areEqual = require("fbjs/lib/areEqual");
|
|
19
24
|
|
|
20
25
|
var invariant = require("fbjs/lib/invariant");
|
|
21
26
|
|
|
22
27
|
var isScalarAndEqual = require('../util/isScalarAndEqual');
|
|
23
28
|
|
|
24
|
-
var
|
|
25
|
-
|
|
29
|
+
var warning = require("fbjs/lib/warning");
|
|
30
|
+
|
|
31
|
+
var _require = require('../query/fetchQueryInternal'),
|
|
32
|
+
getPromiseForActiveRequest = _require.getPromiseForActiveRequest;
|
|
26
33
|
|
|
27
|
-
var _require2 = require('./
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
34
|
+
var _require2 = require('./RelayModernOperationDescriptor'),
|
|
35
|
+
createRequestDescriptor = _require2.createRequestDescriptor;
|
|
36
|
+
|
|
37
|
+
var _require3 = require('./RelayModernSelector'),
|
|
38
|
+
areEqualSelectors = _require3.areEqualSelectors,
|
|
39
|
+
createReaderSelector = _require3.createReaderSelector,
|
|
40
|
+
getSelectorsFromObject = _require3.getSelectorsFromObject;
|
|
31
41
|
|
|
32
42
|
/**
|
|
33
43
|
* A utility for resolving and subscribing to the results of a fragment spec
|
|
@@ -48,9 +58,7 @@ var _require2 = require('./RelayModernSelector'),
|
|
|
48
58
|
* the resolver as stale and notify the caller, and the actual results are
|
|
49
59
|
* recomputed the first time `resolve()` is called.
|
|
50
60
|
*/
|
|
51
|
-
var RelayModernFragmentSpecResolver =
|
|
52
|
-
/*#__PURE__*/
|
|
53
|
-
function () {
|
|
61
|
+
var RelayModernFragmentSpecResolver = /*#__PURE__*/function () {
|
|
54
62
|
function RelayModernFragmentSpecResolver(context, fragments, props, callback) {
|
|
55
63
|
var _this = this;
|
|
56
64
|
|
|
@@ -65,7 +73,7 @@ function () {
|
|
|
65
73
|
this._context = context;
|
|
66
74
|
this._data = {};
|
|
67
75
|
this._fragments = fragments;
|
|
68
|
-
this._props =
|
|
76
|
+
this._props = {};
|
|
69
77
|
this._resolvers = {};
|
|
70
78
|
this._stale = false;
|
|
71
79
|
this.setProps(props);
|
|
@@ -97,7 +105,7 @@ function () {
|
|
|
97
105
|
var nextItem = resolver.resolve();
|
|
98
106
|
|
|
99
107
|
if (nextData || nextItem !== prevItem) {
|
|
100
|
-
nextData = nextData || (
|
|
108
|
+
nextData = nextData || _objectSpread({}, prevData);
|
|
101
109
|
nextData[_key2] = nextItem;
|
|
102
110
|
}
|
|
103
111
|
} else {
|
|
@@ -106,7 +114,7 @@ function () {
|
|
|
106
114
|
var _nextItem = prop !== undefined ? prop : null;
|
|
107
115
|
|
|
108
116
|
if (nextData || !isScalarAndEqual(_nextItem, prevItem)) {
|
|
109
|
-
nextData = nextData || (
|
|
117
|
+
nextData = nextData || _objectSpread({}, prevData);
|
|
110
118
|
nextData[_key2] = _nextItem;
|
|
111
119
|
}
|
|
112
120
|
}
|
|
@@ -126,6 +134,7 @@ function () {
|
|
|
126
134
|
|
|
127
135
|
_proto.setProps = function setProps(props) {
|
|
128
136
|
var ownedSelectors = getSelectorsFromObject(this._fragments, props);
|
|
137
|
+
this._props = {};
|
|
129
138
|
|
|
130
139
|
for (var _key3 in ownedSelectors) {
|
|
131
140
|
if (ownedSelectors.hasOwnProperty(_key3)) {
|
|
@@ -154,11 +163,11 @@ function () {
|
|
|
154
163
|
}
|
|
155
164
|
}
|
|
156
165
|
|
|
166
|
+
this._props[_key3] = props[_key3];
|
|
157
167
|
this._resolvers[_key3] = resolver;
|
|
158
168
|
}
|
|
159
169
|
}
|
|
160
170
|
|
|
161
|
-
this._props = props;
|
|
162
171
|
this._stale = true;
|
|
163
172
|
};
|
|
164
173
|
|
|
@@ -183,14 +192,13 @@ function () {
|
|
|
183
192
|
*/
|
|
184
193
|
|
|
185
194
|
|
|
186
|
-
var SelectorResolver =
|
|
187
|
-
/*#__PURE__*/
|
|
188
|
-
function () {
|
|
195
|
+
var SelectorResolver = /*#__PURE__*/function () {
|
|
189
196
|
function SelectorResolver(environment, selector, callback) {
|
|
190
197
|
var _this2 = this;
|
|
191
198
|
|
|
192
199
|
(0, _defineProperty2["default"])(this, "_onChange", function (snapshot) {
|
|
193
200
|
_this2._data = snapshot.data;
|
|
201
|
+
_this2._isMissingData = snapshot.isMissingData;
|
|
194
202
|
|
|
195
203
|
_this2._callback();
|
|
196
204
|
});
|
|
@@ -199,6 +207,7 @@ function () {
|
|
|
199
207
|
|
|
200
208
|
this._callback = callback;
|
|
201
209
|
this._data = _snapshot.data;
|
|
210
|
+
this._isMissingData = _snapshot.isMissingData;
|
|
202
211
|
this._environment = environment;
|
|
203
212
|
this._selector = selector;
|
|
204
213
|
this._subscription = environment.subscribe(_snapshot, this._onChange);
|
|
@@ -215,6 +224,38 @@ function () {
|
|
|
215
224
|
};
|
|
216
225
|
|
|
217
226
|
_proto2.resolve = function resolve() {
|
|
227
|
+
if (RelayFeatureFlags.ENABLE_RELAY_CONTAINERS_SUSPENSE === true && this._isMissingData === true) {
|
|
228
|
+
var _getPromiseForActiveR;
|
|
229
|
+
|
|
230
|
+
// NOTE: This branch exists to handle the case in which:
|
|
231
|
+
// - A RelayModern container is rendered as a descendant of a Relay Hook
|
|
232
|
+
// root using a "partial" renderPolicy (this means that eargerly
|
|
233
|
+
// reading any cached data that is available instead of blocking
|
|
234
|
+
// at the root until the whole query is fetched).
|
|
235
|
+
// - A parent Relay Hook didnt' suspend earlier on data being fetched,
|
|
236
|
+
// either because the fragment data for the parent was available, or
|
|
237
|
+
// the parent fragment didn't have any data dependencies.
|
|
238
|
+
// Even though our Flow types reflect the possiblity of null data, there
|
|
239
|
+
// might still be cases where it's not handled at runtime becuase the
|
|
240
|
+
// Flow types are being ignored, or simply not being used (for example,
|
|
241
|
+
// the case reported here: https://fburl.com/srnbucf8, was due to
|
|
242
|
+
// misuse of Flow types here: https://fburl.com/g3m0mqqh).
|
|
243
|
+
// Additionally, even though the null data might be handled without a
|
|
244
|
+
// runtime error, we might not suspend when we intended to if a parent
|
|
245
|
+
// Relay Hook (e.g. that is using @defer) decided not to suspend becuase
|
|
246
|
+
// it's immediate data was already available (even if it was deferred),
|
|
247
|
+
// or it didn't actually need any data (was just spreading other fragments).
|
|
248
|
+
// This should eventually go away with something like @optional, where we only
|
|
249
|
+
// suspend at specific boundaries depending on whether the boundary
|
|
250
|
+
// can be fulfilled or not.
|
|
251
|
+
var promise = (_getPromiseForActiveR = getPromiseForActiveRequest(this._environment, this._selector.owner)) !== null && _getPromiseForActiveR !== void 0 ? _getPromiseForActiveR : this._environment.getOperationTracker().getPromiseForPendingOperationsAffectingOwner(this._selector.owner);
|
|
252
|
+
|
|
253
|
+
if (promise != null) {
|
|
254
|
+
process.env.NODE_ENV !== "production" ? warning(false, 'Relay: Relay Container for fragment `%s` suspended. When using ' + 'features such as @defer or @module, use `useFragment` instead ' + 'of a Relay Container.', this._selector.node.name) : void 0;
|
|
255
|
+
throw promise;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
218
259
|
return this._data;
|
|
219
260
|
};
|
|
220
261
|
|
|
@@ -228,6 +269,7 @@ function () {
|
|
|
228
269
|
var snapshot = this._environment.lookup(selector);
|
|
229
270
|
|
|
230
271
|
this._data = snapshot.data;
|
|
272
|
+
this._isMissingData = snapshot.isMissingData;
|
|
231
273
|
this._selector = selector;
|
|
232
274
|
this._subscription = this._environment.subscribe(snapshot, this._onChange);
|
|
233
275
|
};
|
|
@@ -263,9 +305,7 @@ function () {
|
|
|
263
305
|
*/
|
|
264
306
|
|
|
265
307
|
|
|
266
|
-
var SelectorListResolver =
|
|
267
|
-
/*#__PURE__*/
|
|
268
|
-
function () {
|
|
308
|
+
var SelectorListResolver = /*#__PURE__*/function () {
|
|
269
309
|
function SelectorListResolver(environment, selector, callback) {
|
|
270
310
|
var _this3 = this;
|
|
271
311
|
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
|
+
// flowlint ambiguous-object-type:error
|
|
10
11
|
'use strict';
|
|
11
12
|
|
|
12
13
|
var deepFreeze = require('../util/deepFreeze');
|
|
@@ -30,9 +31,9 @@ var _require3 = require('./RelayStoreUtils'),
|
|
|
30
31
|
* operation, and default values are populated for null values.
|
|
31
32
|
*/
|
|
32
33
|
function createOperationDescriptor(request, variables) {
|
|
34
|
+
var dataID = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ROOT_ID;
|
|
33
35
|
var operation = request.operation;
|
|
34
36
|
var operationVariables = getOperationVariables(operation, variables);
|
|
35
|
-
var dataID = ROOT_ID;
|
|
36
37
|
var requestDescriptor = createRequestDescriptor(request, operationVariables);
|
|
37
38
|
var operationDescriptor = {
|
|
38
39
|
fragment: createReaderSelector(request.fragment, dataID, operationVariables, requestDescriptor),
|