relay-runtime 11.0.2 → 13.0.0-rc.2
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/README.md +67 -0
- package/handlers/RelayDefaultHandlerProvider.js.flow +3 -3
- package/handlers/connection/ConnectionHandler.js.flow +9 -18
- package/handlers/connection/ConnectionInterface.js.flow +1 -1
- package/handlers/connection/MutationHandlers.js.flow +8 -12
- package/index.js +1 -1
- package/index.js.flow +57 -35
- package/lib/handlers/RelayDefaultHandlerProvider.js +1 -1
- package/lib/handlers/connection/ConnectionHandler.js +13 -19
- package/lib/handlers/connection/ConnectionInterface.js +1 -1
- package/lib/handlers/connection/MutationHandlers.js +4 -7
- package/lib/index.js +59 -44
- package/lib/multi-actor-environment/ActorIdentifier.js +12 -2
- package/lib/multi-actor-environment/ActorSpecificEnvironment.js +64 -20
- package/lib/multi-actor-environment/ActorUtils.js +27 -0
- package/lib/multi-actor-environment/MultiActorEnvironment.js +324 -61
- package/lib/multi-actor-environment/MultiActorEnvironmentTypes.js +1 -1
- package/lib/multi-actor-environment/index.js +6 -2
- package/lib/mutations/RelayDeclarativeMutationConfig.js +5 -2
- package/lib/mutations/RelayRecordProxy.js +4 -3
- package/lib/mutations/RelayRecordSourceMutator.js +4 -3
- package/lib/mutations/RelayRecordSourceProxy.js +13 -5
- package/lib/mutations/RelayRecordSourceSelectorProxy.js +19 -6
- package/lib/mutations/applyOptimisticMutation.js +7 -7
- package/lib/mutations/commitLocalUpdate.js +1 -1
- package/lib/mutations/commitMutation.js +15 -11
- package/lib/mutations/readUpdatableQuery_EXPERIMENTAL.js +242 -0
- package/lib/mutations/validateMutation.js +11 -6
- package/lib/network/ConvertToExecuteFunction.js +3 -2
- package/lib/network/RelayNetwork.js +4 -3
- package/lib/network/RelayNetworkTypes.js +1 -1
- package/lib/network/RelayObservable.js +1 -1
- package/lib/network/RelayQueryResponseCache.js +22 -6
- package/lib/network/wrapNetworkWithLogObserver.js +79 -0
- package/lib/query/GraphQLTag.js +3 -2
- package/lib/query/PreloadableQueryRegistry.js +1 -1
- package/lib/query/fetchQuery.js +7 -6
- package/lib/query/fetchQueryInternal.js +1 -1
- package/lib/query/fetchQuery_DEPRECATED.js +3 -2
- package/lib/store/ClientID.js +8 -2
- package/lib/store/DataChecker.js +124 -55
- package/lib/store/OperationExecutor.js +489 -215
- package/lib/store/RelayConcreteVariables.js +27 -9
- package/lib/store/RelayExperimentalGraphResponseHandler.js +153 -0
- package/lib/store/RelayExperimentalGraphResponseTransform.js +391 -0
- package/lib/store/RelayModernEnvironment.js +100 -120
- package/lib/store/RelayModernFragmentSpecResolver.js +53 -27
- package/lib/store/RelayModernOperationDescriptor.js +3 -2
- package/lib/store/RelayModernRecord.js +48 -13
- package/lib/store/RelayModernSelector.js +15 -9
- package/lib/store/RelayModernStore.js +56 -23
- package/lib/store/RelayOperationTracker.js +34 -24
- package/lib/store/RelayOptimisticRecordSource.js +1 -1
- package/lib/store/RelayPublishQueue.js +35 -11
- package/lib/store/RelayReader.js +257 -72
- package/lib/store/RelayRecordSource.js +88 -4
- package/lib/store/RelayRecordState.js +1 -1
- package/lib/store/RelayReferenceMarker.js +34 -22
- package/lib/store/RelayResponseNormalizer.js +172 -96
- package/lib/store/RelayStoreReactFlightUtils.js +5 -11
- package/lib/store/RelayStoreSubscriptions.js +15 -10
- package/lib/store/RelayStoreTypes.js +1 -1
- package/lib/store/RelayStoreUtils.js +13 -8
- package/lib/store/ResolverCache.js +213 -0
- package/lib/store/ResolverFragments.js +10 -6
- package/lib/store/StoreInspector.js +1 -1
- package/lib/store/TypeID.js +1 -1
- package/lib/store/ViewerPattern.js +1 -1
- package/lib/store/cloneRelayHandleSourceField.js +6 -5
- package/lib/store/cloneRelayScalarHandleSourceField.js +6 -5
- package/lib/store/createFragmentSpecResolver.js +1 -1
- package/lib/store/createRelayContext.js +5 -3
- package/lib/store/defaultGetDataID.js +1 -1
- package/lib/store/defaultRequiredFieldLogger.js +1 -1
- package/lib/store/hasOverlappingIDs.js +1 -1
- package/lib/store/isRelayModernEnvironment.js +1 -1
- package/lib/store/normalizeRelayPayload.js +1 -1
- package/lib/store/readInlineData.js +7 -3
- package/lib/subscription/requestSubscription.js +32 -34
- package/lib/util/JSResourceTypes.flow.js +1 -1
- package/lib/util/NormalizationNode.js +1 -1
- package/lib/util/ReaderNode.js +1 -1
- package/lib/util/RelayConcreteNode.js +3 -1
- package/lib/util/RelayDefaultHandleKey.js +1 -1
- package/lib/util/RelayError.js +1 -1
- package/lib/util/RelayFeatureFlags.js +10 -7
- package/lib/util/RelayProfiler.js +1 -1
- package/lib/util/RelayReplaySubject.js +22 -7
- package/lib/util/RelayRuntimeTypes.js +1 -7
- package/lib/util/StringInterner.js +71 -0
- package/lib/util/createPayloadFor3DField.js +1 -1
- package/lib/util/deepFreeze.js +1 -1
- package/lib/util/generateID.js +1 -1
- package/lib/util/getAllRootVariables.js +29 -0
- package/lib/util/getFragmentIdentifier.js +16 -8
- package/lib/util/getOperation.js +3 -2
- package/lib/util/getPaginationMetadata.js +41 -0
- package/lib/util/getPaginationVariables.js +66 -0
- package/lib/util/getPendingOperationsForFragment.js +55 -0
- package/lib/util/getRefetchMetadata.js +36 -0
- package/lib/util/getRelayHandleKey.js +3 -3
- package/lib/util/getRequestIdentifier.js +3 -3
- package/lib/util/getValueAtPath.js +51 -0
- package/lib/util/isEmptyObject.js +2 -2
- package/lib/util/isPromise.js +1 -1
- package/lib/util/isScalarAndEqual.js +1 -1
- package/lib/util/recycleNodesInto.js +1 -1
- package/lib/util/registerEnvironmentWithDevTools.js +26 -0
- package/lib/util/reportMissingRequiredFields.js +1 -1
- package/lib/util/resolveImmediate.js +1 -1
- package/lib/util/stableCopy.js +1 -1
- package/lib/util/withDuration.js +31 -0
- package/multi-actor-environment/ActorIdentifier.js.flow +18 -2
- package/multi-actor-environment/ActorSpecificEnvironment.js.flow +94 -58
- package/multi-actor-environment/ActorUtils.js.flow +33 -0
- package/multi-actor-environment/MultiActorEnvironment.js.flow +366 -93
- package/multi-actor-environment/MultiActorEnvironmentTypes.js.flow +88 -23
- package/multi-actor-environment/index.js.flow +3 -1
- package/mutations/RelayDeclarativeMutationConfig.js.flow +33 -27
- package/mutations/RelayRecordProxy.js.flow +5 -6
- package/mutations/RelayRecordSourceMutator.js.flow +5 -7
- package/mutations/RelayRecordSourceProxy.js.flow +20 -11
- package/mutations/RelayRecordSourceSelectorProxy.js.flow +23 -8
- package/mutations/applyOptimisticMutation.js.flow +14 -15
- package/mutations/commitLocalUpdate.js.flow +2 -2
- package/mutations/commitMutation.js.flow +36 -47
- package/mutations/readUpdatableQuery_EXPERIMENTAL.js.flow +318 -0
- package/mutations/validateMutation.js.flow +27 -17
- package/network/ConvertToExecuteFunction.js.flow +3 -3
- package/network/RelayNetwork.js.flow +5 -6
- package/network/RelayNetworkTypes.js.flow +1 -1
- package/network/RelayObservable.js.flow +2 -2
- package/network/RelayQueryResponseCache.js.flow +35 -22
- package/network/wrapNetworkWithLogObserver.js.flow +99 -0
- package/package.json +2 -2
- package/query/GraphQLTag.js.flow +11 -11
- package/query/PreloadableQueryRegistry.js.flow +5 -3
- package/query/fetchQuery.js.flow +19 -19
- package/query/fetchQueryInternal.js.flow +7 -10
- package/query/fetchQuery_DEPRECATED.js.flow +7 -7
- package/relay-runtime.js +2 -2
- package/relay-runtime.min.js +2 -2
- package/store/ClientID.js.flow +15 -4
- package/store/DataChecker.js.flow +142 -60
- package/store/OperationExecutor.js.flow +575 -320
- package/store/RelayConcreteVariables.js.flow +28 -9
- package/store/RelayExperimentalGraphResponseHandler.js.flow +121 -0
- package/store/RelayExperimentalGraphResponseTransform.js.flow +470 -0
- package/store/RelayModernEnvironment.js.flow +91 -115
- package/store/RelayModernFragmentSpecResolver.js.flow +56 -32
- package/store/RelayModernOperationDescriptor.js.flow +13 -8
- package/store/RelayModernRecord.js.flow +68 -12
- package/store/RelayModernSelector.js.flow +25 -15
- package/store/RelayModernStore.js.flow +67 -32
- package/store/RelayOperationTracker.js.flow +60 -44
- package/store/RelayOptimisticRecordSource.js.flow +3 -3
- package/store/RelayPublishQueue.js.flow +74 -32
- package/store/RelayReader.js.flow +319 -100
- package/store/RelayRecordSource.js.flow +73 -7
- package/store/RelayRecordState.js.flow +1 -1
- package/store/RelayReferenceMarker.js.flow +41 -27
- package/store/RelayResponseNormalizer.js.flow +204 -86
- package/store/RelayStoreReactFlightUtils.js.flow +5 -12
- package/store/RelayStoreSubscriptions.js.flow +20 -12
- package/store/RelayStoreTypes.js.flow +200 -41
- package/store/RelayStoreUtils.js.flow +25 -12
- package/store/ResolverCache.js.flow +249 -0
- package/store/ResolverFragments.js.flow +16 -20
- package/store/StoreInspector.js.flow +3 -3
- package/store/TypeID.js.flow +2 -2
- package/store/ViewerPattern.js.flow +3 -3
- package/store/cloneRelayHandleSourceField.js.flow +6 -7
- package/store/cloneRelayScalarHandleSourceField.js.flow +6 -7
- package/store/createFragmentSpecResolver.js.flow +4 -5
- package/store/createRelayContext.js.flow +4 -4
- package/store/defaultGetDataID.js.flow +1 -1
- package/store/defaultRequiredFieldLogger.js.flow +1 -1
- package/store/hasOverlappingIDs.js.flow +1 -1
- package/store/isRelayModernEnvironment.js.flow +1 -1
- package/store/normalizeRelayPayload.js.flow +7 -8
- package/store/readInlineData.js.flow +8 -9
- package/subscription/requestSubscription.js.flow +55 -51
- package/util/JSResourceTypes.flow.js.flow +1 -1
- package/util/NormalizationNode.js.flow +11 -4
- package/util/ReaderNode.js.flow +25 -2
- package/util/RelayConcreteNode.js.flow +5 -1
- package/util/RelayDefaultHandleKey.js.flow +1 -1
- package/util/RelayError.js.flow +1 -1
- package/util/RelayFeatureFlags.js.flow +23 -15
- package/util/RelayProfiler.js.flow +1 -1
- package/util/RelayReplaySubject.js.flow +10 -10
- package/util/RelayRuntimeTypes.js.flow +70 -3
- package/util/StringInterner.js.flow +69 -0
- package/util/createPayloadFor3DField.js.flow +4 -4
- package/util/deepFreeze.js.flow +1 -1
- package/util/generateID.js.flow +1 -1
- package/util/getAllRootVariables.js.flow +36 -0
- package/util/getFragmentIdentifier.js.flow +28 -16
- package/util/getOperation.js.flow +3 -3
- package/util/getPaginationMetadata.js.flow +69 -0
- package/util/getPaginationVariables.js.flow +108 -0
- package/util/getPendingOperationsForFragment.js.flow +62 -0
- package/util/getRefetchMetadata.js.flow +76 -0
- package/util/getRelayHandleKey.js.flow +2 -3
- package/util/getRequestIdentifier.js.flow +4 -4
- package/util/getValueAtPath.js.flow +46 -0
- package/util/isEmptyObject.js.flow +2 -1
- package/util/isPromise.js.flow +1 -1
- package/util/isScalarAndEqual.js.flow +1 -1
- package/util/recycleNodesInto.js.flow +1 -1
- package/util/registerEnvironmentWithDevTools.js.flow +33 -0
- package/util/reportMissingRequiredFields.js.flow +1 -1
- package/util/resolveImmediate.js.flow +2 -2
- package/util/stableCopy.js.flow +1 -1
- package/util/withDuration.js.flow +32 -0
- package/lib/store/RelayRecordSourceMapImpl.js +0 -107
- package/lib/store/RelayStoreSubscriptionsUsingMapByID.js +0 -318
- package/store/RelayRecordSourceMapImpl.js.flow +0 -91
- package/store/RelayStoreSubscriptionsUsingMapByID.js.flow +0 -283
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -15,25 +15,31 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
15
15
|
|
|
16
16
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
17
17
|
|
|
18
|
-
var OperationExecutor = require('./OperationExecutor');
|
|
19
|
-
|
|
20
18
|
var RelayDefaultHandlerProvider = require('../handlers/RelayDefaultHandlerProvider');
|
|
21
19
|
|
|
22
|
-
var
|
|
20
|
+
var _require = require('../multi-actor-environment/ActorIdentifier'),
|
|
21
|
+
INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE = _require.INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE,
|
|
22
|
+
assertInternalActorIndentifier = _require.assertInternalActorIndentifier;
|
|
23
23
|
|
|
24
24
|
var RelayObservable = require('../network/RelayObservable');
|
|
25
25
|
|
|
26
|
+
var wrapNetworkWithLogObserver = require('../network/wrapNetworkWithLogObserver');
|
|
27
|
+
|
|
26
28
|
var RelayOperationTracker = require('../store/RelayOperationTracker');
|
|
27
29
|
|
|
28
|
-
var
|
|
30
|
+
var registerEnvironmentWithDevTools = require('../util/registerEnvironmentWithDevTools');
|
|
29
31
|
|
|
30
|
-
var
|
|
32
|
+
var RelayFeatureFlags = require('../util/RelayFeatureFlags');
|
|
31
33
|
|
|
32
34
|
var defaultGetDataID = require('./defaultGetDataID');
|
|
33
35
|
|
|
34
36
|
var defaultRequiredFieldLogger = require('./defaultRequiredFieldLogger');
|
|
35
37
|
|
|
36
|
-
var
|
|
38
|
+
var OperationExecutor = require('./OperationExecutor');
|
|
39
|
+
|
|
40
|
+
var RelayPublishQueue = require('./RelayPublishQueue');
|
|
41
|
+
|
|
42
|
+
var RelayRecordSource = require('./RelayRecordSource');
|
|
37
43
|
|
|
38
44
|
var invariant = require('invariant');
|
|
39
45
|
|
|
@@ -64,7 +70,7 @@ var RelayModernEnvironment = /*#__PURE__*/function () {
|
|
|
64
70
|
this._defaultRenderPolicy = ((_config$UNSTABLE_defa = config.UNSTABLE_defaultRenderPolicy) !== null && _config$UNSTABLE_defa !== void 0 ? _config$UNSTABLE_defa : RelayFeatureFlags.ENABLE_PARTIAL_RENDERING_DEFAULT === true) ? 'partial' : 'full';
|
|
65
71
|
this._operationLoader = operationLoader;
|
|
66
72
|
this._operationExecutions = new Map();
|
|
67
|
-
this._network = this
|
|
73
|
+
this._network = wrapNetworkWithLogObserver(this, config.network);
|
|
68
74
|
this._getDataID = (_config$getDataID = config.getDataID) !== null && _config$getDataID !== void 0 ? _config$getDataID : defaultGetDataID;
|
|
69
75
|
this._publishQueue = new RelayPublishQueue(config.store, (_config$handlerProvid = config.handlerProvider) !== null && _config$handlerProvid !== void 0 ? _config$handlerProvid : RelayDefaultHandlerProvider, this._getDataID);
|
|
70
76
|
this._scheduler = (_config$scheduler = config.scheduler) !== null && _config$scheduler !== void 0 ? _config$scheduler : null;
|
|
@@ -73,33 +79,26 @@ var RelayModernEnvironment = /*#__PURE__*/function () {
|
|
|
73
79
|
this._isServer = (_config$isServer = config.isServer) !== null && _config$isServer !== void 0 ? _config$isServer : false;
|
|
74
80
|
|
|
75
81
|
this.__setNet = function (newNet) {
|
|
76
|
-
return _this._network = _this
|
|
82
|
+
return _this._network = wrapNetworkWithLogObserver(_this, newNet);
|
|
77
83
|
};
|
|
78
84
|
|
|
79
85
|
if (process.env.NODE_ENV !== "production") {
|
|
80
|
-
var
|
|
81
|
-
inspect =
|
|
86
|
+
var _require2 = require('./StoreInspector'),
|
|
87
|
+
inspect = _require2.inspect;
|
|
82
88
|
|
|
83
89
|
this.DEBUG_inspect = function (dataID) {
|
|
84
90
|
return inspect(_this, dataID);
|
|
85
91
|
};
|
|
86
|
-
} // Register this Relay Environment with Relay DevTools if it exists.
|
|
87
|
-
// Note: this must always be the last step in the constructor.
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
var _global = typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : undefined;
|
|
91
|
-
|
|
92
|
-
var devToolsHook = _global && _global.__RELAY_DEVTOOLS_HOOK__;
|
|
93
|
-
|
|
94
|
-
if (devToolsHook) {
|
|
95
|
-
devToolsHook.registerEnvironment(this);
|
|
96
92
|
}
|
|
97
93
|
|
|
98
94
|
this._missingFieldHandlers = config.missingFieldHandlers;
|
|
99
95
|
this._operationTracker = (_config$operationTrac = config.operationTracker) !== null && _config$operationTrac !== void 0 ? _config$operationTrac : new RelayOperationTracker();
|
|
100
96
|
this._reactFlightPayloadDeserializer = reactFlightPayloadDeserializer;
|
|
101
97
|
this._reactFlightServerErrorHandler = reactFlightServerErrorHandler;
|
|
102
|
-
this._shouldProcessClientComponents = config.shouldProcessClientComponents;
|
|
98
|
+
this._shouldProcessClientComponents = config.shouldProcessClientComponents; // Register this Relay Environment with Relay DevTools if it exists.
|
|
99
|
+
// Note: this must always be the last step in the constructor.
|
|
100
|
+
|
|
101
|
+
registerEnvironmentWithDevTools(this);
|
|
103
102
|
}
|
|
104
103
|
|
|
105
104
|
var _proto = RelayModernEnvironment.prototype;
|
|
@@ -241,9 +240,19 @@ var RelayModernEnvironment = /*#__PURE__*/function () {
|
|
|
241
240
|
|
|
242
241
|
var target = RelayRecordSource.create();
|
|
243
242
|
|
|
243
|
+
var source = this._store.getSource();
|
|
244
|
+
|
|
244
245
|
var result = this._store.check(operation, {
|
|
245
|
-
|
|
246
|
-
|
|
246
|
+
handlers: handlers,
|
|
247
|
+
defaultActorIdentifier: INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE,
|
|
248
|
+
getSourceForActor: function getSourceForActor(actorIdentifier) {
|
|
249
|
+
assertInternalActorIndentifier(actorIdentifier);
|
|
250
|
+
return source;
|
|
251
|
+
},
|
|
252
|
+
getTargetForActor: function getTargetForActor(actorIdentifier) {
|
|
253
|
+
assertInternalActorIndentifier(actorIdentifier);
|
|
254
|
+
return target;
|
|
255
|
+
}
|
|
247
256
|
});
|
|
248
257
|
|
|
249
258
|
if (target.size() > 0) {
|
|
@@ -268,7 +277,7 @@ var RelayModernEnvironment = /*#__PURE__*/function () {
|
|
|
268
277
|
}
|
|
269
278
|
/**
|
|
270
279
|
* Returns an Observable of GraphQLResponse resulting from executing the
|
|
271
|
-
* provided Query
|
|
280
|
+
* provided Query operation, each result of which is then
|
|
272
281
|
* normalized and committed to the publish queue.
|
|
273
282
|
*
|
|
274
283
|
* Note: Observables are lazy, so calling this method will do nothing until
|
|
@@ -279,8 +288,7 @@ var RelayModernEnvironment = /*#__PURE__*/function () {
|
|
|
279
288
|
_proto.execute = function execute(_ref) {
|
|
280
289
|
var _this7 = this;
|
|
281
290
|
|
|
282
|
-
var operation = _ref.operation
|
|
283
|
-
updater = _ref.updater;
|
|
291
|
+
var operation = _ref.operation;
|
|
284
292
|
return this._execute({
|
|
285
293
|
createSource: function createSource() {
|
|
286
294
|
return _this7._network.execute(operation.request.node.params, operation.request.variables, operation.request.cacheConfig || {}, null);
|
|
@@ -288,6 +296,31 @@ var RelayModernEnvironment = /*#__PURE__*/function () {
|
|
|
288
296
|
isClientPayload: false,
|
|
289
297
|
operation: operation,
|
|
290
298
|
optimisticConfig: null,
|
|
299
|
+
updater: null
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Returns an Observable of GraphQLResponse resulting from executing the
|
|
304
|
+
* provided Subscription operation, each result of which is then
|
|
305
|
+
* normalized and committed to the publish queue.
|
|
306
|
+
*
|
|
307
|
+
* Note: Observables are lazy, so calling this method will do nothing until
|
|
308
|
+
* the result is subscribed to: environment.execute({...}).subscribe({...}).
|
|
309
|
+
*/
|
|
310
|
+
;
|
|
311
|
+
|
|
312
|
+
_proto.executeSubscription = function executeSubscription(_ref2) {
|
|
313
|
+
var _this8 = this;
|
|
314
|
+
|
|
315
|
+
var operation = _ref2.operation,
|
|
316
|
+
updater = _ref2.updater;
|
|
317
|
+
return this._execute({
|
|
318
|
+
createSource: function createSource() {
|
|
319
|
+
return _this8._network.execute(operation.request.node.params, operation.request.variables, operation.request.cacheConfig || {}, null);
|
|
320
|
+
},
|
|
321
|
+
isClientPayload: false,
|
|
322
|
+
operation: operation,
|
|
323
|
+
optimisticConfig: null,
|
|
291
324
|
updater: updater
|
|
292
325
|
});
|
|
293
326
|
}
|
|
@@ -303,14 +336,14 @@ var RelayModernEnvironment = /*#__PURE__*/function () {
|
|
|
303
336
|
*/
|
|
304
337
|
;
|
|
305
338
|
|
|
306
|
-
_proto.executeMutation = function executeMutation(
|
|
307
|
-
var
|
|
339
|
+
_proto.executeMutation = function executeMutation(_ref3) {
|
|
340
|
+
var _this9 = this;
|
|
308
341
|
|
|
309
|
-
var operation =
|
|
310
|
-
optimisticResponse =
|
|
311
|
-
optimisticUpdater =
|
|
312
|
-
updater =
|
|
313
|
-
uploadables =
|
|
342
|
+
var operation = _ref3.operation,
|
|
343
|
+
optimisticResponse = _ref3.optimisticResponse,
|
|
344
|
+
optimisticUpdater = _ref3.optimisticUpdater,
|
|
345
|
+
updater = _ref3.updater,
|
|
346
|
+
uploadables = _ref3.uploadables;
|
|
314
347
|
var optimisticConfig;
|
|
315
348
|
|
|
316
349
|
if (optimisticResponse || optimisticUpdater) {
|
|
@@ -323,7 +356,7 @@ var RelayModernEnvironment = /*#__PURE__*/function () {
|
|
|
323
356
|
|
|
324
357
|
return this._execute({
|
|
325
358
|
createSource: function createSource() {
|
|
326
|
-
return
|
|
359
|
+
return _this9._network.execute(operation.request.node.params, operation.request.variables, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, operation.request.cacheConfig), {}, {
|
|
327
360
|
force: true
|
|
328
361
|
}), uploadables);
|
|
329
362
|
},
|
|
@@ -336,7 +369,7 @@ var RelayModernEnvironment = /*#__PURE__*/function () {
|
|
|
336
369
|
/**
|
|
337
370
|
* Returns an Observable of GraphQLResponse resulting from executing the
|
|
338
371
|
* provided Query or Subscription operation responses, the result of which is
|
|
339
|
-
* then normalized and
|
|
372
|
+
* then normalized and committed to the publish queue.
|
|
340
373
|
*
|
|
341
374
|
* Note: Observables are lazy, so calling this method will do nothing until
|
|
342
375
|
* the result is subscribed to:
|
|
@@ -344,9 +377,9 @@ var RelayModernEnvironment = /*#__PURE__*/function () {
|
|
|
344
377
|
*/
|
|
345
378
|
;
|
|
346
379
|
|
|
347
|
-
_proto.executeWithSource = function executeWithSource(
|
|
348
|
-
var operation =
|
|
349
|
-
source =
|
|
380
|
+
_proto.executeWithSource = function executeWithSource(_ref4) {
|
|
381
|
+
var operation = _ref4.operation,
|
|
382
|
+
source = _ref4.source;
|
|
350
383
|
return this._execute({
|
|
351
384
|
createSource: function createSource() {
|
|
352
385
|
return source;
|
|
@@ -364,103 +397,50 @@ var RelayModernEnvironment = /*#__PURE__*/function () {
|
|
|
364
397
|
return "RelayModernEnvironment(".concat((_this$configName = this.configName) !== null && _this$configName !== void 0 ? _this$configName : '', ")");
|
|
365
398
|
};
|
|
366
399
|
|
|
367
|
-
_proto._execute = function _execute(
|
|
368
|
-
var
|
|
400
|
+
_proto._execute = function _execute(_ref5) {
|
|
401
|
+
var _this10 = this;
|
|
369
402
|
|
|
370
|
-
var createSource =
|
|
371
|
-
isClientPayload =
|
|
372
|
-
operation =
|
|
373
|
-
optimisticConfig =
|
|
374
|
-
updater =
|
|
403
|
+
var createSource = _ref5.createSource,
|
|
404
|
+
isClientPayload = _ref5.isClientPayload,
|
|
405
|
+
operation = _ref5.operation,
|
|
406
|
+
optimisticConfig = _ref5.optimisticConfig,
|
|
407
|
+
updater = _ref5.updater;
|
|
408
|
+
var publishQueue = this._publishQueue;
|
|
409
|
+
var store = this._store;
|
|
375
410
|
return RelayObservable.create(function (sink) {
|
|
376
411
|
var executor = OperationExecutor.execute({
|
|
377
|
-
|
|
412
|
+
actorIdentifier: INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE,
|
|
413
|
+
getDataID: _this10._getDataID,
|
|
378
414
|
isClientPayload: isClientPayload,
|
|
415
|
+
log: _this10.__log,
|
|
379
416
|
operation: operation,
|
|
380
|
-
operationExecutions:
|
|
381
|
-
operationLoader:
|
|
382
|
-
operationTracker:
|
|
417
|
+
operationExecutions: _this10._operationExecutions,
|
|
418
|
+
operationLoader: _this10._operationLoader,
|
|
419
|
+
operationTracker: _this10._operationTracker,
|
|
383
420
|
optimisticConfig: optimisticConfig,
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
421
|
+
getPublishQueue: function getPublishQueue(actorIdentifier) {
|
|
422
|
+
assertInternalActorIndentifier(actorIdentifier);
|
|
423
|
+
return publishQueue;
|
|
424
|
+
},
|
|
425
|
+
reactFlightPayloadDeserializer: _this10._reactFlightPayloadDeserializer,
|
|
426
|
+
reactFlightServerErrorHandler: _this10._reactFlightServerErrorHandler,
|
|
427
|
+
scheduler: _this10._scheduler,
|
|
428
|
+
shouldProcessClientComponents: _this10._shouldProcessClientComponents,
|
|
389
429
|
sink: sink,
|
|
390
430
|
// NOTE: Some product tests expect `Network.execute` to be called only
|
|
391
431
|
// when the Observable is executed.
|
|
392
432
|
source: createSource(),
|
|
393
|
-
|
|
394
|
-
|
|
433
|
+
getStore: function getStore(actorIdentifier) {
|
|
434
|
+
assertInternalActorIndentifier(actorIdentifier);
|
|
435
|
+
return store;
|
|
436
|
+
},
|
|
437
|
+
treatMissingFieldsAsNull: _this10._treatMissingFieldsAsNull,
|
|
395
438
|
updater: updater
|
|
396
439
|
});
|
|
397
440
|
return function () {
|
|
398
441
|
return executor.cancel();
|
|
399
442
|
};
|
|
400
443
|
});
|
|
401
|
-
}
|
|
402
|
-
/**
|
|
403
|
-
* Wraps the network with logging to ensure that network requests are
|
|
404
|
-
* always logged. Relying on each network callsite to be wrapped is
|
|
405
|
-
* untenable and will eventually lead to holes in the logging.
|
|
406
|
-
*/
|
|
407
|
-
;
|
|
408
|
-
|
|
409
|
-
_proto.__wrapNetworkWithLogObserver = function __wrapNetworkWithLogObserver(network) {
|
|
410
|
-
var that = this;
|
|
411
|
-
return {
|
|
412
|
-
execute: function execute(params, variables, cacheConfig, uploadables) {
|
|
413
|
-
var transactionID = generateID();
|
|
414
|
-
var log = that.__log;
|
|
415
|
-
var logObserver = {
|
|
416
|
-
start: function start(subscription) {
|
|
417
|
-
log({
|
|
418
|
-
name: 'network.start',
|
|
419
|
-
transactionID: transactionID,
|
|
420
|
-
params: params,
|
|
421
|
-
variables: variables,
|
|
422
|
-
cacheConfig: cacheConfig
|
|
423
|
-
});
|
|
424
|
-
},
|
|
425
|
-
next: function next(response) {
|
|
426
|
-
log({
|
|
427
|
-
name: 'network.next',
|
|
428
|
-
transactionID: transactionID,
|
|
429
|
-
response: response
|
|
430
|
-
});
|
|
431
|
-
},
|
|
432
|
-
error: function error(_error) {
|
|
433
|
-
log({
|
|
434
|
-
name: 'network.error',
|
|
435
|
-
transactionID: transactionID,
|
|
436
|
-
error: _error
|
|
437
|
-
});
|
|
438
|
-
},
|
|
439
|
-
complete: function complete() {
|
|
440
|
-
log({
|
|
441
|
-
name: 'network.complete',
|
|
442
|
-
transactionID: transactionID
|
|
443
|
-
});
|
|
444
|
-
},
|
|
445
|
-
unsubscribe: function unsubscribe() {
|
|
446
|
-
log({
|
|
447
|
-
name: 'network.unsubscribe',
|
|
448
|
-
transactionID: transactionID
|
|
449
|
-
});
|
|
450
|
-
}
|
|
451
|
-
};
|
|
452
|
-
|
|
453
|
-
var logRequestInfo = function logRequestInfo(info) {
|
|
454
|
-
log({
|
|
455
|
-
name: 'network.info',
|
|
456
|
-
transactionID: transactionID,
|
|
457
|
-
info: info
|
|
458
|
-
});
|
|
459
|
-
};
|
|
460
|
-
|
|
461
|
-
return network.execute(params, variables, cacheConfig, uploadables, logRequestInfo)["do"](logObserver);
|
|
462
|
-
}
|
|
463
|
-
};
|
|
464
444
|
};
|
|
465
445
|
|
|
466
446
|
return RelayModernEnvironment;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -16,28 +16,29 @@ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/obje
|
|
|
16
16
|
|
|
17
17
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
18
18
|
|
|
19
|
-
var
|
|
19
|
+
var getPendingOperationsForFragment = require('../util/getPendingOperationsForFragment');
|
|
20
20
|
|
|
21
|
-
var
|
|
21
|
+
var isScalarAndEqual = require('../util/isScalarAndEqual');
|
|
22
22
|
|
|
23
|
-
var
|
|
23
|
+
var recycleNodesInto = require('../util/recycleNodesInto');
|
|
24
24
|
|
|
25
|
-
var
|
|
25
|
+
var RelayFeatureFlags = require('../util/RelayFeatureFlags');
|
|
26
26
|
|
|
27
27
|
var reportMissingRequiredFields = require('../util/reportMissingRequiredFields');
|
|
28
28
|
|
|
29
|
-
var
|
|
29
|
+
var _require = require('./RelayModernOperationDescriptor'),
|
|
30
|
+
createRequestDescriptor = _require.createRequestDescriptor;
|
|
30
31
|
|
|
31
|
-
var
|
|
32
|
-
|
|
32
|
+
var _require2 = require('./RelayModernSelector'),
|
|
33
|
+
areEqualSelectors = _require2.areEqualSelectors,
|
|
34
|
+
createReaderSelector = _require2.createReaderSelector,
|
|
35
|
+
getSelectorsFromObject = _require2.getSelectorsFromObject;
|
|
33
36
|
|
|
34
|
-
var
|
|
35
|
-
createRequestDescriptor = _require2.createRequestDescriptor;
|
|
37
|
+
var areEqual = require("fbjs/lib/areEqual");
|
|
36
38
|
|
|
37
|
-
var
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
getSelectorsFromObject = _require3.getSelectorsFromObject;
|
|
39
|
+
var invariant = require('invariant');
|
|
40
|
+
|
|
41
|
+
var warning = require("fbjs/lib/warning");
|
|
41
42
|
|
|
42
43
|
/**
|
|
43
44
|
* A utility for resolving and subscribing to the results of a fragment spec
|
|
@@ -129,13 +130,17 @@ var RelayModernFragmentSpecResolver = /*#__PURE__*/function () {
|
|
|
129
130
|
return this._data;
|
|
130
131
|
};
|
|
131
132
|
|
|
132
|
-
_proto.setCallback = function setCallback(callback) {
|
|
133
|
+
_proto.setCallback = function setCallback(props, callback) {
|
|
133
134
|
this._callback = callback;
|
|
135
|
+
|
|
136
|
+
if (RelayFeatureFlags.ENABLE_CONTAINERS_SUBSCRIBE_ON_COMMIT === true) {
|
|
137
|
+
this.setProps(props);
|
|
138
|
+
}
|
|
134
139
|
};
|
|
135
140
|
|
|
136
141
|
_proto.setProps = function setProps(props) {
|
|
137
|
-
var ownedSelectors = getSelectorsFromObject(this._fragments, props);
|
|
138
142
|
this._props = {};
|
|
143
|
+
var ownedSelectors = getSelectorsFromObject(this._fragments, props);
|
|
139
144
|
|
|
140
145
|
for (var _key3 in ownedSelectors) {
|
|
141
146
|
if (ownedSelectors.hasOwnProperty(_key3)) {
|
|
@@ -150,14 +155,14 @@ var RelayModernFragmentSpecResolver = /*#__PURE__*/function () {
|
|
|
150
155
|
resolver = null;
|
|
151
156
|
} else if (ownedSelector.kind === 'PluralReaderSelector') {
|
|
152
157
|
if (resolver == null) {
|
|
153
|
-
resolver = new SelectorListResolver(this._context.environment, this._rootIsQueryRenderer, ownedSelector, this._onChange);
|
|
158
|
+
resolver = new SelectorListResolver(this._context.environment, this._rootIsQueryRenderer, ownedSelector, this._callback != null, this._onChange);
|
|
154
159
|
} else {
|
|
155
160
|
!(resolver instanceof SelectorListResolver) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayModernFragmentSpecResolver: Expected prop `%s` to always be an array.', _key3) : invariant(false) : void 0;
|
|
156
161
|
resolver.setSelector(ownedSelector);
|
|
157
162
|
}
|
|
158
163
|
} else {
|
|
159
164
|
if (resolver == null) {
|
|
160
|
-
resolver = new SelectorResolver(this._context.environment, this._rootIsQueryRenderer, ownedSelector, this._onChange);
|
|
165
|
+
resolver = new SelectorResolver(this._context.environment, this._rootIsQueryRenderer, ownedSelector, this._callback != null, this._onChange);
|
|
161
166
|
} else {
|
|
162
167
|
!(resolver instanceof SelectorResolver) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayModernFragmentSpecResolver: Expected prop `%s` to always be an object.', _key3) : invariant(false) : void 0;
|
|
163
168
|
resolver.setSelector(ownedSelector);
|
|
@@ -194,7 +199,7 @@ var RelayModernFragmentSpecResolver = /*#__PURE__*/function () {
|
|
|
194
199
|
|
|
195
200
|
|
|
196
201
|
var SelectorResolver = /*#__PURE__*/function () {
|
|
197
|
-
function SelectorResolver(environment, rootIsQueryRenderer, selector, callback) {
|
|
202
|
+
function SelectorResolver(environment, rootIsQueryRenderer, selector, subscribeOnConstruction, callback) {
|
|
198
203
|
var _this2 = this;
|
|
199
204
|
|
|
200
205
|
(0, _defineProperty2["default"])(this, "_onChange", function (snapshot) {
|
|
@@ -214,7 +219,14 @@ var SelectorResolver = /*#__PURE__*/function () {
|
|
|
214
219
|
this._environment = environment;
|
|
215
220
|
this._rootIsQueryRenderer = rootIsQueryRenderer;
|
|
216
221
|
this._selector = selector;
|
|
217
|
-
|
|
222
|
+
|
|
223
|
+
if (RelayFeatureFlags.ENABLE_CONTAINERS_SUBSCRIBE_ON_COMMIT === true) {
|
|
224
|
+
if (subscribeOnConstruction) {
|
|
225
|
+
this._subscription = environment.subscribe(_snapshot, this._onChange);
|
|
226
|
+
}
|
|
227
|
+
} else {
|
|
228
|
+
this._subscription = environment.subscribe(_snapshot, this._onChange);
|
|
229
|
+
}
|
|
218
230
|
}
|
|
219
231
|
|
|
220
232
|
var _proto2 = SelectorResolver.prototype;
|
|
@@ -228,9 +240,7 @@ var SelectorResolver = /*#__PURE__*/function () {
|
|
|
228
240
|
};
|
|
229
241
|
|
|
230
242
|
_proto2.resolve = function resolve() {
|
|
231
|
-
if (
|
|
232
|
-
var _getPromiseForActiveR;
|
|
233
|
-
|
|
243
|
+
if (this._isMissingData === true) {
|
|
234
244
|
// NOTE: This branch exists to handle the case in which:
|
|
235
245
|
// - A RelayModern container is rendered as a descendant of a Relay Hook
|
|
236
246
|
// root using a "partial" renderPolicy (this means that eargerly
|
|
@@ -252,13 +262,28 @@ var SelectorResolver = /*#__PURE__*/function () {
|
|
|
252
262
|
// This should eventually go away with something like @optional, where we only
|
|
253
263
|
// suspend at specific boundaries depending on whether the boundary
|
|
254
264
|
// can be fulfilled or not.
|
|
255
|
-
var
|
|
265
|
+
var pendingOperationsResult = getPendingOperationsForFragment(this._environment, this._selector.node, this._selector.owner);
|
|
266
|
+
var promise = pendingOperationsResult === null || pendingOperationsResult === void 0 ? void 0 : pendingOperationsResult.promise;
|
|
256
267
|
|
|
257
268
|
if (promise != null) {
|
|
258
269
|
if (this._rootIsQueryRenderer) {
|
|
259
270
|
process.env.NODE_ENV !== "production" ? warning(false, 'Relay: Relay Container for fragment `%s` has missing data and ' + 'would suspend. When using features such as @defer or @module, ' + 'use `useFragment` instead of a Relay Container.', this._selector.node.name) : void 0;
|
|
260
271
|
} else {
|
|
272
|
+
var _pendingOperationsRes;
|
|
273
|
+
|
|
274
|
+
var pendingOperations = (_pendingOperationsRes = pendingOperationsResult === null || pendingOperationsResult === void 0 ? void 0 : pendingOperationsResult.pendingOperations) !== null && _pendingOperationsRes !== void 0 ? _pendingOperationsRes : [];
|
|
261
275
|
process.env.NODE_ENV !== "production" ? warning(false, 'Relay: Relay Container for fragment `%s` suspended. When using ' + 'features such as @defer or @module, use `useFragment` instead ' + 'of a Relay Container.', this._selector.node.name) : void 0;
|
|
276
|
+
|
|
277
|
+
this._environment.__log({
|
|
278
|
+
name: 'suspense.fragment',
|
|
279
|
+
data: this._data,
|
|
280
|
+
fragment: this._selector.node,
|
|
281
|
+
isRelayHooks: false,
|
|
282
|
+
isMissingData: this._isMissingData,
|
|
283
|
+
isPromiseCached: false,
|
|
284
|
+
pendingOperations: pendingOperations
|
|
285
|
+
});
|
|
286
|
+
|
|
262
287
|
throw promise;
|
|
263
288
|
}
|
|
264
289
|
}
|
|
@@ -280,7 +305,7 @@ var SelectorResolver = /*#__PURE__*/function () {
|
|
|
280
305
|
|
|
281
306
|
var snapshot = this._environment.lookup(selector);
|
|
282
307
|
|
|
283
|
-
this._data = snapshot.data;
|
|
308
|
+
this._data = recycleNodesInto(this._data, snapshot.data);
|
|
284
309
|
this._isMissingData = snapshot.isMissingData;
|
|
285
310
|
this._missingRequiredFields = snapshot.missingRequiredFields;
|
|
286
311
|
this._selector = selector;
|
|
@@ -319,7 +344,7 @@ var SelectorResolver = /*#__PURE__*/function () {
|
|
|
319
344
|
|
|
320
345
|
|
|
321
346
|
var SelectorListResolver = /*#__PURE__*/function () {
|
|
322
|
-
function SelectorListResolver(environment, rootIsQueryRenderer, selector, callback) {
|
|
347
|
+
function SelectorListResolver(environment, rootIsQueryRenderer, selector, subscribeOnConstruction, callback) {
|
|
323
348
|
var _this3 = this;
|
|
324
349
|
|
|
325
350
|
(0, _defineProperty2["default"])(this, "_onChange", function (data) {
|
|
@@ -333,6 +358,7 @@ var SelectorListResolver = /*#__PURE__*/function () {
|
|
|
333
358
|
this._resolvers = [];
|
|
334
359
|
this._stale = true;
|
|
335
360
|
this._rootIsQueryRenderer = rootIsQueryRenderer;
|
|
361
|
+
this._subscribeOnConstruction = subscribeOnConstruction;
|
|
336
362
|
this.setSelector(selector);
|
|
337
363
|
}
|
|
338
364
|
|
|
@@ -384,7 +410,7 @@ var SelectorListResolver = /*#__PURE__*/function () {
|
|
|
384
410
|
if (ii < this._resolvers.length) {
|
|
385
411
|
this._resolvers[ii].setSelector(selectors[ii]);
|
|
386
412
|
} else {
|
|
387
|
-
this._resolvers[ii] = new SelectorResolver(this._environment, this._rootIsQueryRenderer, selectors[ii], this._onChange);
|
|
413
|
+
this._resolvers[ii] = new SelectorResolver(this._environment, this._rootIsQueryRenderer, selectors[ii], this._subscribeOnConstruction, this._onChange);
|
|
388
414
|
}
|
|
389
415
|
}
|
|
390
416
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -23,13 +23,14 @@ var _require2 = require('./RelayModernSelector'),
|
|
|
23
23
|
|
|
24
24
|
var _require3 = require('./RelayStoreUtils'),
|
|
25
25
|
ROOT_ID = _require3.ROOT_ID;
|
|
26
|
-
|
|
27
26
|
/**
|
|
28
27
|
* Creates an instance of the `OperationDescriptor` type defined in
|
|
29
28
|
* `RelayStoreTypes` given an operation and some variables. The input variables
|
|
30
29
|
* are filtered to exclude variables that do not match defined arguments on the
|
|
31
30
|
* operation, and default values are populated for null values.
|
|
32
31
|
*/
|
|
32
|
+
|
|
33
|
+
|
|
33
34
|
function createOperationDescriptor(request, variables, cacheConfig) {
|
|
34
35
|
var dataID = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ROOT_ID;
|
|
35
36
|
var operation = request.operation;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -14,25 +14,25 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
14
14
|
|
|
15
15
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
16
16
|
|
|
17
|
-
var areEqual = require("fbjs/lib/areEqual");
|
|
18
|
-
|
|
19
17
|
var deepFreeze = require('../util/deepFreeze');
|
|
20
18
|
|
|
21
|
-
var invariant = require('invariant');
|
|
22
|
-
|
|
23
|
-
var warning = require("fbjs/lib/warning");
|
|
24
|
-
|
|
25
19
|
var _require = require('./ClientID'),
|
|
26
20
|
isClientID = _require.isClientID;
|
|
27
21
|
|
|
28
22
|
var _require2 = require('./RelayStoreUtils'),
|
|
23
|
+
ACTOR_IDENTIFIER_KEY = _require2.ACTOR_IDENTIFIER_KEY,
|
|
29
24
|
ID_KEY = _require2.ID_KEY,
|
|
25
|
+
INVALIDATED_AT_KEY = _require2.INVALIDATED_AT_KEY,
|
|
30
26
|
REF_KEY = _require2.REF_KEY,
|
|
31
27
|
REFS_KEY = _require2.REFS_KEY,
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
ROOT_ID = _require2.ROOT_ID,
|
|
29
|
+
TYPENAME_KEY = _require2.TYPENAME_KEY;
|
|
30
|
+
|
|
31
|
+
var areEqual = require("fbjs/lib/areEqual");
|
|
35
32
|
|
|
33
|
+
var invariant = require('invariant');
|
|
34
|
+
|
|
35
|
+
var warning = require("fbjs/lib/warning");
|
|
36
36
|
/**
|
|
37
37
|
* @public
|
|
38
38
|
*
|
|
@@ -82,6 +82,8 @@ var _require2 = require('./RelayStoreUtils'),
|
|
|
82
82
|
*
|
|
83
83
|
* Clone a record.
|
|
84
84
|
*/
|
|
85
|
+
|
|
86
|
+
|
|
85
87
|
function clone(record) {
|
|
86
88
|
return (0, _objectSpread2["default"])({}, record);
|
|
87
89
|
}
|
|
@@ -171,7 +173,7 @@ function getLinkedRecordID(record, storageKey) {
|
|
|
171
173
|
return link;
|
|
172
174
|
}
|
|
173
175
|
|
|
174
|
-
!(typeof link === 'object' && link && typeof link[REF_KEY] === 'string') ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayModernRecord.getLinkedRecordID(): Expected `%s.%s` to be a linked ID, ' + 'was `%s
|
|
176
|
+
!(typeof link === 'object' && link && typeof link[REF_KEY] === 'string') ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayModernRecord.getLinkedRecordID(): Expected `%s.%s` to be a linked ID, ' + 'was `%s`.%s', record[ID_KEY], storageKey, JSON.stringify(link), typeof link === 'object' && link[REFS_KEY] !== undefined ? ' It appears to be a plural linked record: did you mean to call ' + 'getLinkedRecords() instead of getLinkedRecord()?' : '') : invariant(false) : void 0;
|
|
175
177
|
return link[REF_KEY];
|
|
176
178
|
}
|
|
177
179
|
/**
|
|
@@ -189,7 +191,7 @@ function getLinkedRecordIDs(record, storageKey) {
|
|
|
189
191
|
return links;
|
|
190
192
|
}
|
|
191
193
|
|
|
192
|
-
!(typeof links === 'object' && Array.isArray(links[REFS_KEY])) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayModernRecord.getLinkedRecordIDs(): Expected `%s.%s` to contain an array ' + 'of linked IDs, got `%s
|
|
194
|
+
!(typeof links === 'object' && Array.isArray(links[REFS_KEY])) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayModernRecord.getLinkedRecordIDs(): Expected `%s.%s` to contain an array ' + 'of linked IDs, got `%s`.%s', record[ID_KEY], storageKey, JSON.stringify(links), typeof links === 'object' && links[REF_KEY] !== undefined ? ' It appears to be a singular linked record: did you mean to call ' + 'getLinkedRecord() instead of getLinkedRecords()?' : '') : invariant(false) : void 0; // assume items of the array are ids
|
|
193
195
|
|
|
194
196
|
return links[REFS_KEY];
|
|
195
197
|
}
|
|
@@ -336,6 +338,37 @@ function setLinkedRecordIDs(record, storageKey, linkedIDs) {
|
|
|
336
338
|
links[REFS_KEY] = linkedIDs;
|
|
337
339
|
record[storageKey] = links;
|
|
338
340
|
}
|
|
341
|
+
/**
|
|
342
|
+
* @public
|
|
343
|
+
*
|
|
344
|
+
* Set the value of a field to a reference to another record in the actor specific store.
|
|
345
|
+
*/
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
function setActorLinkedRecordID(record, storageKey, actorIdentifier, linkedID) {
|
|
349
|
+
// See perf note above for why we aren't using computed property access.
|
|
350
|
+
var link = {};
|
|
351
|
+
link[REF_KEY] = linkedID;
|
|
352
|
+
link[ACTOR_IDENTIFIER_KEY] = actorIdentifier;
|
|
353
|
+
record[storageKey] = link;
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* @public
|
|
357
|
+
*
|
|
358
|
+
* Get link to a record and the actor identifier for the store.
|
|
359
|
+
*/
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
function getActorLinkedRecordID(record, storageKey) {
|
|
363
|
+
var link = record[storageKey];
|
|
364
|
+
|
|
365
|
+
if (link == null) {
|
|
366
|
+
return link;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
!(typeof link === 'object' && typeof link[REF_KEY] === 'string' && link[ACTOR_IDENTIFIER_KEY] != null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayModernRecord.getActorLinkedRecordID(): Expected `%s.%s` to be an actor specific linked ID, ' + 'was `%s`.', record[ID_KEY], storageKey, JSON.stringify(link)) : invariant(false) : void 0;
|
|
370
|
+
return [link[ACTOR_IDENTIFIER_KEY], link[REF_KEY]];
|
|
371
|
+
}
|
|
339
372
|
|
|
340
373
|
module.exports = {
|
|
341
374
|
clone: clone,
|
|
@@ -352,5 +385,7 @@ module.exports = {
|
|
|
352
385
|
setValue: setValue,
|
|
353
386
|
setLinkedRecordID: setLinkedRecordID,
|
|
354
387
|
setLinkedRecordIDs: setLinkedRecordIDs,
|
|
355
|
-
update: update
|
|
388
|
+
update: update,
|
|
389
|
+
getActorLinkedRecordID: getActorLinkedRecordID,
|
|
390
|
+
setActorLinkedRecordID: setActorLinkedRecordID
|
|
356
391
|
};
|