relay-runtime 11.0.0-rc.0 → 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/handlers/connection/ConnectionHandler.js.flow +7 -0
- package/handlers/connection/MutationHandlers.js.flow +28 -0
- package/index.js +1 -1
- package/index.js.flow +20 -3
- package/lib/handlers/RelayDefaultHandlerProvider.js +1 -1
- package/lib/handlers/connection/ConnectionHandler.js +12 -6
- package/lib/handlers/connection/MutationHandlers.js +67 -8
- package/lib/index.js +15 -0
- package/lib/multi-actor-environment/ActorIdentifier.js +33 -0
- package/lib/multi-actor-environment/ActorSpecificEnvironment.js +148 -0
- package/lib/multi-actor-environment/ActorUtils.js +27 -0
- package/lib/multi-actor-environment/MultiActorEnvironment.js +406 -0
- package/lib/multi-actor-environment/MultiActorEnvironmentTypes.js +11 -0
- package/lib/multi-actor-environment/index.js +21 -0
- package/lib/mutations/RelayRecordProxy.js +1 -1
- package/lib/mutations/RelayRecordSourceMutator.js +1 -1
- package/lib/mutations/RelayRecordSourceProxy.js +1 -1
- package/lib/mutations/RelayRecordSourceSelectorProxy.js +7 -2
- package/lib/mutations/applyOptimisticMutation.js +1 -1
- package/lib/mutations/commitMutation.js +5 -2
- package/lib/mutations/validateMutation.js +39 -17
- package/lib/network/RelayNetwork.js +1 -1
- package/lib/network/RelayObservable.js +3 -1
- package/lib/network/RelayQueryResponseCache.js +20 -3
- package/lib/network/wrapNetworkWithLogObserver.js +78 -0
- package/lib/query/GraphQLTag.js +1 -1
- package/lib/query/fetchQuery.js +1 -1
- package/lib/query/fetchQueryInternal.js +1 -1
- package/lib/store/DataChecker.js +132 -50
- package/lib/store/{RelayModernQueryExecutor.js → OperationExecutor.js} +524 -187
- package/lib/store/RelayConcreteVariables.js +29 -4
- package/lib/store/RelayModernEnvironment.js +137 -220
- package/lib/store/RelayModernFragmentSpecResolver.js +49 -23
- package/lib/store/RelayModernRecord.js +36 -2
- package/lib/store/RelayModernSelector.js +1 -1
- package/lib/store/RelayModernStore.js +53 -22
- package/lib/store/RelayOperationTracker.js +34 -24
- package/lib/store/RelayPublishQueue.js +30 -8
- package/lib/store/RelayReader.js +177 -29
- package/lib/store/RelayRecordSource.js +87 -3
- package/lib/store/RelayReferenceMarker.js +53 -28
- package/lib/store/RelayResponseNormalizer.js +247 -108
- package/lib/store/RelayStoreReactFlightUtils.js +7 -11
- package/lib/store/RelayStoreSubscriptions.js +8 -5
- package/lib/store/RelayStoreUtils.js +10 -4
- package/lib/store/ResolverCache.js +213 -0
- package/lib/store/ResolverFragments.js +57 -0
- package/lib/store/cloneRelayHandleSourceField.js +1 -1
- package/lib/store/cloneRelayScalarHandleSourceField.js +1 -1
- package/lib/store/createRelayContext.js +2 -2
- package/lib/store/defaultGetDataID.js +3 -1
- package/lib/store/readInlineData.js +1 -1
- package/lib/subscription/requestSubscription.js +32 -6
- package/lib/util/RelayConcreteNode.js +3 -0
- package/lib/util/RelayFeatureFlags.js +5 -4
- package/lib/util/RelayProfiler.js +17 -187
- package/lib/util/RelayReplaySubject.js +22 -7
- package/lib/util/deepFreeze.js +1 -0
- package/lib/util/getPaginationMetadata.js +41 -0
- package/lib/util/getPaginationVariables.js +67 -0
- package/lib/util/getPendingOperationsForFragment.js +55 -0
- package/lib/util/getRefetchMetadata.js +36 -0
- package/lib/util/getRelayHandleKey.js +1 -1
- package/lib/util/getRequestIdentifier.js +1 -1
- 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 +217 -0
- package/multi-actor-environment/ActorUtils.js.flow +33 -0
- package/multi-actor-environment/MultiActorEnvironment.js.flow +485 -0
- package/multi-actor-environment/MultiActorEnvironmentTypes.js.flow +245 -0
- package/multi-actor-environment/index.js.flow +27 -0
- package/mutations/RelayRecordSourceSelectorProxy.js.flow +7 -2
- package/mutations/commitMutation.js.flow +3 -1
- package/mutations/validateMutation.js.flow +42 -16
- package/network/RelayNetworkTypes.js.flow +17 -8
- package/network/RelayObservable.js.flow +2 -0
- package/network/RelayQueryResponseCache.js.flow +31 -17
- package/network/wrapNetworkWithLogObserver.js.flow +99 -0
- package/package.json +3 -2
- package/relay-runtime.js +2 -2
- package/relay-runtime.min.js +2 -2
- package/store/ClientID.js.flow +5 -1
- package/store/DataChecker.js.flow +148 -44
- package/store/{RelayModernQueryExecutor.js.flow → OperationExecutor.js.flow} +578 -237
- package/store/RelayConcreteVariables.js.flow +31 -1
- package/store/RelayModernEnvironment.js.flow +132 -220
- package/store/RelayModernFragmentSpecResolver.js.flow +40 -14
- package/store/RelayModernOperationDescriptor.js.flow +9 -3
- package/store/RelayModernRecord.js.flow +49 -0
- package/store/RelayModernStore.js.flow +57 -17
- package/store/RelayOperationTracker.js.flow +56 -34
- package/store/RelayPublishQueue.js.flow +37 -11
- package/store/RelayReader.js.flow +186 -27
- package/store/RelayRecordSource.js.flow +72 -6
- package/store/RelayReferenceMarker.js.flow +51 -21
- package/store/RelayResponseNormalizer.js.flow +251 -67
- package/store/RelayStoreReactFlightUtils.js.flow +6 -9
- package/store/RelayStoreSubscriptions.js.flow +10 -3
- package/store/RelayStoreTypes.js.flow +144 -21
- package/store/RelayStoreUtils.js.flow +19 -4
- package/store/ResolverCache.js.flow +247 -0
- package/store/ResolverFragments.js.flow +128 -0
- package/store/createRelayContext.js.flow +1 -1
- package/store/defaultGetDataID.js.flow +3 -1
- package/subscription/requestSubscription.js.flow +43 -8
- package/util/NormalizationNode.js.flow +16 -3
- package/util/ReaderNode.js.flow +29 -2
- package/util/RelayConcreteNode.js.flow +3 -0
- package/util/RelayFeatureFlags.js.flow +10 -6
- package/util/RelayProfiler.js.flow +22 -194
- package/util/RelayReplaySubject.js.flow +7 -6
- package/util/RelayRuntimeTypes.js.flow +4 -2
- package/util/deepFreeze.js.flow +2 -1
- package/util/getPaginationMetadata.js.flow +74 -0
- package/util/getPaginationVariables.js.flow +112 -0
- package/util/getPendingOperationsForFragment.js.flow +62 -0
- package/util/getRefetchMetadata.js.flow +80 -0
- package/util/getValueAtPath.js.flow +46 -0
- package/util/isEmptyObject.js.flow +2 -1
- package/util/registerEnvironmentWithDevTools.js.flow +33 -0
- 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
|
@@ -28,12 +28,17 @@ var cloneRelayHandleSourceField = require('./cloneRelayHandleSourceField');
|
|
|
28
28
|
|
|
29
29
|
var getOperation = require('../util/getOperation');
|
|
30
30
|
|
|
31
|
-
var invariant = require(
|
|
31
|
+
var invariant = require('invariant');
|
|
32
32
|
|
|
33
|
-
var _require = require('./
|
|
34
|
-
|
|
33
|
+
var _require = require('./RelayConcreteVariables'),
|
|
34
|
+
getLocalVariables = _require.getLocalVariables;
|
|
35
35
|
|
|
36
|
-
var
|
|
36
|
+
var _require2 = require('./TypeID'),
|
|
37
|
+
generateTypeID = _require2.generateTypeID;
|
|
38
|
+
|
|
39
|
+
var ACTOR_CHANGE = RelayConcreteNode.ACTOR_CHANGE,
|
|
40
|
+
CONDITION = RelayConcreteNode.CONDITION,
|
|
41
|
+
CLIENT_COMPONENT = RelayConcreteNode.CLIENT_COMPONENT,
|
|
37
42
|
CLIENT_EXTENSION = RelayConcreteNode.CLIENT_EXTENSION,
|
|
38
43
|
DEFER = RelayConcreteNode.DEFER,
|
|
39
44
|
FLIGHT_FIELD = RelayConcreteNode.FLIGHT_FIELD,
|
|
@@ -50,11 +55,11 @@ var ROOT_ID = RelayStoreUtils.ROOT_ID,
|
|
|
50
55
|
getStorageKey = RelayStoreUtils.getStorageKey,
|
|
51
56
|
getModuleOperationKey = RelayStoreUtils.getModuleOperationKey;
|
|
52
57
|
|
|
53
|
-
function mark(recordSource, selector, references, operationLoader) {
|
|
58
|
+
function mark(recordSource, selector, references, operationLoader, shouldProcessClientComponents) {
|
|
54
59
|
var dataID = selector.dataID,
|
|
55
60
|
node = selector.node,
|
|
56
61
|
variables = selector.variables;
|
|
57
|
-
var marker = new RelayReferenceMarker(recordSource, variables, references, operationLoader);
|
|
62
|
+
var marker = new RelayReferenceMarker(recordSource, variables, references, operationLoader, shouldProcessClientComponents);
|
|
58
63
|
marker.mark(node, dataID);
|
|
59
64
|
}
|
|
60
65
|
/**
|
|
@@ -63,12 +68,13 @@ function mark(recordSource, selector, references, operationLoader) {
|
|
|
63
68
|
|
|
64
69
|
|
|
65
70
|
var RelayReferenceMarker = /*#__PURE__*/function () {
|
|
66
|
-
function RelayReferenceMarker(recordSource, variables, references, operationLoader) {
|
|
71
|
+
function RelayReferenceMarker(recordSource, variables, references, operationLoader, shouldProcessClientComponents) {
|
|
67
72
|
this._operationLoader = operationLoader !== null && operationLoader !== void 0 ? operationLoader : null;
|
|
68
73
|
this._operationName = null;
|
|
69
74
|
this._recordSource = recordSource;
|
|
70
75
|
this._references = references;
|
|
71
76
|
this._variables = variables;
|
|
77
|
+
this._shouldProcessClientComponents = shouldProcessClientComponents;
|
|
72
78
|
}
|
|
73
79
|
|
|
74
80
|
var _proto = RelayReferenceMarker.prototype;
|
|
@@ -94,7 +100,8 @@ var RelayReferenceMarker = /*#__PURE__*/function () {
|
|
|
94
100
|
};
|
|
95
101
|
|
|
96
102
|
_proto._getVariableValue = function _getVariableValue(name) {
|
|
97
|
-
!this._variables.hasOwnProperty(name) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayReferenceMarker(): Undefined variable `%s`.', name) : invariant(false) : void 0;
|
|
103
|
+
!this._variables.hasOwnProperty(name) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayReferenceMarker(): Undefined variable `%s`.', name) : invariant(false) : void 0; // $FlowFixMe[cannot-write]
|
|
104
|
+
|
|
98
105
|
return this._variables[name];
|
|
99
106
|
};
|
|
100
107
|
|
|
@@ -104,6 +111,12 @@ var RelayReferenceMarker = /*#__PURE__*/function () {
|
|
|
104
111
|
selections.forEach(function (selection) {
|
|
105
112
|
/* eslint-disable no-fallthrough */
|
|
106
113
|
switch (selection.kind) {
|
|
114
|
+
case ACTOR_CHANGE:
|
|
115
|
+
// TODO: T89695151 Support multi-actor record sources in RelayReferenceMarker.js
|
|
116
|
+
_this._traverseLink(selection.linkedField, record);
|
|
117
|
+
|
|
118
|
+
break;
|
|
119
|
+
|
|
107
120
|
case LINKED_FIELD:
|
|
108
121
|
if (selection.plural) {
|
|
109
122
|
_this._traversePluralLink(selection, record);
|
|
@@ -114,7 +127,7 @@ var RelayReferenceMarker = /*#__PURE__*/function () {
|
|
|
114
127
|
break;
|
|
115
128
|
|
|
116
129
|
case CONDITION:
|
|
117
|
-
var conditionValue = _this._getVariableValue(selection.condition);
|
|
130
|
+
var conditionValue = Boolean(_this._getVariableValue(selection.condition));
|
|
118
131
|
|
|
119
132
|
if (conditionValue === selection.passingValue) {
|
|
120
133
|
_this._traverseSelections(selection.selections, record);
|
|
@@ -129,24 +142,25 @@ var RelayReferenceMarker = /*#__PURE__*/function () {
|
|
|
129
142
|
if (typeName != null && typeName === selection.type) {
|
|
130
143
|
_this._traverseSelections(selection.selections, record);
|
|
131
144
|
}
|
|
132
|
-
} else
|
|
145
|
+
} else {
|
|
133
146
|
var _typeName = RelayModernRecord.getType(record);
|
|
134
147
|
|
|
135
148
|
var typeID = generateTypeID(_typeName);
|
|
136
149
|
|
|
137
150
|
_this._references.add(typeID);
|
|
138
151
|
|
|
139
|
-
_this._traverseSelections(selection.selections, record);
|
|
140
|
-
} else {
|
|
141
152
|
_this._traverseSelections(selection.selections, record);
|
|
142
153
|
}
|
|
143
154
|
|
|
144
155
|
break;
|
|
145
|
-
// $FlowFixMe[incompatible-type]
|
|
146
156
|
|
|
147
157
|
case FRAGMENT_SPREAD:
|
|
158
|
+
var prevVariables = _this._variables;
|
|
159
|
+
_this._variables = getLocalVariables(_this._variables, selection.fragment.argumentDefinitions, selection.args);
|
|
160
|
+
|
|
148
161
|
_this._traverseSelections(selection.fragment.selections, record);
|
|
149
162
|
|
|
163
|
+
_this._variables = prevVariables;
|
|
150
164
|
break;
|
|
151
165
|
|
|
152
166
|
case LINKED_HANDLE:
|
|
@@ -181,13 +195,11 @@ var RelayReferenceMarker = /*#__PURE__*/function () {
|
|
|
181
195
|
|
|
182
196
|
case TYPE_DISCRIMINATOR:
|
|
183
197
|
{
|
|
184
|
-
|
|
185
|
-
var _typeName2 = RelayModernRecord.getType(record);
|
|
198
|
+
var _typeName2 = RelayModernRecord.getType(record);
|
|
186
199
|
|
|
187
|
-
|
|
200
|
+
var _typeID = generateTypeID(_typeName2);
|
|
188
201
|
|
|
189
|
-
|
|
190
|
-
}
|
|
202
|
+
_this._references.add(_typeID);
|
|
191
203
|
|
|
192
204
|
break;
|
|
193
205
|
}
|
|
@@ -211,6 +223,15 @@ var RelayReferenceMarker = /*#__PURE__*/function () {
|
|
|
211
223
|
|
|
212
224
|
break;
|
|
213
225
|
|
|
226
|
+
case CLIENT_COMPONENT:
|
|
227
|
+
if (_this._shouldProcessClientComponents === false) {
|
|
228
|
+
break;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
_this._traverseSelections(selection.fragment.selections, record);
|
|
232
|
+
|
|
233
|
+
break;
|
|
234
|
+
|
|
214
235
|
default:
|
|
215
236
|
selection;
|
|
216
237
|
!false ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayReferenceMarker: Unknown AST node `%s`.', selection) : invariant(false) : void 0;
|
|
@@ -233,9 +254,13 @@ var RelayReferenceMarker = /*#__PURE__*/function () {
|
|
|
233
254
|
var normalizationRootNode = operationLoader.get(operationReference);
|
|
234
255
|
|
|
235
256
|
if (normalizationRootNode != null) {
|
|
236
|
-
var
|
|
257
|
+
var operation = getOperation(normalizationRootNode);
|
|
258
|
+
var prevVariables = this._variables;
|
|
259
|
+
this._variables = getLocalVariables(this._variables, operation.argumentDefinitions, moduleImport.args);
|
|
260
|
+
|
|
261
|
+
this._traverseSelections(operation.selections, record);
|
|
237
262
|
|
|
238
|
-
this.
|
|
263
|
+
this._variables = prevVariables;
|
|
239
264
|
} // Otherwise, if the operation is not available, we assume that the data
|
|
240
265
|
// cannot have been processed yet and therefore isn't in the store to
|
|
241
266
|
// begin with.
|
|
@@ -286,26 +311,26 @@ var RelayReferenceMarker = /*#__PURE__*/function () {
|
|
|
286
311
|
return;
|
|
287
312
|
}
|
|
288
313
|
|
|
289
|
-
var
|
|
314
|
+
var reachableExecutableDefinitions = RelayModernRecord.getValue(reactFlightClientResponseRecord, RelayStoreReactFlightUtils.REACT_FLIGHT_EXECUTABLE_DEFINITIONS_STORAGE_KEY);
|
|
290
315
|
|
|
291
|
-
if (!Array.isArray(
|
|
316
|
+
if (!Array.isArray(reachableExecutableDefinitions)) {
|
|
292
317
|
return;
|
|
293
318
|
}
|
|
294
319
|
|
|
295
320
|
var operationLoader = this._operationLoader;
|
|
296
|
-
!(operationLoader !== null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'DataChecker: Expected an operationLoader to be configured when using ' + 'React Flight') : invariant(false) : void 0; // In Flight, the variables that are in scope for reachable
|
|
297
|
-
// the same as what's in scope for the outer query.
|
|
321
|
+
!(operationLoader !== null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'DataChecker: Expected an operationLoader to be configured when using ' + 'React Flight') : invariant(false) : void 0; // In Flight, the variables that are in scope for reachable executable
|
|
322
|
+
// definitions aren't the same as what's in scope for the outer query.
|
|
298
323
|
|
|
299
324
|
var prevVariables = this._variables; // $FlowFixMe[incompatible-cast]
|
|
300
325
|
|
|
301
|
-
var _iterator = (0, _createForOfIteratorHelper2["default"])(
|
|
326
|
+
var _iterator = (0, _createForOfIteratorHelper2["default"])(reachableExecutableDefinitions),
|
|
302
327
|
_step;
|
|
303
328
|
|
|
304
329
|
try {
|
|
305
330
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
306
|
-
var
|
|
307
|
-
this._variables =
|
|
308
|
-
var operationReference =
|
|
331
|
+
var definition = _step.value;
|
|
332
|
+
this._variables = definition.variables;
|
|
333
|
+
var operationReference = definition.module;
|
|
309
334
|
var normalizationRootNode = operationLoader.get(operationReference);
|
|
310
335
|
|
|
311
336
|
if (normalizationRootNode != null) {
|