relay-runtime 9.0.0 → 10.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/handlers/RelayDefaultHandlerProvider.js.flow +47 -0
- package/handlers/connection/ConnectionHandler.js.flow +549 -0
- package/handlers/connection/ConnectionInterface.js.flow +92 -0
- package/handlers/connection/MutationHandlers.js.flow +199 -0
- package/index.js +1 -1
- package/index.js.flow +335 -0
- package/lib/handlers/RelayDefaultHandlerProvider.js +20 -0
- package/lib/handlers/connection/ConnectionHandler.js +1 -3
- package/lib/handlers/connection/MutationHandlers.js +212 -0
- package/lib/index.js +14 -2
- package/lib/mutations/RelayDeclarativeMutationConfig.js +22 -45
- package/lib/mutations/RelayRecordProxy.js +1 -3
- package/lib/mutations/RelayRecordSourceMutator.js +1 -3
- package/lib/mutations/RelayRecordSourceProxy.js +1 -3
- package/lib/mutations/RelayRecordSourceSelectorProxy.js +1 -3
- package/lib/mutations/commitMutation.js +2 -3
- package/lib/mutations/validateMutation.js +40 -9
- package/lib/network/RelayObservable.js +9 -9
- package/lib/network/RelayQueryResponseCache.js +8 -6
- package/lib/query/GraphQLTag.js +2 -1
- package/lib/query/PreloadableQueryRegistry.js +70 -0
- package/lib/query/fetchQuery.js +2 -3
- package/lib/query/fetchQueryInternal.js +5 -14
- package/lib/store/DataChecker.js +200 -71
- package/lib/store/RelayConcreteVariables.js +6 -2
- package/lib/store/RelayModernEnvironment.js +124 -65
- package/lib/store/RelayModernFragmentSpecResolver.js +19 -14
- package/lib/store/RelayModernOperationDescriptor.js +6 -5
- package/lib/store/RelayModernQueryExecutor.js +122 -73
- package/lib/store/RelayModernRecord.js +14 -9
- package/lib/store/RelayModernSelector.js +6 -2
- package/lib/store/RelayModernStore.js +281 -131
- package/lib/store/RelayOperationTracker.js +35 -78
- package/lib/store/RelayOptimisticRecordSource.js +7 -5
- package/lib/store/RelayPublishQueue.js +2 -4
- package/lib/store/RelayReader.js +304 -52
- package/lib/store/RelayRecordSource.js +1 -3
- package/lib/store/RelayRecordSourceMapImpl.js +13 -18
- package/lib/store/RelayReferenceMarker.js +125 -14
- package/lib/store/RelayResponseNormalizer.js +261 -66
- package/lib/store/RelayStoreReactFlightUtils.js +47 -0
- package/lib/store/RelayStoreUtils.js +1 -0
- package/lib/store/StoreInspector.js +8 -8
- package/lib/store/TypeID.js +28 -0
- package/lib/store/cloneRelayScalarHandleSourceField.js +44 -0
- package/lib/store/defaultRequiredFieldLogger.js +18 -0
- package/lib/store/normalizeRelayPayload.js +6 -2
- package/lib/store/readInlineData.js +1 -1
- package/lib/subscription/requestSubscription.js +4 -3
- package/lib/util/NormalizationNode.js +1 -5
- package/lib/util/RelayConcreteNode.js +11 -6
- package/lib/util/RelayError.js +39 -9
- package/lib/util/RelayFeatureFlags.js +6 -3
- package/lib/util/RelayReplaySubject.js +3 -3
- package/lib/util/createPayloadFor3DField.js +7 -2
- package/lib/util/getFragmentIdentifier.js +12 -3
- package/lib/util/getOperation.js +33 -0
- package/lib/util/getRequestIdentifier.js +2 -2
- package/lib/util/isEmptyObject.js +25 -0
- package/lib/util/recycleNodesInto.js +6 -7
- package/lib/util/reportMissingRequiredFields.js +48 -0
- package/mutations/RelayDeclarativeMutationConfig.js.flow +380 -0
- package/mutations/RelayRecordProxy.js.flow +165 -0
- package/mutations/RelayRecordSourceMutator.js.flow +238 -0
- package/mutations/RelayRecordSourceProxy.js.flow +164 -0
- package/mutations/RelayRecordSourceSelectorProxy.js.flow +119 -0
- package/mutations/applyOptimisticMutation.js.flow +76 -0
- package/mutations/commitLocalUpdate.js.flow +24 -0
- package/mutations/commitMutation.js.flow +181 -0
- package/mutations/validateMutation.js.flow +242 -0
- package/network/ConvertToExecuteFunction.js.flow +49 -0
- package/network/RelayNetwork.js.flow +84 -0
- package/network/RelayNetworkTypes.js.flow +145 -0
- package/network/RelayObservable.js.flow +634 -0
- package/network/RelayQueryResponseCache.js.flow +111 -0
- package/package.json +2 -2
- package/query/GraphQLTag.js.flow +168 -0
- package/query/PreloadableQueryRegistry.js.flow +65 -0
- package/query/fetchQuery.js.flow +47 -0
- package/query/fetchQueryInternal.js.flow +343 -0
- package/relay-runtime.js +2 -2
- package/relay-runtime.min.js +2 -2
- package/store/ClientID.js.flow +43 -0
- package/store/DataChecker.js.flow +568 -0
- package/store/RelayConcreteVariables.js.flow +96 -0
- package/store/RelayModernEnvironment.js.flow +571 -0
- package/store/RelayModernFragmentSpecResolver.js.flow +438 -0
- package/store/RelayModernOperationDescriptor.js.flow +92 -0
- package/store/RelayModernQueryExecutor.js.flow +1345 -0
- package/store/RelayModernRecord.js.flow +403 -0
- package/store/RelayModernSelector.js.flow +455 -0
- package/store/RelayModernStore.js.flow +858 -0
- package/store/RelayOperationTracker.js.flow +164 -0
- package/store/RelayOptimisticRecordSource.js.flow +119 -0
- package/store/RelayPublishQueue.js.flow +401 -0
- package/store/RelayReader.js.flow +638 -0
- package/store/RelayRecordSource.js.flow +29 -0
- package/store/RelayRecordSourceMapImpl.js.flow +87 -0
- package/store/RelayRecordState.js.flow +37 -0
- package/store/RelayReferenceMarker.js.flow +324 -0
- package/store/RelayResponseNormalizer.js.flow +791 -0
- package/store/RelayStoreReactFlightUtils.js.flow +64 -0
- package/store/RelayStoreTypes.js.flow +958 -0
- package/store/RelayStoreUtils.js.flow +219 -0
- package/store/StoreInspector.js.flow +171 -0
- package/store/TypeID.js.flow +28 -0
- package/store/ViewerPattern.js.flow +26 -0
- package/store/cloneRelayHandleSourceField.js.flow +66 -0
- package/store/cloneRelayScalarHandleSourceField.js.flow +62 -0
- package/store/createFragmentSpecResolver.js.flow +55 -0
- package/store/createRelayContext.js.flow +44 -0
- package/store/defaultGetDataID.js.flow +27 -0
- package/store/defaultRequiredFieldLogger.js.flow +23 -0
- package/store/hasOverlappingIDs.js.flow +34 -0
- package/store/isRelayModernEnvironment.js.flow +27 -0
- package/store/normalizeRelayPayload.js.flow +51 -0
- package/store/readInlineData.js.flow +75 -0
- package/subscription/requestSubscription.js.flow +103 -0
- package/util/JSResourceTypes.flow.js.flow +20 -0
- package/util/NormalizationNode.js.flow +213 -0
- package/util/ReaderNode.js.flow +227 -0
- package/util/RelayConcreteNode.js.flow +99 -0
- package/util/RelayDefaultHandleKey.js.flow +17 -0
- package/util/RelayError.js.flow +62 -0
- package/util/RelayFeatureFlags.js.flow +37 -0
- package/util/RelayProfiler.js.flow +284 -0
- package/util/RelayReplaySubject.js.flow +135 -0
- package/util/RelayRuntimeTypes.js.flow +72 -0
- package/util/createPayloadFor3DField.js.flow +43 -0
- package/util/deepFreeze.js.flow +36 -0
- package/util/generateID.js.flow +21 -0
- package/util/getFragmentIdentifier.js.flow +76 -0
- package/util/getOperation.js.flow +40 -0
- package/util/getRelayHandleKey.js.flow +41 -0
- package/util/getRequestIdentifier.js.flow +42 -0
- package/util/isEmptyObject.js.flow +25 -0
- package/util/isPromise.js.flow +21 -0
- package/util/isScalarAndEqual.js.flow +26 -0
- package/util/recycleNodesInto.js.flow +87 -0
- package/util/reportMissingRequiredFields.js.flow +51 -0
- package/util/resolveImmediate.js.flow +30 -0
- package/util/stableCopy.js.flow +35 -0
|
@@ -10,19 +10,35 @@
|
|
|
10
10
|
// flowlint ambiguous-object-type:error
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
14
|
+
|
|
15
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
16
|
+
|
|
17
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
18
|
+
|
|
13
19
|
var RelayConcreteNode = require('../util/RelayConcreteNode');
|
|
14
20
|
|
|
21
|
+
var RelayFeatureFlags = require('../util/RelayFeatureFlags');
|
|
22
|
+
|
|
15
23
|
var RelayModernRecord = require('./RelayModernRecord');
|
|
16
24
|
|
|
25
|
+
var RelayStoreReactFlightUtils = require('./RelayStoreReactFlightUtils');
|
|
26
|
+
|
|
17
27
|
var RelayStoreUtils = require('./RelayStoreUtils');
|
|
18
28
|
|
|
19
29
|
var cloneRelayHandleSourceField = require('./cloneRelayHandleSourceField');
|
|
20
30
|
|
|
31
|
+
var getOperation = require('../util/getOperation');
|
|
32
|
+
|
|
21
33
|
var invariant = require("fbjs/lib/invariant");
|
|
22
34
|
|
|
35
|
+
var _require = require('./TypeID'),
|
|
36
|
+
generateTypeID = _require.generateTypeID;
|
|
37
|
+
|
|
23
38
|
var CONDITION = RelayConcreteNode.CONDITION,
|
|
24
39
|
CLIENT_EXTENSION = RelayConcreteNode.CLIENT_EXTENSION,
|
|
25
40
|
DEFER = RelayConcreteNode.DEFER,
|
|
41
|
+
FLIGHT_FIELD = RelayConcreteNode.FLIGHT_FIELD,
|
|
26
42
|
FRAGMENT_SPREAD = RelayConcreteNode.FRAGMENT_SPREAD,
|
|
27
43
|
INLINE_FRAGMENT = RelayConcreteNode.INLINE_FRAGMENT,
|
|
28
44
|
LINKED_FIELD = RelayConcreteNode.LINKED_FIELD,
|
|
@@ -30,8 +46,10 @@ var CONDITION = RelayConcreteNode.CONDITION,
|
|
|
30
46
|
LINKED_HANDLE = RelayConcreteNode.LINKED_HANDLE,
|
|
31
47
|
SCALAR_FIELD = RelayConcreteNode.SCALAR_FIELD,
|
|
32
48
|
SCALAR_HANDLE = RelayConcreteNode.SCALAR_HANDLE,
|
|
33
|
-
STREAM = RelayConcreteNode.STREAM
|
|
34
|
-
|
|
49
|
+
STREAM = RelayConcreteNode.STREAM,
|
|
50
|
+
TYPE_DISCRIMINATOR = RelayConcreteNode.TYPE_DISCRIMINATOR;
|
|
51
|
+
var ROOT_ID = RelayStoreUtils.ROOT_ID,
|
|
52
|
+
getStorageKey = RelayStoreUtils.getStorageKey,
|
|
35
53
|
getModuleOperationKey = RelayStoreUtils.getModuleOperationKey;
|
|
36
54
|
|
|
37
55
|
function mark(recordSource, selector, references, operationLoader) {
|
|
@@ -46,13 +64,10 @@ function mark(recordSource, selector, references, operationLoader) {
|
|
|
46
64
|
*/
|
|
47
65
|
|
|
48
66
|
|
|
49
|
-
var RelayReferenceMarker =
|
|
50
|
-
/*#__PURE__*/
|
|
51
|
-
function () {
|
|
67
|
+
var RelayReferenceMarker = /*#__PURE__*/function () {
|
|
52
68
|
function RelayReferenceMarker(recordSource, variables, references, operationLoader) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
this._operationLoader = (_operationLoader = operationLoader) !== null && _operationLoader !== void 0 ? _operationLoader : null;
|
|
69
|
+
this._operationLoader = operationLoader !== null && operationLoader !== void 0 ? operationLoader : null;
|
|
70
|
+
this._operationName = null;
|
|
56
71
|
this._recordSource = recordSource;
|
|
57
72
|
this._references = references;
|
|
58
73
|
this._variables = variables;
|
|
@@ -61,6 +76,10 @@ function () {
|
|
|
61
76
|
var _proto = RelayReferenceMarker.prototype;
|
|
62
77
|
|
|
63
78
|
_proto.mark = function mark(node, dataID) {
|
|
79
|
+
if (node.kind === 'Operation' || node.kind === 'SplitOperation') {
|
|
80
|
+
this._operationName = node.name;
|
|
81
|
+
}
|
|
82
|
+
|
|
64
83
|
this._traverse(node, dataID);
|
|
65
84
|
};
|
|
66
85
|
|
|
@@ -106,13 +125,26 @@ function () {
|
|
|
106
125
|
break;
|
|
107
126
|
|
|
108
127
|
case INLINE_FRAGMENT:
|
|
109
|
-
|
|
128
|
+
if (selection.abstractKey == null) {
|
|
129
|
+
var typeName = RelayModernRecord.getType(record);
|
|
130
|
+
|
|
131
|
+
if (typeName != null && typeName === selection.type) {
|
|
132
|
+
_this._traverseSelections(selection.selections, record);
|
|
133
|
+
}
|
|
134
|
+
} else if (RelayFeatureFlags.ENABLE_PRECISE_TYPE_REFINEMENT) {
|
|
135
|
+
var _typeName = RelayModernRecord.getType(record);
|
|
136
|
+
|
|
137
|
+
var typeID = generateTypeID(_typeName);
|
|
138
|
+
|
|
139
|
+
_this._references.add(typeID);
|
|
110
140
|
|
|
111
|
-
|
|
141
|
+
_this._traverseSelections(selection.selections, record);
|
|
142
|
+
} else {
|
|
112
143
|
_this._traverseSelections(selection.selections, record);
|
|
113
144
|
}
|
|
114
145
|
|
|
115
146
|
break;
|
|
147
|
+
// $FlowFixMe[incompatible-type]
|
|
116
148
|
|
|
117
149
|
case FRAGMENT_SPREAD:
|
|
118
150
|
!false ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayReferenceMarker(): Unexpected fragment spread `...%s`, ' + 'expected all fragments to be inlined.', selection.name) : invariant(false) : void 0;
|
|
@@ -147,6 +179,19 @@ function () {
|
|
|
147
179
|
case SCALAR_HANDLE:
|
|
148
180
|
break;
|
|
149
181
|
|
|
182
|
+
case TYPE_DISCRIMINATOR:
|
|
183
|
+
{
|
|
184
|
+
if (RelayFeatureFlags.ENABLE_PRECISE_TYPE_REFINEMENT) {
|
|
185
|
+
var _typeName2 = RelayModernRecord.getType(record);
|
|
186
|
+
|
|
187
|
+
var _typeID = generateTypeID(_typeName2);
|
|
188
|
+
|
|
189
|
+
_this._references.add(_typeID);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
break;
|
|
193
|
+
}
|
|
194
|
+
|
|
150
195
|
case MODULE_IMPORT:
|
|
151
196
|
_this._traverseModuleImport(selection, record);
|
|
152
197
|
|
|
@@ -157,6 +202,15 @@ function () {
|
|
|
157
202
|
|
|
158
203
|
break;
|
|
159
204
|
|
|
205
|
+
case FLIGHT_FIELD:
|
|
206
|
+
if (RelayFeatureFlags.ENABLE_REACT_FLIGHT_COMPONENT_FIELD) {
|
|
207
|
+
_this._traverseFlightField(selection, record);
|
|
208
|
+
} else {
|
|
209
|
+
throw new Error('Flight fields are not yet supported.');
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
break;
|
|
213
|
+
|
|
160
214
|
default:
|
|
161
215
|
selection;
|
|
162
216
|
!false ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayReferenceMarker: Unknown AST node `%s`.', selection) : invariant(false) : void 0;
|
|
@@ -165,8 +219,10 @@ function () {
|
|
|
165
219
|
};
|
|
166
220
|
|
|
167
221
|
_proto._traverseModuleImport = function _traverseModuleImport(moduleImport, record) {
|
|
222
|
+
var _this$_operationName;
|
|
223
|
+
|
|
168
224
|
var operationLoader = this._operationLoader;
|
|
169
|
-
!(operationLoader !== null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayReferenceMarker: Expected an operationLoader to be configured when using `@module`.') : invariant(false) : void 0;
|
|
225
|
+
!(operationLoader !== null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayReferenceMarker: Expected an operationLoader to be configured when using `@module`. ' + 'Could not load fragment `%s` in operation `%s`.', moduleImport.fragmentName, (_this$_operationName = this._operationName) !== null && _this$_operationName !== void 0 ? _this$_operationName : '(unknown)') : invariant(false) : void 0;
|
|
170
226
|
var operationKey = getModuleOperationKey(moduleImport.documentName);
|
|
171
227
|
var operationReference = RelayModernRecord.getValue(record, operationKey);
|
|
172
228
|
|
|
@@ -174,10 +230,12 @@ function () {
|
|
|
174
230
|
return;
|
|
175
231
|
}
|
|
176
232
|
|
|
177
|
-
var
|
|
233
|
+
var normalizationRootNode = operationLoader.get(operationReference);
|
|
234
|
+
|
|
235
|
+
if (normalizationRootNode != null) {
|
|
236
|
+
var selections = getOperation(normalizationRootNode).selections;
|
|
178
237
|
|
|
179
|
-
|
|
180
|
-
this._traverseSelections(operation.selections, record);
|
|
238
|
+
this._traverseSelections(selections, record);
|
|
181
239
|
} // Otherwise, if the operation is not available, we assume that the data
|
|
182
240
|
// cannot have been processed yet and therefore isn't in the store to
|
|
183
241
|
// begin with.
|
|
@@ -212,6 +270,59 @@ function () {
|
|
|
212
270
|
});
|
|
213
271
|
};
|
|
214
272
|
|
|
273
|
+
_proto._traverseFlightField = function _traverseFlightField(field, record) {
|
|
274
|
+
var storageKey = getStorageKey(field, this._variables);
|
|
275
|
+
var linkedID = RelayModernRecord.getLinkedRecordID(record, storageKey);
|
|
276
|
+
|
|
277
|
+
if (linkedID == null) {
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
this._references.add(linkedID);
|
|
282
|
+
|
|
283
|
+
var reactFlightClientResponseRecord = this._recordSource.get(linkedID);
|
|
284
|
+
|
|
285
|
+
if (reactFlightClientResponseRecord == null) {
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
var reachableQueries = RelayModernRecord.getValue(reactFlightClientResponseRecord, RelayStoreReactFlightUtils.REACT_FLIGHT_QUERIES_STORAGE_KEY);
|
|
290
|
+
|
|
291
|
+
if (!Array.isArray(reachableQueries)) {
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
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 queries aren't
|
|
297
|
+
// the same as what's in scope for the outer query.
|
|
298
|
+
|
|
299
|
+
var prevVariables = this._variables; // $FlowFixMe[incompatible-cast]
|
|
300
|
+
|
|
301
|
+
var _iterator = _createForOfIteratorHelper(reachableQueries),
|
|
302
|
+
_step;
|
|
303
|
+
|
|
304
|
+
try {
|
|
305
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
306
|
+
var query = _step.value;
|
|
307
|
+
this._variables = query.variables;
|
|
308
|
+
var operationReference = query.module;
|
|
309
|
+
var normalizationRootNode = operationLoader.get(operationReference);
|
|
310
|
+
|
|
311
|
+
if (normalizationRootNode != null) {
|
|
312
|
+
var operation = getOperation(normalizationRootNode);
|
|
313
|
+
|
|
314
|
+
this._traverse(operation, ROOT_ID);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
} catch (err) {
|
|
318
|
+
_iterator.e(err);
|
|
319
|
+
} finally {
|
|
320
|
+
_iterator.f();
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
this._variables = prevVariables;
|
|
324
|
+
};
|
|
325
|
+
|
|
215
326
|
return RelayReferenceMarker;
|
|
216
327
|
}();
|
|
217
328
|
|