relay-runtime 12.0.0 → 13.0.0-rc.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 +2 -2
- package/handlers/connection/ConnectionHandler.js.flow +8 -17
- package/handlers/connection/MutationHandlers.js.flow +7 -11
- package/index.js +1 -1
- package/index.js.flow +40 -33
- package/lib/handlers/connection/ConnectionHandler.js +12 -18
- package/lib/handlers/connection/MutationHandlers.js +3 -6
- package/lib/index.js +45 -45
- package/lib/multi-actor-environment/ActorSpecificEnvironment.js +8 -4
- package/lib/multi-actor-environment/MultiActorEnvironment.js +35 -22
- package/lib/multi-actor-environment/index.js +2 -2
- package/lib/mutations/RelayDeclarativeMutationConfig.js +4 -1
- package/lib/mutations/RelayRecordProxy.js +3 -2
- package/lib/mutations/RelayRecordSourceMutator.js +3 -2
- package/lib/mutations/RelayRecordSourceProxy.js +12 -4
- package/lib/mutations/RelayRecordSourceSelectorProxy.js +12 -4
- package/lib/mutations/applyOptimisticMutation.js +6 -6
- package/lib/mutations/commitMutation.js +15 -14
- package/lib/mutations/readUpdatableQuery_EXPERIMENTAL.js +238 -0
- package/lib/mutations/validateMutation.js +6 -6
- package/lib/network/ConvertToExecuteFunction.js +2 -1
- package/lib/network/RelayNetwork.js +3 -2
- package/lib/network/RelayObservable.js +1 -3
- package/lib/network/RelayQueryResponseCache.js +2 -2
- package/lib/network/wrapNetworkWithLogObserver.js +2 -1
- package/lib/query/GraphQLTag.js +2 -1
- package/lib/query/fetchQuery.js +6 -5
- package/lib/query/fetchQuery_DEPRECATED.js +2 -1
- package/lib/store/ClientID.js +7 -1
- package/lib/store/DataChecker.js +16 -17
- package/lib/store/OperationExecutor.js +13 -13
- package/lib/store/RelayConcreteVariables.js +6 -9
- package/lib/store/RelayModernEnvironment.js +66 -42
- package/lib/store/RelayModernFragmentSpecResolver.js +8 -8
- package/lib/store/RelayModernOperationDescriptor.js +2 -1
- package/lib/store/RelayModernRecord.js +12 -11
- package/lib/store/RelayModernSelector.js +14 -8
- package/lib/store/RelayModernStore.js +14 -15
- package/lib/store/RelayPublishQueue.js +11 -5
- package/lib/store/RelayReader.js +130 -37
- package/lib/store/RelayReferenceMarker.js +10 -11
- package/lib/store/RelayResponseNormalizer.js +25 -22
- package/lib/store/RelayStoreReactFlightUtils.js +3 -3
- package/lib/store/RelayStoreSubscriptions.js +6 -4
- package/lib/store/RelayStoreUtils.js +5 -5
- package/lib/store/ResolverCache.js +6 -6
- package/lib/store/ResolverFragments.js +9 -5
- package/lib/store/cloneRelayHandleSourceField.js +5 -4
- package/lib/store/cloneRelayScalarHandleSourceField.js +5 -4
- package/lib/store/createRelayContext.js +3 -1
- package/lib/store/readInlineData.js +6 -2
- package/lib/subscription/requestSubscription.js +5 -5
- package/lib/util/RelayConcreteNode.js +1 -0
- package/lib/util/RelayFeatureFlags.js +7 -1
- package/lib/util/RelayRuntimeTypes.js +0 -6
- package/lib/util/StringInterner.js +71 -0
- package/lib/util/getFragmentIdentifier.js +15 -7
- package/lib/util/getOperation.js +2 -1
- package/lib/util/getPaginationVariables.js +2 -3
- package/lib/util/getRelayHandleKey.js +2 -2
- package/lib/util/getRequestIdentifier.js +2 -2
- package/multi-actor-environment/ActorSpecificEnvironment.js.flow +27 -19
- package/multi-actor-environment/ActorUtils.js.flow +2 -2
- package/multi-actor-environment/MultiActorEnvironment.js.flow +45 -24
- package/multi-actor-environment/MultiActorEnvironmentTypes.js.flow +27 -11
- package/multi-actor-environment/index.js.flow +1 -2
- package/mutations/RelayDeclarativeMutationConfig.js.flow +32 -26
- package/mutations/RelayRecordProxy.js.flow +4 -5
- package/mutations/RelayRecordSourceMutator.js.flow +4 -6
- package/mutations/RelayRecordSourceProxy.js.flow +19 -10
- package/mutations/RelayRecordSourceSelectorProxy.js.flow +15 -5
- package/mutations/applyOptimisticMutation.js.flow +13 -14
- package/mutations/commitLocalUpdate.js.flow +1 -1
- package/mutations/commitMutation.js.flow +35 -48
- package/mutations/readUpdatableQuery_EXPERIMENTAL.js.flow +309 -0
- package/mutations/validateMutation.js.flow +19 -17
- package/network/ConvertToExecuteFunction.js.flow +2 -2
- package/network/RelayNetwork.js.flow +4 -5
- package/network/RelayObservable.js.flow +1 -3
- package/network/RelayQueryResponseCache.js.flow +3 -3
- package/network/wrapNetworkWithLogObserver.js.flow +8 -7
- package/package.json +1 -1
- package/query/GraphQLTag.js.flow +9 -9
- package/query/PreloadableQueryRegistry.js.flow +2 -1
- package/query/fetchQuery.js.flow +11 -13
- package/query/fetchQueryInternal.js.flow +6 -9
- package/query/fetchQuery_DEPRECATED.js.flow +6 -6
- package/relay-runtime.js +2 -2
- package/relay-runtime.min.js +2 -2
- package/store/ClientID.js.flow +9 -2
- package/store/DataChecker.js.flow +20 -29
- package/store/OperationExecutor.js.flow +54 -62
- package/store/RelayConcreteVariables.js.flow +4 -10
- package/store/RelayModernEnvironment.js.flow +56 -27
- package/store/RelayModernFragmentSpecResolver.js.flow +17 -19
- package/store/RelayModernOperationDescriptor.js.flow +10 -11
- package/store/RelayModernRecord.js.flow +19 -12
- package/store/RelayModernSelector.js.flow +24 -14
- package/store/RelayModernStore.js.flow +21 -24
- package/store/RelayOperationTracker.js.flow +11 -17
- package/store/RelayOptimisticRecordSource.js.flow +2 -2
- package/store/RelayPublishQueue.js.flow +42 -23
- package/store/RelayReader.js.flow +180 -60
- package/store/RelayRecordSource.js.flow +2 -2
- package/store/RelayReferenceMarker.js.flow +12 -15
- package/store/RelayResponseNormalizer.js.flow +43 -41
- package/store/RelayStoreReactFlightUtils.js.flow +3 -4
- package/store/RelayStoreSubscriptions.js.flow +9 -8
- package/store/RelayStoreTypes.js.flow +72 -29
- package/store/RelayStoreUtils.js.flow +8 -9
- package/store/ResolverCache.js.flow +16 -14
- package/store/ResolverFragments.js.flow +15 -22
- package/store/StoreInspector.js.flow +2 -2
- package/store/TypeID.js.flow +1 -1
- package/store/ViewerPattern.js.flow +2 -2
- package/store/cloneRelayHandleSourceField.js.flow +5 -6
- package/store/cloneRelayScalarHandleSourceField.js.flow +5 -6
- package/store/createFragmentSpecResolver.js.flow +3 -4
- package/store/createRelayContext.js.flow +2 -2
- package/store/normalizeRelayPayload.js.flow +6 -7
- package/store/readInlineData.js.flow +7 -8
- package/subscription/requestSubscription.js.flow +16 -24
- package/util/ReaderNode.js.flow +9 -0
- package/util/RelayConcreteNode.js.flow +1 -0
- package/util/RelayFeatureFlags.js.flow +14 -2
- package/util/RelayReplaySubject.js.flow +2 -3
- package/util/RelayRuntimeTypes.js.flow +69 -2
- package/util/StringInterner.js.flow +69 -0
- package/util/createPayloadFor3DField.js.flow +3 -3
- package/util/getFragmentIdentifier.js.flow +27 -15
- package/util/getOperation.js.flow +2 -2
- package/util/getPaginationMetadata.js.flow +5 -7
- package/util/getPaginationVariables.js.flow +5 -9
- package/util/getPendingOperationsForFragment.js.flow +2 -2
- package/util/getRefetchMetadata.js.flow +6 -7
- package/util/getRelayHandleKey.js.flow +1 -2
- package/util/getRequestIdentifier.js.flow +3 -3
- package/util/resolveImmediate.js.flow +1 -1
|
@@ -16,10 +16,20 @@ var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime
|
|
|
16
16
|
|
|
17
17
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
18
18
|
|
|
19
|
-
var
|
|
19
|
+
var _require = require('../multi-actor-environment/ActorIdentifier'),
|
|
20
|
+
INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE = _require.INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE,
|
|
21
|
+
assertInternalActorIndentifier = _require.assertInternalActorIndentifier;
|
|
22
|
+
|
|
23
|
+
var deepFreeze = require('../util/deepFreeze');
|
|
20
24
|
|
|
21
25
|
var RelayFeatureFlags = require('../util/RelayFeatureFlags');
|
|
22
26
|
|
|
27
|
+
var resolveImmediate = require('../util/resolveImmediate');
|
|
28
|
+
|
|
29
|
+
var DataChecker = require('./DataChecker');
|
|
30
|
+
|
|
31
|
+
var defaultGetDataID = require('./defaultGetDataID');
|
|
32
|
+
|
|
23
33
|
var RelayModernRecord = require('./RelayModernRecord');
|
|
24
34
|
|
|
25
35
|
var RelayOptimisticRecordSource = require('./RelayOptimisticRecordSource');
|
|
@@ -34,18 +44,6 @@ var RelayStoreSubscriptions = require('./RelayStoreSubscriptions');
|
|
|
34
44
|
|
|
35
45
|
var RelayStoreUtils = require('./RelayStoreUtils');
|
|
36
46
|
|
|
37
|
-
var deepFreeze = require('../util/deepFreeze');
|
|
38
|
-
|
|
39
|
-
var defaultGetDataID = require('./defaultGetDataID');
|
|
40
|
-
|
|
41
|
-
var invariant = require('invariant');
|
|
42
|
-
|
|
43
|
-
var resolveImmediate = require('../util/resolveImmediate');
|
|
44
|
-
|
|
45
|
-
var _require = require('../multi-actor-environment/ActorIdentifier'),
|
|
46
|
-
INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE = _require.INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE,
|
|
47
|
-
assertInternalActorIndentifier = _require.assertInternalActorIndentifier;
|
|
48
|
-
|
|
49
47
|
var _require2 = require('./RelayStoreUtils'),
|
|
50
48
|
ROOT_ID = _require2.ROOT_ID,
|
|
51
49
|
ROOT_TYPE = _require2.ROOT_TYPE;
|
|
@@ -53,6 +51,8 @@ var _require2 = require('./RelayStoreUtils'),
|
|
|
53
51
|
var _require3 = require('./ResolverCache'),
|
|
54
52
|
RecordResolverCache = _require3.RecordResolverCache;
|
|
55
53
|
|
|
54
|
+
var invariant = require('invariant');
|
|
55
|
+
|
|
56
56
|
var DEFAULT_RELEASE_BUFFER_SIZE = 10;
|
|
57
57
|
/**
|
|
58
58
|
* @public
|
|
@@ -680,8 +680,7 @@ function updateTargetFromSource(target, source, currentWriteEpoch, idsMarkedForI
|
|
|
680
680
|
}
|
|
681
681
|
|
|
682
682
|
RelayModernRecord.setValue(nextRecord, RelayStoreUtils.INVALIDATED_AT_KEY, currentWriteEpoch);
|
|
683
|
-
invalidatedRecordIDs.add(dataID);
|
|
684
|
-
|
|
683
|
+
invalidatedRecordIDs.add(dataID);
|
|
685
684
|
target.set(dataID, nextRecord);
|
|
686
685
|
});
|
|
687
686
|
} // Update the target based on the changes present in source
|
|
@@ -12,16 +12,16 @@
|
|
|
12
12
|
|
|
13
13
|
var _global$ErrorUtils$ap, _global, _global$ErrorUtils;
|
|
14
14
|
|
|
15
|
-
var RelayReader = require('./RelayReader');
|
|
16
|
-
|
|
17
|
-
var RelayRecordSource = require('./RelayRecordSource');
|
|
18
|
-
|
|
19
15
|
var RelayRecordSourceMutator = require('../mutations/RelayRecordSourceMutator');
|
|
20
16
|
|
|
21
17
|
var RelayRecordSourceProxy = require('../mutations/RelayRecordSourceProxy');
|
|
22
18
|
|
|
23
19
|
var RelayRecordSourceSelectorProxy = require('../mutations/RelayRecordSourceSelectorProxy');
|
|
24
20
|
|
|
21
|
+
var RelayReader = require('./RelayReader');
|
|
22
|
+
|
|
23
|
+
var RelayRecordSource = require('./RelayRecordSource');
|
|
24
|
+
|
|
25
25
|
var invariant = require('invariant');
|
|
26
26
|
|
|
27
27
|
var warning = require("fbjs/lib/warning");
|
|
@@ -45,9 +45,15 @@ var RelayPublishQueue = /*#__PURE__*/function () {
|
|
|
45
45
|
// True if the next `run()` should apply the backup and rerun all optimistic
|
|
46
46
|
// updates performing a rebase.
|
|
47
47
|
// Payloads to apply or Sources to publish to the store with the next `run()`.
|
|
48
|
+
// $FlowFixMe[unclear-type] See explanation below.
|
|
48
49
|
// Optimistic updaters to add with the next `run()`.
|
|
50
|
+
// $FlowFixMe[unclear-type] See explanation below.
|
|
49
51
|
// Optimistic updaters that are already added and might be rerun in order to
|
|
50
52
|
// rebase them.
|
|
53
|
+
// $FlowFixMe[unclear-type] See explanation below.
|
|
54
|
+
// For _pendingOptimisticUpdates, _appliedOptimisticUpdates, and _pendingData,
|
|
55
|
+
// we want to parametrize by "any" since the type is effectively
|
|
56
|
+
// "the union of all T's that PublishQueue's methods were called with".
|
|
51
57
|
// Garbage collection hold, should rerun gc on dispose
|
|
52
58
|
function RelayPublishQueue(store, handlerProvider, getDataID) {
|
|
53
59
|
this._hasStoreSnapshot = false;
|
|
@@ -301,7 +307,7 @@ var RelayPublishQueue = /*#__PURE__*/function () {
|
|
|
301
307
|
|
|
302
308
|
var sink = RelayRecordSource.create();
|
|
303
309
|
var mutator = new RelayRecordSourceMutator(this._store.getSource(), sink);
|
|
304
|
-
var recordSourceProxy = new RelayRecordSourceProxy(mutator, this._getDataID, this._handlerProvider);
|
|
310
|
+
var recordSourceProxy = new RelayRecordSourceProxy(mutator, this._getDataID, this._handlerProvider); // $FlowFixMe[unclear-type] see explanation above.
|
|
305
311
|
|
|
306
312
|
var processUpdate = function processUpdate(optimisticUpdate) {
|
|
307
313
|
if (optimisticUpdate.storeUpdater) {
|
package/lib/store/RelayReader.js
CHANGED
|
@@ -14,16 +14,11 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
14
14
|
|
|
15
15
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
16
|
|
|
17
|
-
var
|
|
18
|
-
|
|
19
|
-
var RelayFeatureFlags = require('../util/RelayFeatureFlags');
|
|
20
|
-
|
|
21
|
-
var RelayModernRecord = require('./RelayModernRecord');
|
|
22
|
-
|
|
23
|
-
var invariant = require('invariant');
|
|
17
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
24
18
|
|
|
25
19
|
var _require = require('../util/RelayConcreteNode'),
|
|
26
20
|
ACTOR_CHANGE = _require.ACTOR_CHANGE,
|
|
21
|
+
CLIENT_EDGE = _require.CLIENT_EDGE,
|
|
27
22
|
CLIENT_EXTENSION = _require.CLIENT_EXTENSION,
|
|
28
23
|
CONDITION = _require.CONDITION,
|
|
29
24
|
DEFER = _require.DEFER,
|
|
@@ -33,25 +28,32 @@ var _require = require('../util/RelayConcreteNode'),
|
|
|
33
28
|
INLINE_FRAGMENT = _require.INLINE_FRAGMENT,
|
|
34
29
|
LINKED_FIELD = _require.LINKED_FIELD,
|
|
35
30
|
MODULE_IMPORT = _require.MODULE_IMPORT,
|
|
36
|
-
REQUIRED_FIELD = _require.REQUIRED_FIELD,
|
|
37
31
|
RELAY_RESOLVER = _require.RELAY_RESOLVER,
|
|
32
|
+
REQUIRED_FIELD = _require.REQUIRED_FIELD,
|
|
38
33
|
SCALAR_FIELD = _require.SCALAR_FIELD,
|
|
39
34
|
STREAM = _require.STREAM;
|
|
40
35
|
|
|
36
|
+
var RelayFeatureFlags = require('../util/RelayFeatureFlags');
|
|
37
|
+
|
|
38
|
+
var ClientID = require('./ClientID');
|
|
39
|
+
|
|
40
|
+
var RelayModernRecord = require('./RelayModernRecord');
|
|
41
|
+
|
|
41
42
|
var _require2 = require('./RelayStoreReactFlightUtils'),
|
|
42
43
|
getReactFlightClientResponse = _require2.getReactFlightClientResponse;
|
|
43
44
|
|
|
44
45
|
var _require3 = require('./RelayStoreUtils'),
|
|
45
|
-
|
|
46
|
+
CLIENT_EDGE_TRAVERSAL_PATH = _require3.CLIENT_EDGE_TRAVERSAL_PATH,
|
|
46
47
|
FRAGMENT_OWNER_KEY = _require3.FRAGMENT_OWNER_KEY,
|
|
47
48
|
FRAGMENT_PROP_NAME_KEY = _require3.FRAGMENT_PROP_NAME_KEY,
|
|
49
|
+
FRAGMENTS_KEY = _require3.FRAGMENTS_KEY,
|
|
48
50
|
ID_KEY = _require3.ID_KEY,
|
|
49
51
|
IS_WITHIN_UNMATCHED_TYPE_REFINEMENT = _require3.IS_WITHIN_UNMATCHED_TYPE_REFINEMENT,
|
|
50
52
|
MODULE_COMPONENT_KEY = _require3.MODULE_COMPONENT_KEY,
|
|
51
53
|
ROOT_ID = _require3.ROOT_ID,
|
|
52
54
|
getArgumentValues = _require3.getArgumentValues,
|
|
53
|
-
|
|
54
|
-
|
|
55
|
+
getModuleComponentKey = _require3.getModuleComponentKey,
|
|
56
|
+
getStorageKey = _require3.getStorageKey;
|
|
55
57
|
|
|
56
58
|
var _require4 = require('./ResolverCache'),
|
|
57
59
|
NoopResolverCache = _require4.NoopResolverCache;
|
|
@@ -62,6 +64,8 @@ var _require5 = require('./ResolverFragments'),
|
|
|
62
64
|
var _require6 = require('./TypeID'),
|
|
63
65
|
generateTypeID = _require6.generateTypeID;
|
|
64
66
|
|
|
67
|
+
var invariant = require('invariant');
|
|
68
|
+
|
|
65
69
|
function read(recordSource, selector, resolverCache) {
|
|
66
70
|
var reader = new RelayReader(recordSource, selector, resolverCache !== null && resolverCache !== void 0 ? resolverCache : new NoopResolverCache());
|
|
67
71
|
return reader.read();
|
|
@@ -73,6 +77,10 @@ function read(recordSource, selector, resolverCache) {
|
|
|
73
77
|
|
|
74
78
|
var RelayReader = /*#__PURE__*/function () {
|
|
75
79
|
function RelayReader(recordSource, selector, resolverCache) {
|
|
80
|
+
var _selector$clientEdgeT;
|
|
81
|
+
|
|
82
|
+
this._clientEdgeTraversalPath = RelayFeatureFlags.ENABLE_CLIENT_EDGES && ((_selector$clientEdgeT = selector.clientEdgeTraversalPath) === null || _selector$clientEdgeT === void 0 ? void 0 : _selector$clientEdgeT.length) ? (0, _toConsumableArray2["default"])(selector.clientEdgeTraversalPath) : [];
|
|
83
|
+
this._missingClientEdges = [];
|
|
76
84
|
this._isMissingData = false;
|
|
77
85
|
this._isWithinUnmatchedTypeRefinement = false;
|
|
78
86
|
this._missingRequiredFields = null;
|
|
@@ -152,12 +160,30 @@ var RelayReader = /*#__PURE__*/function () {
|
|
|
152
160
|
return {
|
|
153
161
|
data: data,
|
|
154
162
|
isMissingData: this._isMissingData && isDataExpectedToBePresent,
|
|
163
|
+
missingClientEdges: RelayFeatureFlags.ENABLE_CLIENT_EDGES && this._missingClientEdges.length ? this._missingClientEdges : null,
|
|
155
164
|
seenRecords: this._seenRecords,
|
|
156
165
|
selector: this._selector,
|
|
157
166
|
missingRequiredFields: this._missingRequiredFields
|
|
158
167
|
};
|
|
159
168
|
};
|
|
160
169
|
|
|
170
|
+
_proto._markDataAsMissing = function _markDataAsMissing() {
|
|
171
|
+
this._isMissingData = true;
|
|
172
|
+
|
|
173
|
+
if (RelayFeatureFlags.ENABLE_CLIENT_EDGES && this._clientEdgeTraversalPath.length) {
|
|
174
|
+
var top = this._clientEdgeTraversalPath[this._clientEdgeTraversalPath.length - 1]; // Top can be null if we've traversed past a client edge into an ordinary
|
|
175
|
+
// client extension field; we never want to fetch in response to missing
|
|
176
|
+
// data off of a client extension field.
|
|
177
|
+
|
|
178
|
+
if (top !== null) {
|
|
179
|
+
this._missingClientEdges.push({
|
|
180
|
+
request: top.readerClientEdge.operation,
|
|
181
|
+
clientEdgeDestinationID: top.clientEdgeDestinationID
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
|
|
161
187
|
_proto._traverse = function _traverse(node, dataID, prevData) {
|
|
162
188
|
var record = this._recordSource.get(dataID);
|
|
163
189
|
|
|
@@ -165,7 +191,7 @@ var RelayReader = /*#__PURE__*/function () {
|
|
|
165
191
|
|
|
166
192
|
if (record == null) {
|
|
167
193
|
if (record === undefined) {
|
|
168
|
-
this.
|
|
194
|
+
this._markDataAsMissing();
|
|
169
195
|
}
|
|
170
196
|
|
|
171
197
|
return record;
|
|
@@ -179,8 +205,7 @@ var RelayReader = /*#__PURE__*/function () {
|
|
|
179
205
|
};
|
|
180
206
|
|
|
181
207
|
_proto._getVariableValue = function _getVariableValue(name) {
|
|
182
|
-
!this._variables.hasOwnProperty(name) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayReader(): Undefined variable `%s`.', name) : invariant(false) : void 0;
|
|
183
|
-
|
|
208
|
+
!this._variables.hasOwnProperty(name) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayReader(): Undefined variable `%s`.', name) : invariant(false) : void 0;
|
|
184
209
|
return this._variables[name];
|
|
185
210
|
};
|
|
186
211
|
|
|
@@ -322,7 +347,7 @@ var RelayReader = /*#__PURE__*/function () {
|
|
|
322
347
|
this._isMissingData = parentIsMissingData;
|
|
323
348
|
} else if (implementsInterface == null) {
|
|
324
349
|
// Don't know if the type implements the interface or not
|
|
325
|
-
this.
|
|
350
|
+
this._markDataAsMissing();
|
|
326
351
|
}
|
|
327
352
|
}
|
|
328
353
|
|
|
@@ -359,10 +384,22 @@ var RelayReader = /*#__PURE__*/function () {
|
|
|
359
384
|
case CLIENT_EXTENSION:
|
|
360
385
|
{
|
|
361
386
|
var isMissingData = this._isMissingData;
|
|
387
|
+
var alreadyMissingClientEdges = this._missingClientEdges.length;
|
|
388
|
+
|
|
389
|
+
if (RelayFeatureFlags.ENABLE_CLIENT_EDGES) {
|
|
390
|
+
this._clientEdgeTraversalPath.push(null);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
var _hasExpectedData2 = this._traverseSelections(selection.selections, record, data); // The only case where we want to suspend due to missing data off of
|
|
394
|
+
// a client extension is if we reached a client edge that we might be
|
|
395
|
+
// able to fetch:
|
|
396
|
+
|
|
362
397
|
|
|
363
|
-
|
|
398
|
+
this._isMissingData = isMissingData || this._missingClientEdges.length > alreadyMissingClientEdges;
|
|
364
399
|
|
|
365
|
-
|
|
400
|
+
if (RelayFeatureFlags.ENABLE_CLIENT_EDGES) {
|
|
401
|
+
this._clientEdgeTraversalPath.pop();
|
|
402
|
+
}
|
|
366
403
|
|
|
367
404
|
if (!_hasExpectedData2) {
|
|
368
405
|
return false;
|
|
@@ -396,6 +433,15 @@ var RelayReader = /*#__PURE__*/function () {
|
|
|
396
433
|
|
|
397
434
|
break;
|
|
398
435
|
|
|
436
|
+
case CLIENT_EDGE:
|
|
437
|
+
if (RelayFeatureFlags.ENABLE_CLIENT_EDGES) {
|
|
438
|
+
this._readClientEdge(selection, record, data);
|
|
439
|
+
} else {
|
|
440
|
+
throw new Error('Client edges are not yet supported.');
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
break;
|
|
444
|
+
|
|
399
445
|
default:
|
|
400
446
|
selection;
|
|
401
447
|
!false ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayReader(): Unexpected ast kind `%s`.', selection.kind) : invariant(false) : void 0;
|
|
@@ -435,6 +481,8 @@ var RelayReader = /*#__PURE__*/function () {
|
|
|
435
481
|
_proto._readResolverField = function _readResolverField(field, record, data) {
|
|
436
482
|
var _this = this;
|
|
437
483
|
|
|
484
|
+
var _field$alias;
|
|
485
|
+
|
|
438
486
|
var resolverModule = field.resolverModule,
|
|
439
487
|
fragment = field.fragment;
|
|
440
488
|
var storageKey = getStorageKey(field, this._variables);
|
|
@@ -502,14 +550,53 @@ var RelayReader = /*#__PURE__*/function () {
|
|
|
502
550
|
this._seenRecords.add(seenRecord);
|
|
503
551
|
}
|
|
504
552
|
|
|
505
|
-
|
|
506
|
-
|
|
553
|
+
var applicationName = (_field$alias = field.alias) !== null && _field$alias !== void 0 ? _field$alias : field.name;
|
|
554
|
+
data[applicationName] = result;
|
|
555
|
+
};
|
|
556
|
+
|
|
557
|
+
_proto._readClientEdge = function _readClientEdge(field, record, data) {
|
|
558
|
+
var _backingField$alias;
|
|
559
|
+
|
|
560
|
+
var backingField = field.backingField; // Because ReaderClientExtension doesn't have `alias` or `name` and so I don't know
|
|
561
|
+
// how to get its applicationName or storageKey yet:
|
|
562
|
+
|
|
563
|
+
!(backingField.kind !== 'ClientExtension') ? process.env.NODE_ENV !== "production" ? invariant(false, 'Client extension client edges are not yet implemented.') : invariant(false) : void 0;
|
|
564
|
+
var applicationName = (_backingField$alias = backingField.alias) !== null && _backingField$alias !== void 0 ? _backingField$alias : backingField.name;
|
|
565
|
+
var backingFieldData = {};
|
|
566
|
+
|
|
567
|
+
this._traverseSelections([backingField], record, backingFieldData);
|
|
568
|
+
|
|
569
|
+
var destinationDataID = backingFieldData[applicationName];
|
|
570
|
+
|
|
571
|
+
if (destinationDataID == null) {
|
|
572
|
+
data[applicationName] = destinationDataID;
|
|
573
|
+
return;
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
!(typeof destinationDataID === 'string') ? process.env.NODE_ENV !== "production" ? invariant(false, 'Plural client edges not are yet implemented') : invariant(false) : void 0; // FIXME support plural
|
|
577
|
+
// Not wrapping the push/pop in a try/finally because if we throw, the
|
|
578
|
+
// Reader object is not usable after that anyway.
|
|
579
|
+
|
|
580
|
+
this._clientEdgeTraversalPath.push({
|
|
581
|
+
readerClientEdge: field,
|
|
582
|
+
clientEdgeDestinationID: destinationDataID
|
|
583
|
+
});
|
|
584
|
+
|
|
585
|
+
var prevData = data[applicationName];
|
|
586
|
+
!(prevData == null || typeof prevData === 'object') ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayReader(): Expected data for field `%s` on record `%s` ' + 'to be an object, got `%s`.', applicationName, RelayModernRecord.getDataID(record), prevData) : invariant(false) : void 0;
|
|
587
|
+
|
|
588
|
+
var value = this._traverse(field.linkedField, destinationDataID, // $FlowFixMe[incompatible-variance]
|
|
589
|
+
prevData);
|
|
590
|
+
|
|
591
|
+
data[applicationName] = value;
|
|
592
|
+
|
|
593
|
+
this._clientEdgeTraversalPath.pop();
|
|
507
594
|
};
|
|
508
595
|
|
|
509
596
|
_proto._readFlightField = function _readFlightField(field, record, data) {
|
|
510
|
-
var _field$
|
|
597
|
+
var _field$alias2;
|
|
511
598
|
|
|
512
|
-
var applicationName = (_field$
|
|
599
|
+
var applicationName = (_field$alias2 = field.alias) !== null && _field$alias2 !== void 0 ? _field$alias2 : field.name;
|
|
513
600
|
var storageKey = getStorageKey(field, this._variables);
|
|
514
601
|
var reactFlightClientResponseRecordID = RelayModernRecord.getLinkedRecordID(record, storageKey);
|
|
515
602
|
|
|
@@ -517,7 +604,7 @@ var RelayReader = /*#__PURE__*/function () {
|
|
|
517
604
|
data[applicationName] = reactFlightClientResponseRecordID;
|
|
518
605
|
|
|
519
606
|
if (reactFlightClientResponseRecordID === undefined) {
|
|
520
|
-
this.
|
|
607
|
+
this._markDataAsMissing();
|
|
521
608
|
}
|
|
522
609
|
|
|
523
610
|
return reactFlightClientResponseRecordID;
|
|
@@ -531,7 +618,7 @@ var RelayReader = /*#__PURE__*/function () {
|
|
|
531
618
|
data[applicationName] = reactFlightClientResponseRecord;
|
|
532
619
|
|
|
533
620
|
if (reactFlightClientResponseRecord === undefined) {
|
|
534
|
-
this.
|
|
621
|
+
this._markDataAsMissing();
|
|
535
622
|
}
|
|
536
623
|
|
|
537
624
|
return reactFlightClientResponseRecord;
|
|
@@ -543,14 +630,14 @@ var RelayReader = /*#__PURE__*/function () {
|
|
|
543
630
|
};
|
|
544
631
|
|
|
545
632
|
_proto._readScalar = function _readScalar(field, record, data) {
|
|
546
|
-
var _field$
|
|
633
|
+
var _field$alias3;
|
|
547
634
|
|
|
548
|
-
var applicationName = (_field$
|
|
635
|
+
var applicationName = (_field$alias3 = field.alias) !== null && _field$alias3 !== void 0 ? _field$alias3 : field.name;
|
|
549
636
|
var storageKey = getStorageKey(field, this._variables);
|
|
550
637
|
var value = RelayModernRecord.getValue(record, storageKey);
|
|
551
638
|
|
|
552
639
|
if (value === undefined) {
|
|
553
|
-
this.
|
|
640
|
+
this._markDataAsMissing();
|
|
554
641
|
}
|
|
555
642
|
|
|
556
643
|
data[applicationName] = value;
|
|
@@ -558,9 +645,9 @@ var RelayReader = /*#__PURE__*/function () {
|
|
|
558
645
|
};
|
|
559
646
|
|
|
560
647
|
_proto._readLink = function _readLink(field, record, data) {
|
|
561
|
-
var _field$
|
|
648
|
+
var _field$alias4;
|
|
562
649
|
|
|
563
|
-
var applicationName = (_field$
|
|
650
|
+
var applicationName = (_field$alias4 = field.alias) !== null && _field$alias4 !== void 0 ? _field$alias4 : field.name;
|
|
564
651
|
var storageKey = getStorageKey(field, this._variables);
|
|
565
652
|
var linkedID = RelayModernRecord.getLinkedRecordID(record, storageKey);
|
|
566
653
|
|
|
@@ -568,7 +655,7 @@ var RelayReader = /*#__PURE__*/function () {
|
|
|
568
655
|
data[applicationName] = linkedID;
|
|
569
656
|
|
|
570
657
|
if (linkedID === undefined) {
|
|
571
|
-
this.
|
|
658
|
+
this._markDataAsMissing();
|
|
572
659
|
}
|
|
573
660
|
|
|
574
661
|
return linkedID;
|
|
@@ -584,9 +671,9 @@ var RelayReader = /*#__PURE__*/function () {
|
|
|
584
671
|
};
|
|
585
672
|
|
|
586
673
|
_proto._readActorChange = function _readActorChange(field, record, data) {
|
|
587
|
-
var _field$
|
|
674
|
+
var _field$alias5;
|
|
588
675
|
|
|
589
|
-
var applicationName = (_field$
|
|
676
|
+
var applicationName = (_field$alias5 = field.alias) !== null && _field$alias5 !== void 0 ? _field$alias5 : field.name;
|
|
590
677
|
var storageKey = getStorageKey(field, this._variables);
|
|
591
678
|
var externalRef = RelayModernRecord.getActorLinkedRecordID(record, storageKey);
|
|
592
679
|
|
|
@@ -594,7 +681,7 @@ var RelayReader = /*#__PURE__*/function () {
|
|
|
594
681
|
data[applicationName] = externalRef;
|
|
595
682
|
|
|
596
683
|
if (externalRef === undefined) {
|
|
597
|
-
this.
|
|
684
|
+
this._markDataAsMissing();
|
|
598
685
|
}
|
|
599
686
|
|
|
600
687
|
return data[applicationName];
|
|
@@ -618,9 +705,9 @@ var RelayReader = /*#__PURE__*/function () {
|
|
|
618
705
|
_proto._readPluralLink = function _readPluralLink(field, record, data) {
|
|
619
706
|
var _this2 = this;
|
|
620
707
|
|
|
621
|
-
var _field$
|
|
708
|
+
var _field$alias6;
|
|
622
709
|
|
|
623
|
-
var applicationName = (_field$
|
|
710
|
+
var applicationName = (_field$alias6 = field.alias) !== null && _field$alias6 !== void 0 ? _field$alias6 : field.name;
|
|
624
711
|
var storageKey = getStorageKey(field, this._variables);
|
|
625
712
|
var linkedIDs = RelayModernRecord.getLinkedRecordIDs(record, storageKey);
|
|
626
713
|
|
|
@@ -628,7 +715,7 @@ var RelayReader = /*#__PURE__*/function () {
|
|
|
628
715
|
data[applicationName] = linkedIDs;
|
|
629
716
|
|
|
630
717
|
if (linkedIDs === undefined) {
|
|
631
|
-
this.
|
|
718
|
+
this._markDataAsMissing();
|
|
632
719
|
}
|
|
633
720
|
|
|
634
721
|
return linkedIDs;
|
|
@@ -640,7 +727,7 @@ var RelayReader = /*#__PURE__*/function () {
|
|
|
640
727
|
linkedIDs.forEach(function (linkedID, nextIndex) {
|
|
641
728
|
if (linkedID == null) {
|
|
642
729
|
if (linkedID === undefined) {
|
|
643
|
-
_this2.
|
|
730
|
+
_this2._markDataAsMissing();
|
|
644
731
|
} // $FlowFixMe[cannot-write]
|
|
645
732
|
|
|
646
733
|
|
|
@@ -671,7 +758,7 @@ var RelayReader = /*#__PURE__*/function () {
|
|
|
671
758
|
|
|
672
759
|
if (component == null) {
|
|
673
760
|
if (component === undefined) {
|
|
674
|
-
this.
|
|
761
|
+
this._markDataAsMissing();
|
|
675
762
|
}
|
|
676
763
|
|
|
677
764
|
return;
|
|
@@ -709,6 +796,12 @@ var RelayReader = /*#__PURE__*/function () {
|
|
|
709
796
|
fragmentPointers[fragmentSpread.name] = fragmentSpread.args ? getArgumentValues(fragmentSpread.args, this._variables) : {};
|
|
710
797
|
data[FRAGMENT_OWNER_KEY] = this._owner;
|
|
711
798
|
data[IS_WITHIN_UNMATCHED_TYPE_REFINEMENT] = this._isWithinUnmatchedTypeRefinement;
|
|
799
|
+
|
|
800
|
+
if (RelayFeatureFlags.ENABLE_CLIENT_EDGES) {
|
|
801
|
+
if (this._clientEdgeTraversalPath.length > 0 && this._clientEdgeTraversalPath[this._clientEdgeTraversalPath.length - 1] !== null) {
|
|
802
|
+
data[CLIENT_EDGE_TRAVERSAL_PATH] = (0, _toConsumableArray2["default"])(this._clientEdgeTraversalPath);
|
|
803
|
+
}
|
|
804
|
+
}
|
|
712
805
|
};
|
|
713
806
|
|
|
714
807
|
_proto._createInlineDataOrResolverFragmentPointer = function _createInlineDataOrResolverFragmentPointer(fragmentSpreadOrFragment, record, data) {
|
|
@@ -14,28 +14,28 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
14
14
|
|
|
15
15
|
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
|
|
16
16
|
|
|
17
|
+
var getOperation = require('../util/getOperation');
|
|
18
|
+
|
|
17
19
|
var RelayConcreteNode = require('../util/RelayConcreteNode');
|
|
18
20
|
|
|
19
21
|
var RelayFeatureFlags = require('../util/RelayFeatureFlags');
|
|
20
22
|
|
|
23
|
+
var cloneRelayHandleSourceField = require('./cloneRelayHandleSourceField');
|
|
24
|
+
|
|
25
|
+
var _require = require('./RelayConcreteVariables'),
|
|
26
|
+
getLocalVariables = _require.getLocalVariables;
|
|
27
|
+
|
|
21
28
|
var RelayModernRecord = require('./RelayModernRecord');
|
|
22
29
|
|
|
23
30
|
var RelayStoreReactFlightUtils = require('./RelayStoreReactFlightUtils');
|
|
24
31
|
|
|
25
32
|
var RelayStoreUtils = require('./RelayStoreUtils');
|
|
26
33
|
|
|
27
|
-
var cloneRelayHandleSourceField = require('./cloneRelayHandleSourceField');
|
|
28
|
-
|
|
29
|
-
var getOperation = require('../util/getOperation');
|
|
30
|
-
|
|
31
|
-
var invariant = require('invariant');
|
|
32
|
-
|
|
33
|
-
var _require = require('./RelayConcreteVariables'),
|
|
34
|
-
getLocalVariables = _require.getLocalVariables;
|
|
35
|
-
|
|
36
34
|
var _require2 = require('./TypeID'),
|
|
37
35
|
generateTypeID = _require2.generateTypeID;
|
|
38
36
|
|
|
37
|
+
var invariant = require('invariant');
|
|
38
|
+
|
|
39
39
|
var ACTOR_CHANGE = RelayConcreteNode.ACTOR_CHANGE,
|
|
40
40
|
CONDITION = RelayConcreteNode.CONDITION,
|
|
41
41
|
CLIENT_COMPONENT = RelayConcreteNode.CLIENT_COMPONENT,
|
|
@@ -100,8 +100,7 @@ var RelayReferenceMarker = /*#__PURE__*/function () {
|
|
|
100
100
|
};
|
|
101
101
|
|
|
102
102
|
_proto._getVariableValue = function _getVariableValue(name) {
|
|
103
|
-
!this._variables.hasOwnProperty(name) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayReferenceMarker(): Undefined variable `%s`.', name) : invariant(false) : void 0;
|
|
104
|
-
|
|
103
|
+
!this._variables.hasOwnProperty(name) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayReferenceMarker(): Undefined variable `%s`.', name) : invariant(false) : void 0;
|
|
105
104
|
return this._variables[name];
|
|
106
105
|
};
|
|
107
106
|
|
|
@@ -16,25 +16,15 @@ var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime
|
|
|
16
16
|
|
|
17
17
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
18
18
|
|
|
19
|
-
var RelayFeatureFlags = require('../util/RelayFeatureFlags');
|
|
20
|
-
|
|
21
|
-
var RelayModernRecord = require('./RelayModernRecord');
|
|
22
|
-
|
|
23
|
-
var areEqual = require("fbjs/lib/areEqual");
|
|
24
|
-
|
|
25
|
-
var invariant = require('invariant');
|
|
26
|
-
|
|
27
|
-
var warning = require("fbjs/lib/warning");
|
|
28
|
-
|
|
29
19
|
var _require = require('../multi-actor-environment/ActorUtils'),
|
|
30
20
|
ACTOR_IDENTIFIER_FIELD_NAME = _require.ACTOR_IDENTIFIER_FIELD_NAME,
|
|
31
21
|
getActorIdentifierFromPayload = _require.getActorIdentifierFromPayload;
|
|
32
22
|
|
|
33
23
|
var _require2 = require('../util/RelayConcreteNode'),
|
|
34
24
|
ACTOR_CHANGE = _require2.ACTOR_CHANGE,
|
|
35
|
-
CONDITION = _require2.CONDITION,
|
|
36
25
|
CLIENT_COMPONENT = _require2.CLIENT_COMPONENT,
|
|
37
26
|
CLIENT_EXTENSION = _require2.CLIENT_EXTENSION,
|
|
27
|
+
CONDITION = _require2.CONDITION,
|
|
38
28
|
DEFER = _require2.DEFER,
|
|
39
29
|
FLIGHT_FIELD = _require2.FLIGHT_FIELD,
|
|
40
30
|
FRAGMENT_SPREAD = _require2.FRAGMENT_SPREAD,
|
|
@@ -47,6 +37,8 @@ var _require2 = require('../util/RelayConcreteNode'),
|
|
|
47
37
|
STREAM = _require2.STREAM,
|
|
48
38
|
TYPE_DISCRIMINATOR = _require2.TYPE_DISCRIMINATOR;
|
|
49
39
|
|
|
40
|
+
var RelayFeatureFlags = require('../util/RelayFeatureFlags');
|
|
41
|
+
|
|
50
42
|
var _require3 = require('./ClientID'),
|
|
51
43
|
generateClientID = _require3.generateClientID,
|
|
52
44
|
isClientID = _require3.isClientID;
|
|
@@ -54,28 +46,36 @@ var _require3 = require('./ClientID'),
|
|
|
54
46
|
var _require4 = require('./RelayConcreteVariables'),
|
|
55
47
|
getLocalVariables = _require4.getLocalVariables;
|
|
56
48
|
|
|
49
|
+
var RelayModernRecord = require('./RelayModernRecord');
|
|
50
|
+
|
|
57
51
|
var _require5 = require('./RelayModernSelector'),
|
|
58
52
|
createNormalizationSelector = _require5.createNormalizationSelector;
|
|
59
53
|
|
|
60
54
|
var _require6 = require('./RelayStoreReactFlightUtils'),
|
|
61
|
-
refineToReactFlightPayloadData = _require6.refineToReactFlightPayloadData,
|
|
62
55
|
REACT_FLIGHT_EXECUTABLE_DEFINITIONS_STORAGE_KEY = _require6.REACT_FLIGHT_EXECUTABLE_DEFINITIONS_STORAGE_KEY,
|
|
63
56
|
REACT_FLIGHT_TREE_STORAGE_KEY = _require6.REACT_FLIGHT_TREE_STORAGE_KEY,
|
|
64
|
-
REACT_FLIGHT_TYPE_NAME = _require6.REACT_FLIGHT_TYPE_NAME
|
|
57
|
+
REACT_FLIGHT_TYPE_NAME = _require6.REACT_FLIGHT_TYPE_NAME,
|
|
58
|
+
refineToReactFlightPayloadData = _require6.refineToReactFlightPayloadData;
|
|
65
59
|
|
|
66
60
|
var _require7 = require('./RelayStoreUtils'),
|
|
61
|
+
ROOT_ID = _require7.ROOT_ID,
|
|
62
|
+
ROOT_TYPE = _require7.ROOT_TYPE,
|
|
63
|
+
TYPENAME_KEY = _require7.TYPENAME_KEY,
|
|
67
64
|
getArgumentValues = _require7.getArgumentValues,
|
|
68
65
|
getHandleStorageKey = _require7.getHandleStorageKey,
|
|
69
66
|
getModuleComponentKey = _require7.getModuleComponentKey,
|
|
70
67
|
getModuleOperationKey = _require7.getModuleOperationKey,
|
|
71
|
-
getStorageKey = _require7.getStorageKey
|
|
72
|
-
TYPENAME_KEY = _require7.TYPENAME_KEY,
|
|
73
|
-
ROOT_ID = _require7.ROOT_ID,
|
|
74
|
-
ROOT_TYPE = _require7.ROOT_TYPE;
|
|
68
|
+
getStorageKey = _require7.getStorageKey;
|
|
75
69
|
|
|
76
70
|
var _require8 = require('./TypeID'),
|
|
77
|
-
|
|
78
|
-
|
|
71
|
+
TYPE_SCHEMA_TYPE = _require8.TYPE_SCHEMA_TYPE,
|
|
72
|
+
generateTypeID = _require8.generateTypeID;
|
|
73
|
+
|
|
74
|
+
var areEqual = require("fbjs/lib/areEqual");
|
|
75
|
+
|
|
76
|
+
var invariant = require('invariant');
|
|
77
|
+
|
|
78
|
+
var warning = require("fbjs/lib/warning");
|
|
79
79
|
|
|
80
80
|
/**
|
|
81
81
|
* Normalizes the results of a query and standard GraphQL response, writing the
|
|
@@ -133,8 +133,7 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
133
133
|
};
|
|
134
134
|
|
|
135
135
|
_proto._getVariableValue = function _getVariableValue(name) {
|
|
136
|
-
!this._variables.hasOwnProperty(name) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayResponseNormalizer(): Undefined variable `%s`.', name) : invariant(false) : void 0;
|
|
137
|
-
|
|
136
|
+
!this._variables.hasOwnProperty(name) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayResponseNormalizer(): Undefined variable `%s`.', name) : invariant(false) : void 0;
|
|
138
137
|
return this._variables[name];
|
|
139
138
|
};
|
|
140
139
|
|
|
@@ -422,7 +421,11 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
422
421
|
|
|
423
422
|
if (process.env.NODE_ENV !== "production") {
|
|
424
423
|
if (selection.kind === SCALAR_FIELD) {
|
|
425
|
-
this._validateConflictingFieldsWithIdenticalId(record, storageKey,
|
|
424
|
+
this._validateConflictingFieldsWithIdenticalId(record, storageKey, // When using `treatMissingFieldsAsNull` the conflicting validation raises a false positive
|
|
425
|
+
// because the value is set using `null` but validated using `fieldValue` which at this point
|
|
426
|
+
// will be `undefined`.
|
|
427
|
+
// Setting this to `null` matches the value that we actually set to the `fieldValue`.
|
|
428
|
+
null);
|
|
426
429
|
}
|
|
427
430
|
}
|
|
428
431
|
|
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
// flowlint ambiguous-object-type:error
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
var invariant = require('invariant');
|
|
14
|
-
|
|
15
13
|
var _require = require('./RelayModernRecord'),
|
|
16
14
|
getType = _require.getType;
|
|
17
15
|
|
|
18
|
-
// Reachable (client) executable definitions encountered while server component
|
|
16
|
+
var invariant = require('invariant'); // Reachable (client) executable definitions encountered while server component
|
|
19
17
|
// rendering
|
|
18
|
+
|
|
19
|
+
|
|
20
20
|
var REACT_FLIGHT_EXECUTABLE_DEFINITIONS_STORAGE_KEY = 'executableDefinitions';
|
|
21
21
|
var REACT_FLIGHT_TREE_STORAGE_KEY = 'tree';
|
|
22
22
|
var REACT_FLIGHT_TYPE_NAME = 'ReactFlightComponent';
|
|
@@ -10,15 +10,15 @@
|
|
|
10
10
|
// flowlint ambiguous-object-type:error
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
var
|
|
13
|
+
var deepFreeze = require('../util/deepFreeze');
|
|
14
14
|
|
|
15
|
-
var
|
|
15
|
+
var recycleNodesInto = require('../util/recycleNodesInto');
|
|
16
16
|
|
|
17
|
-
var
|
|
17
|
+
var RelayFeatureFlags = require('../util/RelayFeatureFlags');
|
|
18
18
|
|
|
19
19
|
var hasOverlappingIDs = require('./hasOverlappingIDs');
|
|
20
20
|
|
|
21
|
-
var
|
|
21
|
+
var RelayReader = require('./RelayReader');
|
|
22
22
|
|
|
23
23
|
var RelayStoreSubscriptions = /*#__PURE__*/function () {
|
|
24
24
|
function RelayStoreSubscriptions(log, resolverCache) {
|
|
@@ -93,6 +93,7 @@ var RelayStoreSubscriptions = /*#__PURE__*/function () {
|
|
|
93
93
|
subscription.snapshot = {
|
|
94
94
|
data: subscription.snapshot.data,
|
|
95
95
|
isMissingData: backup.isMissingData,
|
|
96
|
+
missingClientEdges: backup.missingClientEdges,
|
|
96
97
|
seenRecords: backup.seenRecords,
|
|
97
98
|
selector: backup.selector,
|
|
98
99
|
missingRequiredFields: backup.missingRequiredFields
|
|
@@ -142,6 +143,7 @@ var RelayStoreSubscriptions = /*#__PURE__*/function () {
|
|
|
142
143
|
nextSnapshot = {
|
|
143
144
|
data: nextData,
|
|
144
145
|
isMissingData: nextSnapshot.isMissingData,
|
|
146
|
+
missingClientEdges: nextSnapshot.missingClientEdges,
|
|
145
147
|
seenRecords: nextSnapshot.seenRecords,
|
|
146
148
|
selector: nextSnapshot.selector,
|
|
147
149
|
missingRequiredFields: nextSnapshot.missingRequiredFields
|