relay-runtime 8.0.0 → 10.0.1
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 +41 -0
- package/handlers/connection/ConnectionHandler.js.flow +549 -0
- package/handlers/connection/ConnectionInterface.js.flow +92 -0
- package/handlers/connection/MutationHandlers.js.flow +88 -0
- package/index.js +1 -1
- package/index.js.flow +320 -0
- package/lib/handlers/RelayDefaultHandlerProvider.js +13 -2
- package/lib/handlers/connection/{RelayConnectionHandler.js → ConnectionHandler.js} +33 -35
- package/lib/handlers/connection/{RelayConnectionInterface.js → ConnectionInterface.js} +2 -2
- package/lib/handlers/connection/MutationHandlers.js +86 -0
- package/lib/index.js +15 -19
- package/lib/mutations/RelayDeclarativeMutationConfig.js +29 -52
- package/lib/mutations/RelayRecordProxy.js +1 -3
- package/lib/mutations/RelayRecordSourceMutator.js +2 -9
- package/lib/mutations/RelayRecordSourceProxy.js +2 -4
- package/lib/mutations/RelayRecordSourceSelectorProxy.js +1 -13
- package/lib/mutations/commitMutation.js +13 -3
- package/lib/mutations/validateMutation.js +16 -9
- package/lib/network/RelayObservable.js +9 -9
- package/lib/network/RelayQueryResponseCache.js +8 -6
- package/lib/query/PreloadableQueryRegistry.js +70 -0
- package/lib/query/fetchQueryInternal.js +31 -23
- package/lib/store/DataChecker.js +122 -110
- package/lib/store/RelayConcreteVariables.js +6 -2
- package/lib/store/RelayModernEnvironment.js +121 -67
- package/lib/store/RelayModernFragmentSpecResolver.js +12 -16
- package/lib/store/RelayModernQueryExecutor.js +389 -314
- package/lib/store/RelayModernRecord.js +14 -9
- package/lib/store/RelayModernSelector.js +7 -3
- package/lib/store/RelayModernStore.js +289 -484
- package/lib/store/RelayOperationTracker.js +35 -78
- package/lib/store/RelayOptimisticRecordSource.js +7 -5
- package/lib/store/RelayPublishQueue.js +6 -33
- package/lib/store/RelayReader.js +113 -45
- package/lib/store/RelayRecordSource.js +2 -9
- package/lib/store/RelayRecordSourceMapImpl.js +13 -18
- package/lib/store/RelayReferenceMarker.js +40 -60
- package/lib/store/RelayResponseNormalizer.js +158 -193
- 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/normalizeRelayPayload.js +6 -2
- package/lib/store/readInlineData.js +1 -1
- package/lib/subscription/requestSubscription.js +5 -3
- package/lib/util/RelayConcreteNode.js +9 -6
- package/lib/util/RelayError.js +39 -9
- package/lib/util/RelayFeatureFlags.js +2 -5
- package/lib/util/RelayReplaySubject.js +3 -3
- package/lib/util/createPayloadFor3DField.js +7 -2
- package/lib/util/getRequestIdentifier.js +2 -2
- package/lib/util/recycleNodesInto.js +2 -6
- 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 +182 -0
- package/mutations/validateMutation.js.flow +213 -0
- package/network/ConvertToExecuteFunction.js.flow +49 -0
- package/network/RelayNetwork.js.flow +84 -0
- package/network/RelayNetworkTypes.js.flow +123 -0
- package/network/RelayObservable.js.flow +634 -0
- package/network/RelayQueryResponseCache.js.flow +111 -0
- package/package.json +1 -1
- package/query/GraphQLTag.js.flow +166 -0
- package/query/PreloadableQueryRegistry.js.flow +65 -0
- package/query/fetchQuery.js.flow +47 -0
- package/query/fetchQueryInternal.js.flow +348 -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 +502 -0
- package/store/RelayConcreteVariables.js.flow +96 -0
- package/store/RelayModernEnvironment.js.flow +551 -0
- package/store/RelayModernFragmentSpecResolver.js.flow +426 -0
- package/store/RelayModernOperationDescriptor.js.flow +88 -0
- package/store/RelayModernQueryExecutor.js.flow +1321 -0
- package/store/RelayModernRecord.js.flow +403 -0
- package/store/RelayModernSelector.js.flow +455 -0
- package/store/RelayModernStore.js.flow +842 -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 +473 -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 +257 -0
- package/store/RelayResponseNormalizer.js.flow +680 -0
- package/store/RelayStoreTypes.js.flow +899 -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/hasOverlappingIDs.js.flow +34 -0
- package/store/isRelayModernEnvironment.js.flow +27 -0
- package/store/normalizeRelayPayload.js.flow +51 -0
- package/store/readInlineData.js.flow +75 -0
- package/subscription/requestSubscription.js.flow +100 -0
- package/util/JSResourceTypes.flow.js.flow +20 -0
- package/util/NormalizationNode.js.flow +198 -0
- package/util/ReaderNode.js.flow +208 -0
- package/util/RelayConcreteNode.js.flow +93 -0
- package/util/RelayDefaultHandleKey.js.flow +17 -0
- package/util/RelayError.js.flow +62 -0
- package/util/RelayFeatureFlags.js.flow +30 -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 +52 -0
- package/util/getRelayHandleKey.js.flow +41 -0
- package/util/getRequestIdentifier.js.flow +42 -0
- package/util/isPromise.js.flow +21 -0
- package/util/isScalarAndEqual.js.flow +26 -0
- package/util/recycleNodesInto.js.flow +76 -0
- package/util/resolveImmediate.js.flow +30 -0
- package/util/stableCopy.js.flow +35 -0
- package/lib/handlers/RelayDefaultMissingFieldHandlers.js +0 -26
- package/lib/handlers/getRelayDefaultMissingFieldHandlers.js +0 -36
- package/lib/query/RelayModernGraphQLTag.js +0 -104
- package/lib/store/RelayConnection.js +0 -37
- package/lib/store/RelayConnectionResolver.js +0 -178
- package/lib/store/RelayRecordSourceObjectImpl.js +0 -79
- package/lib/util/getFragmentSpecIdentifier.js +0 -27
|
@@ -10,6 +10,12 @@
|
|
|
10
10
|
// flowlint ambiguous-object-type:error
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
+
function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { 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 it, 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(n); 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 RelayRecordState = require('./RelayRecordState');
|
|
14
20
|
|
|
15
21
|
var EXISTENT = RelayRecordState.EXISTENT,
|
|
@@ -20,9 +26,7 @@ var EXISTENT = RelayRecordState.EXISTENT,
|
|
|
20
26
|
* `RelayStoreTypes`) that holds all records in memory (JS Map).
|
|
21
27
|
*/
|
|
22
28
|
|
|
23
|
-
var RelayMapRecordSourceMapImpl =
|
|
24
|
-
/*#__PURE__*/
|
|
25
|
-
function () {
|
|
29
|
+
var RelayMapRecordSourceMapImpl = /*#__PURE__*/function () {
|
|
26
30
|
function RelayMapRecordSourceMapImpl(records) {
|
|
27
31
|
var _this = this;
|
|
28
32
|
|
|
@@ -79,30 +83,21 @@ function () {
|
|
|
79
83
|
|
|
80
84
|
_proto.toJSON = function toJSON() {
|
|
81
85
|
var obj = {};
|
|
82
|
-
|
|
83
|
-
var
|
|
84
|
-
|
|
86
|
+
|
|
87
|
+
var _iterator = _createForOfIteratorHelper(this._records),
|
|
88
|
+
_step;
|
|
85
89
|
|
|
86
90
|
try {
|
|
87
|
-
for (
|
|
91
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
88
92
|
var _step$value = _step.value,
|
|
89
93
|
key = _step$value[0],
|
|
90
94
|
value = _step$value[1];
|
|
91
95
|
obj[key] = value;
|
|
92
96
|
}
|
|
93
97
|
} catch (err) {
|
|
94
|
-
|
|
95
|
-
_iteratorError = err;
|
|
98
|
+
_iterator.e(err);
|
|
96
99
|
} finally {
|
|
97
|
-
|
|
98
|
-
if (!_iteratorNormalCompletion && _iterator["return"] != null) {
|
|
99
|
-
_iterator["return"]();
|
|
100
|
-
}
|
|
101
|
-
} finally {
|
|
102
|
-
if (_didIteratorError) {
|
|
103
|
-
throw _iteratorError;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
100
|
+
_iterator.f();
|
|
106
101
|
}
|
|
107
102
|
|
|
108
103
|
return obj;
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
var RelayConcreteNode = require('../util/RelayConcreteNode');
|
|
14
14
|
|
|
15
|
-
var
|
|
15
|
+
var RelayFeatureFlags = require('../util/RelayFeatureFlags');
|
|
16
16
|
|
|
17
17
|
var RelayModernRecord = require('./RelayModernRecord');
|
|
18
18
|
|
|
@@ -22,10 +22,12 @@ var cloneRelayHandleSourceField = require('./cloneRelayHandleSourceField');
|
|
|
22
22
|
|
|
23
23
|
var invariant = require("fbjs/lib/invariant");
|
|
24
24
|
|
|
25
|
+
var _require = require('./TypeID'),
|
|
26
|
+
generateTypeID = _require.generateTypeID;
|
|
27
|
+
|
|
25
28
|
var CONDITION = RelayConcreteNode.CONDITION,
|
|
26
29
|
CLIENT_EXTENSION = RelayConcreteNode.CLIENT_EXTENSION,
|
|
27
30
|
DEFER = RelayConcreteNode.DEFER,
|
|
28
|
-
CONNECTION = RelayConcreteNode.CONNECTION,
|
|
29
31
|
FRAGMENT_SPREAD = RelayConcreteNode.FRAGMENT_SPREAD,
|
|
30
32
|
INLINE_FRAGMENT = RelayConcreteNode.INLINE_FRAGMENT,
|
|
31
33
|
LINKED_FIELD = RelayConcreteNode.LINKED_FIELD,
|
|
@@ -33,15 +35,16 @@ var CONDITION = RelayConcreteNode.CONDITION,
|
|
|
33
35
|
LINKED_HANDLE = RelayConcreteNode.LINKED_HANDLE,
|
|
34
36
|
SCALAR_FIELD = RelayConcreteNode.SCALAR_FIELD,
|
|
35
37
|
SCALAR_HANDLE = RelayConcreteNode.SCALAR_HANDLE,
|
|
36
|
-
STREAM = RelayConcreteNode.STREAM
|
|
38
|
+
STREAM = RelayConcreteNode.STREAM,
|
|
39
|
+
TYPE_DISCRIMINATOR = RelayConcreteNode.TYPE_DISCRIMINATOR;
|
|
37
40
|
var getStorageKey = RelayStoreUtils.getStorageKey,
|
|
38
41
|
getModuleOperationKey = RelayStoreUtils.getModuleOperationKey;
|
|
39
42
|
|
|
40
|
-
function mark(recordSource, selector, references,
|
|
43
|
+
function mark(recordSource, selector, references, operationLoader) {
|
|
41
44
|
var dataID = selector.dataID,
|
|
42
45
|
node = selector.node,
|
|
43
46
|
variables = selector.variables;
|
|
44
|
-
var marker = new RelayReferenceMarker(recordSource, variables, references,
|
|
47
|
+
var marker = new RelayReferenceMarker(recordSource, variables, references, operationLoader);
|
|
45
48
|
marker.mark(node, dataID);
|
|
46
49
|
}
|
|
47
50
|
/**
|
|
@@ -49,15 +52,9 @@ function mark(recordSource, selector, references, connectionReferences, getConne
|
|
|
49
52
|
*/
|
|
50
53
|
|
|
51
54
|
|
|
52
|
-
var RelayReferenceMarker =
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
function RelayReferenceMarker(recordSource, variables, references, connectionReferences, getConnectionEvents, operationLoader) {
|
|
56
|
-
var _operationLoader;
|
|
57
|
-
|
|
58
|
-
this._connectionReferences = connectionReferences;
|
|
59
|
-
this._getConnectionEvents = getConnectionEvents;
|
|
60
|
-
this._operationLoader = (_operationLoader = operationLoader) !== null && _operationLoader !== void 0 ? _operationLoader : null;
|
|
55
|
+
var RelayReferenceMarker = /*#__PURE__*/function () {
|
|
56
|
+
function RelayReferenceMarker(recordSource, variables, references, operationLoader) {
|
|
57
|
+
this._operationLoader = operationLoader !== null && operationLoader !== void 0 ? operationLoader : null;
|
|
61
58
|
this._recordSource = recordSource;
|
|
62
59
|
this._references = references;
|
|
63
60
|
this._variables = variables;
|
|
@@ -111,9 +108,21 @@ function () {
|
|
|
111
108
|
break;
|
|
112
109
|
|
|
113
110
|
case INLINE_FRAGMENT:
|
|
114
|
-
|
|
111
|
+
if (selection.abstractKey == null) {
|
|
112
|
+
var typeName = RelayModernRecord.getType(record);
|
|
113
|
+
|
|
114
|
+
if (typeName != null && typeName === selection.type) {
|
|
115
|
+
_this._traverseSelections(selection.selections, record);
|
|
116
|
+
}
|
|
117
|
+
} else if (RelayFeatureFlags.ENABLE_PRECISE_TYPE_REFINEMENT) {
|
|
118
|
+
var _typeName = RelayModernRecord.getType(record);
|
|
119
|
+
|
|
120
|
+
var typeID = generateTypeID(_typeName);
|
|
115
121
|
|
|
116
|
-
|
|
122
|
+
_this._references.add(typeID);
|
|
123
|
+
|
|
124
|
+
_this._traverseSelections(selection.selections, record);
|
|
125
|
+
} else {
|
|
117
126
|
_this._traverseSelections(selection.selections, record);
|
|
118
127
|
}
|
|
119
128
|
|
|
@@ -152,6 +161,19 @@ function () {
|
|
|
152
161
|
case SCALAR_HANDLE:
|
|
153
162
|
break;
|
|
154
163
|
|
|
164
|
+
case TYPE_DISCRIMINATOR:
|
|
165
|
+
{
|
|
166
|
+
if (RelayFeatureFlags.ENABLE_PRECISE_TYPE_REFINEMENT) {
|
|
167
|
+
var _typeName2 = RelayModernRecord.getType(record);
|
|
168
|
+
|
|
169
|
+
var _typeID = generateTypeID(_typeName2);
|
|
170
|
+
|
|
171
|
+
_this._references.add(_typeID);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
|
|
155
177
|
case MODULE_IMPORT:
|
|
156
178
|
_this._traverseModuleImport(selection, record);
|
|
157
179
|
|
|
@@ -162,11 +184,6 @@ function () {
|
|
|
162
184
|
|
|
163
185
|
break;
|
|
164
186
|
|
|
165
|
-
case CONNECTION:
|
|
166
|
-
_this._traverseConnection(selection, record);
|
|
167
|
-
|
|
168
|
-
break;
|
|
169
|
-
|
|
170
187
|
default:
|
|
171
188
|
selection;
|
|
172
189
|
!false ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayReferenceMarker: Unknown AST node `%s`.', selection) : invariant(false) : void 0;
|
|
@@ -174,43 +191,6 @@ function () {
|
|
|
174
191
|
});
|
|
175
192
|
};
|
|
176
193
|
|
|
177
|
-
_proto._traverseConnection = function _traverseConnection(connection, record) {
|
|
178
|
-
var _this2 = this;
|
|
179
|
-
|
|
180
|
-
var parentID = RelayModernRecord.getDataID(record);
|
|
181
|
-
var connectionID = RelayConnection.createConnectionID(parentID, connection.label);
|
|
182
|
-
|
|
183
|
-
if (this._connectionReferences.has(connectionID)) {
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
this._connectionReferences.add(connectionID);
|
|
188
|
-
|
|
189
|
-
var connectionEvents = this._getConnectionEvents(connectionID);
|
|
190
|
-
|
|
191
|
-
if (connectionEvents == null || connectionEvents.length === 0) {
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
connectionEvents.forEach(function (event) {
|
|
196
|
-
if (event.kind === 'fetch') {
|
|
197
|
-
event.edgeIDs.forEach(function (edgeID) {
|
|
198
|
-
if (edgeID != null) {
|
|
199
|
-
_this2._traverse(connection.edges, edgeID);
|
|
200
|
-
}
|
|
201
|
-
});
|
|
202
|
-
} else if (event.kind === 'insert') {
|
|
203
|
-
_this2._traverse(connection.edges, event.edgeID);
|
|
204
|
-
} else if (event.kind === 'stream.edge') {
|
|
205
|
-
_this2._traverse(connection.edges, event.edgeID);
|
|
206
|
-
} else if (event.kind === 'stream.pageInfo') {// no-op
|
|
207
|
-
} else {
|
|
208
|
-
event;
|
|
209
|
-
!false ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayReferenceMarker: Unexpected connection event kind `%s`.', event.kind) : invariant(false) : void 0;
|
|
210
|
-
}
|
|
211
|
-
});
|
|
212
|
-
};
|
|
213
|
-
|
|
214
194
|
_proto._traverseModuleImport = function _traverseModuleImport(moduleImport, record) {
|
|
215
195
|
var operationLoader = this._operationLoader;
|
|
216
196
|
!(operationLoader !== null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayReferenceMarker: Expected an operationLoader to be configured when using `@module`.') : invariant(false) : void 0;
|
|
@@ -243,7 +223,7 @@ function () {
|
|
|
243
223
|
};
|
|
244
224
|
|
|
245
225
|
_proto._traversePluralLink = function _traversePluralLink(field, record) {
|
|
246
|
-
var
|
|
226
|
+
var _this2 = this;
|
|
247
227
|
|
|
248
228
|
var storageKey = getStorageKey(field, this._variables);
|
|
249
229
|
var linkedIDs = RelayModernRecord.getLinkedRecordIDs(record, storageKey);
|
|
@@ -254,7 +234,7 @@ function () {
|
|
|
254
234
|
|
|
255
235
|
linkedIDs.forEach(function (linkedID) {
|
|
256
236
|
if (linkedID != null) {
|
|
257
|
-
|
|
237
|
+
_this2._traverse(field, linkedID);
|
|
258
238
|
}
|
|
259
239
|
});
|
|
260
240
|
};
|