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
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
*
|
|
8
|
+
* @format
|
|
9
|
+
*/
|
|
10
|
+
// flowlint ambiguous-object-type:error
|
|
11
|
+
'use strict';
|
|
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
|
+
|
|
19
|
+
var ConnectionHandler = require('./ConnectionHandler');
|
|
20
|
+
|
|
21
|
+
var invariant = require("fbjs/lib/invariant");
|
|
22
|
+
|
|
23
|
+
var warning = require("fbjs/lib/warning");
|
|
24
|
+
|
|
25
|
+
var DeleteRecordHandler = {
|
|
26
|
+
update: function update(store, payload) {
|
|
27
|
+
var record = store.get(payload.dataID);
|
|
28
|
+
|
|
29
|
+
if (record != null) {
|
|
30
|
+
var id = record.getValue(payload.fieldKey);
|
|
31
|
+
|
|
32
|
+
if (typeof id === 'string') {
|
|
33
|
+
store["delete"](id);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var AppendEdgeHandler = {
|
|
39
|
+
update: edgeUpdater(ConnectionHandler.insertEdgeAfter)
|
|
40
|
+
};
|
|
41
|
+
var PrependEdgeHandler = {
|
|
42
|
+
update: edgeUpdater(ConnectionHandler.insertEdgeBefore)
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
function edgeUpdater(insertFn) {
|
|
46
|
+
return function (store, payload) {
|
|
47
|
+
var record = store.get(payload.dataID);
|
|
48
|
+
|
|
49
|
+
if (record == null) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
var connections = payload.handleArgs.connections;
|
|
54
|
+
!(connections != null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'MutationHandlers: Expected connection IDs to be specified.') : invariant(false) : void 0;
|
|
55
|
+
var serverEdge = record.getLinkedRecord(payload.fieldKey, payload.args);
|
|
56
|
+
|
|
57
|
+
var _iterator = _createForOfIteratorHelper(connections),
|
|
58
|
+
_step;
|
|
59
|
+
|
|
60
|
+
try {
|
|
61
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
62
|
+
var connectionID = _step.value;
|
|
63
|
+
var connection = store.get(connectionID);
|
|
64
|
+
|
|
65
|
+
if (connection == null) {
|
|
66
|
+
process.env.NODE_ENV !== "production" ? warning(false, "[Relay][Mutation] The connection with id '".concat(connectionID, "' doesn't exist.")) : void 0;
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
var clientEdge = ConnectionHandler.buildConnectionEdge(store, connection, serverEdge);
|
|
71
|
+
!(clientEdge != null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'MutationHandlers: Failed to build the edge.') : invariant(false) : void 0;
|
|
72
|
+
insertFn(connection, clientEdge);
|
|
73
|
+
}
|
|
74
|
+
} catch (err) {
|
|
75
|
+
_iterator.e(err);
|
|
76
|
+
} finally {
|
|
77
|
+
_iterator.f();
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
module.exports = {
|
|
83
|
+
AppendEdgeHandler: AppendEdgeHandler,
|
|
84
|
+
DeleteRecordHandler: DeleteRecordHandler,
|
|
85
|
+
PrependEdgeHandler: PrependEdgeHandler
|
|
86
|
+
};
|
package/lib/index.js
CHANGED
|
@@ -10,17 +10,19 @@
|
|
|
10
10
|
// flowlint ambiguous-object-type:error
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
var
|
|
13
|
+
var ConnectionHandler = require('./handlers/connection/ConnectionHandler');
|
|
14
14
|
|
|
15
|
-
var
|
|
15
|
+
var ConnectionInterface = require('./handlers/connection/ConnectionInterface');
|
|
16
16
|
|
|
17
|
-
var
|
|
17
|
+
var GraphQLTag = require('./query/GraphQLTag');
|
|
18
18
|
|
|
19
|
-
var
|
|
19
|
+
var MutationHandlers = require('./handlers/connection/MutationHandlers');
|
|
20
20
|
|
|
21
|
-
var
|
|
21
|
+
var PreloadableQueryRegistry = require('./query/PreloadableQueryRegistry');
|
|
22
22
|
|
|
23
|
-
var
|
|
23
|
+
var RelayConcreteNode = require('./util/RelayConcreteNode');
|
|
24
|
+
|
|
25
|
+
var RelayConcreteVariables = require('./store/RelayConcreteVariables');
|
|
24
26
|
|
|
25
27
|
var RelayDeclarativeMutationConfig = require('./mutations/RelayDeclarativeMutationConfig');
|
|
26
28
|
|
|
@@ -80,10 +82,6 @@ var fetchQueryInternal = require('./query/fetchQueryInternal');
|
|
|
80
82
|
|
|
81
83
|
var getFragmentIdentifier = require('./util/getFragmentIdentifier');
|
|
82
84
|
|
|
83
|
-
var getFragmentSpecIdentifier = require('./util/getFragmentSpecIdentifier');
|
|
84
|
-
|
|
85
|
-
var getRelayDefaultMissingFieldHandlers = require('./handlers/getRelayDefaultMissingFieldHandlers');
|
|
86
|
-
|
|
87
85
|
var getRelayHandleKey = require('./util/getRelayHandleKey');
|
|
88
86
|
|
|
89
87
|
var getRequestIdentifier = require('./util/getRequestIdentifier');
|
|
@@ -165,10 +163,9 @@ module.exports = {
|
|
|
165
163
|
MutationTypes: RelayDeclarativeMutationConfig.MutationTypes,
|
|
166
164
|
RangeOperations: RelayDeclarativeMutationConfig.RangeOperations,
|
|
167
165
|
// Extensions
|
|
168
|
-
getDefaultMissingFieldHandlers: getRelayDefaultMissingFieldHandlers,
|
|
169
166
|
DefaultHandlerProvider: RelayDefaultHandlerProvider,
|
|
170
|
-
ConnectionHandler:
|
|
171
|
-
|
|
167
|
+
ConnectionHandler: ConnectionHandler,
|
|
168
|
+
MutationHandlers: MutationHandlers,
|
|
172
169
|
VIEWER_ID: ViewerPattern.VIEWER_ID,
|
|
173
170
|
VIEWER_TYPE: ViewerPattern.VIEWER_TYPE,
|
|
174
171
|
// Helpers (can be implemented via the above API)
|
|
@@ -179,8 +176,9 @@ module.exports = {
|
|
|
179
176
|
isRelayModernEnvironment: isRelayModernEnvironment,
|
|
180
177
|
requestSubscription: requestSubscription,
|
|
181
178
|
// Configuration interface for legacy or special uses
|
|
182
|
-
ConnectionInterface:
|
|
179
|
+
ConnectionInterface: ConnectionInterface,
|
|
183
180
|
// Utilities
|
|
181
|
+
PreloadableQueryRegistry: PreloadableQueryRegistry,
|
|
184
182
|
RelayProfiler: RelayProfiler,
|
|
185
183
|
createPayloadFor3DField: createPayloadFor3DField,
|
|
186
184
|
// INTERNAL-ONLY: These exports might be removed at any point.
|
|
@@ -206,15 +204,13 @@ module.exports = {
|
|
|
206
204
|
recycleNodesInto: recycleNodesInto,
|
|
207
205
|
stableCopy: stableCopy,
|
|
208
206
|
getFragmentIdentifier: getFragmentIdentifier,
|
|
209
|
-
getFragmentSpecIdentifier: getFragmentSpecIdentifier,
|
|
210
207
|
__internal: {
|
|
211
208
|
OperationTracker: RelayOperationTracker,
|
|
212
209
|
createRelayContext: createRelayContext,
|
|
213
|
-
|
|
210
|
+
getOperationVariables: RelayConcreteVariables.getOperationVariables,
|
|
214
211
|
fetchQuery: fetchQueryInternal.fetchQuery,
|
|
215
212
|
fetchQueryDeduped: fetchQueryInternal.fetchQueryDeduped,
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
hasRequestInFlight: fetchQueryInternal.hasRequestInFlight
|
|
213
|
+
getPromiseForActiveRequest: fetchQueryInternal.getPromiseForActiveRequest,
|
|
214
|
+
getObservableForActiveRequest: fetchQueryInternal.getObservableForActiveRequest
|
|
219
215
|
}
|
|
220
216
|
};
|
|
@@ -10,7 +10,13 @@
|
|
|
10
10
|
// flowlint ambiguous-object-type:error
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
var
|
|
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
|
+
|
|
19
|
+
var ConnectionHandler = require('../handlers/connection/ConnectionHandler');
|
|
14
20
|
|
|
15
21
|
var warning = require("fbjs/lib/warning");
|
|
16
22
|
|
|
@@ -129,25 +135,25 @@ function rangeAdd(config, request) {
|
|
|
129
135
|
}
|
|
130
136
|
|
|
131
137
|
var serverEdge = payload.getLinkedRecord(edgeName);
|
|
132
|
-
|
|
133
|
-
var
|
|
134
|
-
|
|
138
|
+
|
|
139
|
+
var _iterator = _createForOfIteratorHelper(connectionInfo),
|
|
140
|
+
_step;
|
|
135
141
|
|
|
136
142
|
try {
|
|
137
|
-
for (
|
|
143
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
138
144
|
var info = _step.value;
|
|
139
145
|
|
|
140
146
|
if (!serverEdge) {
|
|
141
147
|
continue;
|
|
142
148
|
}
|
|
143
149
|
|
|
144
|
-
var connection =
|
|
150
|
+
var connection = ConnectionHandler.getConnection(parent, info.key, info.filters);
|
|
145
151
|
|
|
146
152
|
if (!connection) {
|
|
147
153
|
continue;
|
|
148
154
|
}
|
|
149
155
|
|
|
150
|
-
var clientEdge =
|
|
156
|
+
var clientEdge = ConnectionHandler.buildConnectionEdge(store, connection, serverEdge);
|
|
151
157
|
|
|
152
158
|
if (!clientEdge) {
|
|
153
159
|
continue;
|
|
@@ -155,11 +161,11 @@ function rangeAdd(config, request) {
|
|
|
155
161
|
|
|
156
162
|
switch (info.rangeBehavior) {
|
|
157
163
|
case 'append':
|
|
158
|
-
|
|
164
|
+
ConnectionHandler.insertEdgeAfter(connection, clientEdge);
|
|
159
165
|
break;
|
|
160
166
|
|
|
161
167
|
case 'prepend':
|
|
162
|
-
|
|
168
|
+
ConnectionHandler.insertEdgeBefore(connection, clientEdge);
|
|
163
169
|
break;
|
|
164
170
|
|
|
165
171
|
default:
|
|
@@ -168,18 +174,9 @@ function rangeAdd(config, request) {
|
|
|
168
174
|
}
|
|
169
175
|
}
|
|
170
176
|
} catch (err) {
|
|
171
|
-
|
|
172
|
-
_iteratorError = err;
|
|
177
|
+
_iterator.e(err);
|
|
173
178
|
} finally {
|
|
174
|
-
|
|
175
|
-
if (!_iteratorNormalCompletion && _iterator["return"] != null) {
|
|
176
|
-
_iterator["return"]();
|
|
177
|
-
}
|
|
178
|
-
} finally {
|
|
179
|
-
if (_didIteratorError) {
|
|
180
|
-
throw _iteratorError;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
179
|
+
_iterator.f();
|
|
183
180
|
}
|
|
184
181
|
};
|
|
185
182
|
}
|
|
@@ -210,12 +207,11 @@ function rangeDelete(config, request) {
|
|
|
210
207
|
var deletedIDField = data[rootField];
|
|
211
208
|
|
|
212
209
|
if (deletedIDField && Array.isArray(deletedIDFieldName)) {
|
|
213
|
-
var
|
|
214
|
-
|
|
215
|
-
var _iteratorError2 = undefined;
|
|
210
|
+
var _iterator2 = _createForOfIteratorHelper(deletedIDFieldName),
|
|
211
|
+
_step2;
|
|
216
212
|
|
|
217
213
|
try {
|
|
218
|
-
for (
|
|
214
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
219
215
|
var eachField = _step2.value;
|
|
220
216
|
|
|
221
217
|
if (deletedIDField && typeof deletedIDField === 'object') {
|
|
@@ -223,18 +219,9 @@ function rangeDelete(config, request) {
|
|
|
223
219
|
}
|
|
224
220
|
}
|
|
225
221
|
} catch (err) {
|
|
226
|
-
|
|
227
|
-
_iteratorError2 = err;
|
|
222
|
+
_iterator2.e(err);
|
|
228
223
|
} finally {
|
|
229
|
-
|
|
230
|
-
if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) {
|
|
231
|
-
_iterator2["return"]();
|
|
232
|
-
}
|
|
233
|
-
} finally {
|
|
234
|
-
if (_didIteratorError2) {
|
|
235
|
-
throw _iteratorError2;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
224
|
+
_iterator2.f();
|
|
238
225
|
}
|
|
239
226
|
|
|
240
227
|
if (Array.isArray(deletedIDField)) {
|
|
@@ -291,38 +278,28 @@ function deleteNode(parentID, connectionKeys, pathToConnection, store, deleteIDs
|
|
|
291
278
|
return;
|
|
292
279
|
}
|
|
293
280
|
|
|
294
|
-
var
|
|
295
|
-
|
|
296
|
-
var _iteratorError3 = undefined;
|
|
281
|
+
var _iterator3 = _createForOfIteratorHelper(connectionKeys),
|
|
282
|
+
_step3;
|
|
297
283
|
|
|
298
284
|
try {
|
|
299
285
|
var _loop = function _loop() {
|
|
300
286
|
var key = _step3.value;
|
|
301
|
-
var connection =
|
|
287
|
+
var connection = ConnectionHandler.getConnection(recordProxy, key.key, key.filters);
|
|
302
288
|
|
|
303
289
|
if (connection) {
|
|
304
290
|
deleteIDs.forEach(function (deleteID) {
|
|
305
|
-
|
|
291
|
+
ConnectionHandler.deleteNode(connection, deleteID);
|
|
306
292
|
});
|
|
307
293
|
}
|
|
308
294
|
};
|
|
309
295
|
|
|
310
|
-
for (
|
|
296
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
311
297
|
_loop();
|
|
312
298
|
}
|
|
313
299
|
} catch (err) {
|
|
314
|
-
|
|
315
|
-
_iteratorError3 = err;
|
|
300
|
+
_iterator3.e(err);
|
|
316
301
|
} finally {
|
|
317
|
-
|
|
318
|
-
if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) {
|
|
319
|
-
_iterator3["return"]();
|
|
320
|
-
}
|
|
321
|
-
} finally {
|
|
322
|
-
if (_didIteratorError3) {
|
|
323
|
-
throw _iteratorError3;
|
|
324
|
-
}
|
|
325
|
-
}
|
|
302
|
+
_iterator3.f();
|
|
326
303
|
}
|
|
327
304
|
}
|
|
328
305
|
|
|
@@ -24,9 +24,7 @@ var _require2 = require('../store/RelayStoreUtils'),
|
|
|
24
24
|
* A helper class for manipulating a given record from a record source via an
|
|
25
25
|
* imperative/OO-style API.
|
|
26
26
|
*/
|
|
27
|
-
var RelayRecordProxy =
|
|
28
|
-
/*#__PURE__*/
|
|
29
|
-
function () {
|
|
27
|
+
var RelayRecordProxy = /*#__PURE__*/function () {
|
|
30
28
|
function RelayRecordProxy(source, mutator, dataID) {
|
|
31
29
|
this._dataID = dataID;
|
|
32
30
|
this._mutator = mutator;
|
|
@@ -29,13 +29,10 @@ var _require = require('../store/RelayRecordState'),
|
|
|
29
29
|
* - Modifications cause a fresh version of a record to be created in `sink`.
|
|
30
30
|
* These sink records contain only modified fields.
|
|
31
31
|
*/
|
|
32
|
-
var RelayRecordSourceMutator =
|
|
33
|
-
|
|
34
|
-
function () {
|
|
35
|
-
function RelayRecordSourceMutator(base, sink, connectionEvents) {
|
|
32
|
+
var RelayRecordSourceMutator = /*#__PURE__*/function () {
|
|
33
|
+
function RelayRecordSourceMutator(base, sink) {
|
|
36
34
|
this.__sources = [sink, base];
|
|
37
35
|
this._base = base;
|
|
38
|
-
this._connectionEvents = connectionEvents;
|
|
39
36
|
this._sink = sink;
|
|
40
37
|
}
|
|
41
38
|
/**
|
|
@@ -223,10 +220,6 @@ function () {
|
|
|
223
220
|
RelayModernRecord.setLinkedRecordIDs(sinkRecord, storageKey, linkedIDs);
|
|
224
221
|
};
|
|
225
222
|
|
|
226
|
-
_proto.appendConnectionEvent_UNSTABLE = function appendConnectionEvent_UNSTABLE(event) {
|
|
227
|
-
this._connectionEvents.push(event);
|
|
228
|
-
};
|
|
229
|
-
|
|
230
223
|
return RelayRecordSourceMutator;
|
|
231
224
|
}();
|
|
232
225
|
|
|
@@ -29,9 +29,7 @@ var _require2 = require('../store/RelayStoreUtils'),
|
|
|
29
29
|
*
|
|
30
30
|
* A helper for manipulating a `RecordSource` via an imperative/OO-style API.
|
|
31
31
|
*/
|
|
32
|
-
var RelayRecordSourceProxy =
|
|
33
|
-
/*#__PURE__*/
|
|
34
|
-
function () {
|
|
32
|
+
var RelayRecordSourceProxy = /*#__PURE__*/function () {
|
|
35
33
|
function RelayRecordSourceProxy(mutator, getDataID, handlerProvider) {
|
|
36
34
|
this.__mutator = mutator;
|
|
37
35
|
this._handlerProvider = handlerProvider || null;
|
|
@@ -113,7 +111,7 @@ function () {
|
|
|
113
111
|
root = this.create(ROOT_ID, ROOT_TYPE);
|
|
114
112
|
}
|
|
115
113
|
|
|
116
|
-
!(root && root.getType() === ROOT_TYPE) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayRecordSourceProxy#getRoot(): Expected the source to contain a ' + 'root record.') : invariant(false) : void 0;
|
|
114
|
+
!(root && root.getType() === ROOT_TYPE) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayRecordSourceProxy#getRoot(): Expected the source to contain a ' + 'root record, %s.', root == null ? 'no root record found' : "found a root record of type `".concat(root.getType(), "`")) : invariant(false) : void 0;
|
|
117
115
|
return root;
|
|
118
116
|
};
|
|
119
117
|
|
|
@@ -24,9 +24,7 @@ var _require = require('../store/RelayStoreUtils'),
|
|
|
24
24
|
* complex arguments and it can be tedious to re-construct the correct sets of
|
|
25
25
|
* arguments to pass to e.g. `getRoot().getLinkedRecord()`.
|
|
26
26
|
*/
|
|
27
|
-
var RelayRecordSourceSelectorProxy =
|
|
28
|
-
/*#__PURE__*/
|
|
29
|
-
function () {
|
|
27
|
+
var RelayRecordSourceSelectorProxy = /*#__PURE__*/function () {
|
|
30
28
|
function RelayRecordSourceSelectorProxy(mutator, recordSource, readSelector) {
|
|
31
29
|
this.__mutator = mutator;
|
|
32
30
|
this.__recordSource = recordSource;
|
|
@@ -84,16 +82,6 @@ function () {
|
|
|
84
82
|
return this.getOperationRoot().getLinkedRecords(storageKey);
|
|
85
83
|
};
|
|
86
84
|
|
|
87
|
-
_proto.insertConnectionEdge_UNSTABLE = function insertConnectionEdge_UNSTABLE(connectionID, args, edge) {
|
|
88
|
-
this.__mutator.appendConnectionEvent_UNSTABLE({
|
|
89
|
-
kind: 'insert',
|
|
90
|
-
args: args,
|
|
91
|
-
connectionID: connectionID,
|
|
92
|
-
edgeID: edge.getDataID(),
|
|
93
|
-
request: this._readSelector.owner
|
|
94
|
-
});
|
|
95
|
-
};
|
|
96
|
-
|
|
97
85
|
_proto.invalidateStore = function invalidateStore() {
|
|
98
86
|
this.__recordSource.invalidateStore();
|
|
99
87
|
};
|
|
@@ -55,11 +55,12 @@ function commitMutation(environment, config) {
|
|
|
55
55
|
optimisticUpdater = config.optimisticUpdater,
|
|
56
56
|
updater = config.updater;
|
|
57
57
|
var configs = config.configs,
|
|
58
|
+
cacheConfig = config.cacheConfig,
|
|
58
59
|
onError = config.onError,
|
|
59
60
|
onUnsubscribe = config.onUnsubscribe,
|
|
60
61
|
variables = config.variables,
|
|
61
62
|
uploadables = config.uploadables;
|
|
62
|
-
var operation = createOperationDescriptor(mutation, variables,
|
|
63
|
+
var operation = createOperationDescriptor(mutation, variables, generateUniqueClientID()); // TODO: remove this check after we fix flow.
|
|
63
64
|
|
|
64
65
|
if (typeof optimisticResponse === 'function') {
|
|
65
66
|
optimisticResponse = optimisticResponse();
|
|
@@ -81,6 +82,7 @@ function commitMutation(environment, config) {
|
|
|
81
82
|
|
|
82
83
|
var errors = [];
|
|
83
84
|
var subscription = environment.executeMutation({
|
|
85
|
+
cacheConfig: cacheConfig,
|
|
84
86
|
operation: operation,
|
|
85
87
|
optimisticResponse: optimisticResponse,
|
|
86
88
|
optimisticUpdater: optimisticUpdater,
|
|
@@ -88,8 +90,16 @@ function commitMutation(environment, config) {
|
|
|
88
90
|
uploadables: uploadables
|
|
89
91
|
}).subscribe({
|
|
90
92
|
next: function next(payload) {
|
|
91
|
-
if (payload
|
|
92
|
-
|
|
93
|
+
if (Array.isArray(payload)) {
|
|
94
|
+
payload.forEach(function (item) {
|
|
95
|
+
if (item.errors) {
|
|
96
|
+
errors.push.apply(errors, (0, _toConsumableArray2["default"])(item.errors));
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
} else {
|
|
100
|
+
if (payload.errors) {
|
|
101
|
+
errors.push.apply(errors, (0, _toConsumableArray2["default"])(payload.errors));
|
|
102
|
+
}
|
|
93
103
|
}
|
|
94
104
|
},
|
|
95
105
|
complete: function complete() {
|
|
@@ -12,7 +12,11 @@
|
|
|
12
12
|
|
|
13
13
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
14
14
|
|
|
15
|
-
var
|
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
+
|
|
17
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
18
|
+
|
|
19
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
16
20
|
|
|
17
21
|
var warning = require("fbjs/lib/warning");
|
|
18
22
|
|
|
@@ -67,8 +71,9 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
67
71
|
|
|
68
72
|
case 'InlineFragment':
|
|
69
73
|
var type = selection.type;
|
|
74
|
+
var isConcreteType = selection.abstractKey == null;
|
|
70
75
|
selection.selections.forEach(function (subselection) {
|
|
71
|
-
if (optimisticResponse.__typename !== type) {
|
|
76
|
+
if (isConcreteType && optimisticResponse.__typename !== type) {
|
|
72
77
|
return;
|
|
73
78
|
}
|
|
74
79
|
|
|
@@ -76,16 +81,18 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
76
81
|
});
|
|
77
82
|
return;
|
|
78
83
|
|
|
79
|
-
case 'Connection':
|
|
80
|
-
validateSelections(optimisticResponse, [selection.edges, selection.pageInfo], context);
|
|
81
|
-
break;
|
|
82
|
-
|
|
83
84
|
case 'ClientExtension':
|
|
85
|
+
selection.selections.forEach(function (subselection) {
|
|
86
|
+
validateSelection(optimisticResponse, subselection, context);
|
|
87
|
+
});
|
|
88
|
+
return;
|
|
89
|
+
|
|
84
90
|
case 'ModuleImport':
|
|
85
91
|
case 'LinkedHandle':
|
|
86
92
|
case 'ScalarHandle':
|
|
87
93
|
case 'Defer':
|
|
88
94
|
case 'Stream':
|
|
95
|
+
case 'TypeDiscriminator':
|
|
89
96
|
{
|
|
90
97
|
// TODO(T35864292) - Add missing validations for these types
|
|
91
98
|
return;
|
|
@@ -121,7 +128,7 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
121
128
|
if (Array.isArray(optimisticResponse[fieldName])) {
|
|
122
129
|
optimisticResponse[fieldName].forEach(function (r) {
|
|
123
130
|
if (r !== null) {
|
|
124
|
-
validateSelections(r, selections, (
|
|
131
|
+
validateSelections(r, selections, _objectSpread({}, context, {
|
|
125
132
|
path: path
|
|
126
133
|
}));
|
|
127
134
|
}
|
|
@@ -133,7 +140,7 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
133
140
|
}
|
|
134
141
|
} else {
|
|
135
142
|
if (optimisticResponse[fieldName] instanceof Object) {
|
|
136
|
-
validateSelections(optimisticResponse[fieldName], selections, (
|
|
143
|
+
validateSelections(optimisticResponse[fieldName], selections, _objectSpread({}, context, {
|
|
137
144
|
path: path
|
|
138
145
|
}));
|
|
139
146
|
return;
|
|
@@ -166,7 +173,7 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
166
173
|
}
|
|
167
174
|
|
|
168
175
|
if (value instanceof Object) {
|
|
169
|
-
validateOptimisticResponse(value, (
|
|
176
|
+
validateOptimisticResponse(value, _objectSpread({}, context, {
|
|
170
177
|
path: path
|
|
171
178
|
}));
|
|
172
179
|
}
|
|
@@ -30,9 +30,7 @@ var hostReportError = swallowError;
|
|
|
30
30
|
* ESObservable: https://github.com/tc39/proposal-observable
|
|
31
31
|
*/
|
|
32
32
|
|
|
33
|
-
var RelayObservable =
|
|
34
|
-
/*#__PURE__*/
|
|
35
|
-
function () {
|
|
33
|
+
var RelayObservable = /*#__PURE__*/function () {
|
|
36
34
|
RelayObservable.create = function create(source) {
|
|
37
35
|
return new RelayObservable(source);
|
|
38
36
|
} // Use RelayObservable.create()
|
|
@@ -408,6 +406,9 @@ function () {
|
|
|
408
406
|
/**
|
|
409
407
|
* Returns a Promise which resolves when this Observable yields a first value
|
|
410
408
|
* or when it completes with no value.
|
|
409
|
+
*
|
|
410
|
+
* NOTE: The source Observable is *NOT* canceled when the returned Promise
|
|
411
|
+
* resolves. The Observable is always run to completion.
|
|
411
412
|
*/
|
|
412
413
|
;
|
|
413
414
|
|
|
@@ -415,15 +416,14 @@ function () {
|
|
|
415
416
|
var _this9 = this;
|
|
416
417
|
|
|
417
418
|
return new Promise(function (resolve, reject) {
|
|
418
|
-
var
|
|
419
|
+
var resolved = false;
|
|
419
420
|
|
|
420
421
|
_this9.subscribe({
|
|
421
|
-
start: function start(sub) {
|
|
422
|
-
subscription = sub;
|
|
423
|
-
},
|
|
424
422
|
next: function next(val) {
|
|
425
|
-
|
|
426
|
-
|
|
423
|
+
if (!resolved) {
|
|
424
|
+
resolved = true;
|
|
425
|
+
resolve(val);
|
|
426
|
+
}
|
|
427
427
|
},
|
|
428
428
|
error: reject,
|
|
429
429
|
complete: resolve
|
|
@@ -12,7 +12,11 @@
|
|
|
12
12
|
|
|
13
13
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
14
14
|
|
|
15
|
-
var
|
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
+
|
|
17
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
18
|
+
|
|
19
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
16
20
|
|
|
17
21
|
var invariant = require("fbjs/lib/invariant");
|
|
18
22
|
|
|
@@ -23,9 +27,7 @@ var stableCopy = require('../util/stableCopy');
|
|
|
23
27
|
* - `get` with TTL
|
|
24
28
|
* - cache size limiting, with least-recently *updated* entries purged first
|
|
25
29
|
*/
|
|
26
|
-
var RelayQueryResponseCache =
|
|
27
|
-
/*#__PURE__*/
|
|
28
|
-
function () {
|
|
30
|
+
var RelayQueryResponseCache = /*#__PURE__*/function () {
|
|
29
31
|
function RelayQueryResponseCache(_ref) {
|
|
30
32
|
var size = _ref.size,
|
|
31
33
|
ttl = _ref.ttl;
|
|
@@ -55,8 +57,8 @@ function () {
|
|
|
55
57
|
|
|
56
58
|
var response = this._responses.get(cacheKey);
|
|
57
59
|
|
|
58
|
-
return response != null ? (
|
|
59
|
-
extensions: (
|
|
60
|
+
return response != null ? _objectSpread({}, response.payload, {
|
|
61
|
+
extensions: _objectSpread({}, response.payload.extensions, {
|
|
60
62
|
cacheTimestamp: response.fetchTime
|
|
61
63
|
})
|
|
62
64
|
}) : null;
|