relay-runtime 13.0.0-rc.1 → 13.0.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/LICENSE +1 -1
- package/README.md +64 -0
- package/handlers/RelayDefaultHandlerProvider.js.flow +1 -1
- package/handlers/connection/ConnectionHandler.js.flow +1 -1
- package/handlers/connection/ConnectionInterface.js.flow +1 -1
- package/handlers/connection/MutationHandlers.js.flow +1 -1
- package/index.js +2 -2
- package/index.js.flow +5 -1
- package/lib/handlers/RelayDefaultHandlerProvider.js +1 -1
- package/lib/handlers/connection/ConnectionHandler.js +1 -1
- package/lib/handlers/connection/ConnectionInterface.js +1 -1
- package/lib/handlers/connection/MutationHandlers.js +1 -1
- package/lib/index.js +8 -2
- package/lib/multi-actor-environment/ActorIdentifier.js +1 -1
- package/lib/multi-actor-environment/ActorSpecificEnvironment.js +1 -1
- package/lib/multi-actor-environment/ActorUtils.js +1 -1
- package/lib/multi-actor-environment/MultiActorEnvironment.js +1 -1
- package/lib/multi-actor-environment/MultiActorEnvironmentTypes.js +1 -1
- package/lib/multi-actor-environment/index.js +1 -1
- package/lib/mutations/RelayDeclarativeMutationConfig.js +1 -1
- package/lib/mutations/RelayRecordProxy.js +1 -1
- package/lib/mutations/RelayRecordSourceMutator.js +1 -1
- package/lib/mutations/RelayRecordSourceProxy.js +1 -1
- package/lib/mutations/RelayRecordSourceSelectorProxy.js +1 -1
- package/lib/mutations/applyOptimisticMutation.js +1 -1
- package/lib/mutations/commitLocalUpdate.js +1 -1
- package/lib/mutations/commitMutation.js +1 -1
- package/lib/mutations/readUpdatableQuery_EXPERIMENTAL.js +27 -18
- package/lib/mutations/validateMutation.js +1 -1
- package/lib/network/ConvertToExecuteFunction.js +1 -1
- package/lib/network/RelayNetwork.js +8 -4
- package/lib/network/RelayNetworkTypes.js +1 -1
- package/lib/network/RelayObservable.js +1 -1
- package/lib/network/RelayQueryResponseCache.js +1 -1
- package/lib/network/wrapNetworkWithLogObserver.js +1 -1
- package/lib/query/GraphQLTag.js +1 -1
- package/lib/query/PreloadableQueryRegistry.js +1 -1
- package/lib/query/fetchQuery.js +4 -1
- package/lib/query/fetchQueryInternal.js +1 -1
- package/lib/query/fetchQuery_DEPRECATED.js +1 -1
- package/lib/store/ClientID.js +1 -1
- package/lib/store/DataChecker.js +1 -1
- package/lib/store/OperationExecutor.js +1 -1
- package/lib/store/RelayConcreteVariables.js +13 -4
- package/lib/store/RelayExperimentalGraphResponseHandler.js +3 -3
- package/lib/store/RelayExperimentalGraphResponseTransform.js +54 -22
- package/lib/store/RelayModernEnvironment.js +1 -1
- package/lib/store/RelayModernFragmentSpecResolver.js +1 -1
- package/lib/store/RelayModernOperationDescriptor.js +2 -2
- package/lib/store/RelayModernRecord.js +1 -1
- package/lib/store/RelayModernSelector.js +1 -1
- package/lib/store/RelayModernStore.js +1 -1
- package/lib/store/RelayOperationTracker.js +1 -1
- package/lib/store/RelayOptimisticRecordSource.js +1 -1
- package/lib/store/RelayPublishQueue.js +5 -3
- package/lib/store/RelayReader.js +56 -16
- package/lib/store/RelayRecordSource.js +1 -1
- package/lib/store/RelayRecordState.js +1 -1
- package/lib/store/RelayReferenceMarker.js +1 -1
- package/lib/store/RelayResponseNormalizer.js +1 -1
- package/lib/store/RelayStoreReactFlightUtils.js +1 -1
- package/lib/store/RelayStoreSubscriptions.js +1 -1
- package/lib/store/RelayStoreTypes.js +1 -1
- package/lib/store/RelayStoreUtils.js +2 -1
- package/lib/store/ResolverCache.js +11 -3
- package/lib/store/ResolverFragments.js +3 -3
- 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 +1 -1
- package/lib/store/cloneRelayScalarHandleSourceField.js +1 -1
- package/lib/store/createFragmentSpecResolver.js +1 -1
- package/lib/store/createRelayContext.js +1 -1
- 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 +1 -1
- package/lib/subscription/requestSubscription.js +1 -3
- 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 +1 -1
- package/lib/util/RelayDefaultHandleKey.js +1 -1
- package/lib/util/RelayError.js +1 -1
- package/lib/util/RelayFeatureFlags.js +1 -2
- package/lib/util/RelayProfiler.js +1 -1
- package/lib/util/RelayReplaySubject.js +1 -1
- package/lib/util/RelayRuntimeTypes.js +1 -1
- package/lib/util/StringInterner.js +1 -1
- package/lib/util/createPayloadFor3DField.js +1 -1
- package/lib/util/deepFreeze.js +1 -1
- package/lib/util/generateID.js +1 -1
- package/lib/util/getFragmentIdentifier.js +1 -1
- package/lib/util/getOperation.js +1 -1
- package/lib/util/getPaginationMetadata.js +1 -1
- package/lib/util/getPaginationVariables.js +1 -1
- package/lib/util/getPendingOperationsForFragment.js +1 -1
- package/lib/util/getRefetchMetadata.js +1 -1
- package/lib/util/getRelayHandleKey.js +1 -1
- package/lib/util/getRequestIdentifier.js +1 -1
- package/lib/util/getValueAtPath.js +1 -1
- package/lib/util/isEmptyObject.js +1 -1
- 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 +1 -1
- 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 +1 -1
- package/lib/util/withProvidedVariables.js +49 -0
- package/multi-actor-environment/ActorIdentifier.js.flow +1 -1
- package/multi-actor-environment/ActorSpecificEnvironment.js.flow +1 -1
- package/multi-actor-environment/ActorUtils.js.flow +1 -1
- package/multi-actor-environment/MultiActorEnvironment.js.flow +1 -1
- package/multi-actor-environment/MultiActorEnvironmentTypes.js.flow +1 -1
- package/multi-actor-environment/index.js.flow +1 -1
- package/mutations/RelayDeclarativeMutationConfig.js.flow +1 -2
- package/mutations/RelayRecordProxy.js.flow +1 -1
- package/mutations/RelayRecordSourceMutator.js.flow +1 -1
- package/mutations/RelayRecordSourceProxy.js.flow +1 -1
- package/mutations/RelayRecordSourceSelectorProxy.js.flow +1 -1
- package/mutations/applyOptimisticMutation.js.flow +1 -1
- package/mutations/commitLocalUpdate.js.flow +1 -1
- package/mutations/commitMutation.js.flow +9 -20
- package/mutations/readUpdatableQuery_EXPERIMENTAL.js.flow +57 -50
- package/mutations/validateMutation.js.flow +1 -1
- package/network/ConvertToExecuteFunction.js.flow +1 -1
- package/network/RelayNetwork.js.flow +11 -4
- package/network/RelayNetworkTypes.js.flow +2 -2
- package/network/RelayObservable.js.flow +1 -1
- package/network/RelayQueryResponseCache.js.flow +1 -1
- package/network/wrapNetworkWithLogObserver.js.flow +2 -3
- package/package.json +2 -2
- package/query/GraphQLTag.js.flow +2 -2
- package/query/PreloadableQueryRegistry.js.flow +3 -2
- package/query/fetchQuery.js.flow +16 -12
- package/query/fetchQueryInternal.js.flow +1 -1
- package/query/fetchQuery_DEPRECATED.js.flow +1 -1
- package/relay-runtime.js +2 -2
- package/relay-runtime.min.js +3 -3
- package/store/ClientID.js.flow +1 -1
- package/store/DataChecker.js.flow +1 -1
- package/store/OperationExecutor.js.flow +1 -1
- package/store/RelayConcreteVariables.js.flow +13 -3
- package/store/RelayExperimentalGraphResponseHandler.js.flow +3 -6
- package/store/RelayExperimentalGraphResponseTransform.js.flow +51 -22
- package/store/RelayModernEnvironment.js.flow +1 -1
- package/store/RelayModernFragmentSpecResolver.js.flow +1 -1
- package/store/RelayModernOperationDescriptor.js.flow +6 -2
- package/store/RelayModernRecord.js.flow +1 -1
- package/store/RelayModernSelector.js.flow +1 -1
- package/store/RelayModernStore.js.flow +1 -2
- package/store/RelayOperationTracker.js.flow +1 -1
- package/store/RelayOptimisticRecordSource.js.flow +1 -1
- package/store/RelayPublishQueue.js.flow +9 -2
- package/store/RelayReader.js.flow +79 -39
- package/store/RelayRecordSource.js.flow +1 -1
- package/store/RelayRecordState.js.flow +1 -1
- package/store/RelayReferenceMarker.js.flow +1 -1
- package/store/RelayResponseNormalizer.js.flow +1 -1
- package/store/RelayStoreReactFlightUtils.js.flow +1 -1
- package/store/RelayStoreSubscriptions.js.flow +1 -1
- package/store/RelayStoreTypes.js.flow +4 -3
- package/store/RelayStoreUtils.js.flow +2 -1
- package/store/ResolverCache.js.flow +19 -6
- package/store/ResolverFragments.js.flow +3 -3
- package/store/StoreInspector.js.flow +1 -1
- package/store/TypeID.js.flow +1 -1
- package/store/ViewerPattern.js.flow +1 -1
- package/store/cloneRelayHandleSourceField.js.flow +1 -1
- package/store/cloneRelayScalarHandleSourceField.js.flow +1 -1
- package/store/createFragmentSpecResolver.js.flow +1 -1
- package/store/createRelayContext.js.flow +1 -1
- 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 +1 -1
- package/store/readInlineData.js.flow +1 -1
- package/subscription/requestSubscription.js.flow +8 -14
- package/util/JSResourceTypes.flow.js.flow +1 -1
- package/util/NormalizationNode.js.flow +1 -1
- package/util/ReaderNode.js.flow +1 -1
- package/util/RelayConcreteNode.js.flow +5 -3
- package/util/RelayDefaultHandleKey.js.flow +1 -1
- package/util/RelayError.js.flow +1 -1
- package/util/RelayFeatureFlags.js.flow +1 -3
- package/util/RelayProfiler.js.flow +1 -1
- package/util/RelayReplaySubject.js.flow +1 -1
- package/util/RelayRuntimeTypes.js.flow +1 -1
- package/util/StringInterner.js.flow +1 -1
- package/util/createPayloadFor3DField.js.flow +1 -1
- package/util/deepFreeze.js.flow +1 -1
- package/util/generateID.js.flow +1 -1
- package/util/getFragmentIdentifier.js.flow +1 -1
- package/util/getOperation.js.flow +1 -1
- package/util/getPaginationMetadata.js.flow +3 -6
- package/util/getPaginationVariables.js.flow +1 -1
- package/util/getPendingOperationsForFragment.js.flow +1 -1
- package/util/getRefetchMetadata.js.flow +3 -6
- package/util/getRelayHandleKey.js.flow +1 -1
- package/util/getRequestIdentifier.js.flow +1 -1
- package/util/getValueAtPath.js.flow +1 -1
- package/util/isEmptyObject.js.flow +1 -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 +1 -1
- package/util/reportMissingRequiredFields.js.flow +1 -1
- package/util/resolveImmediate.js.flow +1 -1
- package/util/stableCopy.js.flow +1 -1
- package/util/withDuration.js.flow +1 -1
- package/util/withProvidedVariables.js.flow +64 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
* @flow strict-local
|
|
8
|
+
* @format
|
|
9
|
+
* @emails oncall+relay
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
// flowlint ambiguous-object-type:error
|
|
13
|
+
|
|
14
|
+
'use strict';
|
|
15
|
+
|
|
16
|
+
import type {ProvidedVariablesType} from './RelayConcreteNode';
|
|
17
|
+
import type {Variables} from './RelayRuntimeTypes';
|
|
18
|
+
|
|
19
|
+
const areEqual = require('areEqual');
|
|
20
|
+
const warning = require('warning');
|
|
21
|
+
|
|
22
|
+
const WEAKMAP_SUPPORTED = typeof WeakMap === 'function';
|
|
23
|
+
const debugCache = WEAKMAP_SUPPORTED ? new WeakMap() : new Map();
|
|
24
|
+
|
|
25
|
+
function withProvidedVariables(
|
|
26
|
+
userSuppliedVariables: Variables,
|
|
27
|
+
providedVariables: ?ProvidedVariablesType,
|
|
28
|
+
): Variables {
|
|
29
|
+
if (providedVariables != null) {
|
|
30
|
+
const operationVariables = {};
|
|
31
|
+
Object.assign(operationVariables, userSuppliedVariables);
|
|
32
|
+
Object.keys(providedVariables).forEach((varName: string) => {
|
|
33
|
+
const providerFunction = providedVariables[varName].get;
|
|
34
|
+
const providerResult = providerFunction();
|
|
35
|
+
|
|
36
|
+
// people like to ignore these warnings, so use the cache to
|
|
37
|
+
// enforce that we only compute the value the first time
|
|
38
|
+
if (!debugCache.has(providerFunction)) {
|
|
39
|
+
debugCache.set(providerFunction, providerResult);
|
|
40
|
+
operationVariables[varName] = providerResult;
|
|
41
|
+
} else {
|
|
42
|
+
const cachedResult = debugCache.get(providerFunction);
|
|
43
|
+
|
|
44
|
+
if (__DEV__) {
|
|
45
|
+
warning(
|
|
46
|
+
areEqual(providerResult, cachedResult),
|
|
47
|
+
'Relay: Expected function `%s` for provider `%s` to be a pure function, ' +
|
|
48
|
+
'but got conflicting return values `%s` and `%s`',
|
|
49
|
+
providerFunction.name,
|
|
50
|
+
varName,
|
|
51
|
+
providerResult,
|
|
52
|
+
cachedResult,
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
operationVariables[varName] = cachedResult;
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
return operationVariables;
|
|
59
|
+
} else {
|
|
60
|
+
return userSuppliedVariables;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
module.exports = withProvidedVariables;
|