relay-runtime 12.0.0 → 13.0.0-rc.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.
Files changed (138) hide show
  1. package/handlers/RelayDefaultHandlerProvider.js.flow +2 -2
  2. package/handlers/connection/ConnectionHandler.js.flow +8 -17
  3. package/handlers/connection/MutationHandlers.js.flow +7 -11
  4. package/index.js +1 -1
  5. package/index.js.flow +40 -33
  6. package/lib/handlers/connection/ConnectionHandler.js +12 -18
  7. package/lib/handlers/connection/MutationHandlers.js +3 -6
  8. package/lib/index.js +45 -45
  9. package/lib/multi-actor-environment/ActorSpecificEnvironment.js +8 -4
  10. package/lib/multi-actor-environment/MultiActorEnvironment.js +35 -22
  11. package/lib/multi-actor-environment/index.js +2 -2
  12. package/lib/mutations/RelayDeclarativeMutationConfig.js +4 -1
  13. package/lib/mutations/RelayRecordProxy.js +3 -2
  14. package/lib/mutations/RelayRecordSourceMutator.js +3 -2
  15. package/lib/mutations/RelayRecordSourceProxy.js +12 -4
  16. package/lib/mutations/RelayRecordSourceSelectorProxy.js +12 -4
  17. package/lib/mutations/applyOptimisticMutation.js +6 -6
  18. package/lib/mutations/commitMutation.js +15 -14
  19. package/lib/mutations/readUpdatableQuery_EXPERIMENTAL.js +238 -0
  20. package/lib/mutations/validateMutation.js +6 -6
  21. package/lib/network/ConvertToExecuteFunction.js +2 -1
  22. package/lib/network/RelayNetwork.js +3 -2
  23. package/lib/network/RelayObservable.js +1 -3
  24. package/lib/network/RelayQueryResponseCache.js +2 -2
  25. package/lib/network/wrapNetworkWithLogObserver.js +2 -1
  26. package/lib/query/GraphQLTag.js +2 -1
  27. package/lib/query/fetchQuery.js +6 -5
  28. package/lib/query/fetchQuery_DEPRECATED.js +2 -1
  29. package/lib/store/ClientID.js +7 -1
  30. package/lib/store/DataChecker.js +16 -17
  31. package/lib/store/OperationExecutor.js +13 -13
  32. package/lib/store/RelayConcreteVariables.js +6 -9
  33. package/lib/store/RelayModernEnvironment.js +66 -42
  34. package/lib/store/RelayModernFragmentSpecResolver.js +8 -8
  35. package/lib/store/RelayModernOperationDescriptor.js +2 -1
  36. package/lib/store/RelayModernRecord.js +12 -11
  37. package/lib/store/RelayModernSelector.js +14 -8
  38. package/lib/store/RelayModernStore.js +14 -15
  39. package/lib/store/RelayPublishQueue.js +11 -5
  40. package/lib/store/RelayReader.js +130 -37
  41. package/lib/store/RelayReferenceMarker.js +10 -11
  42. package/lib/store/RelayResponseNormalizer.js +25 -22
  43. package/lib/store/RelayStoreReactFlightUtils.js +3 -3
  44. package/lib/store/RelayStoreSubscriptions.js +6 -4
  45. package/lib/store/RelayStoreUtils.js +5 -5
  46. package/lib/store/ResolverCache.js +6 -6
  47. package/lib/store/ResolverFragments.js +9 -5
  48. package/lib/store/cloneRelayHandleSourceField.js +5 -4
  49. package/lib/store/cloneRelayScalarHandleSourceField.js +5 -4
  50. package/lib/store/createRelayContext.js +3 -1
  51. package/lib/store/readInlineData.js +6 -2
  52. package/lib/subscription/requestSubscription.js +5 -5
  53. package/lib/util/RelayConcreteNode.js +1 -0
  54. package/lib/util/RelayFeatureFlags.js +7 -1
  55. package/lib/util/RelayRuntimeTypes.js +0 -6
  56. package/lib/util/StringInterner.js +71 -0
  57. package/lib/util/getFragmentIdentifier.js +15 -7
  58. package/lib/util/getOperation.js +2 -1
  59. package/lib/util/getPaginationVariables.js +2 -3
  60. package/lib/util/getRelayHandleKey.js +2 -2
  61. package/lib/util/getRequestIdentifier.js +2 -2
  62. package/multi-actor-environment/ActorSpecificEnvironment.js.flow +27 -19
  63. package/multi-actor-environment/ActorUtils.js.flow +2 -2
  64. package/multi-actor-environment/MultiActorEnvironment.js.flow +45 -24
  65. package/multi-actor-environment/MultiActorEnvironmentTypes.js.flow +27 -11
  66. package/multi-actor-environment/index.js.flow +1 -2
  67. package/mutations/RelayDeclarativeMutationConfig.js.flow +32 -26
  68. package/mutations/RelayRecordProxy.js.flow +4 -5
  69. package/mutations/RelayRecordSourceMutator.js.flow +4 -6
  70. package/mutations/RelayRecordSourceProxy.js.flow +19 -10
  71. package/mutations/RelayRecordSourceSelectorProxy.js.flow +15 -5
  72. package/mutations/applyOptimisticMutation.js.flow +13 -14
  73. package/mutations/commitLocalUpdate.js.flow +1 -1
  74. package/mutations/commitMutation.js.flow +35 -48
  75. package/mutations/readUpdatableQuery_EXPERIMENTAL.js.flow +309 -0
  76. package/mutations/validateMutation.js.flow +19 -17
  77. package/network/ConvertToExecuteFunction.js.flow +2 -2
  78. package/network/RelayNetwork.js.flow +4 -5
  79. package/network/RelayObservable.js.flow +1 -3
  80. package/network/RelayQueryResponseCache.js.flow +3 -3
  81. package/network/wrapNetworkWithLogObserver.js.flow +8 -7
  82. package/package.json +1 -1
  83. package/query/GraphQLTag.js.flow +9 -9
  84. package/query/PreloadableQueryRegistry.js.flow +2 -1
  85. package/query/fetchQuery.js.flow +11 -13
  86. package/query/fetchQueryInternal.js.flow +6 -9
  87. package/query/fetchQuery_DEPRECATED.js.flow +6 -6
  88. package/relay-runtime.js +2 -2
  89. package/relay-runtime.min.js +2 -2
  90. package/store/ClientID.js.flow +9 -2
  91. package/store/DataChecker.js.flow +20 -29
  92. package/store/OperationExecutor.js.flow +54 -62
  93. package/store/RelayConcreteVariables.js.flow +4 -10
  94. package/store/RelayModernEnvironment.js.flow +56 -27
  95. package/store/RelayModernFragmentSpecResolver.js.flow +17 -19
  96. package/store/RelayModernOperationDescriptor.js.flow +10 -11
  97. package/store/RelayModernRecord.js.flow +19 -12
  98. package/store/RelayModernSelector.js.flow +24 -14
  99. package/store/RelayModernStore.js.flow +21 -24
  100. package/store/RelayOperationTracker.js.flow +11 -17
  101. package/store/RelayOptimisticRecordSource.js.flow +2 -2
  102. package/store/RelayPublishQueue.js.flow +42 -23
  103. package/store/RelayReader.js.flow +180 -60
  104. package/store/RelayRecordSource.js.flow +2 -2
  105. package/store/RelayReferenceMarker.js.flow +12 -15
  106. package/store/RelayResponseNormalizer.js.flow +43 -41
  107. package/store/RelayStoreReactFlightUtils.js.flow +3 -4
  108. package/store/RelayStoreSubscriptions.js.flow +9 -8
  109. package/store/RelayStoreTypes.js.flow +72 -29
  110. package/store/RelayStoreUtils.js.flow +8 -9
  111. package/store/ResolverCache.js.flow +16 -14
  112. package/store/ResolverFragments.js.flow +15 -22
  113. package/store/StoreInspector.js.flow +2 -2
  114. package/store/TypeID.js.flow +1 -1
  115. package/store/ViewerPattern.js.flow +2 -2
  116. package/store/cloneRelayHandleSourceField.js.flow +5 -6
  117. package/store/cloneRelayScalarHandleSourceField.js.flow +5 -6
  118. package/store/createFragmentSpecResolver.js.flow +3 -4
  119. package/store/createRelayContext.js.flow +2 -2
  120. package/store/normalizeRelayPayload.js.flow +6 -7
  121. package/store/readInlineData.js.flow +7 -8
  122. package/subscription/requestSubscription.js.flow +16 -24
  123. package/util/ReaderNode.js.flow +9 -0
  124. package/util/RelayConcreteNode.js.flow +1 -0
  125. package/util/RelayFeatureFlags.js.flow +14 -2
  126. package/util/RelayReplaySubject.js.flow +2 -3
  127. package/util/RelayRuntimeTypes.js.flow +69 -2
  128. package/util/StringInterner.js.flow +69 -0
  129. package/util/createPayloadFor3DField.js.flow +3 -3
  130. package/util/getFragmentIdentifier.js.flow +27 -15
  131. package/util/getOperation.js.flow +2 -2
  132. package/util/getPaginationMetadata.js.flow +5 -7
  133. package/util/getPaginationVariables.js.flow +5 -9
  134. package/util/getPendingOperationsForFragment.js.flow +2 -2
  135. package/util/getRefetchMetadata.js.flow +6 -7
  136. package/util/getRelayHandleKey.js.flow +1 -2
  137. package/util/getRequestIdentifier.js.flow +3 -3
  138. package/util/resolveImmediate.js.flow +1 -1
@@ -12,26 +12,26 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const RelayConcreteNode = require('../util/RelayConcreteNode');
16
-
17
- const invariant = require('invariant');
18
- const warning = require('warning');
19
-
20
15
  import type {
21
16
  ReaderFragment,
22
- ReaderRefetchableFragment,
23
- ReaderPaginationFragment,
24
17
  ReaderInlineDataFragment,
18
+ ReaderPaginationFragment,
19
+ ReaderRefetchableFragment,
25
20
  } from '../util/ReaderNode';
26
21
  import type {ConcreteRequest} from '../util/RelayConcreteNode';
27
22
 
23
+ const RelayConcreteNode = require('../util/RelayConcreteNode');
24
+ const invariant = require('invariant');
25
+ const warning = require('warning');
26
+
28
27
  // The type of a graphql`...` tagged template expression.
29
28
  export type GraphQLTaggedNode =
30
29
  | ReaderFragment
30
+ | ReaderInlineDataFragment
31
31
  | ConcreteRequest
32
32
  | {
33
33
  // This is this case when we `require()` a generated ES6 module
34
- default: ReaderFragment | ConcreteRequest,
34
+ default: ReaderFragment | ReaderInlineDataFragment | ConcreteRequest,
35
35
  ...
36
36
  };
37
37
 
@@ -51,7 +51,7 @@ function graphql(strings: Array<string>): GraphQLTaggedNode {
51
51
 
52
52
  function getNode(
53
53
  taggedNode: GraphQLTaggedNode,
54
- ): ReaderFragment | ConcreteRequest {
54
+ ): ReaderFragment | ReaderInlineDataFragment | ConcreteRequest {
55
55
  let node = taggedNode;
56
56
  if (typeof node === 'function') {
57
57
  node = (node(): ReaderFragment | ConcreteRequest);
@@ -60,6 +60,7 @@ class PreloadableQueryRegistry {
60
60
  }
61
61
  }
62
62
 
63
- const preloadableQueryRegistry: PreloadableQueryRegistry = new PreloadableQueryRegistry();
63
+ const preloadableQueryRegistry: PreloadableQueryRegistry =
64
+ new PreloadableQueryRegistry();
64
65
 
65
66
  module.exports = preloadableQueryRegistry;
@@ -13,17 +13,6 @@
13
13
 
14
14
  'use strict';
15
15
 
16
- const RelayObservable = require('../network/RelayObservable');
17
-
18
- const fetchQueryInternal = require('./fetchQueryInternal');
19
- const invariant = require('invariant');
20
- const reportMissingRequiredFields = require('../util/reportMissingRequiredFields');
21
-
22
- const {
23
- createOperationDescriptor,
24
- } = require('../store/RelayModernOperationDescriptor');
25
- const {getRequest} = require('./GraphQLTag');
26
-
27
16
  import type {
28
17
  CacheConfig,
29
18
  FetchQueryFetchPolicy,
@@ -35,6 +24,15 @@ import type {
35
24
  VariablesOf,
36
25
  } from 'relay-runtime';
37
26
 
27
+ const RelayObservable = require('../network/RelayObservable');
28
+ const {
29
+ createOperationDescriptor,
30
+ } = require('../store/RelayModernOperationDescriptor');
31
+ const reportMissingRequiredFields = require('../util/reportMissingRequiredFields');
32
+ const fetchQueryInternal = require('./fetchQueryInternal');
33
+ const {getRequest} = require('./GraphQLTag');
34
+ const invariant = require('invariant');
35
+
38
36
  /**
39
37
  * Fetches the given query and variables on the provided environment,
40
38
  * and de-dupes identical in-flight requests.
@@ -120,7 +118,7 @@ function fetchQuery<TQuery: OperationType>(
120
118
  fetchPolicy?: FetchQueryFetchPolicy,
121
119
  networkCacheConfig?: CacheConfig,
122
120
  |}>,
123
- ): RelayObservable<$ElementType<TQuery, 'response'>> {
121
+ ): RelayObservable<TQuery['response']> {
124
122
  const queryNode = getRequest(query);
125
123
  invariant(
126
124
  queryNode.params.operationKind === 'query',
@@ -165,7 +163,7 @@ function fetchQuery<TQuery: OperationType>(
165
163
  function getNetworkObservable<TQuery: OperationType>(
166
164
  environment: IEnvironment,
167
165
  operation: OperationDescriptor,
168
- ): RelayObservable<$ElementType<TQuery, 'response'>> {
166
+ ): RelayObservable<TQuery['response']> {
169
167
  return fetchQueryInternal
170
168
  .fetchQuery(environment, operation)
171
169
  .map(() => environment.lookup(operation.fragment));
@@ -12,11 +12,6 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const Observable = require('../network/RelayObservable');
16
- const RelayReplaySubject = require('../util/RelayReplaySubject');
17
-
18
- const invariant = require('invariant');
19
-
20
15
  import type {GraphQLResponse} from '../network/RelayNetworkTypes';
21
16
  import type {Subscription} from '../network/RelayObservable';
22
17
  import type {
@@ -26,6 +21,10 @@ import type {
26
21
  } from '../store/RelayStoreTypes';
27
22
  import type {RequestIdentifier} from '../util/getRequestIdentifier';
28
23
 
24
+ const Observable = require('../network/RelayObservable');
25
+ const RelayReplaySubject = require('../util/RelayReplaySubject');
26
+ const invariant = require('invariant');
27
+
29
28
  type RequestCacheEntry = {|
30
29
  +identifier: RequestIdentifier,
31
30
  +subject: RelayReplaySubject<GraphQLResponse>,
@@ -307,10 +306,8 @@ function getObservableForActiveRequest(
307
306
  function getRequestCache(
308
307
  environment: IEnvironment,
309
308
  ): Map<RequestIdentifier, RequestCacheEntry> {
310
- const cached: ?Map<
311
- RequestIdentifier,
312
- RequestCacheEntry,
313
- > = requestCachesByEnvironment.get(environment);
309
+ const cached: ?Map<RequestIdentifier, RequestCacheEntry> =
310
+ requestCachesByEnvironment.get(environment);
314
311
  if (cached != null) {
315
312
  return cached;
316
313
  }
@@ -12,15 +12,15 @@
12
12
 
13
13
  'use strict';
14
14
 
15
+ import type {IEnvironment} from '../store/RelayStoreTypes';
16
+ import type {CacheConfig, OperationType} from '../util/RelayRuntimeTypes';
17
+ import type {GraphQLTaggedNode} from './GraphQLTag';
18
+
15
19
  const {
16
20
  createOperationDescriptor,
17
21
  } = require('../store/RelayModernOperationDescriptor');
18
22
  const {getRequest} = require('./GraphQLTag');
19
23
 
20
- import type {IEnvironment} from '../store/RelayStoreTypes';
21
- import type {CacheConfig, OperationType} from '../util/RelayRuntimeTypes';
22
- import type {GraphQLTaggedNode} from './GraphQLTag';
23
-
24
24
  /**
25
25
  * A helper function to fetch the results of a query. Note that results for
26
26
  * fragment spreads are masked: fields must be explicitly listed in the query in
@@ -30,9 +30,9 @@ import type {GraphQLTaggedNode} from './GraphQLTag';
30
30
  function fetchQuery_DEPRECATED<T: OperationType>(
31
31
  environment: IEnvironment,
32
32
  taggedNode: GraphQLTaggedNode,
33
- variables: $PropertyType<T, 'variables'>,
33
+ variables: T['variables'],
34
34
  cacheConfig?: ?CacheConfig,
35
- ): Promise<$PropertyType<T, 'response'>> {
35
+ ): Promise<T['response']> {
36
36
  const query = getRequest(taggedNode);
37
37
  if (query.params.operationKind !== 'query') {
38
38
  throw new Error('fetchQuery: Expected query operation');