relay-runtime 20.1.1 → 21.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/experimental.d.ts +34 -0
- package/experimental.js +1 -1
- package/experimental.js.flow +11 -11
- package/handlers/RelayDefaultHandlerProvider.d.ts +12 -0
- package/handlers/connection/ConnectionHandler.d.ts +51 -0
- package/handlers/connection/ConnectionHandler.js.flow +5 -5
- package/handlers/connection/ConnectionInterface.d.ts +40 -0
- package/handlers/connection/ConnectionInterface.js.flow +1 -1
- package/handlers/connection/MutationHandlers.d.ts +17 -0
- package/index.d.ts +274 -0
- package/index.js +1 -1
- package/index.js.flow +125 -62
- package/lib/experimental.js +3 -3
- package/lib/index.js +105 -57
- package/lib/multi-actor-environment/ActorIdentifier.js +2 -2
- package/lib/multi-actor-environment/MultiActorEnvironment.js +3 -1
- package/lib/mutations/commitMutation.js +8 -8
- package/lib/mutations/validateMutation.js +4 -4
- package/lib/query/GraphQLTag.js +3 -3
- package/lib/query/fetchQuery.js +15 -3
- package/lib/store/DataChecker.js +38 -4
- package/lib/store/NormalizationEngine.js +373 -0
- package/lib/store/OperationExecutor.js +172 -113
- package/lib/store/RelayConcreteVariables.js +1 -1
- package/lib/store/RelayErrorTrie.js +2 -2
- package/lib/store/RelayExperimentalGraphResponseTransform.js +8 -8
- package/lib/store/RelayModernEnvironment.js +26 -19
- package/lib/store/RelayModernRecord.js +18 -8
- package/lib/store/RelayModernSelector.js +9 -9
- package/lib/store/RelayModernStore.js +152 -43
- package/lib/store/RelayPublishQueue.js +1 -1
- package/lib/store/RelayReader.js +76 -38
- package/lib/store/RelayRecordSource.js +6 -0
- package/lib/store/RelayReferenceMarker.js +2 -1
- package/lib/store/RelayResponseNormalizer.js +88 -55
- package/lib/store/RelayStoreSubscriptions.js +34 -10
- package/lib/store/RelayStoreUtils.js +8 -1
- package/lib/store/ResolverFragments.js +2 -2
- package/lib/store/live-resolvers/LiveResolverCache.js +25 -9
- package/lib/store/observeFragmentExperimental.js +17 -1
- package/lib/store/observeQueryExperimental.js +2 -2
- package/lib/subscription/requestSubscription.js +3 -3
- package/lib/util/RelayError.js +3 -0
- package/lib/util/RelayFeatureFlags.js +6 -2
- package/lib/util/RelayReplaySubject.js +4 -4
- package/lib/util/handlePotentialSnapshotErrors.js +2 -2
- package/lib/util/stableCopy.js +2 -2
- package/llm-docs/api-reference/entrypoint-apis/entrypoint-container.mdx +38 -0
- package/llm-docs/api-reference/entrypoint-apis/load-entrypoint.mdx +77 -0
- package/llm-docs/api-reference/entrypoint-apis/use-entrypoint-loader.mdx +99 -0
- package/llm-docs/api-reference/graphql/graphql-directives.mdx +378 -0
- package/llm-docs/api-reference/hooks/_use-lazy-load-query-extra.mdx +16 -0
- package/llm-docs/api-reference/hooks/load-query.mdx +84 -0
- package/llm-docs/api-reference/hooks/relay-environment-provider.mdx +78 -0
- package/llm-docs/api-reference/hooks/use-client-query.mdx +65 -0
- package/llm-docs/api-reference/hooks/use-fragment.mdx +69 -0
- package/llm-docs/api-reference/hooks/use-lazy-load-query.mdx +62 -0
- package/llm-docs/api-reference/hooks/use-mutation.mdx +94 -0
- package/llm-docs/api-reference/hooks/use-pagination-fragment.mdx +166 -0
- package/llm-docs/api-reference/hooks/use-prefetchable-forward-pagination-fragment.mdx +134 -0
- package/llm-docs/api-reference/hooks/use-preloaded-query.mdx +84 -0
- package/llm-docs/api-reference/hooks/use-query-loader.mdx +95 -0
- package/llm-docs/api-reference/hooks/use-refetchable-fragment.mdx +122 -0
- package/llm-docs/api-reference/hooks/use-relay-environment.mdx +37 -0
- package/llm-docs/api-reference/hooks/use-subscription.mdx +66 -0
- package/llm-docs/api-reference/relay-resolvers/docblock-format.mdx +321 -0
- package/llm-docs/api-reference/relay-resolvers/runtime-functions.mdx +94 -0
- package/llm-docs/api-reference/relay-runtime/commit-mutation.mdx +65 -0
- package/llm-docs/api-reference/relay-runtime/fetch-query.mdx +118 -0
- package/llm-docs/api-reference/relay-runtime/field-logger.mdx +170 -0
- package/llm-docs/api-reference/relay-runtime/observe-fragment.mdx +92 -0
- package/llm-docs/api-reference/relay-runtime/relay-environment.mdx +53 -0
- package/llm-docs/api-reference/relay-runtime/request-subscription.mdx +54 -0
- package/llm-docs/api-reference/relay-runtime/runtime-configuration.mdx +52 -0
- package/llm-docs/api-reference/relay-runtime/store.mdx +734 -0
- package/llm-docs/api-reference/relay-runtime/wait-for-fragment-data.mdx +89 -0
- package/llm-docs/api-reference/types/CacheConfig.mdx +8 -0
- package/llm-docs/api-reference/types/Disposable.mdx +4 -0
- package/llm-docs/api-reference/types/GraphQLSubscriptionConfig.mdx +17 -0
- package/llm-docs/api-reference/types/MutationConfig.mdx +31 -0
- package/llm-docs/api-reference/types/SelectorStoreUpdater.mdx +6 -0
- package/llm-docs/api-reference/types/UploadableMap.mdx +3 -0
- package/llm-docs/community/learning-resources.mdx +64 -0
- package/llm-docs/debugging/declarative-mutation-directives.mdx +34 -0
- package/llm-docs/debugging/disallowed-id-types-error.mdx +43 -0
- package/llm-docs/debugging/inconsistent-typename-error.mdx +47 -0
- package/llm-docs/debugging/relay-devtools.mdx +73 -0
- package/llm-docs/debugging/why-null.mdx +116 -0
- package/llm-docs/editor-support.mdx +55 -0
- package/llm-docs/error-reference/unknown-field.mdx +36 -0
- package/llm-docs/getting-started/babel-plugin.mdx +31 -0
- package/llm-docs/getting-started/compiler-config.mdx +25 -0
- package/llm-docs/getting-started/compiler.mdx +98 -0
- package/llm-docs/getting-started/lint-rules.mdx +87 -0
- package/llm-docs/getting-started/production.mdx +30 -0
- package/llm-docs/getting-started/quick-start.mdx +216 -0
- package/llm-docs/glossary/glossary.mdx +1040 -0
- package/llm-docs/guided-tour/list-data/advanced-pagination.mdx +157 -0
- package/llm-docs/guided-tour/list-data/connections.mdx +81 -0
- package/llm-docs/guided-tour/list-data/pagination.mdx +193 -0
- package/llm-docs/guided-tour/list-data/rendering-connections.mdx +112 -0
- package/llm-docs/guided-tour/list-data/streaming-pagination.mdx +87 -0
- package/llm-docs/guided-tour/managing-data-outside-react/retaining-queries.mdx +51 -0
- package/llm-docs/guided-tour/refetching/refetching-queries-with-different-data.mdx +337 -0
- package/llm-docs/guided-tour/refetching/refreshing-queries.mdx +350 -0
- package/llm-docs/guided-tour/rendering/environment.mdx +59 -0
- package/llm-docs/guided-tour/rendering/error-states.mdx +295 -0
- package/llm-docs/guided-tour/rendering/fragments.mdx +354 -0
- package/llm-docs/guided-tour/rendering/loading-states.mdx +245 -0
- package/llm-docs/guided-tour/rendering/queries.mdx +261 -0
- package/llm-docs/guided-tour/rendering/variables.mdx +233 -0
- package/llm-docs/guided-tour/reusing-cached-data/fetch-policies.mdx +56 -0
- package/llm-docs/guided-tour/reusing-cached-data/filling-in-missing-data.mdx +102 -0
- package/llm-docs/guided-tour/reusing-cached-data/introduction.mdx +22 -0
- package/llm-docs/guided-tour/reusing-cached-data/presence-of-data.mdx +93 -0
- package/llm-docs/guided-tour/reusing-cached-data/rendering-partially-cached-data.mdx +175 -0
- package/llm-docs/guided-tour/reusing-cached-data/staleness-of-data.mdx +116 -0
- package/llm-docs/guided-tour/updating-data/client-only-data.mdx +115 -0
- package/llm-docs/guided-tour/updating-data/graphql-mutations.mdx +334 -0
- package/llm-docs/guided-tour/updating-data/graphql-subscriptions.mdx +279 -0
- package/llm-docs/guided-tour/updating-data/imperatively-modifying-linked-fields.mdx +511 -0
- package/llm-docs/guided-tour/updating-data/imperatively-modifying-store-data-legacy.mdx +142 -0
- package/llm-docs/guided-tour/updating-data/imperatively-modifying-store-data.mdx +275 -0
- package/llm-docs/guided-tour/updating-data/introduction.mdx +25 -0
- package/llm-docs/guided-tour/updating-data/local-data-updates.mdx +71 -0
- package/llm-docs/guided-tour/updating-data/typesafe-updaters-faq.mdx +83 -0
- package/llm-docs/guided-tour/updating-data/updating-connections.mdx +592 -0
- package/llm-docs/guides/alias-directive.mdx +160 -0
- package/llm-docs/guides/catch-directive.mdx +167 -0
- package/llm-docs/guides/client-schema-extensions.mdx +208 -0
- package/llm-docs/guides/codemods.mdx +79 -0
- package/llm-docs/guides/data-driven-dependencies/client-3d.mdx +255 -0
- package/llm-docs/guides/data-driven-dependencies/configuration.mdx +127 -0
- package/llm-docs/guides/data-driven-dependencies/introduction.mdx +39 -0
- package/llm-docs/guides/data-driven-dependencies/server-3d.mdx +664 -0
- package/llm-docs/guides/document-comparison.mdx +106 -0
- package/llm-docs/guides/graphql-server-specification.mdx +453 -0
- package/llm-docs/guides/network-layer.mdx +69 -0
- package/llm-docs/guides/persisted-queries.mdx +328 -0
- package/llm-docs/guides/relay-resolvers/context.mdx +99 -0
- package/llm-docs/guides/relay-resolvers/defining-fields.mdx +151 -0
- package/llm-docs/guides/relay-resolvers/defining-types.mdx +164 -0
- package/llm-docs/guides/relay-resolvers/deprecated.mdx +27 -0
- package/llm-docs/guides/relay-resolvers/derived-fields.mdx +127 -0
- package/llm-docs/guides/relay-resolvers/descriptions.mdx +44 -0
- package/llm-docs/guides/relay-resolvers/enabling.mdx +41 -0
- package/llm-docs/guides/relay-resolvers/errors.mdx +64 -0
- package/llm-docs/guides/relay-resolvers/field-arguments.mdx +63 -0
- package/llm-docs/guides/relay-resolvers/introduction.mdx +62 -0
- package/llm-docs/guides/relay-resolvers/limitations.mdx +30 -0
- package/llm-docs/guides/relay-resolvers/live-fields.mdx +164 -0
- package/llm-docs/guides/relay-resolvers/return-types.mdx +161 -0
- package/llm-docs/guides/relay-resolvers/suspense.mdx +41 -0
- package/llm-docs/guides/required-directive.mdx +240 -0
- package/llm-docs/guides/semantic-nullability.mdx +93 -0
- package/llm-docs/guides/testing-relay-components.mdx +642 -0
- package/llm-docs/guides/testing-relay-with-preloaded-queries.mdx +160 -0
- package/llm-docs/guides/throw-on-field-error-directive.mdx +58 -0
- package/llm-docs/guides/type-emission.mdx +414 -0
- package/llm-docs/home.mdx +32 -0
- package/llm-docs/principles-and-architecture/architecture-overview.mdx +24 -0
- package/llm-docs/principles-and-architecture/compiler-architecture.mdx +106 -0
- package/llm-docs/principles-and-architecture/runtime-architecture.mdx +249 -0
- package/llm-docs/principles-and-architecture/thinking-in-graphql.mdx +309 -0
- package/llm-docs/principles-and-architecture/thinking-in-relay.mdx +104 -0
- package/llm-docs/principles-and-architecture/videos.mdx +50 -0
- package/llm-docs/tutorial/arrays-lists.mdx +126 -0
- package/llm-docs/tutorial/fragments-1.mdx +487 -0
- package/llm-docs/tutorial/graphql.mdx +172 -0
- package/llm-docs/tutorial/interfaces-polymorphism.mdx +161 -0
- package/llm-docs/tutorial/intro.mdx +58 -0
- package/llm-docs/tutorial/mutations-updates.mdx +624 -0
- package/llm-docs/tutorial/organizing-mutations-queries-and-subscriptions.mdx +13 -0
- package/llm-docs/tutorial/queries-1.mdx +267 -0
- package/llm-docs/tutorial/queries-2.mdx +389 -0
- package/llm-docs/tutorial/refetchable-fragments.mdx +352 -0
- package/multi-actor-environment/ActorIdentifier.d.ts +17 -0
- package/multi-actor-environment/ActorIdentifier.js.flow +2 -2
- package/multi-actor-environment/ActorSpecificEnvironment.js.flow +15 -15
- package/multi-actor-environment/ActorUtils.js.flow +1 -1
- package/multi-actor-environment/MultiActorEnvironment.d.ts +123 -0
- package/multi-actor-environment/MultiActorEnvironment.js.flow +32 -24
- package/multi-actor-environment/MultiActorEnvironmentTypes.d.ts +225 -0
- package/multi-actor-environment/MultiActorEnvironmentTypes.js.flow +6 -6
- package/multi-actor-environment/index.d.ts +14 -0
- package/multi-actor-environment.d.ts +8 -0
- package/mutations/RelayDeclarativeMutationConfig.d.ts +70 -0
- package/mutations/RelayDeclarativeMutationConfig.js.flow +9 -9
- package/mutations/RelayRecordProxy.js.flow +8 -11
- package/mutations/RelayRecordSourceMutator.js.flow +4 -4
- package/mutations/RelayRecordSourceProxy.js.flow +4 -4
- package/mutations/RelayRecordSourceSelectorProxy.js.flow +6 -6
- package/mutations/applyOptimisticMutation.d.ts +25 -0
- package/mutations/applyOptimisticMutation.js.flow +2 -2
- package/mutations/commitLocalUpdate.d.ts +10 -0
- package/mutations/commitMutation.d.ts +48 -0
- package/mutations/commitMutation.js.flow +21 -17
- package/mutations/createUpdatableProxy.js.flow +19 -19
- package/mutations/readUpdatableFragment.js.flow +3 -3
- package/mutations/readUpdatableQuery.js.flow +3 -3
- package/mutations/validateMutation.js.flow +7 -7
- package/network/RelayNetwork.d.ts +12 -0
- package/network/RelayNetworkTypes.d.ts +145 -0
- package/network/RelayNetworkTypes.js.flow +18 -18
- package/network/RelayObservable.d.ts +197 -0
- package/network/RelayObservable.js.flow +32 -30
- package/network/RelayQueryResponseCache.d.ts +16 -0
- package/network/RelayQueryResponseCache.js.flow +3 -3
- package/network/wrapNetworkWithLogObserver.js.flow +1 -1
- package/package.json +2 -1
- package/query/GraphQLTag.d.ts +45 -0
- package/query/GraphQLTag.js.flow +22 -10
- package/query/fetchQuery.d.ts +21 -0
- package/query/fetchQuery.js.flow +23 -10
- package/query/fetchQueryInternal.d.ts +26 -0
- package/query/fetchQueryInternal.js.flow +4 -4
- package/query/fetchQuery_DEPRECATED.d.ts +17 -0
- package/query/fetchQuery_DEPRECATED.js.flow +1 -1
- package/store/ClientID.d.ts +14 -0
- package/store/DataChecker.js.flow +51 -15
- package/store/NormalizationEngine.js.flow +782 -0
- package/store/OperationExecutor.d.ts +51 -0
- package/store/OperationExecutor.js.flow +204 -98
- package/store/RelayConcreteVariables.js.flow +5 -5
- package/store/RelayErrorTrie.js.flow +12 -12
- package/store/RelayExperimentalGraphResponseHandler.js.flow +3 -3
- package/store/RelayExperimentalGraphResponseTransform.js.flow +10 -10
- package/store/RelayModernEnvironment.d.ts +97 -0
- package/store/RelayModernEnvironment.js.flow +58 -43
- package/store/RelayModernFragmentSpecResolver.js.flow +1 -1
- package/store/RelayModernOperationDescriptor.d.ts +28 -0
- package/store/RelayModernOperationDescriptor.js.flow +1 -1
- package/store/RelayModernRecord.d.ts +92 -0
- package/store/RelayModernRecord.js.flow +44 -20
- package/store/RelayModernSelector.d.ts +123 -0
- package/store/RelayModernSelector.js.flow +21 -21
- package/store/RelayModernStore.d.ts +57 -0
- package/store/RelayModernStore.js.flow +219 -58
- package/store/RelayOperationTracker.d.ts +29 -0
- package/store/RelayOperationTracker.js.flow +2 -2
- package/store/RelayOptimisticRecordSource.js.flow +2 -2
- package/store/RelayPublishQueue.js.flow +29 -20
- package/store/RelayReader.js.flow +129 -57
- package/store/RelayRecordSource.d.ts +26 -0
- package/store/RelayRecordSource.js.flow +10 -0
- package/store/RelayRecordState.d.ts +28 -0
- package/store/RelayRecordState.js.flow +1 -1
- package/store/RelayReferenceMarker.js.flow +5 -4
- package/store/RelayResponseNormalizer.d.ts +28 -0
- package/store/RelayResponseNormalizer.js.flow +130 -62
- package/store/RelayStoreSubscriptions.js.flow +52 -8
- package/store/RelayStoreTypes.d.ts +1327 -0
- package/store/RelayStoreTypes.js.flow +371 -278
- package/store/RelayStoreUtils.d.ts +86 -0
- package/store/RelayStoreUtils.js.flow +16 -8
- package/store/ResolverCache.js.flow +2 -2
- package/store/ResolverFragments.d.ts +43 -0
- package/store/ResolverFragments.js.flow +22 -14
- package/store/StoreInspector.js.flow +7 -8
- package/store/ViewerPattern.d.ts +11 -0
- package/store/cloneRelayHandleSourceField.js.flow +1 -1
- package/store/cloneRelayScalarHandleSourceField.js.flow +1 -1
- package/store/createFragmentSpecResolver.d.ts +16 -0
- package/store/createRelayContext.js.flow +1 -1
- package/store/createRelayLoggingContext.js.flow +4 -4
- package/store/defaultGetDataID.js.flow +2 -2
- package/store/isRelayModernEnvironment.d.ts +8 -0
- package/store/isRelayModernEnvironment.js.flow +4 -2
- package/store/live-resolvers/LiveResolverCache.js.flow +55 -20
- package/store/live-resolvers/LiveResolverSuspenseSentinel.js.flow +3 -3
- package/store/live-resolvers/getOutputTypeRecordIDs.js.flow +1 -1
- package/store/live-resolvers/isLiveStateValue.js.flow +2 -2
- package/store/live-resolvers/resolverDataInjector.d.ts +27 -0
- package/store/live-resolvers/resolverDataInjector.js.flow +8 -5
- package/store/observeFragmentExperimental.d.ts +46 -0
- package/store/observeFragmentExperimental.js.flow +50 -21
- package/store/observeQueryExperimental.d.ts +30 -0
- package/store/observeQueryExperimental.js.flow +5 -5
- package/store/readInlineData.d.ts +19 -0
- package/store/readInlineData.js.flow +5 -5
- package/store/waitForFragmentExperimental.d.ts +49 -0
- package/store/waitForFragmentExperimental.js.flow +3 -3
- package/subscription/requestSubscription.d.ts +27 -0
- package/subscription/requestSubscription.js.flow +10 -10
- package/util/JSResourceTypes.flow.js.flow +4 -4
- package/util/NormalizationNode.d.ts +235 -0
- package/util/NormalizationNode.js.flow +127 -123
- package/util/ReaderNode.d.ts +264 -0
- package/util/ReaderNode.js.flow +156 -151
- package/util/RelayConcreteNode.d.ts +120 -0
- package/util/RelayConcreteNode.js.flow +32 -32
- package/util/RelayError.d.ts +13 -0
- package/util/RelayError.js.flow +4 -1
- package/util/RelayFeatureFlags.d.ts +40 -0
- package/util/RelayFeatureFlags.js.flow +21 -1
- package/util/RelayProfiler.d.ts +121 -0
- package/util/RelayProfiler.js.flow +1 -1
- package/util/RelayReplaySubject.d.ts +25 -0
- package/util/RelayReplaySubject.js.flow +3 -3
- package/util/RelayRuntimeTypes.d.ts +59 -0
- package/util/RelayRuntimeTypes.js.flow +36 -33
- package/util/createPayloadFor3DField.d.ts +17 -0
- package/util/createPayloadFor3DField.js.flow +9 -5
- package/util/deepFreeze.d.ts +8 -0
- package/util/deepFreeze.js.flow +2 -2
- package/util/getFragmentIdentifier.d.ts +10 -0
- package/util/getFragmentIdentifier.js.flow +1 -1
- package/util/getPaginationMetadata.d.ts +20 -0
- package/util/getPaginationMetadata.js.flow +1 -1
- package/util/getPaginationVariables.d.ts +20 -0
- package/util/getPaginationVariables.js.flow +1 -1
- package/util/getPendingOperationsForFragment.d.ts +18 -0
- package/util/getPendingOperationsForFragment.js.flow +2 -2
- package/util/getRefetchMetadata.d.ts +19 -0
- package/util/getRefetchMetadata.js.flow +6 -5
- package/util/getRelayHandleKey.d.ts +8 -0
- package/util/getRequestIdentifier.d.ts +17 -0
- package/util/getValueAtPath.d.ts +8 -0
- package/util/getValueAtPath.js.flow +3 -3
- package/util/handlePotentialSnapshotErrors.d.ts +14 -0
- package/util/handlePotentialSnapshotErrors.js.flow +5 -5
- package/util/isEmptyObject.js.flow +1 -1
- package/util/isPromise.d.ts +8 -0
- package/util/isPromise.js.flow +2 -2
- package/util/isScalarAndEqual.d.ts +8 -0
- package/util/isScalarAndEqual.js.flow +1 -1
- package/util/recycleNodesInto.d.ts +8 -0
- package/util/recycleNodesInto.js.flow +2 -2
- package/util/registerEnvironmentWithDevTools.js.flow +1 -1
- package/util/shallowFreeze.js.flow +1 -1
- package/util/stableCopy.d.ts +8 -0
- package/util/stableCopy.js.flow +5 -5
- package/util/withProvidedVariables.d.ts +19 -0
- package/util/withProvidedVariables.js.flow +14 -10
|
@@ -0,0 +1,21 @@
|
|
|
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
|
+
|
|
8
|
+
import { RelayObservable } from '../network/RelayObservable';
|
|
9
|
+
import { Environment } from '../store/RelayStoreTypes';
|
|
10
|
+
import {CacheConfig, FetchQueryFetchPolicy, OperationType} from '../util/RelayRuntimeTypes';
|
|
11
|
+
import { GraphQLTaggedNode } from './GraphQLTag';
|
|
12
|
+
|
|
13
|
+
export function fetchQuery<T extends OperationType>(
|
|
14
|
+
environment: Environment,
|
|
15
|
+
taggedNode: GraphQLTaggedNode,
|
|
16
|
+
variables: T['variables'],
|
|
17
|
+
cacheConfig?: {
|
|
18
|
+
networkCacheConfig?: CacheConfig | null | undefined;
|
|
19
|
+
fetchPolicy?: FetchQueryFetchPolicy | null | undefined;
|
|
20
|
+
} | null,
|
|
21
|
+
): RelayObservable<T['response']>;
|
package/query/fetchQuery.js.flow
CHANGED
|
@@ -112,11 +112,11 @@ const invariant = require('invariant');
|
|
|
112
112
|
* ```
|
|
113
113
|
* NOTE: When using .toPromise(), the request cannot be cancelled.
|
|
114
114
|
*/
|
|
115
|
-
function fetchQuery<TVariables
|
|
115
|
+
function fetchQuery<TVariables extends Variables, TData, TRawResponse>(
|
|
116
116
|
environment: IEnvironment,
|
|
117
117
|
query: Query<TVariables, TData, TRawResponse>,
|
|
118
118
|
variables: NoInfer<TVariables>,
|
|
119
|
-
options?:
|
|
119
|
+
options?: Readonly<{
|
|
120
120
|
fetchPolicy?: FetchQueryFetchPolicy,
|
|
121
121
|
networkCacheConfig?: CacheConfig,
|
|
122
122
|
}>,
|
|
@@ -139,7 +139,7 @@ function fetchQuery<TVariables: Variables, TData, TRawResponse>(
|
|
|
139
139
|
|
|
140
140
|
function readData(snapshot: Snapshot): TData {
|
|
141
141
|
handlePotentialSnapshotErrors(environment, snapshot.fieldErrors);
|
|
142
|
-
/* $FlowFixMe[incompatible-
|
|
142
|
+
/* $FlowFixMe[incompatible-type] we assume readData returns the right
|
|
143
143
|
* data just having written it from network or checked availability. */
|
|
144
144
|
return snapshot.data;
|
|
145
145
|
}
|
|
@@ -151,22 +151,35 @@ function fetchQuery<TVariables: Variables, TData, TRawResponse>(
|
|
|
151
151
|
);
|
|
152
152
|
}
|
|
153
153
|
case 'store-or-network': {
|
|
154
|
-
|
|
155
|
-
|
|
154
|
+
const queryAvailability = environment.check(operation);
|
|
155
|
+
const shouldFetch = queryAvailability.status !== 'available';
|
|
156
|
+
let observable;
|
|
157
|
+
if (!shouldFetch) {
|
|
158
|
+
observable = RelayObservable.from<Snapshot>(
|
|
156
159
|
environment.lookup(operation.fragment),
|
|
157
160
|
).map(readData);
|
|
161
|
+
} else {
|
|
162
|
+
observable = getNetworkObservable<$FlowFixMe>(
|
|
163
|
+
environment,
|
|
164
|
+
operation,
|
|
165
|
+
).map(readData);
|
|
158
166
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
167
|
+
environment.__log({
|
|
168
|
+
name: 'fetchquery.fetch',
|
|
169
|
+
operation,
|
|
170
|
+
fetchPolicy,
|
|
171
|
+
queryAvailability,
|
|
172
|
+
shouldFetch,
|
|
173
|
+
});
|
|
174
|
+
return observable;
|
|
162
175
|
}
|
|
163
176
|
default:
|
|
164
|
-
|
|
177
|
+
fetchPolicy as empty;
|
|
165
178
|
throw new Error('fetchQuery: Invalid fetchPolicy ' + fetchPolicy);
|
|
166
179
|
}
|
|
167
180
|
}
|
|
168
181
|
|
|
169
|
-
function getNetworkObservable<TQuery
|
|
182
|
+
function getNetworkObservable<TQuery extends OperationType>(
|
|
170
183
|
environment: IEnvironment,
|
|
171
184
|
operation: OperationDescriptor,
|
|
172
185
|
): RelayObservable<TQuery['response']> {
|
|
@@ -0,0 +1,26 @@
|
|
|
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
|
+
|
|
8
|
+
import { GraphQLResponse } from '../network/RelayNetworkTypes';
|
|
9
|
+
import { RelayObservable as Observable } from '../network/RelayObservable';
|
|
10
|
+
import {Environment, OperationDescriptor, RequestDescriptor} from '../store/RelayStoreTypes';
|
|
11
|
+
import { RequestIdentifier } from '../util/getRequestIdentifier';
|
|
12
|
+
|
|
13
|
+
export function fetchQuery(environment: Environment, operation: OperationDescriptor): Observable<GraphQLResponse>;
|
|
14
|
+
|
|
15
|
+
export function fetchQueryDeduped(
|
|
16
|
+
environment: Environment,
|
|
17
|
+
identifier: RequestIdentifier,
|
|
18
|
+
fetchFn: () => Observable<GraphQLResponse>,
|
|
19
|
+
): Observable<GraphQLResponse>;
|
|
20
|
+
|
|
21
|
+
export function getPromiseForActiveRequest(environment: Environment, request: RequestDescriptor): Promise<void> | null;
|
|
22
|
+
|
|
23
|
+
export function getObservableForActiveRequest(
|
|
24
|
+
environment: Environment,
|
|
25
|
+
request: RequestDescriptor,
|
|
26
|
+
): Observable<void> | null;
|
|
@@ -25,10 +25,10 @@ const RelayReplaySubject = require('../util/RelayReplaySubject');
|
|
|
25
25
|
const invariant = require('invariant');
|
|
26
26
|
|
|
27
27
|
type RequestCacheEntry = {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
readonly identifier: RequestIdentifier,
|
|
29
|
+
readonly subject: RelayReplaySubject<GraphQLResponse>,
|
|
30
|
+
readonly subjectForInFlightStatus: RelayReplaySubject<GraphQLResponse>,
|
|
31
|
+
readonly subscription: Subscription,
|
|
32
32
|
promise: ?Promise<void>,
|
|
33
33
|
};
|
|
34
34
|
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
+
|
|
8
|
+
import { Environment } from '../store/RelayStoreTypes';
|
|
9
|
+
import {CacheConfig, OperationType} from '../util/RelayRuntimeTypes';
|
|
10
|
+
import { GraphQLTaggedNode } from './GraphQLTag';
|
|
11
|
+
|
|
12
|
+
export function fetchQuery_DEPRECATED<T extends OperationType>(
|
|
13
|
+
environment: Environment,
|
|
14
|
+
taggedNode: GraphQLTaggedNode,
|
|
15
|
+
variables: T['variables'],
|
|
16
|
+
cacheConfig?: CacheConfig | null,
|
|
17
|
+
): Promise<T['response']>;
|
|
@@ -26,7 +26,7 @@ const {getRequest} = require('./GraphQLTag');
|
|
|
26
26
|
* order to be accessible in the result object.
|
|
27
27
|
*/
|
|
28
28
|
|
|
29
|
-
function fetchQuery_DEPRECATED<T
|
|
29
|
+
function fetchQuery_DEPRECATED<T extends OperationType>(
|
|
30
30
|
environment: IEnvironment,
|
|
31
31
|
taggedNode: GraphQLTaggedNode,
|
|
32
32
|
variables: T['variables'],
|
|
@@ -0,0 +1,14 @@
|
|
|
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
|
+
|
|
8
|
+
import { DataID } from '../util/RelayRuntimeTypes';
|
|
9
|
+
|
|
10
|
+
export function generateClientID(id: DataID, storageKey: string, index?: number): DataID;
|
|
11
|
+
|
|
12
|
+
export function isClientID(id: DataID): boolean;
|
|
13
|
+
|
|
14
|
+
export function generateUniqueClientID(): DataID;
|
|
@@ -46,8 +46,8 @@ const {TYPE_SCHEMA_TYPE, generateTypeID} = require('./TypeID');
|
|
|
46
46
|
const invariant = require('invariant');
|
|
47
47
|
|
|
48
48
|
export type Availability = {
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
readonly status: 'available' | 'missing',
|
|
50
|
+
readonly mostRecentlyInvalidatedAt: ?number,
|
|
51
51
|
};
|
|
52
52
|
|
|
53
53
|
const {getModuleOperationKey, getStorageKey, getArgumentValues} =
|
|
@@ -68,7 +68,7 @@ function check(
|
|
|
68
68
|
getTargetForActor: (actorIdentifier: ActorIdentifier) => MutableRecordSource,
|
|
69
69
|
defaultActorIdentifier: ActorIdentifier,
|
|
70
70
|
selector: NormalizationSelector,
|
|
71
|
-
handlers:
|
|
71
|
+
handlers: ReadonlyArray<MissingFieldHandler>,
|
|
72
72
|
operationLoader: ?OperationLoader,
|
|
73
73
|
getDataID: GetDataID,
|
|
74
74
|
shouldProcessClientComponents: ?boolean,
|
|
@@ -108,7 +108,7 @@ function check(
|
|
|
108
108
|
* @private
|
|
109
109
|
*/
|
|
110
110
|
class DataChecker {
|
|
111
|
-
_handlers:
|
|
111
|
+
_handlers: ReadonlyArray<MissingFieldHandler>;
|
|
112
112
|
_mostRecentlyInvalidatedAt: number | null;
|
|
113
113
|
_mutator: RelayRecordSourceMutator;
|
|
114
114
|
_operationLoader: OperationLoader | null;
|
|
@@ -118,12 +118,14 @@ class DataChecker {
|
|
|
118
118
|
_useExecTimeResolvers: boolean;
|
|
119
119
|
_variables: Variables;
|
|
120
120
|
_shouldProcessClientComponents: ?boolean;
|
|
121
|
-
|
|
122
|
-
|
|
121
|
+
readonly _getSourceForActor: (
|
|
122
|
+
actorIdentifier: ActorIdentifier,
|
|
123
|
+
) => RecordSource;
|
|
124
|
+
readonly _getTargetForActor: (
|
|
123
125
|
actorIdentifier: ActorIdentifier,
|
|
124
126
|
) => MutableRecordSource;
|
|
125
|
-
|
|
126
|
-
|
|
127
|
+
readonly _getDataID: GetDataID;
|
|
128
|
+
readonly _mutatorRecordSourceProxyCache: Map<
|
|
127
129
|
ActorIdentifier,
|
|
128
130
|
[RelayRecordSourceMutator, RelayRecordSourceProxy],
|
|
129
131
|
>;
|
|
@@ -136,7 +138,7 @@ class DataChecker {
|
|
|
136
138
|
) => MutableRecordSource,
|
|
137
139
|
defaultActorIdentifier: ActorIdentifier,
|
|
138
140
|
variables: Variables,
|
|
139
|
-
handlers:
|
|
141
|
+
handlers: ReadonlyArray<MissingFieldHandler>,
|
|
140
142
|
operationLoader: ?OperationLoader,
|
|
141
143
|
getDataID: GetDataID,
|
|
142
144
|
shouldProcessClientComponents: ?boolean,
|
|
@@ -193,16 +195,16 @@ class DataChecker {
|
|
|
193
195
|
|
|
194
196
|
return this._recordWasMissing === true
|
|
195
197
|
? {
|
|
196
|
-
status: 'missing',
|
|
197
198
|
mostRecentlyInvalidatedAt: this._mostRecentlyInvalidatedAt,
|
|
199
|
+
status: 'missing',
|
|
198
200
|
}
|
|
199
201
|
: {
|
|
200
|
-
status: 'available',
|
|
201
202
|
mostRecentlyInvalidatedAt: this._mostRecentlyInvalidatedAt,
|
|
203
|
+
status: 'available',
|
|
202
204
|
};
|
|
203
205
|
}
|
|
204
206
|
|
|
205
|
-
_getVariableValue(name: string):
|
|
207
|
+
_getVariableValue(name: string): unknown {
|
|
206
208
|
invariant(
|
|
207
209
|
this._variables.hasOwnProperty(name),
|
|
208
210
|
'RelayAsyncLoader(): Undefined variable `%s`.',
|
|
@@ -218,7 +220,7 @@ class DataChecker {
|
|
|
218
220
|
_handleMissingScalarField(
|
|
219
221
|
field: NormalizationScalarField,
|
|
220
222
|
dataID: DataID,
|
|
221
|
-
):
|
|
223
|
+
): unknown {
|
|
222
224
|
if (field.name === 'id' && field.alias == null && isClientID(dataID)) {
|
|
223
225
|
return undefined;
|
|
224
226
|
}
|
|
@@ -239,6 +241,15 @@ class DataChecker {
|
|
|
239
241
|
}
|
|
240
242
|
}
|
|
241
243
|
}
|
|
244
|
+
if (this._log != null) {
|
|
245
|
+
this._log({
|
|
246
|
+
name: 'store.datachecker.missing',
|
|
247
|
+
kind: 'scalar',
|
|
248
|
+
dataID,
|
|
249
|
+
fieldName: field.name,
|
|
250
|
+
storageKey: getStorageKey(field, this._variables),
|
|
251
|
+
});
|
|
252
|
+
}
|
|
242
253
|
this._handleMissing();
|
|
243
254
|
}
|
|
244
255
|
|
|
@@ -266,6 +277,15 @@ class DataChecker {
|
|
|
266
277
|
}
|
|
267
278
|
}
|
|
268
279
|
}
|
|
280
|
+
if (this._log != null) {
|
|
281
|
+
this._log({
|
|
282
|
+
name: 'store.datachecker.missing',
|
|
283
|
+
kind: 'linked',
|
|
284
|
+
dataID,
|
|
285
|
+
fieldName: field.name,
|
|
286
|
+
storageKey: getStorageKey(field, this._variables),
|
|
287
|
+
});
|
|
288
|
+
}
|
|
269
289
|
this._handleMissing();
|
|
270
290
|
}
|
|
271
291
|
|
|
@@ -299,12 +319,28 @@ class DataChecker {
|
|
|
299
319
|
}
|
|
300
320
|
}
|
|
301
321
|
}
|
|
322
|
+
if (this._log != null) {
|
|
323
|
+
this._log({
|
|
324
|
+
name: 'store.datachecker.missing',
|
|
325
|
+
kind: 'pluralLinked',
|
|
326
|
+
dataID,
|
|
327
|
+
fieldName: field.name,
|
|
328
|
+
storageKey: getStorageKey(field, this._variables),
|
|
329
|
+
});
|
|
330
|
+
}
|
|
302
331
|
this._handleMissing();
|
|
303
332
|
}
|
|
304
333
|
|
|
305
334
|
_traverse(node: NormalizationNode, dataID: DataID): void {
|
|
306
335
|
const status = this._mutator.getStatus(dataID);
|
|
307
336
|
if (status === UNKNOWN) {
|
|
337
|
+
if (this._log != null) {
|
|
338
|
+
this._log({
|
|
339
|
+
name: 'store.datachecker.missing',
|
|
340
|
+
kind: 'unknown_record',
|
|
341
|
+
dataID,
|
|
342
|
+
});
|
|
343
|
+
}
|
|
308
344
|
this._handleMissing();
|
|
309
345
|
}
|
|
310
346
|
|
|
@@ -323,7 +359,7 @@ class DataChecker {
|
|
|
323
359
|
}
|
|
324
360
|
|
|
325
361
|
_traverseSelections(
|
|
326
|
-
selections:
|
|
362
|
+
selections: ReadonlyArray<NormalizationSelection>,
|
|
327
363
|
dataID: DataID,
|
|
328
364
|
): void {
|
|
329
365
|
selections.forEach(selection => {
|
|
@@ -470,7 +506,7 @@ class DataChecker {
|
|
|
470
506
|
}
|
|
471
507
|
break;
|
|
472
508
|
default:
|
|
473
|
-
|
|
509
|
+
selection as empty;
|
|
474
510
|
invariant(
|
|
475
511
|
false,
|
|
476
512
|
'RelayAsyncLoader(): Unexpected ast kind `%s`.',
|