relay-runtime 10.0.1 → 10.1.3
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 +6 -0
- package/handlers/connection/MutationHandlers.js.flow +152 -20
- package/index.js +1 -1
- package/index.js.flow +17 -1
- package/lib/handlers/RelayDefaultHandlerProvider.js +9 -0
- package/lib/handlers/connection/MutationHandlers.js +185 -21
- package/lib/index.js +7 -0
- package/lib/mutations/RelayDeclarativeMutationConfig.js +5 -7
- package/lib/mutations/commitMutation.js +1 -4
- package/lib/mutations/validateMutation.js +28 -12
- package/lib/network/RelayQueryResponseCache.js +3 -7
- package/lib/query/GraphQLTag.js +2 -1
- package/lib/query/fetchQuery.js +2 -3
- package/lib/query/fetchQueryInternal.js +2 -3
- package/lib/store/DataChecker.js +85 -10
- package/lib/store/RelayConcreteVariables.js +2 -6
- package/lib/store/RelayModernEnvironment.js +81 -72
- package/lib/store/RelayModernFragmentSpecResolver.js +14 -7
- package/lib/store/RelayModernOperationDescriptor.js +6 -5
- package/lib/store/RelayModernQueryExecutor.js +46 -33
- package/lib/store/RelayModernRecord.js +3 -7
- package/lib/store/RelayModernStore.js +39 -137
- package/lib/store/RelayOperationTracker.js +7 -9
- package/lib/store/RelayOptimisticRecordSource.js +2 -6
- package/lib/store/RelayPublishQueue.js +1 -1
- package/lib/store/RelayReader.js +196 -33
- package/lib/store/RelayRecordSourceMapImpl.js +3 -5
- package/lib/store/RelayReferenceMarker.js +87 -5
- package/lib/store/RelayResponseNormalizer.js +115 -19
- package/lib/store/RelayStoreReactFlightUtils.js +47 -0
- package/lib/store/RelayStoreSubscriptions.js +162 -0
- package/lib/store/RelayStoreSubscriptionsUsingMapByID.js +258 -0
- package/lib/store/StoreInspector.js +2 -6
- package/lib/store/createRelayContext.js +5 -0
- package/lib/store/defaultRequiredFieldLogger.js +18 -0
- package/lib/store/normalizeRelayPayload.js +2 -6
- package/lib/subscription/requestSubscription.js +2 -3
- package/lib/util/NormalizationNode.js +1 -5
- package/lib/util/RelayConcreteNode.js +2 -0
- package/lib/util/RelayFeatureFlags.js +7 -2
- package/lib/util/createPayloadFor3DField.js +2 -7
- package/lib/util/getFragmentIdentifier.js +12 -3
- package/lib/util/getOperation.js +33 -0
- package/lib/util/isEmptyObject.js +25 -0
- package/lib/util/recycleNodesInto.js +4 -1
- package/lib/util/reportMissingRequiredFields.js +48 -0
- package/mutations/commitMutation.js.flow +1 -2
- package/mutations/validateMutation.js.flow +34 -5
- package/network/RelayNetworkTypes.js.flow +22 -0
- package/package.json +2 -2
- package/query/GraphQLTag.js.flow +3 -1
- package/query/fetchQuery.js.flow +2 -2
- package/query/fetchQueryInternal.js.flow +0 -5
- package/relay-runtime.js +2 -2
- package/relay-runtime.min.js +2 -2
- package/store/DataChecker.js.flow +68 -2
- package/store/RelayModernEnvironment.js.flow +107 -87
- package/store/RelayModernFragmentSpecResolver.js.flow +13 -1
- package/store/RelayModernOperationDescriptor.js.flow +5 -1
- package/store/RelayModernQueryExecutor.js.flow +47 -23
- package/store/RelayModernStore.js.flow +33 -107
- package/store/RelayPublishQueue.js.flow +1 -1
- package/store/RelayReader.js.flow +180 -15
- package/store/RelayReferenceMarker.js.flow +72 -5
- package/store/RelayResponseNormalizer.js.flow +130 -19
- package/store/RelayStoreReactFlightUtils.js.flow +64 -0
- package/store/RelayStoreSubscriptions.js.flow +168 -0
- package/store/RelayStoreSubscriptionsUsingMapByID.js.flow +259 -0
- package/store/RelayStoreTypes.js.flow +130 -37
- package/store/createRelayContext.js.flow +3 -0
- package/store/defaultRequiredFieldLogger.js.flow +23 -0
- package/subscription/requestSubscription.js.flow +5 -2
- package/util/NormalizationNode.js.flow +17 -2
- package/util/ReaderNode.js.flow +20 -1
- package/util/RelayConcreteNode.js.flow +6 -0
- package/util/RelayFeatureFlags.js.flow +12 -1
- package/util/getFragmentIdentifier.js.flow +33 -9
- package/util/getOperation.js.flow +40 -0
- package/util/getRequestIdentifier.js.flow +1 -1
- package/util/isEmptyObject.js.flow +25 -0
- package/util/recycleNodesInto.js.flow +11 -0
- package/util/reportMissingRequiredFields.js.flow +51 -0
|
@@ -16,8 +16,6 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
|
|
|
16
16
|
|
|
17
17
|
var RelayDeclarativeMutationConfig = require('./RelayDeclarativeMutationConfig');
|
|
18
18
|
|
|
19
|
-
var RelayFeatureFlags = require('../util/RelayFeatureFlags');
|
|
20
|
-
|
|
21
19
|
var invariant = require("fbjs/lib/invariant");
|
|
22
20
|
|
|
23
21
|
var isRelayModernEnvironment = require('../store/isRelayModernEnvironment');
|
|
@@ -60,7 +58,7 @@ function commitMutation(environment, config) {
|
|
|
60
58
|
onUnsubscribe = config.onUnsubscribe,
|
|
61
59
|
variables = config.variables,
|
|
62
60
|
uploadables = config.uploadables;
|
|
63
|
-
var operation = createOperationDescriptor(mutation, variables, generateUniqueClientID()); // TODO: remove this check after we fix flow.
|
|
61
|
+
var operation = createOperationDescriptor(mutation, variables, cacheConfig, generateUniqueClientID()); // TODO: remove this check after we fix flow.
|
|
64
62
|
|
|
65
63
|
if (typeof optimisticResponse === 'function') {
|
|
66
64
|
optimisticResponse = optimisticResponse();
|
|
@@ -82,7 +80,6 @@ function commitMutation(environment, config) {
|
|
|
82
80
|
|
|
83
81
|
var errors = [];
|
|
84
82
|
var subscription = environment.executeMutation({
|
|
85
|
-
cacheConfig: cacheConfig,
|
|
86
83
|
operation: operation,
|
|
87
84
|
optimisticResponse: optimisticResponse,
|
|
88
85
|
optimisticUpdater: optimisticUpdater,
|
|
@@ -12,14 +12,12 @@
|
|
|
12
12
|
|
|
13
13
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
14
14
|
|
|
15
|
-
var
|
|
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; }
|
|
15
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
20
16
|
|
|
21
17
|
var warning = require("fbjs/lib/warning");
|
|
22
18
|
|
|
19
|
+
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
20
|
+
|
|
23
21
|
var validateMutation = function validateMutation() {};
|
|
24
22
|
|
|
25
23
|
if (process.env.NODE_ENV !== "production") {
|
|
@@ -45,7 +43,8 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
45
43
|
visitedPaths: new Set(),
|
|
46
44
|
variables: variables || {},
|
|
47
45
|
missingDiff: {},
|
|
48
|
-
extraDiff: {}
|
|
46
|
+
extraDiff: {},
|
|
47
|
+
moduleImportPaths: new Set()
|
|
49
48
|
};
|
|
50
49
|
validateSelections(optimisticResponse, mutation.operation.selections, context);
|
|
51
50
|
validateOptimisticResponse(optimisticResponse, context);
|
|
@@ -67,6 +66,7 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
67
66
|
|
|
68
67
|
case 'ScalarField':
|
|
69
68
|
case 'LinkedField':
|
|
69
|
+
case 'FlightField':
|
|
70
70
|
return validateField(optimisticResponse, selection, context);
|
|
71
71
|
|
|
72
72
|
case 'InlineFragment':
|
|
@@ -88,6 +88,8 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
88
88
|
return;
|
|
89
89
|
|
|
90
90
|
case 'ModuleImport':
|
|
91
|
+
return validateModuleImport(context);
|
|
92
|
+
|
|
91
93
|
case 'LinkedHandle':
|
|
92
94
|
case 'ScalarHandle':
|
|
93
95
|
case 'Defer':
|
|
@@ -104,6 +106,10 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
104
106
|
}
|
|
105
107
|
};
|
|
106
108
|
|
|
109
|
+
var validateModuleImport = function validateModuleImport(context) {
|
|
110
|
+
context.moduleImportPaths.add(context.path);
|
|
111
|
+
};
|
|
112
|
+
|
|
107
113
|
var validateField = function validateField(optimisticResponse, field, context) {
|
|
108
114
|
var fieldName = field.alias || field.name;
|
|
109
115
|
var path = "".concat(context.path, ".").concat(fieldName);
|
|
@@ -111,7 +117,7 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
111
117
|
|
|
112
118
|
switch (field.kind) {
|
|
113
119
|
case 'ScalarField':
|
|
114
|
-
if (
|
|
120
|
+
if (hasOwnProperty.call(optimisticResponse, fieldName) === false) {
|
|
115
121
|
addFieldToDiff(path, context.missingDiff, true);
|
|
116
122
|
}
|
|
117
123
|
|
|
@@ -120,7 +126,7 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
120
126
|
case 'LinkedField':
|
|
121
127
|
var selections = field.selections;
|
|
122
128
|
|
|
123
|
-
if (optimisticResponse[fieldName] === null ||
|
|
129
|
+
if (optimisticResponse[fieldName] === null || hasOwnProperty.call(optimisticResponse, fieldName) && optimisticResponse[fieldName] === undefined) {
|
|
124
130
|
return;
|
|
125
131
|
}
|
|
126
132
|
|
|
@@ -128,7 +134,7 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
128
134
|
if (Array.isArray(optimisticResponse[fieldName])) {
|
|
129
135
|
optimisticResponse[fieldName].forEach(function (r) {
|
|
130
136
|
if (r !== null) {
|
|
131
|
-
validateSelections(r, selections,
|
|
137
|
+
validateSelections(r, selections, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, context), {}, {
|
|
132
138
|
path: path
|
|
133
139
|
}));
|
|
134
140
|
}
|
|
@@ -140,7 +146,7 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
140
146
|
}
|
|
141
147
|
} else {
|
|
142
148
|
if (optimisticResponse[fieldName] instanceof Object) {
|
|
143
|
-
validateSelections(optimisticResponse[fieldName], selections,
|
|
149
|
+
validateSelections(optimisticResponse[fieldName], selections, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, context), {}, {
|
|
144
150
|
path: path
|
|
145
151
|
}));
|
|
146
152
|
return;
|
|
@@ -150,6 +156,12 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
150
156
|
}
|
|
151
157
|
}
|
|
152
158
|
|
|
159
|
+
case 'FlightField':
|
|
160
|
+
if (optimisticResponse[fieldName] === null || hasOwnProperty.call(optimisticResponse, fieldName) && optimisticResponse[fieldName] === undefined) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
throw new Error('validateMutation: Flight fields are not compatible with ' + 'optimistic updates, as React does not have the component code ' + 'necessary to process new data on the client. Instead, you ' + 'should update your code to require a full refetch of the Flight ' + 'field so your UI can be updated.');
|
|
153
165
|
}
|
|
154
166
|
};
|
|
155
167
|
|
|
@@ -165,7 +177,11 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
165
177
|
|
|
166
178
|
Object.keys(optimisticResponse).forEach(function (key) {
|
|
167
179
|
var value = optimisticResponse[key];
|
|
168
|
-
var path = "".concat(context.path, ".").concat(key);
|
|
180
|
+
var path = "".concat(context.path, ".").concat(key); // if it's a module import path we don't have an ast so we cannot validate it
|
|
181
|
+
|
|
182
|
+
if (context.moduleImportPaths.has(path)) {
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
169
185
|
|
|
170
186
|
if (!context.visitedPaths.has(path)) {
|
|
171
187
|
addFieldToDiff(path, context.extraDiff);
|
|
@@ -173,7 +189,7 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
173
189
|
}
|
|
174
190
|
|
|
175
191
|
if (value instanceof Object) {
|
|
176
|
-
validateOptimisticResponse(value,
|
|
192
|
+
validateOptimisticResponse(value, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, context), {}, {
|
|
177
193
|
path: path
|
|
178
194
|
}));
|
|
179
195
|
}
|
|
@@ -12,11 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
14
14
|
|
|
15
|
-
var
|
|
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; }
|
|
15
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
20
16
|
|
|
21
17
|
var invariant = require("fbjs/lib/invariant");
|
|
22
18
|
|
|
@@ -57,8 +53,8 @@ var RelayQueryResponseCache = /*#__PURE__*/function () {
|
|
|
57
53
|
|
|
58
54
|
var response = this._responses.get(cacheKey);
|
|
59
55
|
|
|
60
|
-
return response != null ?
|
|
61
|
-
extensions:
|
|
56
|
+
return response != null ? (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, response.payload), {}, {
|
|
57
|
+
extensions: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, response.payload.extensions), {}, {
|
|
62
58
|
cacheTimestamp: response.fetchTime
|
|
63
59
|
})
|
|
64
60
|
}) : null;
|
package/lib/query/GraphQLTag.js
CHANGED
|
@@ -21,7 +21,7 @@ var warning = require("fbjs/lib/warning");
|
|
|
21
21
|
* All calls to this function should be transformed by the plugin.
|
|
22
22
|
*/
|
|
23
23
|
function graphql(strings) {
|
|
24
|
-
!false ? process.env.NODE_ENV !== "production" ? invariant(false, 'graphql: Unexpected invocation at runtime. Either the Babel transform ' + 'was not set up, or it failed to identify this call site. Make sure it ' + 'is being used verbatim as `graphql`.') : invariant(false) : void 0;
|
|
24
|
+
!false ? process.env.NODE_ENV !== "production" ? invariant(false, 'graphql: Unexpected invocation at runtime. Either the Babel transform ' + 'was not set up, or it failed to identify this call site. Make sure it ' + 'is being used verbatim as `graphql`. Note also that there cannot be ' + 'a space between graphql and the backtick that follows.') : invariant(false) : void 0;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
function getNode(taggedNode) {
|
|
@@ -100,6 +100,7 @@ function getInlineDataFragment(taggedNode) {
|
|
|
100
100
|
|
|
101
101
|
module.exports = {
|
|
102
102
|
getFragment: getFragment,
|
|
103
|
+
getNode: getNode,
|
|
103
104
|
getPaginationFragment: getPaginationFragment,
|
|
104
105
|
getRefetchableFragment: getRefetchableFragment,
|
|
105
106
|
getRequest: getRequest,
|
package/lib/query/fetchQuery.js
CHANGED
|
@@ -28,10 +28,9 @@ function fetchQuery(environment, taggedNode, variables, cacheConfig) {
|
|
|
28
28
|
throw new Error('fetchQuery: Expected query operation');
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
var operation = createOperationDescriptor(query, variables);
|
|
31
|
+
var operation = createOperationDescriptor(query, variables, cacheConfig);
|
|
32
32
|
return environment.execute({
|
|
33
|
-
operation: operation
|
|
34
|
-
cacheConfig: cacheConfig
|
|
33
|
+
operation: operation
|
|
35
34
|
}).map(function () {
|
|
36
35
|
return environment.lookup(operation.fragment).data;
|
|
37
36
|
}).toPromise();
|
|
@@ -82,11 +82,10 @@ var requestCachesByEnvironment = WEAKMAP_SUPPORTED ? new WeakMap() : new Map();
|
|
|
82
82
|
* ```
|
|
83
83
|
*/
|
|
84
84
|
|
|
85
|
-
function fetchQuery(environment, operation
|
|
85
|
+
function fetchQuery(environment, operation) {
|
|
86
86
|
return fetchQueryDeduped(environment, operation.request.identifier, function () {
|
|
87
87
|
return environment.execute({
|
|
88
|
-
operation: operation
|
|
89
|
-
cacheConfig: options === null || options === void 0 ? void 0 : options.networkCacheConfig
|
|
88
|
+
operation: operation
|
|
90
89
|
});
|
|
91
90
|
});
|
|
92
91
|
}
|
package/lib/store/DataChecker.js
CHANGED
|
@@ -11,11 +11,9 @@
|
|
|
11
11
|
// flowlint ambiguous-object-type:error
|
|
12
12
|
'use strict';
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
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; }
|
|
16
|
+
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
|
|
19
17
|
|
|
20
18
|
var RelayConcreteNode = require('../util/RelayConcreteNode');
|
|
21
19
|
|
|
@@ -27,12 +25,16 @@ var RelayRecordSourceMutator = require('../mutations/RelayRecordSourceMutator');
|
|
|
27
25
|
|
|
28
26
|
var RelayRecordSourceProxy = require('../mutations/RelayRecordSourceProxy');
|
|
29
27
|
|
|
28
|
+
var RelayStoreReactFlightUtils = require('./RelayStoreReactFlightUtils');
|
|
29
|
+
|
|
30
30
|
var RelayStoreUtils = require('./RelayStoreUtils');
|
|
31
31
|
|
|
32
32
|
var cloneRelayHandleSourceField = require('./cloneRelayHandleSourceField');
|
|
33
33
|
|
|
34
34
|
var cloneRelayScalarHandleSourceField = require('./cloneRelayScalarHandleSourceField');
|
|
35
35
|
|
|
36
|
+
var getOperation = require('../util/getOperation');
|
|
37
|
+
|
|
36
38
|
var invariant = require("fbjs/lib/invariant");
|
|
37
39
|
|
|
38
40
|
var _require = require('./ClientID'),
|
|
@@ -48,6 +50,7 @@ var _require3 = require('./TypeID'),
|
|
|
48
50
|
var CONDITION = RelayConcreteNode.CONDITION,
|
|
49
51
|
CLIENT_EXTENSION = RelayConcreteNode.CLIENT_EXTENSION,
|
|
50
52
|
DEFER = RelayConcreteNode.DEFER,
|
|
53
|
+
FLIGHT_FIELD = RelayConcreteNode.FLIGHT_FIELD,
|
|
51
54
|
FRAGMENT_SPREAD = RelayConcreteNode.FRAGMENT_SPREAD,
|
|
52
55
|
INLINE_FRAGMENT = RelayConcreteNode.INLINE_FRAGMENT,
|
|
53
56
|
LINKED_FIELD = RelayConcreteNode.LINKED_FIELD,
|
|
@@ -57,7 +60,8 @@ var CONDITION = RelayConcreteNode.CONDITION,
|
|
|
57
60
|
SCALAR_HANDLE = RelayConcreteNode.SCALAR_HANDLE,
|
|
58
61
|
STREAM = RelayConcreteNode.STREAM,
|
|
59
62
|
TYPE_DISCRIMINATOR = RelayConcreteNode.TYPE_DISCRIMINATOR;
|
|
60
|
-
var
|
|
63
|
+
var ROOT_ID = RelayStoreUtils.ROOT_ID,
|
|
64
|
+
getModuleOperationKey = RelayStoreUtils.getModuleOperationKey,
|
|
61
65
|
getStorageKey = RelayStoreUtils.getStorageKey,
|
|
62
66
|
getArgumentValues = RelayStoreUtils.getArgumentValues;
|
|
63
67
|
/**
|
|
@@ -141,7 +145,7 @@ var DataChecker = /*#__PURE__*/function () {
|
|
|
141
145
|
args = _this$_getDataForHand.args,
|
|
142
146
|
record = _this$_getDataForHand.record;
|
|
143
147
|
|
|
144
|
-
var _iterator =
|
|
148
|
+
var _iterator = (0, _createForOfIteratorHelper2["default"])(this._handlers),
|
|
145
149
|
_step;
|
|
146
150
|
|
|
147
151
|
try {
|
|
@@ -170,7 +174,7 @@ var DataChecker = /*#__PURE__*/function () {
|
|
|
170
174
|
args = _this$_getDataForHand2.args,
|
|
171
175
|
record = _this$_getDataForHand2.record;
|
|
172
176
|
|
|
173
|
-
var _iterator2 =
|
|
177
|
+
var _iterator2 = (0, _createForOfIteratorHelper2["default"])(this._handlers),
|
|
174
178
|
_step2;
|
|
175
179
|
|
|
176
180
|
try {
|
|
@@ -201,7 +205,7 @@ var DataChecker = /*#__PURE__*/function () {
|
|
|
201
205
|
args = _this$_getDataForHand3.args,
|
|
202
206
|
record = _this$_getDataForHand3.record;
|
|
203
207
|
|
|
204
|
-
var _iterator3 =
|
|
208
|
+
var _iterator3 = (0, _createForOfIteratorHelper2["default"])(this._handlers),
|
|
205
209
|
_step3;
|
|
206
210
|
|
|
207
211
|
try {
|
|
@@ -358,6 +362,7 @@ var DataChecker = /*#__PURE__*/function () {
|
|
|
358
362
|
_this2._traverseSelections(selection.selections, dataID);
|
|
359
363
|
|
|
360
364
|
break;
|
|
365
|
+
// $FlowFixMe[incompatible-type]
|
|
361
366
|
|
|
362
367
|
case FRAGMENT_SPREAD:
|
|
363
368
|
!false ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayAsyncLoader(): Unexpected ast kind `%s`.', selection.kind) : invariant(false) : void 0; // $FlowExpectedError[unreachable-code] - we need the break; for OSS linter
|
|
@@ -394,6 +399,15 @@ var DataChecker = /*#__PURE__*/function () {
|
|
|
394
399
|
|
|
395
400
|
break;
|
|
396
401
|
|
|
402
|
+
case FLIGHT_FIELD:
|
|
403
|
+
if (RelayFeatureFlags.ENABLE_REACT_FLIGHT_COMPONENT_FIELD) {
|
|
404
|
+
_this2._checkFlightField(selection, dataID);
|
|
405
|
+
} else {
|
|
406
|
+
throw new Error('Flight fields are not yet supported.');
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
break;
|
|
410
|
+
|
|
397
411
|
default:
|
|
398
412
|
selection;
|
|
399
413
|
!false ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayAsyncLoader(): Unexpected ast kind `%s`.', selection.kind) : invariant(false) : void 0;
|
|
@@ -416,9 +430,11 @@ var DataChecker = /*#__PURE__*/function () {
|
|
|
416
430
|
return;
|
|
417
431
|
}
|
|
418
432
|
|
|
419
|
-
var
|
|
433
|
+
var normalizationRootNode = operationLoader.get(operationReference);
|
|
434
|
+
|
|
435
|
+
if (normalizationRootNode != null) {
|
|
436
|
+
var operation = getOperation(normalizationRootNode);
|
|
420
437
|
|
|
421
|
-
if (operation != null) {
|
|
422
438
|
this._traverse(operation, dataID);
|
|
423
439
|
} else {
|
|
424
440
|
// If the fragment is not available, we assume that the data cannot have been
|
|
@@ -487,6 +503,65 @@ var DataChecker = /*#__PURE__*/function () {
|
|
|
487
503
|
}
|
|
488
504
|
};
|
|
489
505
|
|
|
506
|
+
_proto._checkFlightField = function _checkFlightField(field, dataID) {
|
|
507
|
+
var storageKey = getStorageKey(field, this._variables);
|
|
508
|
+
|
|
509
|
+
var linkedID = this._mutator.getLinkedRecordID(dataID, storageKey);
|
|
510
|
+
|
|
511
|
+
if (linkedID == null) {
|
|
512
|
+
if (linkedID === undefined) {
|
|
513
|
+
this._handleMissing();
|
|
514
|
+
|
|
515
|
+
return;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
return;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
var tree = this._mutator.getValue(linkedID, RelayStoreReactFlightUtils.REACT_FLIGHT_TREE_STORAGE_KEY);
|
|
522
|
+
|
|
523
|
+
var reachableQueries = this._mutator.getValue(linkedID, RelayStoreReactFlightUtils.REACT_FLIGHT_QUERIES_STORAGE_KEY);
|
|
524
|
+
|
|
525
|
+
if (tree == null || !Array.isArray(reachableQueries)) {
|
|
526
|
+
this._handleMissing();
|
|
527
|
+
|
|
528
|
+
return;
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
var operationLoader = this._operationLoader;
|
|
532
|
+
!(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
|
|
533
|
+
// the same as what's in scope for the outer query.
|
|
534
|
+
|
|
535
|
+
var prevVariables = this._variables; // $FlowFixMe[incompatible-cast]
|
|
536
|
+
|
|
537
|
+
var _iterator4 = (0, _createForOfIteratorHelper2["default"])(reachableQueries),
|
|
538
|
+
_step4;
|
|
539
|
+
|
|
540
|
+
try {
|
|
541
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
542
|
+
var query = _step4.value;
|
|
543
|
+
this._variables = query.variables;
|
|
544
|
+
var normalizationRootNode = operationLoader.get(query.module);
|
|
545
|
+
|
|
546
|
+
if (normalizationRootNode != null) {
|
|
547
|
+
var operation = getOperation(normalizationRootNode);
|
|
548
|
+
|
|
549
|
+
this._traverseSelections(operation.selections, ROOT_ID);
|
|
550
|
+
} else {
|
|
551
|
+
// If the fragment is not available, we assume that the data cannot have
|
|
552
|
+
// been processed yet and must therefore be missing.
|
|
553
|
+
this._handleMissing();
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
} catch (err) {
|
|
557
|
+
_iterator4.e(err);
|
|
558
|
+
} finally {
|
|
559
|
+
_iterator4.f();
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
this._variables = prevVariables;
|
|
563
|
+
};
|
|
564
|
+
|
|
490
565
|
return DataChecker;
|
|
491
566
|
}();
|
|
492
567
|
|
|
@@ -12,11 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
14
14
|
|
|
15
|
-
var
|
|
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; }
|
|
15
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
20
16
|
|
|
21
17
|
var invariant = require("fbjs/lib/invariant");
|
|
22
18
|
|
|
@@ -34,7 +30,7 @@ function getFragmentVariables(fragment, rootVariables, argumentVariables) {
|
|
|
34
30
|
return;
|
|
35
31
|
}
|
|
36
32
|
|
|
37
|
-
variables = variables ||
|
|
33
|
+
variables = variables || (0, _objectSpread2["default"])({}, argumentVariables);
|
|
38
34
|
|
|
39
35
|
switch (definition.kind) {
|
|
40
36
|
case 'LocalArgument':
|