relay-runtime 20.1.1 → 21.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/experimental.js +1 -1
- package/experimental.js.flow +8 -8
- package/handlers/connection/ConnectionHandler.js.flow +5 -5
- package/handlers/connection/ConnectionInterface.js.flow +1 -1
- 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 +113 -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 +82 -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 +213 -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 +66 -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.js.flow +2 -2
- package/multi-actor-environment/ActorSpecificEnvironment.js.flow +7 -7
- package/multi-actor-environment/ActorUtils.js.flow +1 -1
- package/multi-actor-environment/MultiActorEnvironment.js.flow +12 -8
- package/multi-actor-environment/MultiActorEnvironmentTypes.js.flow +3 -3
- 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.js.flow +2 -2
- package/mutations/commitMutation.js.flow +20 -16
- 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/RelayNetworkTypes.js.flow +4 -4
- package/network/RelayObservable.js.flow +16 -14
- package/network/RelayQueryResponseCache.js.flow +3 -3
- package/network/wrapNetworkWithLogObserver.js.flow +1 -1
- package/package.json +2 -1
- package/query/GraphQLTag.js.flow +22 -10
- package/query/fetchQuery.js.flow +23 -10
- package/query/fetchQuery_DEPRECATED.js.flow +1 -1
- package/store/DataChecker.js.flow +43 -9
- package/store/NormalizationEngine.js.flow +779 -0
- package/store/OperationExecutor.js.flow +173 -70
- 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.js.flow +41 -26
- package/store/RelayModernFragmentSpecResolver.js.flow +1 -1
- package/store/RelayModernOperationDescriptor.js.flow +1 -1
- package/store/RelayModernRecord.js.flow +44 -20
- package/store/RelayModernSelector.js.flow +21 -21
- package/store/RelayModernStore.js.flow +219 -58
- package/store/RelayOperationTracker.js.flow +2 -2
- package/store/RelayOptimisticRecordSource.js.flow +2 -2
- package/store/RelayPublishQueue.js.flow +21 -12
- package/store/RelayReader.js.flow +129 -57
- package/store/RelayRecordSource.js.flow +10 -0
- package/store/RelayRecordState.js.flow +1 -1
- package/store/RelayReferenceMarker.js.flow +5 -4
- package/store/RelayResponseNormalizer.js.flow +125 -57
- package/store/RelayStoreSubscriptions.js.flow +52 -8
- package/store/RelayStoreTypes.js.flow +153 -64
- package/store/RelayStoreUtils.js.flow +15 -7
- package/store/ResolverCache.js.flow +2 -2
- package/store/ResolverFragments.js.flow +12 -12
- package/store/StoreInspector.js.flow +6 -7
- package/store/cloneRelayHandleSourceField.js.flow +1 -1
- package/store/cloneRelayScalarHandleSourceField.js.flow +1 -1
- package/store/createRelayContext.js.flow +1 -1
- package/store/createRelayLoggingContext.js.flow +4 -4
- package/store/defaultGetDataID.js.flow +2 -2
- 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.js.flow +8 -5
- package/store/observeFragmentExperimental.js.flow +49 -20
- package/store/observeQueryExperimental.js.flow +5 -5
- package/store/readInlineData.js.flow +4 -4
- package/store/waitForFragmentExperimental.js.flow +3 -3
- package/subscription/requestSubscription.js.flow +7 -7
- package/util/NormalizationNode.js.flow +34 -32
- package/util/ReaderNode.js.flow +32 -30
- package/util/RelayConcreteNode.js.flow +5 -5
- package/util/RelayError.js.flow +4 -1
- package/util/RelayFeatureFlags.js.flow +21 -1
- package/util/RelayProfiler.js.flow +1 -1
- package/util/RelayReplaySubject.js.flow +3 -3
- package/util/RelayRuntimeTypes.js.flow +11 -11
- package/util/createPayloadFor3DField.js.flow +9 -5
- package/util/deepFreeze.js.flow +2 -2
- package/util/getFragmentIdentifier.js.flow +1 -1
- package/util/getPaginationMetadata.js.flow +1 -1
- package/util/getPaginationVariables.js.flow +1 -1
- package/util/getPendingOperationsForFragment.js.flow +2 -2
- package/util/getRefetchMetadata.js.flow +6 -5
- package/util/getValueAtPath.js.flow +3 -3
- package/util/handlePotentialSnapshotErrors.js.flow +5 -5
- package/util/isEmptyObject.js.flow +1 -1
- package/util/isPromise.js.flow +2 -2
- package/util/isScalarAndEqual.js.flow +1 -1
- package/util/recycleNodesInto.js.flow +2 -2
- package/util/registerEnvironmentWithDevTools.js.flow +1 -1
- package/util/shallowFreeze.js.flow +1 -1
- package/util/stableCopy.js.flow +5 -5
- package/util/withProvidedVariables.js.flow +14 -10
|
@@ -21,12 +21,12 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
21
21
|
validateMutation = function validateMutation(optimisticResponse, mutation, variables) {
|
|
22
22
|
var operationName = mutation.operation.name;
|
|
23
23
|
var context = {
|
|
24
|
+
extraDiff: {},
|
|
25
|
+
missingDiff: {},
|
|
26
|
+
moduleImportPaths: new Set(),
|
|
24
27
|
path: 'ROOT',
|
|
25
|
-
visitedPaths: new Set(),
|
|
26
28
|
variables: variables || {},
|
|
27
|
-
|
|
28
|
-
extraDiff: {},
|
|
29
|
-
moduleImportPaths: new Set()
|
|
29
|
+
visitedPaths: new Set()
|
|
30
30
|
};
|
|
31
31
|
validateSelections(optimisticResponse, mutation.operation.selections, context);
|
|
32
32
|
validateOptimisticResponse(optimisticResponse, context);
|
package/lib/query/GraphQLTag.js
CHANGED
|
@@ -73,15 +73,15 @@ function getInlineDataFragment(taggedNode) {
|
|
|
73
73
|
}
|
|
74
74
|
module.exports = {
|
|
75
75
|
getFragment: getFragment,
|
|
76
|
+
getInlineDataFragment: getInlineDataFragment,
|
|
76
77
|
getNode: getNode,
|
|
77
78
|
getPaginationFragment: getPaginationFragment,
|
|
78
79
|
getRefetchableFragment: getRefetchableFragment,
|
|
79
80
|
getRequest: getRequest,
|
|
80
81
|
getUpdatableQuery: getUpdatableQuery,
|
|
81
|
-
getInlineDataFragment: getInlineDataFragment,
|
|
82
82
|
graphql: graphql,
|
|
83
83
|
isFragment: isFragment,
|
|
84
|
+
isInlineDataFragment: isInlineDataFragment,
|
|
84
85
|
isRequest: isRequest,
|
|
85
|
-
isUpdatableQuery: isUpdatableQuery
|
|
86
|
-
isInlineDataFragment: isInlineDataFragment
|
|
86
|
+
isUpdatableQuery: isUpdatableQuery
|
|
87
87
|
};
|
package/lib/query/fetchQuery.js
CHANGED
|
@@ -31,10 +31,22 @@ function fetchQuery(environment, query, variables, options) {
|
|
|
31
31
|
}
|
|
32
32
|
case 'store-or-network':
|
|
33
33
|
{
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
var queryAvailability = environment.check(operation);
|
|
35
|
+
var shouldFetch = queryAvailability.status !== 'available';
|
|
36
|
+
var observable;
|
|
37
|
+
if (!shouldFetch) {
|
|
38
|
+
observable = RelayObservable.from(environment.lookup(operation.fragment)).map(readData);
|
|
39
|
+
} else {
|
|
40
|
+
observable = getNetworkObservable(environment, operation).map(readData);
|
|
36
41
|
}
|
|
37
|
-
|
|
42
|
+
environment.__log({
|
|
43
|
+
name: 'fetchquery.fetch',
|
|
44
|
+
operation: operation,
|
|
45
|
+
fetchPolicy: fetchPolicy,
|
|
46
|
+
queryAvailability: queryAvailability,
|
|
47
|
+
shouldFetch: shouldFetch
|
|
48
|
+
});
|
|
49
|
+
return observable;
|
|
38
50
|
}
|
|
39
51
|
default:
|
|
40
52
|
fetchPolicy;
|
package/lib/store/DataChecker.js
CHANGED
|
@@ -80,11 +80,11 @@ var DataChecker = /*#__PURE__*/function () {
|
|
|
80
80
|
this._assignClientAbstractTypes(node);
|
|
81
81
|
this._traverse(node, dataID);
|
|
82
82
|
return this._recordWasMissing === true ? {
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
mostRecentlyInvalidatedAt: this._mostRecentlyInvalidatedAt,
|
|
84
|
+
status: 'missing'
|
|
85
85
|
} : {
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
mostRecentlyInvalidatedAt: this._mostRecentlyInvalidatedAt,
|
|
87
|
+
status: 'available'
|
|
88
88
|
};
|
|
89
89
|
};
|
|
90
90
|
_proto._getVariableValue = function _getVariableValue(name) {
|
|
@@ -116,6 +116,15 @@ var DataChecker = /*#__PURE__*/function () {
|
|
|
116
116
|
} finally {
|
|
117
117
|
_iterator.f();
|
|
118
118
|
}
|
|
119
|
+
if (this._log != null) {
|
|
120
|
+
this._log({
|
|
121
|
+
name: 'store.datachecker.missing',
|
|
122
|
+
kind: 'scalar',
|
|
123
|
+
dataID: dataID,
|
|
124
|
+
fieldName: field.name,
|
|
125
|
+
storageKey: getStorageKey(field, this._variables)
|
|
126
|
+
});
|
|
127
|
+
}
|
|
119
128
|
this._handleMissing();
|
|
120
129
|
};
|
|
121
130
|
_proto._handleMissingLinkField = function _handleMissingLinkField(field, dataID) {
|
|
@@ -137,6 +146,15 @@ var DataChecker = /*#__PURE__*/function () {
|
|
|
137
146
|
} finally {
|
|
138
147
|
_iterator2.f();
|
|
139
148
|
}
|
|
149
|
+
if (this._log != null) {
|
|
150
|
+
this._log({
|
|
151
|
+
name: 'store.datachecker.missing',
|
|
152
|
+
kind: 'linked',
|
|
153
|
+
dataID: dataID,
|
|
154
|
+
fieldName: field.name,
|
|
155
|
+
storageKey: getStorageKey(field, this._variables)
|
|
156
|
+
});
|
|
157
|
+
}
|
|
140
158
|
this._handleMissing();
|
|
141
159
|
};
|
|
142
160
|
_proto._handleMissingPluralLinkField = function _handleMissingPluralLinkField(field, dataID) {
|
|
@@ -166,11 +184,27 @@ var DataChecker = /*#__PURE__*/function () {
|
|
|
166
184
|
} finally {
|
|
167
185
|
_iterator3.f();
|
|
168
186
|
}
|
|
187
|
+
if (this._log != null) {
|
|
188
|
+
this._log({
|
|
189
|
+
name: 'store.datachecker.missing',
|
|
190
|
+
kind: 'pluralLinked',
|
|
191
|
+
dataID: dataID,
|
|
192
|
+
fieldName: field.name,
|
|
193
|
+
storageKey: getStorageKey(field, this._variables)
|
|
194
|
+
});
|
|
195
|
+
}
|
|
169
196
|
this._handleMissing();
|
|
170
197
|
};
|
|
171
198
|
_proto._traverse = function _traverse(node, dataID) {
|
|
172
199
|
var status = this._mutator.getStatus(dataID);
|
|
173
200
|
if (status === UNKNOWN) {
|
|
201
|
+
if (this._log != null) {
|
|
202
|
+
this._log({
|
|
203
|
+
name: 'store.datachecker.missing',
|
|
204
|
+
kind: 'unknown_record',
|
|
205
|
+
dataID: dataID
|
|
206
|
+
});
|
|
207
|
+
}
|
|
174
208
|
this._handleMissing();
|
|
175
209
|
}
|
|
176
210
|
if (status === EXISTENT) {
|
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
|
4
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
5
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
6
|
+
var _require = require('../util/stableCopy'),
|
|
7
|
+
stableCopy = _require.stableCopy;
|
|
8
|
+
var _require2 = require('./ClientID'),
|
|
9
|
+
generateClientID = _require2.generateClientID;
|
|
10
|
+
var defaultGetDataID = require('./defaultGetDataID');
|
|
11
|
+
var RelayModernRecord = require('./RelayModernRecord');
|
|
12
|
+
var _require3 = require('./RelayModernSelector'),
|
|
13
|
+
createNormalizationSelector = _require3.createNormalizationSelector;
|
|
14
|
+
var _require4 = require('./RelayStoreUtils'),
|
|
15
|
+
ROOT_ID = _require4.ROOT_ID,
|
|
16
|
+
ROOT_TYPE = _require4.ROOT_TYPE,
|
|
17
|
+
getStorageKey = _require4.getStorageKey;
|
|
18
|
+
function err(message) {
|
|
19
|
+
var e = new Error(message);
|
|
20
|
+
void e.stack;
|
|
21
|
+
return e;
|
|
22
|
+
}
|
|
23
|
+
function stableStringify(value) {
|
|
24
|
+
var _JSON$stringify;
|
|
25
|
+
return (_JSON$stringify = JSON.stringify(stableCopy(value))) !== null && _JSON$stringify !== void 0 ? _JSON$stringify : '';
|
|
26
|
+
}
|
|
27
|
+
var NormalizationEngine = /*#__PURE__*/function () {
|
|
28
|
+
function NormalizationEngine(config) {
|
|
29
|
+
var _config$operationLoad, _config$getDataID, _config$treatMissingF, _ref, _config$operation$use, _config$operation$exe;
|
|
30
|
+
this._normalizeResponse = config.normalizeResponse;
|
|
31
|
+
this._operationLoader = (_config$operationLoad = config.operationLoader) !== null && _config$operationLoad !== void 0 ? _config$operationLoad : null;
|
|
32
|
+
this._rootSelector = {
|
|
33
|
+
dataID: ROOT_ID,
|
|
34
|
+
node: config.operation,
|
|
35
|
+
variables: config.variables
|
|
36
|
+
};
|
|
37
|
+
this._options = {
|
|
38
|
+
deferDeduplicatedFields: false,
|
|
39
|
+
getDataID: (_config$getDataID = config.getDataID) !== null && _config$getDataID !== void 0 ? _config$getDataID : defaultGetDataID,
|
|
40
|
+
log: null,
|
|
41
|
+
path: [],
|
|
42
|
+
treatMissingFieldsAsNull: (_config$treatMissingF = config.treatMissingFieldsAsNull) !== null && _config$treatMissingF !== void 0 ? _config$treatMissingF : false
|
|
43
|
+
};
|
|
44
|
+
this._useExecTimeResolvers = (_ref = (_config$operation$use = config.operation.use_exec_time_resolvers) !== null && _config$operation$use !== void 0 ? _config$operation$use : ((_config$operation$exe = config.operation.exec_time_resolvers_enabled_provider) === null || _config$operation$exe === void 0 ? void 0 : _config$operation$exe.get()) === true) !== null && _ref !== void 0 ? _ref : false;
|
|
45
|
+
this._placeholders = new Map();
|
|
46
|
+
this._bufferedResponses = new Map();
|
|
47
|
+
this._parentRecords = new Map();
|
|
48
|
+
this._serverComplete = false;
|
|
49
|
+
}
|
|
50
|
+
var _proto = NormalizationEngine.prototype;
|
|
51
|
+
_proto.processResponse = function processResponse(response) {
|
|
52
|
+
var payload = this._normalizeResponse(response, this._rootSelector, ROOT_TYPE, this._options, this._useExecTimeResolvers);
|
|
53
|
+
var extraPayloads = [];
|
|
54
|
+
var pendingModules = [];
|
|
55
|
+
if (payload.incrementalPlaceholders != null && payload.incrementalPlaceholders.length > 0) {
|
|
56
|
+
this._registerPlaceholders(payload.incrementalPlaceholders, payload.source, payload.fieldPayloads, extraPayloads, pendingModules);
|
|
57
|
+
}
|
|
58
|
+
if (payload.followupPayloads != null && payload.followupPayloads.length > 0) {
|
|
59
|
+
this._processFollowups(payload.followupPayloads, extraPayloads, pendingModules);
|
|
60
|
+
}
|
|
61
|
+
var primaryPayload = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, payload), {}, {
|
|
62
|
+
followupPayloads: null,
|
|
63
|
+
incrementalPlaceholders: null,
|
|
64
|
+
isFinal: this._computeIsFinal(payload.isFinal),
|
|
65
|
+
isPreNormalized: true
|
|
66
|
+
});
|
|
67
|
+
return {
|
|
68
|
+
payloads: [primaryPayload].concat(extraPayloads),
|
|
69
|
+
pendingModules: pendingModules
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
_proto.processIncrementalResponse = function processIncrementalResponse(response) {
|
|
73
|
+
var label = response.label;
|
|
74
|
+
var path = response.path;
|
|
75
|
+
if (label == null || path == null) {
|
|
76
|
+
throw err('NormalizationEngine: Expected incremental response to have ' + '`label` and `path` properties.');
|
|
77
|
+
}
|
|
78
|
+
var isDefer = label.indexOf('$defer$') !== -1;
|
|
79
|
+
var pathKey = isDefer ? path.map(String).join('.') : path.slice(0, -2).map(String).join('.');
|
|
80
|
+
var key = makeKey(label, pathKey);
|
|
81
|
+
var placeholder = this._placeholders.get(key);
|
|
82
|
+
if (placeholder == null) {
|
|
83
|
+
var buffer = this._bufferedResponses.get(key);
|
|
84
|
+
if (buffer == null) {
|
|
85
|
+
buffer = [];
|
|
86
|
+
this._bufferedResponses.set(key, buffer);
|
|
87
|
+
}
|
|
88
|
+
buffer.push(response);
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
if (placeholder.kind === 'defer') {
|
|
92
|
+
return this._processDefer(response, path, placeholder);
|
|
93
|
+
} else {
|
|
94
|
+
return this._processStream(response, path, placeholder);
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
_proto.setServerComplete = function setServerComplete() {
|
|
98
|
+
this._serverComplete = true;
|
|
99
|
+
};
|
|
100
|
+
_proto.isFinal = function isFinal() {
|
|
101
|
+
return this._serverComplete && this._bufferedResponses.size === 0 && this._placeholders.size === 0;
|
|
102
|
+
};
|
|
103
|
+
_proto._processDefer = function _processDefer(response, _path, placeholder) {
|
|
104
|
+
var payload = this._normalizeResponse(response, placeholder.selector, placeholder.typeName, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, this._options), {}, {
|
|
105
|
+
deferDeduplicatedFields: true,
|
|
106
|
+
path: placeholder.path
|
|
107
|
+
}), this._useExecTimeResolvers);
|
|
108
|
+
var extraPayloads = [];
|
|
109
|
+
var pendingModules = [];
|
|
110
|
+
if (payload.incrementalPlaceholders != null && payload.incrementalPlaceholders.length > 0) {
|
|
111
|
+
this._registerPlaceholders(payload.incrementalPlaceholders, payload.source, payload.fieldPayloads, extraPayloads, pendingModules);
|
|
112
|
+
}
|
|
113
|
+
if (payload.followupPayloads != null && payload.followupPayloads.length > 0) {
|
|
114
|
+
this._processFollowups(payload.followupPayloads, extraPayloads, pendingModules);
|
|
115
|
+
}
|
|
116
|
+
var parentID = placeholder.selector.dataID;
|
|
117
|
+
var parentEntry = this._parentRecords.get(parentID);
|
|
118
|
+
var fieldPayloads = payload.fieldPayloads;
|
|
119
|
+
if (parentEntry != null && parentEntry.fieldPayloads.length > 0) {
|
|
120
|
+
var _fieldPayloads;
|
|
121
|
+
fieldPayloads = ((_fieldPayloads = fieldPayloads) !== null && _fieldPayloads !== void 0 ? _fieldPayloads : []).concat(parentEntry.fieldPayloads);
|
|
122
|
+
}
|
|
123
|
+
var primaryPayload = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, payload), {}, {
|
|
124
|
+
fieldPayloads: fieldPayloads,
|
|
125
|
+
followupPayloads: null,
|
|
126
|
+
incrementalPlaceholders: null,
|
|
127
|
+
isFinal: this._computeIsFinal(payload.isFinal),
|
|
128
|
+
isPreNormalized: true
|
|
129
|
+
});
|
|
130
|
+
return {
|
|
131
|
+
payloads: [primaryPayload].concat(extraPayloads),
|
|
132
|
+
pendingModules: pendingModules
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
_proto._processStream = function _processStream(response, path, placeholder) {
|
|
136
|
+
var node = placeholder.node,
|
|
137
|
+
parentID = placeholder.parentID,
|
|
138
|
+
variables = placeholder.variables;
|
|
139
|
+
var field = node.selections[0];
|
|
140
|
+
if (field == null || field.kind !== 'LinkedField' || field.plural !== true) {
|
|
141
|
+
throw err('NormalizationEngine: Expected @stream to be used on a plural field.');
|
|
142
|
+
}
|
|
143
|
+
var _this$_normalizeStrea = this._normalizeStreamItem(response, parentID, field, variables, path, placeholder.path),
|
|
144
|
+
fieldPayloads = _this$_normalizeStrea.fieldPayloads,
|
|
145
|
+
itemID = _this$_normalizeStrea.itemID,
|
|
146
|
+
itemIndex = _this$_normalizeStrea.itemIndex,
|
|
147
|
+
prevIDs = _this$_normalizeStrea.prevIDs,
|
|
148
|
+
relayPayload = _this$_normalizeStrea.relayPayload,
|
|
149
|
+
storageKey = _this$_normalizeStrea.storageKey;
|
|
150
|
+
var storeUpdater = function storeUpdater(store) {
|
|
151
|
+
var currentParentRecord = store.get(parentID);
|
|
152
|
+
if (currentParentRecord == null) {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
var currentItems = currentParentRecord.getLinkedRecords(storageKey);
|
|
156
|
+
if (currentItems == null) {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
if (currentItems.length !== prevIDs.length || currentItems.some(function (item, i) {
|
|
160
|
+
return prevIDs[i] !== (item && item.getDataID());
|
|
161
|
+
})) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
var nextItems = (0, _toConsumableArray2["default"])(currentItems);
|
|
165
|
+
nextItems[itemIndex] = store.get(itemID);
|
|
166
|
+
currentParentRecord.setLinkedRecords(nextItems, storageKey);
|
|
167
|
+
};
|
|
168
|
+
var mergedFieldPayloads = relayPayload.fieldPayloads;
|
|
169
|
+
if (fieldPayloads.length > 0) {
|
|
170
|
+
var _mergedFieldPayloads;
|
|
171
|
+
mergedFieldPayloads = ((_mergedFieldPayloads = mergedFieldPayloads) !== null && _mergedFieldPayloads !== void 0 ? _mergedFieldPayloads : []).concat(fieldPayloads);
|
|
172
|
+
}
|
|
173
|
+
return {
|
|
174
|
+
payloads: [(0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, relayPayload), {}, {
|
|
175
|
+
fieldPayloads: mergedFieldPayloads,
|
|
176
|
+
followupPayloads: null,
|
|
177
|
+
incrementalPlaceholders: null,
|
|
178
|
+
isFinal: this._computeIsFinal(relayPayload.isFinal),
|
|
179
|
+
isPreNormalized: true,
|
|
180
|
+
storeUpdater: storeUpdater
|
|
181
|
+
})],
|
|
182
|
+
pendingModules: []
|
|
183
|
+
};
|
|
184
|
+
};
|
|
185
|
+
_proto._normalizeStreamItem = function _normalizeStreamItem(response, parentID, field, variables, path, normalizationPath) {
|
|
186
|
+
var _field$alias, _field$concreteType, _ref2, _ref3;
|
|
187
|
+
var data = response.data;
|
|
188
|
+
if (typeof data !== 'object') {
|
|
189
|
+
throw err('NormalizationEngine: Expected the GraphQL @stream payload `data` ' + 'value to be an object.');
|
|
190
|
+
}
|
|
191
|
+
var responseKey = (_field$alias = field.alias) !== null && _field$alias !== void 0 ? _field$alias : field.name;
|
|
192
|
+
var storageKey = getStorageKey(field, variables);
|
|
193
|
+
var parentEntry = this._parentRecords.get(parentID);
|
|
194
|
+
if (parentEntry == null) {
|
|
195
|
+
throw err('NormalizationEngine: Expected the parent record `' + parentID + '` for @stream data to exist.');
|
|
196
|
+
}
|
|
197
|
+
var fieldPayloads = parentEntry.fieldPayloads,
|
|
198
|
+
parentRecord = parentEntry.record;
|
|
199
|
+
var prevIDs = RelayModernRecord.getLinkedRecordIDs(parentRecord, storageKey);
|
|
200
|
+
if (prevIDs == null) {
|
|
201
|
+
throw err('NormalizationEngine: Expected record `' + parentID + '` to have fetched field `' + field.name + '` with @stream.');
|
|
202
|
+
}
|
|
203
|
+
var finalPathEntry = path[path.length - 1];
|
|
204
|
+
var itemIndex = parseInt(finalPathEntry, 10);
|
|
205
|
+
if (itemIndex !== finalPathEntry || itemIndex < 0) {
|
|
206
|
+
throw err('NormalizationEngine: Expected path for @stream to end in a ' + 'positive integer index, got `' + String(finalPathEntry) + '`');
|
|
207
|
+
}
|
|
208
|
+
var typeName = (_field$concreteType = field.concreteType) !== null && _field$concreteType !== void 0 ? _field$concreteType : data.__typename;
|
|
209
|
+
if (typeof typeName !== 'string') {
|
|
210
|
+
throw err('NormalizationEngine: Expected @stream field `' + field.name + '` to have a __typename.');
|
|
211
|
+
}
|
|
212
|
+
var getDataID = this._options.getDataID;
|
|
213
|
+
var itemID = (_ref2 = (_ref3 = typeof getDataID === 'function' ? getDataID(data, typeName) : null) !== null && _ref3 !== void 0 ? _ref3 : prevIDs === null || prevIDs === void 0 ? void 0 : prevIDs[itemIndex]) !== null && _ref2 !== void 0 ? _ref2 : generateClientID(parentID, storageKey, itemIndex);
|
|
214
|
+
if (typeof itemID !== 'string') {
|
|
215
|
+
throw err('NormalizationEngine: Expected id of elements of field `' + storageKey + '` to be strings.');
|
|
216
|
+
}
|
|
217
|
+
var selector = createNormalizationSelector(field, itemID, variables);
|
|
218
|
+
var nextParentRecord = RelayModernRecord.clone(parentRecord);
|
|
219
|
+
var nextIDs = (0, _toConsumableArray2["default"])(prevIDs);
|
|
220
|
+
nextIDs[itemIndex] = itemID;
|
|
221
|
+
RelayModernRecord.setLinkedRecordIDs(nextParentRecord, storageKey, nextIDs);
|
|
222
|
+
this._parentRecords.set(parentID, {
|
|
223
|
+
fieldPayloads: fieldPayloads,
|
|
224
|
+
record: nextParentRecord
|
|
225
|
+
});
|
|
226
|
+
var relayPayload = this._normalizeResponse(response, selector, typeName, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, this._options), {}, {
|
|
227
|
+
path: [].concat((0, _toConsumableArray2["default"])(normalizationPath), [responseKey, String(itemIndex)])
|
|
228
|
+
}), this._useExecTimeResolvers);
|
|
229
|
+
return {
|
|
230
|
+
fieldPayloads: fieldPayloads,
|
|
231
|
+
itemID: itemID,
|
|
232
|
+
itemIndex: itemIndex,
|
|
233
|
+
prevIDs: prevIDs,
|
|
234
|
+
relayPayload: relayPayload,
|
|
235
|
+
storageKey: storageKey
|
|
236
|
+
};
|
|
237
|
+
};
|
|
238
|
+
_proto._registerPlaceholders = function _registerPlaceholders(placeholders, source, fieldPayloads, outPayloads, outPendingModules) {
|
|
239
|
+
var _this = this;
|
|
240
|
+
var _loop = function _loop(i) {
|
|
241
|
+
var placeholder = placeholders[i];
|
|
242
|
+
var label = placeholder.label,
|
|
243
|
+
path = placeholder.path;
|
|
244
|
+
var pathKey = path.map(String).join('.');
|
|
245
|
+
var key = makeKey(label, pathKey);
|
|
246
|
+
_this._placeholders.set(key, placeholder);
|
|
247
|
+
var parentID = void 0;
|
|
248
|
+
if (placeholder.kind === 'stream') {
|
|
249
|
+
parentID = placeholder.parentID;
|
|
250
|
+
} else {
|
|
251
|
+
parentID = placeholder.selector.dataID;
|
|
252
|
+
}
|
|
253
|
+
var parentRecord = source.get(parentID);
|
|
254
|
+
if (parentRecord == null) {
|
|
255
|
+
throw err('NormalizationEngine: Expected record `' + parentID + '` to exist.');
|
|
256
|
+
}
|
|
257
|
+
var parentPayloads = (fieldPayloads !== null && fieldPayloads !== void 0 ? fieldPayloads : []).filter(function (fieldPayload) {
|
|
258
|
+
var fieldID = generateClientID(fieldPayload.dataID, fieldPayload.fieldKey);
|
|
259
|
+
return fieldPayload.dataID === parentID || fieldID === parentID;
|
|
260
|
+
});
|
|
261
|
+
var previousEntry = _this._parentRecords.get(parentID);
|
|
262
|
+
if (previousEntry != null) {
|
|
263
|
+
var nextRecord = RelayModernRecord.update(previousEntry.record, parentRecord);
|
|
264
|
+
var handlePayloads = new Map();
|
|
265
|
+
for (var j = 0; j < previousEntry.fieldPayloads.length; j++) {
|
|
266
|
+
var p = previousEntry.fieldPayloads[j];
|
|
267
|
+
handlePayloads.set(stableStringify(p), p);
|
|
268
|
+
}
|
|
269
|
+
for (var _j = 0; _j < parentPayloads.length; _j++) {
|
|
270
|
+
var _p = parentPayloads[_j];
|
|
271
|
+
handlePayloads.set(stableStringify(_p), _p);
|
|
272
|
+
}
|
|
273
|
+
_this._parentRecords.set(parentID, {
|
|
274
|
+
fieldPayloads: Array.from(handlePayloads.values()),
|
|
275
|
+
record: nextRecord
|
|
276
|
+
});
|
|
277
|
+
} else {
|
|
278
|
+
_this._parentRecords.set(parentID, {
|
|
279
|
+
fieldPayloads: parentPayloads,
|
|
280
|
+
record: parentRecord
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
var buffered = _this._bufferedResponses.get(key);
|
|
284
|
+
if (buffered != null) {
|
|
285
|
+
_this._bufferedResponses["delete"](key);
|
|
286
|
+
for (var _j2 = 0; _j2 < buffered.length; _j2++) {
|
|
287
|
+
var resp = buffered[_j2];
|
|
288
|
+
var result = void 0;
|
|
289
|
+
if (placeholder.kind === 'defer') {
|
|
290
|
+
result = _this._processDefer(resp, (_resp$path = resp.path) !== null && _resp$path !== void 0 ? _resp$path : [], placeholder);
|
|
291
|
+
} else {
|
|
292
|
+
result = _this._processStream(resp, (_resp$path2 = resp.path) !== null && _resp$path2 !== void 0 ? _resp$path2 : [], placeholder);
|
|
293
|
+
}
|
|
294
|
+
if (result != null) {
|
|
295
|
+
outPayloads.push.apply(outPayloads, (0, _toConsumableArray2["default"])(result.payloads));
|
|
296
|
+
outPendingModules.push.apply(outPendingModules, (0, _toConsumableArray2["default"])(result.pendingModules));
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
};
|
|
301
|
+
for (var i = 0; i < placeholders.length; i++) {
|
|
302
|
+
var _resp$path;
|
|
303
|
+
var _resp$path2;
|
|
304
|
+
_loop(i);
|
|
305
|
+
}
|
|
306
|
+
};
|
|
307
|
+
_proto._processFollowups = function _processFollowups(followups, outPayloads, outPendingModules) {
|
|
308
|
+
for (var i = 0; i < followups.length; i++) {
|
|
309
|
+
var followup = followups[i];
|
|
310
|
+
if (followup.kind === 'ModuleImportPayload') {
|
|
311
|
+
this._processModuleImport(followup, outPayloads, outPendingModules);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
};
|
|
315
|
+
_proto._processModuleImport = function _processModuleImport(followup, outPayloads, outPendingModules) {
|
|
316
|
+
var _this2 = this;
|
|
317
|
+
var operationLoader = this._operationLoader;
|
|
318
|
+
if (operationLoader == null) {
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
var node = operationLoader.get(followup.operationReference);
|
|
322
|
+
if (node != null) {
|
|
323
|
+
var result = this._normalizeFollowup(followup, node);
|
|
324
|
+
outPayloads.push.apply(outPayloads, (0, _toConsumableArray2["default"])(result.payloads));
|
|
325
|
+
outPendingModules.push.apply(outPendingModules, (0, _toConsumableArray2["default"])(result.pendingModules));
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
var emptyResult = {
|
|
329
|
+
payloads: [],
|
|
330
|
+
pendingModules: []
|
|
331
|
+
};
|
|
332
|
+
outPendingModules.push(operationLoader.load(followup.operationReference).then(function (loadedNode) {
|
|
333
|
+
return loadedNode != null ? _this2._normalizeFollowup(followup, loadedNode) : emptyResult;
|
|
334
|
+
})["catch"](function (_error) {
|
|
335
|
+
return emptyResult;
|
|
336
|
+
}));
|
|
337
|
+
};
|
|
338
|
+
_proto._normalizeFollowup = function _normalizeFollowup(followup, node) {
|
|
339
|
+
var operationNode = node.kind === 'SplitOperation' ? node : node.operation;
|
|
340
|
+
var selector = createNormalizationSelector(operationNode, followup.dataID, followup.variables);
|
|
341
|
+
var payload = this._normalizeResponse({
|
|
342
|
+
data: followup.data
|
|
343
|
+
}, selector, followup.typeName, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, this._options), {}, {
|
|
344
|
+
path: followup.path
|
|
345
|
+
}), this._useExecTimeResolvers);
|
|
346
|
+
var extraPayloads = [];
|
|
347
|
+
var pendingModules = [];
|
|
348
|
+
if (payload.incrementalPlaceholders != null && payload.incrementalPlaceholders.length > 0) {
|
|
349
|
+
this._registerPlaceholders(payload.incrementalPlaceholders, payload.source, payload.fieldPayloads, extraPayloads, pendingModules);
|
|
350
|
+
}
|
|
351
|
+
if (payload.followupPayloads != null && payload.followupPayloads.length > 0) {
|
|
352
|
+
this._processFollowups(payload.followupPayloads, extraPayloads, pendingModules);
|
|
353
|
+
}
|
|
354
|
+
var primaryPayload = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, payload), {}, {
|
|
355
|
+
followupPayloads: null,
|
|
356
|
+
incrementalPlaceholders: null,
|
|
357
|
+
isFinal: this._computeIsFinal(payload.isFinal),
|
|
358
|
+
isPreNormalized: true
|
|
359
|
+
});
|
|
360
|
+
return {
|
|
361
|
+
payloads: [primaryPayload].concat(extraPayloads),
|
|
362
|
+
pendingModules: pendingModules
|
|
363
|
+
};
|
|
364
|
+
};
|
|
365
|
+
_proto._computeIsFinal = function _computeIsFinal(serverIsFinal) {
|
|
366
|
+
return (serverIsFinal || this._serverComplete) && this._bufferedResponses.size === 0;
|
|
367
|
+
};
|
|
368
|
+
return NormalizationEngine;
|
|
369
|
+
}();
|
|
370
|
+
function makeKey(label, pathKey) {
|
|
371
|
+
return "".concat(label, "::").concat(pathKey);
|
|
372
|
+
}
|
|
373
|
+
module.exports = NormalizationEngine;
|