relay-runtime 7.0.0 → 9.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 +34 -0
- package/handlers/connection/ConnectionHandler.js.flow +549 -0
- package/handlers/connection/ConnectionInterface.js.flow +92 -0
- package/index.js +1 -1
- package/index.js.flow +314 -0
- package/lib/handlers/RelayDefaultHandlerProvider.js +3 -2
- package/lib/handlers/connection/{RelayConnectionHandler.js → ConnectionHandler.js} +34 -35
- package/lib/handlers/connection/{RelayConnectionInterface.js → ConnectionInterface.js} +3 -30
- package/lib/index.js +29 -27
- package/lib/mutations/RelayDeclarativeMutationConfig.js +30 -52
- package/lib/mutations/RelayRecordProxy.js +6 -3
- package/lib/mutations/RelayRecordSourceMutator.js +3 -9
- package/lib/mutations/RelayRecordSourceProxy.js +21 -24
- package/lib/mutations/RelayRecordSourceSelectorProxy.js +18 -14
- package/lib/mutations/applyOptimisticMutation.js +2 -1
- package/lib/mutations/commitLocalUpdate.js +1 -0
- package/lib/mutations/commitMutation.js +26 -8
- package/lib/mutations/validateMutation.js +21 -11
- package/lib/network/ConvertToExecuteFunction.js +1 -0
- package/lib/network/RelayNetwork.js +1 -0
- package/lib/network/RelayNetworkTypes.js +1 -0
- package/lib/network/RelayObservable.js +10 -9
- package/lib/network/RelayQueryResponseCache.js +9 -7
- package/lib/query/{RelayModernGraphQLTag.js → GraphQLTag.js} +15 -8
- package/lib/query/fetchQuery.js +2 -1
- package/lib/query/fetchQueryInternal.js +30 -20
- package/lib/store/ClientID.js +1 -0
- package/lib/store/DataChecker.js +47 -97
- package/lib/store/RelayConcreteVariables.js +7 -2
- package/lib/store/RelayModernEnvironment.js +82 -41
- package/lib/store/RelayModernFragmentSpecResolver.js +61 -21
- package/lib/store/RelayModernOperationDescriptor.js +2 -1
- package/lib/store/RelayModernQueryExecutor.js +476 -333
- package/lib/store/RelayModernRecord.js +39 -9
- package/lib/store/RelayModernSelector.js +2 -1
- package/lib/store/RelayModernStore.js +359 -371
- package/lib/store/RelayOperationTracker.js +36 -78
- package/lib/store/RelayOptimisticRecordSource.js +8 -5
- package/lib/store/RelayPublishQueue.js +66 -53
- package/lib/store/RelayReader.js +2 -24
- package/lib/store/RelayRecordSource.js +3 -9
- package/lib/store/RelayRecordSourceMapImpl.js +14 -18
- package/lib/store/RelayRecordState.js +1 -0
- package/lib/store/RelayReferenceMarker.js +8 -58
- package/lib/store/RelayResponseNormalizer.js +15 -144
- package/lib/store/RelayStoreTypes.js +1 -0
- package/lib/store/RelayStoreUtils.js +34 -10
- package/lib/store/StoreInspector.js +11 -5
- package/lib/store/ViewerPattern.js +1 -0
- package/lib/store/cloneRelayHandleSourceField.js +1 -0
- package/lib/store/createFragmentSpecResolver.js +1 -0
- package/lib/store/createRelayContext.js +1 -0
- package/lib/store/defaultGetDataID.js +1 -0
- package/lib/store/hasOverlappingIDs.js +1 -0
- package/lib/store/isRelayModernEnvironment.js +1 -0
- package/lib/store/normalizeRelayPayload.js +8 -4
- package/lib/store/readInlineData.js +2 -1
- package/lib/subscription/requestSubscription.js +6 -3
- package/lib/util/JSResourceTypes.flow.js +12 -0
- package/lib/util/NormalizationNode.js +1 -0
- package/lib/util/ReaderNode.js +1 -0
- package/lib/util/RelayConcreteNode.js +3 -0
- package/lib/util/RelayDefaultHandleKey.js +1 -0
- package/lib/util/RelayError.js +2 -1
- package/lib/util/RelayFeatureFlags.js +3 -2
- package/lib/util/RelayProfiler.js +1 -0
- package/lib/util/RelayReplaySubject.js +2 -3
- package/lib/util/RelayRuntimeTypes.js +1 -0
- package/lib/util/createPayloadFor3DField.js +34 -0
- package/lib/util/deepFreeze.js +1 -0
- package/lib/util/generateID.js +1 -0
- package/lib/util/getFragmentIdentifier.js +1 -0
- package/lib/util/getRelayHandleKey.js +1 -0
- package/lib/util/getRequestIdentifier.js +1 -0
- package/lib/util/isPromise.js +1 -0
- package/lib/util/isScalarAndEqual.js +1 -0
- package/lib/util/recycleNodesInto.js +1 -0
- package/lib/util/resolveImmediate.js +1 -0
- package/lib/util/stableCopy.js +1 -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 +184 -0
- package/mutations/validateMutation.js.flow +211 -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/fetchQuery.js.flow +47 -0
- package/query/fetchQueryInternal.js.flow +349 -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 +426 -0
- package/store/RelayConcreteVariables.js.flow +96 -0
- package/store/RelayModernEnvironment.js.flow +526 -0
- package/store/RelayModernFragmentSpecResolver.js.flow +426 -0
- package/store/RelayModernOperationDescriptor.js.flow +88 -0
- package/store/RelayModernQueryExecutor.js.flow +1327 -0
- package/store/RelayModernRecord.js.flow +403 -0
- package/store/RelayModernSelector.js.flow +444 -0
- package/store/RelayModernStore.js.flow +757 -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 +376 -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 +236 -0
- package/store/RelayResponseNormalizer.js.flow +556 -0
- package/store/RelayStoreTypes.js.flow +873 -0
- package/store/RelayStoreUtils.js.flow +218 -0
- package/store/StoreInspector.js.flow +173 -0
- package/store/ViewerPattern.js.flow +26 -0
- package/store/cloneRelayHandleSourceField.js.flow +66 -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 +191 -0
- package/util/ReaderNode.js.flow +208 -0
- package/util/RelayConcreteNode.js.flow +80 -0
- package/util/RelayDefaultHandleKey.js.flow +17 -0
- package/util/RelayError.js.flow +33 -0
- package/util/RelayFeatureFlags.js.flow +30 -0
- package/util/RelayProfiler.js.flow +284 -0
- package/util/RelayReplaySubject.js.flow +134 -0
- package/util/RelayRuntimeTypes.js.flow +70 -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 +41 -0
- package/util/isPromise.js.flow +21 -0
- package/util/isScalarAndEqual.js.flow +26 -0
- package/util/recycleNodesInto.js.flow +80 -0
- package/util/resolveImmediate.js.flow +30 -0
- package/util/stableCopy.js.flow +35 -0
- package/lib/handlers/RelayDefaultMissingFieldHandlers.js +0 -26
- package/lib/store/RelayConnection.js +0 -36
- package/lib/store/RelayConnectionResolver.js +0 -177
- package/lib/store/RelayRecordSourceObjectImpl.js +0 -78
- package/lib/util/getFragmentSpecIdentifier.js +0 -26
package/lib/index.js
CHANGED
|
@@ -7,17 +7,18 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
|
+
// flowlint ambiguous-object-type:error
|
|
10
11
|
'use strict';
|
|
11
12
|
|
|
12
|
-
var
|
|
13
|
+
var ConnectionHandler = require('./handlers/connection/ConnectionHandler');
|
|
13
14
|
|
|
14
|
-
var
|
|
15
|
+
var ConnectionInterface = require('./handlers/connection/ConnectionInterface');
|
|
15
16
|
|
|
16
|
-
var
|
|
17
|
+
var GraphQLTag = require('./query/GraphQLTag');
|
|
17
18
|
|
|
18
|
-
var
|
|
19
|
+
var RelayConcreteNode = require('./util/RelayConcreteNode');
|
|
19
20
|
|
|
20
|
-
var
|
|
21
|
+
var RelayConcreteVariables = require('./store/RelayConcreteVariables');
|
|
21
22
|
|
|
22
23
|
var RelayDeclarativeMutationConfig = require('./mutations/RelayDeclarativeMutationConfig');
|
|
23
24
|
|
|
@@ -25,16 +26,12 @@ var RelayDefaultHandleKey = require('./util/RelayDefaultHandleKey');
|
|
|
25
26
|
|
|
26
27
|
var RelayDefaultHandlerProvider = require('./handlers/RelayDefaultHandlerProvider');
|
|
27
28
|
|
|
28
|
-
var RelayDefaultMissingFieldHandlers = require('./handlers/RelayDefaultMissingFieldHandlers');
|
|
29
|
-
|
|
30
29
|
var RelayError = require('./util/RelayError');
|
|
31
30
|
|
|
32
31
|
var RelayFeatureFlags = require('./util/RelayFeatureFlags');
|
|
33
32
|
|
|
34
33
|
var RelayModernEnvironment = require('./store/RelayModernEnvironment');
|
|
35
34
|
|
|
36
|
-
var RelayModernGraphQLTag = require('./query/RelayModernGraphQLTag');
|
|
37
|
-
|
|
38
35
|
var RelayModernOperationDescriptor = require('./store/RelayModernOperationDescriptor');
|
|
39
36
|
|
|
40
37
|
var RelayModernRecord = require('./store/RelayModernRecord');
|
|
@@ -55,6 +52,8 @@ var RelayQueryResponseCache = require('./network/RelayQueryResponseCache');
|
|
|
55
52
|
|
|
56
53
|
var RelayRecordSource = require('./store/RelayRecordSource');
|
|
57
54
|
|
|
55
|
+
var RelayReplaySubject = require('./util/RelayReplaySubject');
|
|
56
|
+
|
|
58
57
|
var RelayStoreUtils = require('./store/RelayStoreUtils');
|
|
59
58
|
|
|
60
59
|
var ViewerPattern = require('./store/ViewerPattern');
|
|
@@ -67,6 +66,8 @@ var commitMutation = require('./mutations/commitMutation');
|
|
|
67
66
|
|
|
68
67
|
var createFragmentSpecResolver = require('./store/createFragmentSpecResolver');
|
|
69
68
|
|
|
69
|
+
var createPayloadFor3DField = require('./util/createPayloadFor3DField');
|
|
70
|
+
|
|
70
71
|
var createRelayContext = require('./store/createRelayContext');
|
|
71
72
|
|
|
72
73
|
var deepFreeze = require('./util/deepFreeze');
|
|
@@ -77,10 +78,10 @@ var fetchQueryInternal = require('./query/fetchQueryInternal');
|
|
|
77
78
|
|
|
78
79
|
var getFragmentIdentifier = require('./util/getFragmentIdentifier');
|
|
79
80
|
|
|
80
|
-
var getFragmentSpecIdentifier = require('./util/getFragmentSpecIdentifier');
|
|
81
|
-
|
|
82
81
|
var getRelayHandleKey = require('./util/getRelayHandleKey');
|
|
83
82
|
|
|
83
|
+
var getRequestIdentifier = require('./util/getRequestIdentifier');
|
|
84
|
+
|
|
84
85
|
var isPromise = require('./util/isPromise');
|
|
85
86
|
|
|
86
87
|
var isRelayModernEnvironment = require('./store/isRelayModernEnvironment');
|
|
@@ -97,7 +98,8 @@ var stableCopy = require('./util/stableCopy');
|
|
|
97
98
|
|
|
98
99
|
var _require = require('./store/ClientID'),
|
|
99
100
|
generateClientID = _require.generateClientID,
|
|
100
|
-
generateUniqueClientID = _require.generateUniqueClientID
|
|
101
|
+
generateUniqueClientID = _require.generateUniqueClientID,
|
|
102
|
+
isClientID = _require.isClientID;
|
|
101
103
|
|
|
102
104
|
// As early as possible, check for the existence of the JavaScript globals which
|
|
103
105
|
// Relay Runtime relies upon, and produce a clear message if they do not exist.
|
|
@@ -124,6 +126,7 @@ module.exports = {
|
|
|
124
126
|
QueryResponseCache: RelayQueryResponseCache,
|
|
125
127
|
RecordSource: RelayRecordSource,
|
|
126
128
|
Record: RelayModernRecord,
|
|
129
|
+
ReplaySubject: RelayReplaySubject,
|
|
127
130
|
Store: RelayModernStore,
|
|
128
131
|
areEqualSelectors: RelayModernSelector.areEqualSelectors,
|
|
129
132
|
createFragmentSpecResolver: createFragmentSpecResolver,
|
|
@@ -133,14 +136,15 @@ module.exports = {
|
|
|
133
136
|
createRequestDescriptor: RelayModernOperationDescriptor.createRequestDescriptor,
|
|
134
137
|
getDataIDsFromFragment: RelayModernSelector.getDataIDsFromFragment,
|
|
135
138
|
getDataIDsFromObject: RelayModernSelector.getDataIDsFromObject,
|
|
136
|
-
getFragment:
|
|
137
|
-
getInlineDataFragment:
|
|
139
|
+
getFragment: GraphQLTag.getFragment,
|
|
140
|
+
getInlineDataFragment: GraphQLTag.getInlineDataFragment,
|
|
138
141
|
getModuleComponentKey: RelayStoreUtils.getModuleComponentKey,
|
|
139
142
|
getModuleOperationKey: RelayStoreUtils.getModuleOperationKey,
|
|
140
|
-
getPaginationFragment:
|
|
143
|
+
getPaginationFragment: GraphQLTag.getPaginationFragment,
|
|
141
144
|
getPluralSelector: RelayModernSelector.getPluralSelector,
|
|
142
|
-
getRefetchableFragment:
|
|
143
|
-
getRequest:
|
|
145
|
+
getRefetchableFragment: GraphQLTag.getRefetchableFragment,
|
|
146
|
+
getRequest: GraphQLTag.getRequest,
|
|
147
|
+
getRequestIdentifier: getRequestIdentifier,
|
|
144
148
|
getSelector: RelayModernSelector.getSelector,
|
|
145
149
|
getSelectorsFromObject: RelayModernSelector.getSelectorsFromObject,
|
|
146
150
|
getSingularSelector: RelayModernSelector.getSingularSelector,
|
|
@@ -149,16 +153,14 @@ module.exports = {
|
|
|
149
153
|
getVariablesFromObject: RelayModernSelector.getVariablesFromObject,
|
|
150
154
|
getVariablesFromPluralFragment: RelayModernSelector.getVariablesFromPluralFragment,
|
|
151
155
|
getVariablesFromSingularFragment: RelayModernSelector.getVariablesFromSingularFragment,
|
|
152
|
-
graphql:
|
|
156
|
+
graphql: GraphQLTag.graphql,
|
|
153
157
|
readInlineData: readInlineData,
|
|
154
158
|
// Declarative mutation API
|
|
155
159
|
MutationTypes: RelayDeclarativeMutationConfig.MutationTypes,
|
|
156
160
|
RangeOperations: RelayDeclarativeMutationConfig.RangeOperations,
|
|
157
161
|
// Extensions
|
|
158
162
|
DefaultHandlerProvider: RelayDefaultHandlerProvider,
|
|
159
|
-
|
|
160
|
-
ConnectionHandler: RelayConnectionHandler,
|
|
161
|
-
ConnectionResolver_UNSTABLE: RelayConnectionResolver,
|
|
163
|
+
ConnectionHandler: ConnectionHandler,
|
|
162
164
|
VIEWER_ID: ViewerPattern.VIEWER_ID,
|
|
163
165
|
VIEWER_TYPE: ViewerPattern.VIEWER_TYPE,
|
|
164
166
|
// Helpers (can be implemented via the above API)
|
|
@@ -169,9 +171,10 @@ module.exports = {
|
|
|
169
171
|
isRelayModernEnvironment: isRelayModernEnvironment,
|
|
170
172
|
requestSubscription: requestSubscription,
|
|
171
173
|
// Configuration interface for legacy or special uses
|
|
172
|
-
ConnectionInterface:
|
|
174
|
+
ConnectionInterface: ConnectionInterface,
|
|
173
175
|
// Utilities
|
|
174
176
|
RelayProfiler: RelayProfiler,
|
|
177
|
+
createPayloadFor3DField: createPayloadFor3DField,
|
|
175
178
|
// INTERNAL-ONLY: These exports might be removed at any point.
|
|
176
179
|
RelayConcreteNode: RelayConcreteNode,
|
|
177
180
|
RelayError: RelayError,
|
|
@@ -189,20 +192,19 @@ module.exports = {
|
|
|
189
192
|
generateClientID: generateClientID,
|
|
190
193
|
generateUniqueClientID: generateUniqueClientID,
|
|
191
194
|
getRelayHandleKey: getRelayHandleKey,
|
|
195
|
+
isClientID: isClientID,
|
|
192
196
|
isPromise: isPromise,
|
|
193
197
|
isScalarAndEqual: isScalarAndEqual,
|
|
194
198
|
recycleNodesInto: recycleNodesInto,
|
|
195
199
|
stableCopy: stableCopy,
|
|
196
200
|
getFragmentIdentifier: getFragmentIdentifier,
|
|
197
|
-
getFragmentSpecIdentifier: getFragmentSpecIdentifier,
|
|
198
201
|
__internal: {
|
|
199
202
|
OperationTracker: RelayOperationTracker,
|
|
200
203
|
createRelayContext: createRelayContext,
|
|
201
|
-
|
|
204
|
+
getOperationVariables: RelayConcreteVariables.getOperationVariables,
|
|
202
205
|
fetchQuery: fetchQueryInternal.fetchQuery,
|
|
203
206
|
fetchQueryDeduped: fetchQueryInternal.fetchQueryDeduped,
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
hasRequestInFlight: fetchQueryInternal.hasRequestInFlight
|
|
207
|
+
getPromiseForActiveRequest: fetchQueryInternal.getPromiseForActiveRequest,
|
|
208
|
+
getObservableForActiveRequest: fetchQueryInternal.getObservableForActiveRequest
|
|
207
209
|
}
|
|
208
210
|
};
|
|
@@ -7,9 +7,16 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
|
+
// flowlint ambiguous-object-type:error
|
|
10
11
|
'use strict';
|
|
11
12
|
|
|
12
|
-
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');
|
|
13
20
|
|
|
14
21
|
var warning = require("fbjs/lib/warning");
|
|
15
22
|
|
|
@@ -128,25 +135,25 @@ function rangeAdd(config, request) {
|
|
|
128
135
|
}
|
|
129
136
|
|
|
130
137
|
var serverEdge = payload.getLinkedRecord(edgeName);
|
|
131
|
-
|
|
132
|
-
var
|
|
133
|
-
|
|
138
|
+
|
|
139
|
+
var _iterator = _createForOfIteratorHelper(connectionInfo),
|
|
140
|
+
_step;
|
|
134
141
|
|
|
135
142
|
try {
|
|
136
|
-
for (
|
|
143
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
137
144
|
var info = _step.value;
|
|
138
145
|
|
|
139
146
|
if (!serverEdge) {
|
|
140
147
|
continue;
|
|
141
148
|
}
|
|
142
149
|
|
|
143
|
-
var connection =
|
|
150
|
+
var connection = ConnectionHandler.getConnection(parent, info.key, info.filters);
|
|
144
151
|
|
|
145
152
|
if (!connection) {
|
|
146
153
|
continue;
|
|
147
154
|
}
|
|
148
155
|
|
|
149
|
-
var clientEdge =
|
|
156
|
+
var clientEdge = ConnectionHandler.buildConnectionEdge(store, connection, serverEdge);
|
|
150
157
|
|
|
151
158
|
if (!clientEdge) {
|
|
152
159
|
continue;
|
|
@@ -154,11 +161,11 @@ function rangeAdd(config, request) {
|
|
|
154
161
|
|
|
155
162
|
switch (info.rangeBehavior) {
|
|
156
163
|
case 'append':
|
|
157
|
-
|
|
164
|
+
ConnectionHandler.insertEdgeAfter(connection, clientEdge);
|
|
158
165
|
break;
|
|
159
166
|
|
|
160
167
|
case 'prepend':
|
|
161
|
-
|
|
168
|
+
ConnectionHandler.insertEdgeBefore(connection, clientEdge);
|
|
162
169
|
break;
|
|
163
170
|
|
|
164
171
|
default:
|
|
@@ -167,18 +174,9 @@ function rangeAdd(config, request) {
|
|
|
167
174
|
}
|
|
168
175
|
}
|
|
169
176
|
} catch (err) {
|
|
170
|
-
|
|
171
|
-
_iteratorError = err;
|
|
177
|
+
_iterator.e(err);
|
|
172
178
|
} finally {
|
|
173
|
-
|
|
174
|
-
if (!_iteratorNormalCompletion && _iterator["return"] != null) {
|
|
175
|
-
_iterator["return"]();
|
|
176
|
-
}
|
|
177
|
-
} finally {
|
|
178
|
-
if (_didIteratorError) {
|
|
179
|
-
throw _iteratorError;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
179
|
+
_iterator.f();
|
|
182
180
|
}
|
|
183
181
|
};
|
|
184
182
|
}
|
|
@@ -209,12 +207,11 @@ function rangeDelete(config, request) {
|
|
|
209
207
|
var deletedIDField = data[rootField];
|
|
210
208
|
|
|
211
209
|
if (deletedIDField && Array.isArray(deletedIDFieldName)) {
|
|
212
|
-
var
|
|
213
|
-
|
|
214
|
-
var _iteratorError2 = undefined;
|
|
210
|
+
var _iterator2 = _createForOfIteratorHelper(deletedIDFieldName),
|
|
211
|
+
_step2;
|
|
215
212
|
|
|
216
213
|
try {
|
|
217
|
-
for (
|
|
214
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
218
215
|
var eachField = _step2.value;
|
|
219
216
|
|
|
220
217
|
if (deletedIDField && typeof deletedIDField === 'object') {
|
|
@@ -222,18 +219,9 @@ function rangeDelete(config, request) {
|
|
|
222
219
|
}
|
|
223
220
|
}
|
|
224
221
|
} catch (err) {
|
|
225
|
-
|
|
226
|
-
_iteratorError2 = err;
|
|
222
|
+
_iterator2.e(err);
|
|
227
223
|
} finally {
|
|
228
|
-
|
|
229
|
-
if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) {
|
|
230
|
-
_iterator2["return"]();
|
|
231
|
-
}
|
|
232
|
-
} finally {
|
|
233
|
-
if (_didIteratorError2) {
|
|
234
|
-
throw _iteratorError2;
|
|
235
|
-
}
|
|
236
|
-
}
|
|
224
|
+
_iterator2.f();
|
|
237
225
|
}
|
|
238
226
|
|
|
239
227
|
if (Array.isArray(deletedIDField)) {
|
|
@@ -290,38 +278,28 @@ function deleteNode(parentID, connectionKeys, pathToConnection, store, deleteIDs
|
|
|
290
278
|
return;
|
|
291
279
|
}
|
|
292
280
|
|
|
293
|
-
var
|
|
294
|
-
|
|
295
|
-
var _iteratorError3 = undefined;
|
|
281
|
+
var _iterator3 = _createForOfIteratorHelper(connectionKeys),
|
|
282
|
+
_step3;
|
|
296
283
|
|
|
297
284
|
try {
|
|
298
285
|
var _loop = function _loop() {
|
|
299
286
|
var key = _step3.value;
|
|
300
|
-
var connection =
|
|
287
|
+
var connection = ConnectionHandler.getConnection(recordProxy, key.key, key.filters);
|
|
301
288
|
|
|
302
289
|
if (connection) {
|
|
303
290
|
deleteIDs.forEach(function (deleteID) {
|
|
304
|
-
|
|
291
|
+
ConnectionHandler.deleteNode(connection, deleteID);
|
|
305
292
|
});
|
|
306
293
|
}
|
|
307
294
|
};
|
|
308
295
|
|
|
309
|
-
for (
|
|
296
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
310
297
|
_loop();
|
|
311
298
|
}
|
|
312
299
|
} catch (err) {
|
|
313
|
-
|
|
314
|
-
_iteratorError3 = err;
|
|
300
|
+
_iterator3.e(err);
|
|
315
301
|
} finally {
|
|
316
|
-
|
|
317
|
-
if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) {
|
|
318
|
-
_iterator3["return"]();
|
|
319
|
-
}
|
|
320
|
-
} finally {
|
|
321
|
-
if (_didIteratorError3) {
|
|
322
|
-
throw _iteratorError3;
|
|
323
|
-
}
|
|
324
|
-
}
|
|
302
|
+
_iterator3.f();
|
|
325
303
|
}
|
|
326
304
|
}
|
|
327
305
|
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
|
+
// flowlint ambiguous-object-type:error
|
|
10
11
|
'use strict';
|
|
11
12
|
|
|
12
13
|
var invariant = require("fbjs/lib/invariant");
|
|
@@ -23,9 +24,7 @@ var _require2 = require('../store/RelayStoreUtils'),
|
|
|
23
24
|
* A helper class for manipulating a given record from a record source via an
|
|
24
25
|
* imperative/OO-style API.
|
|
25
26
|
*/
|
|
26
|
-
var RelayRecordProxy =
|
|
27
|
-
/*#__PURE__*/
|
|
28
|
-
function () {
|
|
27
|
+
var RelayRecordProxy = /*#__PURE__*/function () {
|
|
29
28
|
function RelayRecordProxy(source, mutator, dataID) {
|
|
30
29
|
this._dataID = dataID;
|
|
31
30
|
this._mutator = mutator;
|
|
@@ -126,6 +125,10 @@ function () {
|
|
|
126
125
|
return this;
|
|
127
126
|
};
|
|
128
127
|
|
|
128
|
+
_proto.invalidateRecord = function invalidateRecord() {
|
|
129
|
+
this._source.markIDForInvalidation(this._dataID);
|
|
130
|
+
};
|
|
131
|
+
|
|
129
132
|
return RelayRecordProxy;
|
|
130
133
|
}();
|
|
131
134
|
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
|
+
// flowlint ambiguous-object-type:error
|
|
10
11
|
'use strict';
|
|
11
12
|
|
|
12
13
|
var RelayModernRecord = require('../store/RelayModernRecord');
|
|
@@ -28,13 +29,10 @@ var _require = require('../store/RelayRecordState'),
|
|
|
28
29
|
* - Modifications cause a fresh version of a record to be created in `sink`.
|
|
29
30
|
* These sink records contain only modified fields.
|
|
30
31
|
*/
|
|
31
|
-
var RelayRecordSourceMutator =
|
|
32
|
-
|
|
33
|
-
function () {
|
|
34
|
-
function RelayRecordSourceMutator(base, sink, connectionEvents) {
|
|
32
|
+
var RelayRecordSourceMutator = /*#__PURE__*/function () {
|
|
33
|
+
function RelayRecordSourceMutator(base, sink) {
|
|
35
34
|
this.__sources = [sink, base];
|
|
36
35
|
this._base = base;
|
|
37
|
-
this._connectionEvents = connectionEvents;
|
|
38
36
|
this._sink = sink;
|
|
39
37
|
}
|
|
40
38
|
/**
|
|
@@ -222,10 +220,6 @@ function () {
|
|
|
222
220
|
RelayModernRecord.setLinkedRecordIDs(sinkRecord, storageKey, linkedIDs);
|
|
223
221
|
};
|
|
224
222
|
|
|
225
|
-
_proto.appendConnectionEvent_UNSTABLE = function appendConnectionEvent_UNSTABLE(event) {
|
|
226
|
-
this._connectionEvents.push(event);
|
|
227
|
-
};
|
|
228
|
-
|
|
229
223
|
return RelayRecordSourceMutator;
|
|
230
224
|
}();
|
|
231
225
|
|
|
@@ -7,18 +7,15 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
|
+
// flowlint ambiguous-object-type:error
|
|
10
11
|
'use strict';
|
|
11
12
|
|
|
12
13
|
var RelayModernRecord = require('../store/RelayModernRecord');
|
|
13
14
|
|
|
14
15
|
var RelayRecordProxy = require('./RelayRecordProxy');
|
|
15
16
|
|
|
16
|
-
var RelayRecordSourceSelectorProxy = require('./RelayRecordSourceSelectorProxy');
|
|
17
|
-
|
|
18
17
|
var invariant = require("fbjs/lib/invariant");
|
|
19
18
|
|
|
20
|
-
var normalizeRelayPayload = require('../store/normalizeRelayPayload');
|
|
21
|
-
|
|
22
19
|
var _require = require('../store/RelayRecordState'),
|
|
23
20
|
EXISTENT = _require.EXISTENT,
|
|
24
21
|
NONEXISTENT = _require.NONEXISTENT;
|
|
@@ -32,14 +29,14 @@ var _require2 = require('../store/RelayStoreUtils'),
|
|
|
32
29
|
*
|
|
33
30
|
* A helper for manipulating a `RecordSource` via an imperative/OO-style API.
|
|
34
31
|
*/
|
|
35
|
-
var RelayRecordSourceProxy =
|
|
36
|
-
/*#__PURE__*/
|
|
37
|
-
function () {
|
|
32
|
+
var RelayRecordSourceProxy = /*#__PURE__*/function () {
|
|
38
33
|
function RelayRecordSourceProxy(mutator, getDataID, handlerProvider) {
|
|
39
34
|
this.__mutator = mutator;
|
|
40
35
|
this._handlerProvider = handlerProvider || null;
|
|
41
36
|
this._proxies = {};
|
|
42
37
|
this._getDataID = getDataID;
|
|
38
|
+
this._invalidatedStore = false;
|
|
39
|
+
this._idsMarkedForInvalidation = new Set();
|
|
43
40
|
}
|
|
44
41
|
|
|
45
42
|
var _proto = RelayRecordSourceProxy.prototype;
|
|
@@ -76,22 +73,6 @@ function () {
|
|
|
76
73
|
}
|
|
77
74
|
};
|
|
78
75
|
|
|
79
|
-
_proto.commitPayload = function commitPayload(operation, response) {
|
|
80
|
-
if (!response) {
|
|
81
|
-
return new RelayRecordSourceSelectorProxy(this.__mutator, this, operation.fragment);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
var _normalizeRelayPayloa = normalizeRelayPayload(operation.root, response, null, {
|
|
85
|
-
getDataID: this._getDataID,
|
|
86
|
-
request: operation.request
|
|
87
|
-
}),
|
|
88
|
-
source = _normalizeRelayPayloa.source,
|
|
89
|
-
fieldPayloads = _normalizeRelayPayloa.fieldPayloads;
|
|
90
|
-
|
|
91
|
-
this.publishSource(source, fieldPayloads);
|
|
92
|
-
return new RelayRecordSourceSelectorProxy(this.__mutator, this, operation.fragment);
|
|
93
|
-
};
|
|
94
|
-
|
|
95
76
|
_proto.create = function create(dataID, typeName) {
|
|
96
77
|
this.__mutator.create(dataID, typeName);
|
|
97
78
|
|
|
@@ -130,10 +111,26 @@ function () {
|
|
|
130
111
|
root = this.create(ROOT_ID, ROOT_TYPE);
|
|
131
112
|
}
|
|
132
113
|
|
|
133
|
-
!(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;
|
|
134
115
|
return root;
|
|
135
116
|
};
|
|
136
117
|
|
|
118
|
+
_proto.invalidateStore = function invalidateStore() {
|
|
119
|
+
this._invalidatedStore = true;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
_proto.isStoreMarkedForInvalidation = function isStoreMarkedForInvalidation() {
|
|
123
|
+
return this._invalidatedStore;
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
_proto.markIDForInvalidation = function markIDForInvalidation(dataID) {
|
|
127
|
+
this._idsMarkedForInvalidation.add(dataID);
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
_proto.getIDsMarkedForInvalidation = function getIDsMarkedForInvalidation() {
|
|
131
|
+
return this._idsMarkedForInvalidation;
|
|
132
|
+
};
|
|
133
|
+
|
|
137
134
|
return RelayRecordSourceProxy;
|
|
138
135
|
}();
|
|
139
136
|
|
|
@@ -7,12 +7,14 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
|
+
// flowlint ambiguous-object-type:error
|
|
10
11
|
'use strict';
|
|
11
12
|
|
|
12
13
|
var invariant = require("fbjs/lib/invariant");
|
|
13
14
|
|
|
14
15
|
var _require = require('../store/RelayStoreUtils'),
|
|
15
|
-
getStorageKey = _require.getStorageKey
|
|
16
|
+
getStorageKey = _require.getStorageKey,
|
|
17
|
+
ROOT_TYPE = _require.ROOT_TYPE;
|
|
16
18
|
|
|
17
19
|
/**
|
|
18
20
|
* @internal
|
|
@@ -22,9 +24,7 @@ var _require = require('../store/RelayStoreUtils'),
|
|
|
22
24
|
* complex arguments and it can be tedious to re-construct the correct sets of
|
|
23
25
|
* arguments to pass to e.g. `getRoot().getLinkedRecord()`.
|
|
24
26
|
*/
|
|
25
|
-
var RelayRecordSourceSelectorProxy =
|
|
26
|
-
/*#__PURE__*/
|
|
27
|
-
function () {
|
|
27
|
+
var RelayRecordSourceSelectorProxy = /*#__PURE__*/function () {
|
|
28
28
|
function RelayRecordSourceSelectorProxy(mutator, recordSource, readSelector) {
|
|
29
29
|
this.__mutator = mutator;
|
|
30
30
|
this.__recordSource = recordSource;
|
|
@@ -49,6 +49,16 @@ function () {
|
|
|
49
49
|
return this.__recordSource.getRoot();
|
|
50
50
|
};
|
|
51
51
|
|
|
52
|
+
_proto.getOperationRoot = function getOperationRoot() {
|
|
53
|
+
var root = this.__recordSource.get(this._readSelector.dataID);
|
|
54
|
+
|
|
55
|
+
if (!root) {
|
|
56
|
+
root = this.__recordSource.create(this._readSelector.dataID, ROOT_TYPE);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return root;
|
|
60
|
+
};
|
|
61
|
+
|
|
52
62
|
_proto._getRootField = function _getRootField(selector, fieldName, plural) {
|
|
53
63
|
var field = selector.node.selections.find(function (selection) {
|
|
54
64
|
return selection.kind === 'LinkedField' && selection.name === fieldName;
|
|
@@ -62,24 +72,18 @@ function () {
|
|
|
62
72
|
var field = this._getRootField(this._readSelector, fieldName, false);
|
|
63
73
|
|
|
64
74
|
var storageKey = getStorageKey(field, this._readSelector.variables);
|
|
65
|
-
return this.
|
|
75
|
+
return this.getOperationRoot().getLinkedRecord(storageKey);
|
|
66
76
|
};
|
|
67
77
|
|
|
68
78
|
_proto.getPluralRootField = function getPluralRootField(fieldName) {
|
|
69
79
|
var field = this._getRootField(this._readSelector, fieldName, true);
|
|
70
80
|
|
|
71
81
|
var storageKey = getStorageKey(field, this._readSelector.variables);
|
|
72
|
-
return this.
|
|
82
|
+
return this.getOperationRoot().getLinkedRecords(storageKey);
|
|
73
83
|
};
|
|
74
84
|
|
|
75
|
-
_proto.
|
|
76
|
-
this.
|
|
77
|
-
kind: 'insert',
|
|
78
|
-
args: args,
|
|
79
|
-
connectionID: connectionID,
|
|
80
|
-
edgeID: edge.getDataID(),
|
|
81
|
-
request: this._readSelector.owner
|
|
82
|
-
});
|
|
85
|
+
_proto.invalidateStore = function invalidateStore() {
|
|
86
|
+
this.__recordSource.invalidateStore();
|
|
83
87
|
};
|
|
84
88
|
|
|
85
89
|
return RelayRecordSourceSelectorProxy;
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
|
+
// flowlint ambiguous-object-type:error
|
|
10
11
|
'use strict';
|
|
11
12
|
|
|
12
13
|
var RelayDeclarativeMutationConfig = require('./RelayDeclarativeMutationConfig');
|
|
@@ -15,7 +16,7 @@ var invariant = require("fbjs/lib/invariant");
|
|
|
15
16
|
|
|
16
17
|
var isRelayModernEnvironment = require('../store/isRelayModernEnvironment');
|
|
17
18
|
|
|
18
|
-
var _require = require('../query/
|
|
19
|
+
var _require = require('../query/GraphQLTag'),
|
|
19
20
|
getRequest = _require.getRequest;
|
|
20
21
|
|
|
21
22
|
var _require2 = require('../store/RelayModernOperationDescriptor'),
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
|
+
// flowlint ambiguous-object-type:error
|
|
10
11
|
'use strict';
|
|
11
12
|
|
|
12
13
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
@@ -15,6 +16,8 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
|
|
|
15
16
|
|
|
16
17
|
var RelayDeclarativeMutationConfig = require('./RelayDeclarativeMutationConfig');
|
|
17
18
|
|
|
19
|
+
var RelayFeatureFlags = require('../util/RelayFeatureFlags');
|
|
20
|
+
|
|
18
21
|
var invariant = require("fbjs/lib/invariant");
|
|
19
22
|
|
|
20
23
|
var isRelayModernEnvironment = require('../store/isRelayModernEnvironment');
|
|
@@ -23,11 +26,14 @@ var validateMutation = require('./validateMutation');
|
|
|
23
26
|
|
|
24
27
|
var warning = require("fbjs/lib/warning");
|
|
25
28
|
|
|
26
|
-
var _require = require('../query/
|
|
29
|
+
var _require = require('../query/GraphQLTag'),
|
|
27
30
|
getRequest = _require.getRequest;
|
|
28
31
|
|
|
29
|
-
var _require2 = require('../store/
|
|
30
|
-
|
|
32
|
+
var _require2 = require('../store/ClientID'),
|
|
33
|
+
generateUniqueClientID = _require2.generateUniqueClientID;
|
|
34
|
+
|
|
35
|
+
var _require3 = require('../store/RelayModernOperationDescriptor'),
|
|
36
|
+
createOperationDescriptor = _require3.createOperationDescriptor;
|
|
31
37
|
|
|
32
38
|
/**
|
|
33
39
|
* Higher-level helper function to execute a mutation against a specific
|
|
@@ -49,10 +55,12 @@ function commitMutation(environment, config) {
|
|
|
49
55
|
optimisticUpdater = config.optimisticUpdater,
|
|
50
56
|
updater = config.updater;
|
|
51
57
|
var configs = config.configs,
|
|
58
|
+
cacheConfig = config.cacheConfig,
|
|
52
59
|
onError = config.onError,
|
|
60
|
+
onUnsubscribe = config.onUnsubscribe,
|
|
53
61
|
variables = config.variables,
|
|
54
62
|
uploadables = config.uploadables;
|
|
55
|
-
var operation = createOperationDescriptor(mutation, variables); // TODO: remove this check after we fix flow.
|
|
63
|
+
var operation = createOperationDescriptor(mutation, variables, RelayFeatureFlags.ENABLE_UNIQUE_MUTATION_ROOT ? generateUniqueClientID() : undefined); // TODO: remove this check after we fix flow.
|
|
56
64
|
|
|
57
65
|
if (typeof optimisticResponse === 'function') {
|
|
58
66
|
optimisticResponse = optimisticResponse();
|
|
@@ -61,7 +69,7 @@ function commitMutation(environment, config) {
|
|
|
61
69
|
|
|
62
70
|
if (process.env.NODE_ENV !== "production") {
|
|
63
71
|
if (optimisticResponse instanceof Object) {
|
|
64
|
-
validateMutation(optimisticResponse, mutation,
|
|
72
|
+
validateMutation(optimisticResponse, mutation, variables);
|
|
65
73
|
}
|
|
66
74
|
}
|
|
67
75
|
|
|
@@ -74,6 +82,7 @@ function commitMutation(environment, config) {
|
|
|
74
82
|
|
|
75
83
|
var errors = [];
|
|
76
84
|
var subscription = environment.executeMutation({
|
|
85
|
+
cacheConfig: cacheConfig,
|
|
77
86
|
operation: operation,
|
|
78
87
|
optimisticResponse: optimisticResponse,
|
|
79
88
|
optimisticUpdater: optimisticUpdater,
|
|
@@ -81,8 +90,16 @@ function commitMutation(environment, config) {
|
|
|
81
90
|
uploadables: uploadables
|
|
82
91
|
}).subscribe({
|
|
83
92
|
next: function next(payload) {
|
|
84
|
-
if (payload
|
|
85
|
-
|
|
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
|
+
}
|
|
86
103
|
}
|
|
87
104
|
},
|
|
88
105
|
complete: function complete() {
|
|
@@ -93,7 +110,8 @@ function commitMutation(environment, config) {
|
|
|
93
110
|
onCompleted(snapshot.data, errors.length !== 0 ? errors : null);
|
|
94
111
|
}
|
|
95
112
|
},
|
|
96
|
-
error: onError
|
|
113
|
+
error: onError,
|
|
114
|
+
unsubscribe: onUnsubscribe
|
|
97
115
|
});
|
|
98
116
|
return {
|
|
99
117
|
dispose: subscription.unsubscribe
|