relay-runtime 11.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 -10
- package/handlers/connection/MutationHandlers.js.flow +31 -7
- package/index.js +1 -1
- package/index.js.flow +60 -36
- package/lib/handlers/RelayDefaultHandlerProvider.js +1 -1
- package/lib/handlers/connection/ConnectionHandler.js +8 -8
- package/lib/handlers/connection/MutationHandlers.js +61 -5
- package/lib/index.js +58 -43
- package/lib/multi-actor-environment/ActorIdentifier.js +33 -0
- package/lib/multi-actor-environment/ActorSpecificEnvironment.js +152 -0
- package/lib/multi-actor-environment/ActorUtils.js +27 -0
- package/lib/multi-actor-environment/MultiActorEnvironment.js +419 -0
- package/lib/multi-actor-environment/MultiActorEnvironmentTypes.js +11 -0
- package/lib/multi-actor-environment/index.js +21 -0
- 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 +18 -5
- package/lib/mutations/applyOptimisticMutation.js +6 -6
- package/lib/mutations/commitMutation.js +14 -10
- package/lib/mutations/readUpdatableQuery_EXPERIMENTAL.js +238 -0
- package/lib/mutations/validateMutation.js +12 -5
- package/lib/network/ConvertToExecuteFunction.js +2 -1
- package/lib/network/RelayNetwork.js +3 -2
- package/lib/network/RelayQueryResponseCache.js +21 -4
- package/lib/network/wrapNetworkWithLogObserver.js +79 -0
- package/lib/query/GraphQLTag.js +3 -2
- package/lib/query/fetchQuery.js +6 -5
- package/lib/query/fetchQueryInternal.js +1 -1
- package/lib/query/fetchQuery_DEPRECATED.js +2 -1
- package/lib/store/ClientID.js +7 -1
- package/lib/store/DataChecker.js +141 -60
- package/lib/store/{RelayModernQueryExecutor.js → OperationExecutor.js} +532 -195
- package/lib/store/RelayConcreteVariables.js +24 -4
- package/lib/store/RelayModernEnvironment.js +175 -234
- package/lib/store/RelayModernFragmentSpecResolver.js +52 -26
- package/lib/store/RelayModernOperationDescriptor.js +2 -1
- package/lib/store/RelayModernRecord.js +47 -12
- package/lib/store/RelayModernSelector.js +14 -8
- package/lib/store/RelayModernStore.js +58 -29
- package/lib/store/RelayOperationTracker.js +34 -24
- package/lib/store/RelayPublishQueue.js +41 -13
- package/lib/store/RelayReader.js +287 -46
- package/lib/store/RelayRecordSource.js +87 -3
- package/lib/store/RelayReferenceMarker.js +55 -31
- package/lib/store/RelayResponseNormalizer.js +250 -108
- package/lib/store/RelayStoreReactFlightUtils.js +8 -12
- package/lib/store/RelayStoreSubscriptions.js +14 -9
- package/lib/store/RelayStoreUtils.js +11 -5
- package/lib/store/ResolverCache.js +213 -0
- package/lib/store/ResolverFragments.js +61 -0
- package/lib/store/cloneRelayHandleSourceField.js +5 -4
- package/lib/store/cloneRelayScalarHandleSourceField.js +5 -4
- package/lib/store/createRelayContext.js +4 -2
- package/lib/store/defaultGetDataID.js +3 -1
- package/lib/store/readInlineData.js +6 -2
- package/lib/subscription/requestSubscription.js +35 -9
- package/lib/util/RelayConcreteNode.js +4 -0
- package/lib/util/RelayFeatureFlags.js +11 -4
- package/lib/util/RelayProfiler.js +17 -187
- package/lib/util/RelayReplaySubject.js +22 -7
- package/lib/util/RelayRuntimeTypes.js +0 -6
- package/lib/util/StringInterner.js +71 -0
- package/lib/util/deepFreeze.js +1 -0
- package/lib/util/getFragmentIdentifier.js +15 -7
- package/lib/util/getOperation.js +2 -1
- package/lib/util/getPaginationMetadata.js +41 -0
- package/lib/util/getPaginationVariables.js +66 -0
- package/lib/util/getPendingOperationsForFragment.js +55 -0
- package/lib/util/getRefetchMetadata.js +36 -0
- package/lib/util/getRelayHandleKey.js +2 -2
- package/lib/util/getRequestIdentifier.js +2 -2
- package/lib/util/getValueAtPath.js +51 -0
- package/lib/util/isEmptyObject.js +1 -1
- package/lib/util/registerEnvironmentWithDevTools.js +26 -0
- package/lib/util/withDuration.js +31 -0
- package/multi-actor-environment/ActorIdentifier.js.flow +43 -0
- package/multi-actor-environment/ActorSpecificEnvironment.js.flow +225 -0
- package/multi-actor-environment/ActorUtils.js.flow +33 -0
- package/multi-actor-environment/MultiActorEnvironment.js.flow +506 -0
- package/multi-actor-environment/MultiActorEnvironmentTypes.js.flow +261 -0
- package/multi-actor-environment/index.js.flow +26 -0
- 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 +22 -7
- package/mutations/applyOptimisticMutation.js.flow +13 -14
- package/mutations/commitLocalUpdate.js.flow +1 -1
- package/mutations/commitMutation.js.flow +35 -46
- package/mutations/readUpdatableQuery_EXPERIMENTAL.js.flow +309 -0
- package/mutations/validateMutation.js.flow +28 -16
- package/network/ConvertToExecuteFunction.js.flow +2 -2
- package/network/RelayNetwork.js.flow +4 -5
- package/network/RelayNetworkTypes.js.flow +17 -8
- package/network/RelayObservable.js.flow +1 -1
- package/network/RelayQueryResponseCache.js.flow +34 -20
- package/network/wrapNetworkWithLogObserver.js.flow +100 -0
- package/package.json +3 -2
- 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 +14 -3
- package/store/DataChecker.js.flow +162 -67
- package/store/{RelayModernQueryExecutor.js.flow → OperationExecutor.js.flow} +616 -283
- package/store/RelayConcreteVariables.js.flow +27 -5
- package/store/RelayModernEnvironment.js.flow +176 -235
- package/store/RelayModernFragmentSpecResolver.js.flow +55 -31
- package/store/RelayModernOperationDescriptor.js.flow +12 -7
- package/store/RelayModernRecord.js.flow +67 -11
- package/store/RelayModernSelector.js.flow +24 -14
- package/store/RelayModernStore.js.flow +72 -36
- package/store/RelayOperationTracker.js.flow +59 -43
- package/store/RelayOptimisticRecordSource.js.flow +2 -2
- package/store/RelayPublishQueue.js.flow +79 -34
- package/store/RelayReader.js.flow +351 -72
- package/store/RelayRecordSource.js.flow +72 -6
- package/store/RelayReferenceMarker.js.flow +60 -33
- package/store/RelayResponseNormalizer.js.flow +288 -102
- package/store/RelayStoreReactFlightUtils.js.flow +9 -13
- package/store/RelayStoreSubscriptions.js.flow +19 -11
- package/store/RelayStoreTypes.js.flow +210 -44
- package/store/RelayStoreUtils.js.flow +25 -11
- package/store/ResolverCache.js.flow +249 -0
- package/store/ResolverFragments.js.flow +121 -0
- 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 +3 -3
- package/store/defaultGetDataID.js.flow +3 -1
- package/store/normalizeRelayPayload.js.flow +6 -7
- package/store/readInlineData.js.flow +7 -8
- package/subscription/requestSubscription.js.flow +54 -27
- package/util/NormalizationNode.js.flow +16 -3
- package/util/ReaderNode.js.flow +38 -2
- package/util/RelayConcreteNode.js.flow +4 -0
- package/util/RelayFeatureFlags.js.flow +24 -8
- package/util/RelayProfiler.js.flow +22 -194
- package/util/RelayReplaySubject.js.flow +9 -9
- package/util/RelayRuntimeTypes.js.flow +73 -4
- package/util/StringInterner.js.flow +69 -0
- package/util/createPayloadFor3DField.js.flow +3 -3
- package/util/deepFreeze.js.flow +2 -1
- package/util/getFragmentIdentifier.js.flow +27 -15
- package/util/getOperation.js.flow +2 -2
- package/util/getPaginationMetadata.js.flow +72 -0
- package/util/getPaginationVariables.js.flow +108 -0
- package/util/getPendingOperationsForFragment.js.flow +62 -0
- package/util/getRefetchMetadata.js.flow +79 -0
- package/util/getRelayHandleKey.js.flow +1 -2
- package/util/getRequestIdentifier.js.flow +3 -3
- package/util/getValueAtPath.js.flow +46 -0
- package/util/isEmptyObject.js.flow +2 -1
- package/util/registerEnvironmentWithDevTools.js.flow +33 -0
- package/util/resolveImmediate.js.flow +1 -1
- package/util/withDuration.js.flow +32 -0
- package/lib/store/RelayRecordSourceMapImpl.js +0 -107
- package/lib/store/RelayStoreSubscriptionsUsingMapByID.js +0 -318
- package/store/RelayRecordSourceMapImpl.js.flow +0 -91
- package/store/RelayStoreSubscriptionsUsingMapByID.js.flow +0 -283
|
@@ -16,60 +16,67 @@ var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime
|
|
|
16
16
|
|
|
17
17
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
18
18
|
|
|
19
|
+
var _require = require('../multi-actor-environment/ActorUtils'),
|
|
20
|
+
ACTOR_IDENTIFIER_FIELD_NAME = _require.ACTOR_IDENTIFIER_FIELD_NAME,
|
|
21
|
+
getActorIdentifierFromPayload = _require.getActorIdentifierFromPayload;
|
|
22
|
+
|
|
23
|
+
var _require2 = require('../util/RelayConcreteNode'),
|
|
24
|
+
ACTOR_CHANGE = _require2.ACTOR_CHANGE,
|
|
25
|
+
CLIENT_COMPONENT = _require2.CLIENT_COMPONENT,
|
|
26
|
+
CLIENT_EXTENSION = _require2.CLIENT_EXTENSION,
|
|
27
|
+
CONDITION = _require2.CONDITION,
|
|
28
|
+
DEFER = _require2.DEFER,
|
|
29
|
+
FLIGHT_FIELD = _require2.FLIGHT_FIELD,
|
|
30
|
+
FRAGMENT_SPREAD = _require2.FRAGMENT_SPREAD,
|
|
31
|
+
INLINE_FRAGMENT = _require2.INLINE_FRAGMENT,
|
|
32
|
+
LINKED_FIELD = _require2.LINKED_FIELD,
|
|
33
|
+
LINKED_HANDLE = _require2.LINKED_HANDLE,
|
|
34
|
+
MODULE_IMPORT = _require2.MODULE_IMPORT,
|
|
35
|
+
SCALAR_FIELD = _require2.SCALAR_FIELD,
|
|
36
|
+
SCALAR_HANDLE = _require2.SCALAR_HANDLE,
|
|
37
|
+
STREAM = _require2.STREAM,
|
|
38
|
+
TYPE_DISCRIMINATOR = _require2.TYPE_DISCRIMINATOR;
|
|
39
|
+
|
|
19
40
|
var RelayFeatureFlags = require('../util/RelayFeatureFlags');
|
|
20
41
|
|
|
42
|
+
var _require3 = require('./ClientID'),
|
|
43
|
+
generateClientID = _require3.generateClientID,
|
|
44
|
+
isClientID = _require3.isClientID;
|
|
45
|
+
|
|
46
|
+
var _require4 = require('./RelayConcreteVariables'),
|
|
47
|
+
getLocalVariables = _require4.getLocalVariables;
|
|
48
|
+
|
|
21
49
|
var RelayModernRecord = require('./RelayModernRecord');
|
|
22
50
|
|
|
23
|
-
var
|
|
51
|
+
var _require5 = require('./RelayModernSelector'),
|
|
52
|
+
createNormalizationSelector = _require5.createNormalizationSelector;
|
|
53
|
+
|
|
54
|
+
var _require6 = require('./RelayStoreReactFlightUtils'),
|
|
55
|
+
REACT_FLIGHT_EXECUTABLE_DEFINITIONS_STORAGE_KEY = _require6.REACT_FLIGHT_EXECUTABLE_DEFINITIONS_STORAGE_KEY,
|
|
56
|
+
REACT_FLIGHT_TREE_STORAGE_KEY = _require6.REACT_FLIGHT_TREE_STORAGE_KEY,
|
|
57
|
+
REACT_FLIGHT_TYPE_NAME = _require6.REACT_FLIGHT_TYPE_NAME,
|
|
58
|
+
refineToReactFlightPayloadData = _require6.refineToReactFlightPayloadData;
|
|
59
|
+
|
|
60
|
+
var _require7 = require('./RelayStoreUtils'),
|
|
61
|
+
ROOT_ID = _require7.ROOT_ID,
|
|
62
|
+
ROOT_TYPE = _require7.ROOT_TYPE,
|
|
63
|
+
TYPENAME_KEY = _require7.TYPENAME_KEY,
|
|
64
|
+
getArgumentValues = _require7.getArgumentValues,
|
|
65
|
+
getHandleStorageKey = _require7.getHandleStorageKey,
|
|
66
|
+
getModuleComponentKey = _require7.getModuleComponentKey,
|
|
67
|
+
getModuleOperationKey = _require7.getModuleOperationKey,
|
|
68
|
+
getStorageKey = _require7.getStorageKey;
|
|
69
|
+
|
|
70
|
+
var _require8 = require('./TypeID'),
|
|
71
|
+
TYPE_SCHEMA_TYPE = _require8.TYPE_SCHEMA_TYPE,
|
|
72
|
+
generateTypeID = _require8.generateTypeID;
|
|
24
73
|
|
|
25
74
|
var areEqual = require("fbjs/lib/areEqual");
|
|
26
75
|
|
|
27
|
-
var invariant = require(
|
|
76
|
+
var invariant = require('invariant');
|
|
28
77
|
|
|
29
78
|
var warning = require("fbjs/lib/warning");
|
|
30
79
|
|
|
31
|
-
var _require = require('../util/RelayConcreteNode'),
|
|
32
|
-
CONDITION = _require.CONDITION,
|
|
33
|
-
CLIENT_EXTENSION = _require.CLIENT_EXTENSION,
|
|
34
|
-
DEFER = _require.DEFER,
|
|
35
|
-
FLIGHT_FIELD = _require.FLIGHT_FIELD,
|
|
36
|
-
FRAGMENT_SPREAD = _require.FRAGMENT_SPREAD,
|
|
37
|
-
INLINE_FRAGMENT = _require.INLINE_FRAGMENT,
|
|
38
|
-
LINKED_FIELD = _require.LINKED_FIELD,
|
|
39
|
-
LINKED_HANDLE = _require.LINKED_HANDLE,
|
|
40
|
-
MODULE_IMPORT = _require.MODULE_IMPORT,
|
|
41
|
-
SCALAR_FIELD = _require.SCALAR_FIELD,
|
|
42
|
-
SCALAR_HANDLE = _require.SCALAR_HANDLE,
|
|
43
|
-
STREAM = _require.STREAM,
|
|
44
|
-
TYPE_DISCRIMINATOR = _require.TYPE_DISCRIMINATOR;
|
|
45
|
-
|
|
46
|
-
var _require2 = require('./ClientID'),
|
|
47
|
-
generateClientID = _require2.generateClientID,
|
|
48
|
-
isClientID = _require2.isClientID;
|
|
49
|
-
|
|
50
|
-
var _require3 = require('./RelayModernSelector'),
|
|
51
|
-
createNormalizationSelector = _require3.createNormalizationSelector;
|
|
52
|
-
|
|
53
|
-
var _require4 = require('./RelayStoreReactFlightUtils'),
|
|
54
|
-
refineToReactFlightPayloadData = _require4.refineToReactFlightPayloadData,
|
|
55
|
-
REACT_FLIGHT_QUERIES_STORAGE_KEY = _require4.REACT_FLIGHT_QUERIES_STORAGE_KEY,
|
|
56
|
-
REACT_FLIGHT_TREE_STORAGE_KEY = _require4.REACT_FLIGHT_TREE_STORAGE_KEY,
|
|
57
|
-
REACT_FLIGHT_TYPE_NAME = _require4.REACT_FLIGHT_TYPE_NAME;
|
|
58
|
-
|
|
59
|
-
var _require5 = require('./RelayStoreUtils'),
|
|
60
|
-
getArgumentValues = _require5.getArgumentValues,
|
|
61
|
-
getHandleStorageKey = _require5.getHandleStorageKey,
|
|
62
|
-
getModuleComponentKey = _require5.getModuleComponentKey,
|
|
63
|
-
getModuleOperationKey = _require5.getModuleOperationKey,
|
|
64
|
-
getStorageKey = _require5.getStorageKey,
|
|
65
|
-
TYPENAME_KEY = _require5.TYPENAME_KEY,
|
|
66
|
-
ROOT_ID = _require5.ROOT_ID,
|
|
67
|
-
ROOT_TYPE = _require5.ROOT_TYPE;
|
|
68
|
-
|
|
69
|
-
var _require6 = require('./TypeID'),
|
|
70
|
-
generateTypeID = _require6.generateTypeID,
|
|
71
|
-
TYPE_SCHEMA_TYPE = _require6.TYPE_SCHEMA_TYPE;
|
|
72
|
-
|
|
73
80
|
/**
|
|
74
81
|
* Normalizes the results of a query and standard GraphQL response, writing the
|
|
75
82
|
* normalized records/fields into the given MutableRecordSource.
|
|
@@ -90,18 +97,20 @@ function normalize(recordSource, selector, response, options) {
|
|
|
90
97
|
|
|
91
98
|
var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
92
99
|
function RelayResponseNormalizer(recordSource, variables, options) {
|
|
100
|
+
this._actorIdentifier = options.actorIdentifier;
|
|
93
101
|
this._getDataId = options.getDataID;
|
|
94
102
|
this._handleFieldPayloads = [];
|
|
95
103
|
this._treatMissingFieldsAsNull = options.treatMissingFieldsAsNull;
|
|
96
104
|
this._incrementalPlaceholders = [];
|
|
97
105
|
this._isClientExtension = false;
|
|
98
106
|
this._isUnmatchedAbstractType = false;
|
|
99
|
-
this.
|
|
107
|
+
this._followupPayloads = [];
|
|
100
108
|
this._path = options.path ? (0, _toConsumableArray2["default"])(options.path) : [];
|
|
101
109
|
this._recordSource = recordSource;
|
|
102
110
|
this._variables = variables;
|
|
103
111
|
this._reactFlightPayloadDeserializer = options.reactFlightPayloadDeserializer;
|
|
104
112
|
this._reactFlightServerErrorHandler = options.reactFlightServerErrorHandler;
|
|
113
|
+
this._shouldProcessClientComponents = options.shouldProcessClientComponents;
|
|
105
114
|
}
|
|
106
115
|
|
|
107
116
|
var _proto = RelayResponseNormalizer.prototype;
|
|
@@ -117,7 +126,7 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
117
126
|
errors: null,
|
|
118
127
|
fieldPayloads: this._handleFieldPayloads,
|
|
119
128
|
incrementalPlaceholders: this._incrementalPlaceholders,
|
|
120
|
-
|
|
129
|
+
followupPayloads: this._followupPayloads,
|
|
121
130
|
source: this._recordSource,
|
|
122
131
|
isFinal: false
|
|
123
132
|
};
|
|
@@ -146,7 +155,7 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
146
155
|
break;
|
|
147
156
|
|
|
148
157
|
case CONDITION:
|
|
149
|
-
var conditionValue = this._getVariableValue(selection.condition);
|
|
158
|
+
var conditionValue = Boolean(this._getVariableValue(selection.condition));
|
|
150
159
|
|
|
151
160
|
if (conditionValue === selection.passingValue) {
|
|
152
161
|
this._traverseSelections(selection, record, data);
|
|
@@ -156,8 +165,12 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
156
165
|
|
|
157
166
|
case FRAGMENT_SPREAD:
|
|
158
167
|
{
|
|
168
|
+
var prevVariables = this._variables;
|
|
169
|
+
this._variables = getLocalVariables(this._variables, selection.fragment.argumentDefinitions, selection.args);
|
|
170
|
+
|
|
159
171
|
this._traverseSelections(selection.fragment, record, data);
|
|
160
172
|
|
|
173
|
+
this._variables = prevVariables;
|
|
161
174
|
break;
|
|
162
175
|
}
|
|
163
176
|
|
|
@@ -171,7 +184,7 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
171
184
|
if (_typeName === selection.type) {
|
|
172
185
|
this._traverseSelections(selection, record, data);
|
|
173
186
|
}
|
|
174
|
-
} else
|
|
187
|
+
} else {
|
|
175
188
|
var implementsInterface = data.hasOwnProperty(abstractKey);
|
|
176
189
|
|
|
177
190
|
var _typeName2 = RelayModernRecord.getType(record);
|
|
@@ -191,18 +204,6 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
191
204
|
if (implementsInterface) {
|
|
192
205
|
this._traverseSelections(selection, record, data);
|
|
193
206
|
}
|
|
194
|
-
} else {
|
|
195
|
-
// legacy behavior for abstract refinements: always normalize even
|
|
196
|
-
// if the type doesn't conform, but track if the type matches or not
|
|
197
|
-
// for determining whether response fields are expected to be present
|
|
198
|
-
var _implementsInterface = data.hasOwnProperty(abstractKey);
|
|
199
|
-
|
|
200
|
-
var parentIsUnmatchedAbstractType = this._isUnmatchedAbstractType;
|
|
201
|
-
this._isUnmatchedAbstractType = this._isUnmatchedAbstractType || !_implementsInterface;
|
|
202
|
-
|
|
203
|
-
this._traverseSelections(selection, record, data);
|
|
204
|
-
|
|
205
|
-
this._isUnmatchedAbstractType = parentIsUnmatchedAbstractType;
|
|
206
207
|
}
|
|
207
208
|
|
|
208
209
|
break;
|
|
@@ -210,26 +211,23 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
210
211
|
|
|
211
212
|
case TYPE_DISCRIMINATOR:
|
|
212
213
|
{
|
|
213
|
-
|
|
214
|
-
var _abstractKey = selection.abstractKey;
|
|
214
|
+
var _abstractKey = selection.abstractKey;
|
|
215
215
|
|
|
216
|
-
|
|
216
|
+
var _implementsInterface = data.hasOwnProperty(_abstractKey);
|
|
217
217
|
|
|
218
|
-
|
|
218
|
+
var _typeName3 = RelayModernRecord.getType(record);
|
|
219
219
|
|
|
220
|
-
|
|
220
|
+
var _typeID = generateTypeID(_typeName3);
|
|
221
221
|
|
|
222
|
-
|
|
222
|
+
var _typeRecord = this._recordSource.get(_typeID);
|
|
223
223
|
|
|
224
|
-
|
|
225
|
-
|
|
224
|
+
if (_typeRecord == null) {
|
|
225
|
+
_typeRecord = RelayModernRecord.create(_typeID, TYPE_SCHEMA_TYPE);
|
|
226
226
|
|
|
227
|
-
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
RelayModernRecord.setValue(_typeRecord, _abstractKey, _implementsInterface2);
|
|
227
|
+
this._recordSource.set(_typeID, _typeRecord);
|
|
231
228
|
}
|
|
232
229
|
|
|
230
|
+
RelayModernRecord.setValue(_typeRecord, _abstractKey, _implementsInterface);
|
|
233
231
|
break;
|
|
234
232
|
}
|
|
235
233
|
|
|
@@ -240,12 +238,17 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
240
238
|
var handleKey = getHandleStorageKey(selection, this._variables);
|
|
241
239
|
|
|
242
240
|
this._handleFieldPayloads.push({
|
|
241
|
+
/* $FlowFixMe[class-object-subtyping] added when improving typing
|
|
242
|
+
* for this parameters */
|
|
243
243
|
args: args,
|
|
244
244
|
dataID: RelayModernRecord.getDataID(record),
|
|
245
245
|
fieldKey: fieldKey,
|
|
246
246
|
handle: selection.handle,
|
|
247
247
|
handleKey: handleKey,
|
|
248
|
-
handleArgs: selection.handleArgs ?
|
|
248
|
+
handleArgs: selection.handleArgs ?
|
|
249
|
+
/* $FlowFixMe[class-object-subtyping] added when improving typing
|
|
250
|
+
* for this parameters */
|
|
251
|
+
getArgumentValues(selection.handleArgs, this._variables) : {}
|
|
249
252
|
});
|
|
250
253
|
|
|
251
254
|
break;
|
|
@@ -274,6 +277,15 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
274
277
|
this._isClientExtension = isClientExtension;
|
|
275
278
|
break;
|
|
276
279
|
|
|
280
|
+
case CLIENT_COMPONENT:
|
|
281
|
+
if (this._shouldProcessClientComponents === false) {
|
|
282
|
+
break;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
this._traverseSelections(selection.fragment, record, data);
|
|
286
|
+
|
|
287
|
+
break;
|
|
288
|
+
|
|
277
289
|
case FLIGHT_FIELD:
|
|
278
290
|
if (RelayFeatureFlags.ENABLE_REACT_FLIGHT_COMPONENT_FIELD) {
|
|
279
291
|
this._normalizeFlightField(node, selection, record, data);
|
|
@@ -283,6 +295,11 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
283
295
|
|
|
284
296
|
break;
|
|
285
297
|
|
|
298
|
+
case ACTOR_CHANGE:
|
|
299
|
+
this._normalizeActorChange(node, selection, record, data);
|
|
300
|
+
|
|
301
|
+
break;
|
|
302
|
+
|
|
286
303
|
default:
|
|
287
304
|
selection;
|
|
288
305
|
!false ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayResponseNormalizer(): Unexpected ast kind `%s`.', selection.kind) : invariant(false) : void 0;
|
|
@@ -310,7 +327,8 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
310
327
|
label: defer.label,
|
|
311
328
|
path: (0, _toConsumableArray2["default"])(this._path),
|
|
312
329
|
selector: createNormalizationSelector(defer, RelayModernRecord.getDataID(record), this._variables),
|
|
313
|
-
typeName: RelayModernRecord.getType(record)
|
|
330
|
+
typeName: RelayModernRecord.getType(record),
|
|
331
|
+
actorIdentifier: this._actorIdentifier
|
|
314
332
|
});
|
|
315
333
|
}
|
|
316
334
|
};
|
|
@@ -336,7 +354,8 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
336
354
|
path: (0, _toConsumableArray2["default"])(this._path),
|
|
337
355
|
parentID: RelayModernRecord.getDataID(record),
|
|
338
356
|
node: stream,
|
|
339
|
-
variables: this._variables
|
|
357
|
+
variables: this._variables,
|
|
358
|
+
actorIdentifier: this._actorIdentifier
|
|
340
359
|
});
|
|
341
360
|
}
|
|
342
361
|
};
|
|
@@ -352,13 +371,16 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
352
371
|
RelayModernRecord.setValue(record, operationKey, operationReference !== null && operationReference !== void 0 ? operationReference : null);
|
|
353
372
|
|
|
354
373
|
if (operationReference != null) {
|
|
355
|
-
this.
|
|
374
|
+
this._followupPayloads.push({
|
|
375
|
+
kind: 'ModuleImportPayload',
|
|
376
|
+
args: moduleImport.args,
|
|
356
377
|
data: data,
|
|
357
378
|
dataID: RelayModernRecord.getDataID(record),
|
|
358
379
|
operationReference: operationReference,
|
|
359
380
|
path: (0, _toConsumableArray2["default"])(this._path),
|
|
360
381
|
typeName: typeName,
|
|
361
|
-
variables: this._variables
|
|
382
|
+
variables: this._variables,
|
|
383
|
+
actorIdentifier: this._actorIdentifier
|
|
362
384
|
});
|
|
363
385
|
}
|
|
364
386
|
};
|
|
@@ -399,7 +421,11 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
399
421
|
|
|
400
422
|
if (process.env.NODE_ENV !== "production") {
|
|
401
423
|
if (selection.kind === SCALAR_FIELD) {
|
|
402
|
-
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);
|
|
403
429
|
}
|
|
404
430
|
}
|
|
405
431
|
|
|
@@ -429,19 +455,97 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
429
455
|
}
|
|
430
456
|
};
|
|
431
457
|
|
|
458
|
+
_proto._normalizeActorChange = function _normalizeActorChange(parent, selection, record, data) {
|
|
459
|
+
var _field$concreteType;
|
|
460
|
+
|
|
461
|
+
var field = selection.linkedField;
|
|
462
|
+
!(typeof data === 'object' && data) ? process.env.NODE_ENV !== "production" ? invariant(false, '_normalizeActorChange(): Expected data for field `%s` to be an object.', field.name) : invariant(false) : void 0;
|
|
463
|
+
var responseKey = field.alias || field.name;
|
|
464
|
+
var storageKey = getStorageKey(field, this._variables);
|
|
465
|
+
var fieldValue = data[responseKey];
|
|
466
|
+
|
|
467
|
+
if (fieldValue == null) {
|
|
468
|
+
if (fieldValue === undefined) {
|
|
469
|
+
var isOptionalField = this._isClientExtension || this._isUnmatchedAbstractType;
|
|
470
|
+
|
|
471
|
+
if (isOptionalField) {
|
|
472
|
+
return;
|
|
473
|
+
} else if (!this._treatMissingFieldsAsNull) {
|
|
474
|
+
if (process.env.NODE_ENV !== "production") {
|
|
475
|
+
process.env.NODE_ENV !== "production" ? warning(false, 'RelayResponseNormalizer: Payload did not contain a value ' + 'for field `%s: %s`. Check that you are parsing with the same ' + 'query that was used to fetch the payload.', responseKey, storageKey) : void 0;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
return;
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
RelayModernRecord.setValue(record, storageKey, null);
|
|
483
|
+
return;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
var actorIdentifier = getActorIdentifierFromPayload(fieldValue);
|
|
487
|
+
|
|
488
|
+
if (actorIdentifier == null) {
|
|
489
|
+
if (process.env.NODE_ENV !== "production") {
|
|
490
|
+
process.env.NODE_ENV !== "production" ? warning(false, 'RelayResponseNormalizer: Payload did not contain a value ' + 'for field `%s`. Check that you are parsing with the same ' + 'query that was used to fetch the payload. Payload is `%s`.', ACTOR_IDENTIFIER_FIELD_NAME, JSON.stringify(fieldValue, null, 2)) : void 0;
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
RelayModernRecord.setValue(record, storageKey, null);
|
|
494
|
+
return;
|
|
495
|
+
} // $FlowFixMe[incompatible-call]
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
var typeName = (_field$concreteType = field.concreteType) !== null && _field$concreteType !== void 0 ? _field$concreteType : this._getRecordType(fieldValue);
|
|
499
|
+
var nextID = this._getDataId( // $FlowFixMe[incompatible-call]
|
|
500
|
+
fieldValue, typeName) || RelayModernRecord.getLinkedRecordID(record, storageKey) || generateClientID(RelayModernRecord.getDataID(record), storageKey);
|
|
501
|
+
!(typeof nextID === 'string') ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayResponseNormalizer: Expected id on field `%s` to be a string.', storageKey) : invariant(false) : void 0;
|
|
502
|
+
RelayModernRecord.setActorLinkedRecordID(record, storageKey, actorIdentifier, nextID);
|
|
503
|
+
|
|
504
|
+
this._followupPayloads.push({
|
|
505
|
+
kind: 'ActorPayload',
|
|
506
|
+
data: fieldValue,
|
|
507
|
+
dataID: nextID,
|
|
508
|
+
path: [].concat((0, _toConsumableArray2["default"])(this._path), [responseKey]),
|
|
509
|
+
typeName: typeName,
|
|
510
|
+
variables: this._variables,
|
|
511
|
+
node: field,
|
|
512
|
+
actorIdentifier: actorIdentifier
|
|
513
|
+
});
|
|
514
|
+
};
|
|
515
|
+
|
|
432
516
|
_proto._normalizeFlightField = function _normalizeFlightField(parent, selection, record, data) {
|
|
433
517
|
var responseKey = selection.alias || selection.name;
|
|
434
518
|
var storageKey = getStorageKey(selection, this._variables);
|
|
435
519
|
var fieldValue = data[responseKey];
|
|
436
520
|
|
|
437
521
|
if (fieldValue == null) {
|
|
522
|
+
if (fieldValue === undefined) {
|
|
523
|
+
// Flight field may be missing in the response if:
|
|
524
|
+
// - It is inside an abstract type refinement where the concrete type does
|
|
525
|
+
// not conform to the interface/union.
|
|
526
|
+
// However an otherwise-required field may also be missing if the server
|
|
527
|
+
// is configured to skip fields with `null` values, in which case the
|
|
528
|
+
// client is assumed to be correctly configured with
|
|
529
|
+
// treatMissingFieldsAsNull=true.
|
|
530
|
+
if (this._isUnmatchedAbstractType) {
|
|
531
|
+
// Field not expected to exist regardless of whether the server is pruning null
|
|
532
|
+
// fields or not.
|
|
533
|
+
return;
|
|
534
|
+
} else {
|
|
535
|
+
// Not optional and the server is not pruning null fields: field is expected
|
|
536
|
+
// to be present
|
|
537
|
+
!this._treatMissingFieldsAsNull ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayResponseNormalizer: Payload did not contain a value for ' + 'field `%s: %s`. Check that you are parsing with the same ' + 'query that was used to fetch the payload.', responseKey, storageKey) : invariant(false) : void 0;
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
|
|
438
541
|
RelayModernRecord.setValue(record, storageKey, null);
|
|
439
542
|
return;
|
|
440
543
|
}
|
|
441
544
|
|
|
442
545
|
var reactFlightPayload = refineToReactFlightPayloadData(fieldValue);
|
|
546
|
+
var reactFlightPayloadDeserializer = this._reactFlightPayloadDeserializer;
|
|
443
547
|
!(reactFlightPayload != null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayResponseNormalizer: Expected React Flight payload data to be an ' + 'object with `status`, tree`, `queries` and `errors` properties, got ' + '`%s`.', fieldValue) : invariant(false) : void 0;
|
|
444
|
-
!(typeof
|
|
548
|
+
!(typeof reactFlightPayloadDeserializer === 'function') ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayResponseNormalizer: Expected reactFlightPayloadDeserializer to ' + 'be a function, got `%s`.', reactFlightPayloadDeserializer) : invariant(false) : void 0;
|
|
445
549
|
|
|
446
550
|
if (reactFlightPayload.errors.length > 0) {
|
|
447
551
|
if (typeof this._reactFlightServerErrorHandler === 'function') {
|
|
@@ -449,22 +553,7 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
449
553
|
} else {
|
|
450
554
|
process.env.NODE_ENV !== "production" ? warning(false, 'RelayResponseNormalizer: Received server errors for field `%s`.\n\n' + '%s\n%s', responseKey, reactFlightPayload.errors[0].message, reactFlightPayload.errors[0].stack) : void 0;
|
|
451
555
|
}
|
|
452
|
-
}
|
|
453
|
-
// being written. When this occurs, we should not continue normalization of
|
|
454
|
-
// the Flight field because the row response is malformed.
|
|
455
|
-
//
|
|
456
|
-
// Receiving empty rows is OK because it can indicate the start of a stream.
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
if (reactFlightPayload.tree == null) {
|
|
460
|
-
process.env.NODE_ENV !== "production" ? warning(false, 'RelayResponseNormalizer: Expected `tree` not to be null. This ' + 'typically indicates that a fatal server error prevented any Server ' + 'Component rows from being written.') : void 0;
|
|
461
|
-
return;
|
|
462
|
-
} // We store the deserialized reactFlightClientResponse in a separate
|
|
463
|
-
// record and link it to the parent record. This is so we can GC the Flight
|
|
464
|
-
// tree later even if the parent record is still reachable.
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
var reactFlightClientResponse = this._reactFlightPayloadDeserializer(reactFlightPayload.tree);
|
|
556
|
+
}
|
|
468
557
|
|
|
469
558
|
var reactFlightID = generateClientID(RelayModernRecord.getDataID(record), getStorageKey(selection, this._variables));
|
|
470
559
|
|
|
@@ -476,8 +565,27 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
476
565
|
this._recordSource.set(reactFlightID, reactFlightClientResponseRecord);
|
|
477
566
|
}
|
|
478
567
|
|
|
568
|
+
if (reactFlightPayload.tree == null) {
|
|
569
|
+
// This typically indicates that a fatal server error prevented rows from
|
|
570
|
+
// being written. When this occurs, we should not continue normalization of
|
|
571
|
+
// the Flight field because the row response is malformed.
|
|
572
|
+
//
|
|
573
|
+
// Receiving empty rows is OK because it can indicate the start of a stream.
|
|
574
|
+
process.env.NODE_ENV !== "production" ? warning(false, 'RelayResponseNormalizer: Expected `tree` not to be null. This ' + 'typically indicates that a fatal server error prevented any Server ' + 'Component rows from being written.') : void 0; // We create the flight record with a null value for the tree
|
|
575
|
+
// and empty reachable definitions
|
|
576
|
+
|
|
577
|
+
RelayModernRecord.setValue(reactFlightClientResponseRecord, REACT_FLIGHT_TREE_STORAGE_KEY, null);
|
|
578
|
+
RelayModernRecord.setValue(reactFlightClientResponseRecord, REACT_FLIGHT_EXECUTABLE_DEFINITIONS_STORAGE_KEY, []);
|
|
579
|
+
RelayModernRecord.setLinkedRecordID(record, storageKey, reactFlightID);
|
|
580
|
+
return;
|
|
581
|
+
} // We store the deserialized reactFlightClientResponse in a separate
|
|
582
|
+
// record and link it to the parent record. This is so we can GC the Flight
|
|
583
|
+
// tree later even if the parent record is still reachable.
|
|
584
|
+
|
|
585
|
+
|
|
586
|
+
var reactFlightClientResponse = reactFlightPayloadDeserializer(reactFlightPayload.tree);
|
|
479
587
|
RelayModernRecord.setValue(reactFlightClientResponseRecord, REACT_FLIGHT_TREE_STORAGE_KEY, reactFlightClientResponse);
|
|
480
|
-
var
|
|
588
|
+
var reachableExecutableDefinitions = [];
|
|
481
589
|
|
|
482
590
|
var _iterator = (0, _createForOfIteratorHelper2["default"])(reactFlightPayload.queries),
|
|
483
591
|
_step;
|
|
@@ -487,17 +595,20 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
487
595
|
var query = _step.value;
|
|
488
596
|
|
|
489
597
|
if (query.response.data != null) {
|
|
490
|
-
this.
|
|
598
|
+
this._followupPayloads.push({
|
|
599
|
+
kind: 'ModuleImportPayload',
|
|
600
|
+
args: null,
|
|
491
601
|
data: query.response.data,
|
|
492
602
|
dataID: ROOT_ID,
|
|
493
603
|
operationReference: query.module,
|
|
494
604
|
path: [],
|
|
495
605
|
typeName: ROOT_TYPE,
|
|
496
|
-
variables: query.variables
|
|
606
|
+
variables: query.variables,
|
|
607
|
+
actorIdentifier: this._actorIdentifier
|
|
497
608
|
});
|
|
498
609
|
}
|
|
499
610
|
|
|
500
|
-
|
|
611
|
+
reachableExecutableDefinitions.push({
|
|
501
612
|
module: query.module,
|
|
502
613
|
variables: query.variables
|
|
503
614
|
});
|
|
@@ -508,17 +619,49 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
508
619
|
_iterator.f();
|
|
509
620
|
}
|
|
510
621
|
|
|
511
|
-
|
|
622
|
+
var _iterator2 = (0, _createForOfIteratorHelper2["default"])(reactFlightPayload.fragments),
|
|
623
|
+
_step2;
|
|
624
|
+
|
|
625
|
+
try {
|
|
626
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
627
|
+
var fragment = _step2.value;
|
|
628
|
+
|
|
629
|
+
if (fragment.response.data != null) {
|
|
630
|
+
this._followupPayloads.push({
|
|
631
|
+
kind: 'ModuleImportPayload',
|
|
632
|
+
args: null,
|
|
633
|
+
data: fragment.response.data,
|
|
634
|
+
dataID: fragment.__id,
|
|
635
|
+
operationReference: fragment.module,
|
|
636
|
+
path: [],
|
|
637
|
+
typeName: fragment.__typename,
|
|
638
|
+
variables: fragment.variables,
|
|
639
|
+
actorIdentifier: this._actorIdentifier
|
|
640
|
+
});
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
reachableExecutableDefinitions.push({
|
|
644
|
+
module: fragment.module,
|
|
645
|
+
variables: fragment.variables
|
|
646
|
+
});
|
|
647
|
+
}
|
|
648
|
+
} catch (err) {
|
|
649
|
+
_iterator2.e(err);
|
|
650
|
+
} finally {
|
|
651
|
+
_iterator2.f();
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
RelayModernRecord.setValue(reactFlightClientResponseRecord, REACT_FLIGHT_EXECUTABLE_DEFINITIONS_STORAGE_KEY, reachableExecutableDefinitions);
|
|
512
655
|
RelayModernRecord.setLinkedRecordID(record, storageKey, reactFlightID);
|
|
513
656
|
};
|
|
514
657
|
|
|
515
658
|
_proto._normalizeLink = function _normalizeLink(field, record, storageKey, fieldValue) {
|
|
516
|
-
var _field$
|
|
659
|
+
var _field$concreteType2;
|
|
517
660
|
|
|
518
661
|
!(typeof fieldValue === 'object' && fieldValue) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayResponseNormalizer: Expected data for field `%s` to be an object.', storageKey) : invariant(false) : void 0;
|
|
519
662
|
var nextID = this._getDataId( // $FlowFixMe[incompatible-variance]
|
|
520
663
|
fieldValue, // $FlowFixMe[incompatible-variance]
|
|
521
|
-
(_field$
|
|
664
|
+
(_field$concreteType2 = field.concreteType) !== null && _field$concreteType2 !== void 0 ? _field$concreteType2 : this._getRecordType(fieldValue)) || // Reuse previously generated client IDs
|
|
522
665
|
RelayModernRecord.getLinkedRecordID(record, storageKey) || generateClientID(RelayModernRecord.getDataID(record), storageKey);
|
|
523
666
|
!(typeof nextID === 'string') ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayResponseNormalizer: Expected id on field `%s` to be a string.', storageKey) : invariant(false) : void 0;
|
|
524
667
|
|
|
@@ -552,7 +695,7 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
552
695
|
var prevIDs = RelayModernRecord.getLinkedRecordIDs(record, storageKey);
|
|
553
696
|
var nextIDs = [];
|
|
554
697
|
fieldValue.forEach(function (item, nextIndex) {
|
|
555
|
-
var _field$
|
|
698
|
+
var _field$concreteType3;
|
|
556
699
|
|
|
557
700
|
// validate response data
|
|
558
701
|
if (item == null) {
|
|
@@ -565,7 +708,7 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
565
708
|
!(typeof item === 'object') ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayResponseNormalizer: Expected elements for field `%s` to be ' + 'objects.', storageKey) : invariant(false) : void 0;
|
|
566
709
|
var nextID = _this._getDataId( // $FlowFixMe[incompatible-variance]
|
|
567
710
|
item, // $FlowFixMe[incompatible-variance]
|
|
568
|
-
(_field$
|
|
711
|
+
(_field$concreteType3 = field.concreteType) !== null && _field$concreteType3 !== void 0 ? _field$concreteType3 : _this._getRecordType(item)) || prevIDs && prevIDs[nextIndex] || // Reuse previously generated client IDs:
|
|
569
712
|
generateClientID(RelayModernRecord.getDataID(record), storageKey, nextIndex);
|
|
570
713
|
!(typeof nextID === 'string') ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayResponseNormalizer: Expected id of elements of field `%s` to ' + 'be strings.', storageKey) : invariant(false) : void 0;
|
|
571
714
|
nextIDs.push(nextID);
|
|
@@ -604,9 +747,9 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
604
747
|
;
|
|
605
748
|
|
|
606
749
|
_proto._validateRecordType = function _validateRecordType(record, field, payload) {
|
|
607
|
-
var _field$
|
|
750
|
+
var _field$concreteType4;
|
|
608
751
|
|
|
609
|
-
var typeName = (_field$
|
|
752
|
+
var typeName = (_field$concreteType4 = field.concreteType) !== null && _field$concreteType4 !== void 0 ? _field$concreteType4 : this._getRecordType(payload);
|
|
610
753
|
var dataID = RelayModernRecord.getDataID(record);
|
|
611
754
|
process.env.NODE_ENV !== "production" ? warning(isClientID(dataID) && dataID !== ROOT_ID || RelayModernRecord.getType(record) === typeName, 'RelayResponseNormalizer: Invalid record `%s`. Expected %s to be ' + 'consistent, but the record was assigned conflicting types `%s` ' + 'and `%s`. The GraphQL server likely violated the globally unique ' + 'id requirement by returning the same id for different objects.', dataID, TYPENAME_KEY, RelayModernRecord.getType(record), typeName) : void 0;
|
|
612
755
|
}
|
|
@@ -638,7 +781,6 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
638
781
|
return RelayResponseNormalizer;
|
|
639
782
|
}();
|
|
640
783
|
|
|
641
|
-
var instrumentedNormalize = RelayProfiler.instrument('RelayResponseNormalizer.normalize', normalize);
|
|
642
784
|
module.exports = {
|
|
643
|
-
normalize:
|
|
785
|
+
normalize: normalize
|
|
644
786
|
};
|
|
@@ -10,17 +10,19 @@
|
|
|
10
10
|
// flowlint ambiguous-object-type:error
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
var invariant = require("fbjs/lib/invariant");
|
|
14
|
-
|
|
15
13
|
var _require = require('./RelayModernRecord'),
|
|
16
14
|
getType = _require.getType;
|
|
17
15
|
|
|
18
|
-
var
|
|
16
|
+
var invariant = require('invariant'); // Reachable (client) executable definitions encountered while server component
|
|
17
|
+
// rendering
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
var REACT_FLIGHT_EXECUTABLE_DEFINITIONS_STORAGE_KEY = 'executableDefinitions';
|
|
19
21
|
var REACT_FLIGHT_TREE_STORAGE_KEY = 'tree';
|
|
20
22
|
var REACT_FLIGHT_TYPE_NAME = 'ReactFlightComponent';
|
|
21
23
|
|
|
22
24
|
function refineToReactFlightPayloadData(payload) {
|
|
23
|
-
if (payload == null || typeof payload !== 'object' || typeof payload.status !== 'string' || !Array.isArray(payload.tree) && payload.tree !== null || !Array.isArray(payload.queries) || !Array.isArray(payload.errors)) {
|
|
25
|
+
if (payload == null || typeof payload !== 'object' || typeof payload.status !== 'string' || !Array.isArray(payload.tree) && payload.tree !== null || !Array.isArray(payload.queries) || !Array.isArray(payload.fragments) || !Array.isArray(payload.errors)) {
|
|
24
26
|
return null;
|
|
25
27
|
}
|
|
26
28
|
|
|
@@ -29,17 +31,11 @@ function refineToReactFlightPayloadData(payload) {
|
|
|
29
31
|
|
|
30
32
|
function getReactFlightClientResponse(record) {
|
|
31
33
|
!(getType(record) === REACT_FLIGHT_TYPE_NAME) ? process.env.NODE_ENV !== "production" ? invariant(false, 'getReactFlightClientResponse(): Expected a ReactFlightComponentRecord, ' + 'got %s.', record) : invariant(false) : void 0;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
if (response != null) {
|
|
35
|
-
return response;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
return null;
|
|
34
|
+
return record[REACT_FLIGHT_TREE_STORAGE_KEY];
|
|
39
35
|
}
|
|
40
36
|
|
|
41
37
|
module.exports = {
|
|
42
|
-
|
|
38
|
+
REACT_FLIGHT_EXECUTABLE_DEFINITIONS_STORAGE_KEY: REACT_FLIGHT_EXECUTABLE_DEFINITIONS_STORAGE_KEY,
|
|
43
39
|
REACT_FLIGHT_TREE_STORAGE_KEY: REACT_FLIGHT_TREE_STORAGE_KEY,
|
|
44
40
|
REACT_FLIGHT_TYPE_NAME: REACT_FLIGHT_TYPE_NAME,
|
|
45
41
|
getReactFlightClientResponse: getReactFlightClientResponse,
|