relay-runtime 9.0.0 → 9.1.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 (111) hide show
  1. package/handlers/RelayDefaultHandlerProvider.js.flow +34 -0
  2. package/handlers/connection/ConnectionHandler.js.flow +549 -0
  3. package/handlers/connection/ConnectionInterface.js.flow +92 -0
  4. package/index.js +1 -1
  5. package/index.js.flow +314 -0
  6. package/lib/handlers/connection/ConnectionHandler.js +1 -3
  7. package/lib/index.js +1 -2
  8. package/lib/mutations/RelayDeclarativeMutationConfig.js +22 -45
  9. package/lib/mutations/RelayRecordProxy.js +1 -3
  10. package/lib/mutations/RelayRecordSourceMutator.js +1 -3
  11. package/lib/mutations/RelayRecordSourceProxy.js +1 -3
  12. package/lib/mutations/RelayRecordSourceSelectorProxy.js +1 -3
  13. package/lib/mutations/commitMutation.js +2 -0
  14. package/lib/mutations/validateMutation.js +13 -4
  15. package/lib/network/RelayObservable.js +9 -9
  16. package/lib/network/RelayQueryResponseCache.js +8 -6
  17. package/lib/query/fetchQueryInternal.js +1 -8
  18. package/lib/store/DataChecker.js +23 -51
  19. package/lib/store/RelayConcreteVariables.js +6 -2
  20. package/lib/store/RelayModernEnvironment.js +30 -12
  21. package/lib/store/RelayModernFragmentSpecResolver.js +9 -13
  22. package/lib/store/RelayModernQueryExecutor.js +73 -37
  23. package/lib/store/RelayModernRecord.js +14 -9
  24. package/lib/store/RelayModernStore.js +107 -70
  25. package/lib/store/RelayOperationTracker.js +35 -78
  26. package/lib/store/RelayOptimisticRecordSource.js +7 -5
  27. package/lib/store/RelayPublishQueue.js +1 -3
  28. package/lib/store/RelayReader.js +1 -3
  29. package/lib/store/RelayRecordSource.js +1 -3
  30. package/lib/store/RelayRecordSourceMapImpl.js +13 -18
  31. package/lib/store/RelayReferenceMarker.js +2 -6
  32. package/lib/store/RelayResponseNormalizer.js +9 -10
  33. package/lib/store/StoreInspector.js +7 -5
  34. package/lib/store/normalizeRelayPayload.js +6 -2
  35. package/lib/subscription/requestSubscription.js +4 -2
  36. package/lib/util/RelayFeatureFlags.js +1 -1
  37. package/lib/util/RelayReplaySubject.js +1 -3
  38. package/lib/util/createPayloadFor3DField.js +7 -2
  39. package/mutations/RelayDeclarativeMutationConfig.js.flow +380 -0
  40. package/mutations/RelayRecordProxy.js.flow +165 -0
  41. package/mutations/RelayRecordSourceMutator.js.flow +238 -0
  42. package/mutations/RelayRecordSourceProxy.js.flow +164 -0
  43. package/mutations/RelayRecordSourceSelectorProxy.js.flow +119 -0
  44. package/mutations/applyOptimisticMutation.js.flow +76 -0
  45. package/mutations/commitLocalUpdate.js.flow +24 -0
  46. package/mutations/commitMutation.js.flow +184 -0
  47. package/mutations/validateMutation.js.flow +211 -0
  48. package/network/ConvertToExecuteFunction.js.flow +49 -0
  49. package/network/RelayNetwork.js.flow +84 -0
  50. package/network/RelayNetworkTypes.js.flow +123 -0
  51. package/network/RelayObservable.js.flow +634 -0
  52. package/network/RelayQueryResponseCache.js.flow +111 -0
  53. package/package.json +1 -1
  54. package/query/GraphQLTag.js.flow +166 -0
  55. package/query/fetchQuery.js.flow +47 -0
  56. package/query/fetchQueryInternal.js.flow +349 -0
  57. package/relay-runtime.js +2 -2
  58. package/relay-runtime.min.js +2 -2
  59. package/store/ClientID.js.flow +43 -0
  60. package/store/DataChecker.js.flow +426 -0
  61. package/store/RelayConcreteVariables.js.flow +96 -0
  62. package/store/RelayModernEnvironment.js.flow +526 -0
  63. package/store/RelayModernFragmentSpecResolver.js.flow +426 -0
  64. package/store/RelayModernOperationDescriptor.js.flow +88 -0
  65. package/store/RelayModernQueryExecutor.js.flow +1327 -0
  66. package/store/RelayModernRecord.js.flow +403 -0
  67. package/store/RelayModernSelector.js.flow +444 -0
  68. package/store/RelayModernStore.js.flow +757 -0
  69. package/store/RelayOperationTracker.js.flow +164 -0
  70. package/store/RelayOptimisticRecordSource.js.flow +119 -0
  71. package/store/RelayPublishQueue.js.flow +401 -0
  72. package/store/RelayReader.js.flow +376 -0
  73. package/store/RelayRecordSource.js.flow +29 -0
  74. package/store/RelayRecordSourceMapImpl.js.flow +87 -0
  75. package/store/RelayRecordState.js.flow +37 -0
  76. package/store/RelayReferenceMarker.js.flow +236 -0
  77. package/store/RelayResponseNormalizer.js.flow +556 -0
  78. package/store/RelayStoreTypes.js.flow +873 -0
  79. package/store/RelayStoreUtils.js.flow +218 -0
  80. package/store/StoreInspector.js.flow +173 -0
  81. package/store/ViewerPattern.js.flow +26 -0
  82. package/store/cloneRelayHandleSourceField.js.flow +66 -0
  83. package/store/createFragmentSpecResolver.js.flow +55 -0
  84. package/store/createRelayContext.js.flow +44 -0
  85. package/store/defaultGetDataID.js.flow +27 -0
  86. package/store/hasOverlappingIDs.js.flow +34 -0
  87. package/store/isRelayModernEnvironment.js.flow +27 -0
  88. package/store/normalizeRelayPayload.js.flow +51 -0
  89. package/store/readInlineData.js.flow +75 -0
  90. package/subscription/requestSubscription.js.flow +100 -0
  91. package/util/JSResourceTypes.flow.js.flow +20 -0
  92. package/util/NormalizationNode.js.flow +191 -0
  93. package/util/ReaderNode.js.flow +208 -0
  94. package/util/RelayConcreteNode.js.flow +80 -0
  95. package/util/RelayDefaultHandleKey.js.flow +17 -0
  96. package/util/RelayError.js.flow +33 -0
  97. package/util/RelayFeatureFlags.js.flow +30 -0
  98. package/util/RelayProfiler.js.flow +284 -0
  99. package/util/RelayReplaySubject.js.flow +134 -0
  100. package/util/RelayRuntimeTypes.js.flow +70 -0
  101. package/util/createPayloadFor3DField.js.flow +43 -0
  102. package/util/deepFreeze.js.flow +36 -0
  103. package/util/generateID.js.flow +21 -0
  104. package/util/getFragmentIdentifier.js.flow +52 -0
  105. package/util/getRelayHandleKey.js.flow +41 -0
  106. package/util/getRequestIdentifier.js.flow +41 -0
  107. package/util/isPromise.js.flow +21 -0
  108. package/util/isScalarAndEqual.js.flow +26 -0
  109. package/util/recycleNodesInto.js.flow +80 -0
  110. package/util/resolveImmediate.js.flow +30 -0
  111. package/util/stableCopy.js.flow +35 -0
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its 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
+ */
10
+
11
+ // flowlint ambiguous-object-type:error
12
+
13
+ 'use strict';
14
+
15
+ import type {RequestParameters} from '../util/RelayConcreteNode';
16
+ import type {CacheConfig, Variables} from '../util/RelayRuntimeTypes';
17
+ import type RelayObservable, {ObservableFromValue} from './RelayObservable';
18
+
19
+ /**
20
+ * An interface for fetching the data for one or more (possibly interdependent)
21
+ * queries.
22
+ */
23
+ export type INetwork = {|
24
+ execute: ExecuteFunction,
25
+ |};
26
+ export type LogRequestInfoFunction = mixed => void;
27
+
28
+ export type PayloadData = {[key: string]: mixed, ...};
29
+
30
+ export type PayloadError = {
31
+ message: string,
32
+ locations?: Array<{
33
+ line: number,
34
+ column: number,
35
+ ...
36
+ }>,
37
+ // Not officially part of the spec, but used at Facebook
38
+ severity?: 'CRITICAL' | 'ERROR' | 'WARNING',
39
+ ...
40
+ };
41
+
42
+ export type PayloadExtensions = {[key: string]: mixed, ...};
43
+
44
+ /**
45
+ * The shape of a GraphQL response as dictated by the
46
+ * [spec](https://graphql.github.io/graphql-spec/June2018/#sec-Response-Format)
47
+ */
48
+ export type GraphQLResponseWithData = {|
49
+ +data: PayloadData,
50
+ +errors?: Array<PayloadError>,
51
+ +extensions?: PayloadExtensions,
52
+ +label?: string,
53
+ +path?: Array<string | number>,
54
+ |};
55
+
56
+ export type GraphQLResponseWithoutData = {|
57
+ +data?: ?PayloadData,
58
+ +errors: Array<PayloadError>,
59
+ +extensions?: PayloadExtensions,
60
+ +label?: string,
61
+ +path?: Array<string | number>,
62
+ |};
63
+
64
+ export type GraphQLResponseWithExtensionsOnly = {|
65
+ // Per https://spec.graphql.org/June2018/#sec-Errors
66
+ // > If the data entry in the response is not present, the errors entry
67
+ // > in the response must not be empty. It must contain at least one error
68
+ // This means a payload has to have either a data key or an errors key:
69
+ // but the spec leaves room for the combination of data: null plus extensions
70
+ // since `data: null` is a *required* output if there was an error during
71
+ // execution, but the inverse is not described in the sepc: `data: null`
72
+ // does not necessarily indicate that there was an error.
73
+ +data: null,
74
+ +extensions: PayloadExtensions,
75
+ |};
76
+
77
+ export type GraphQLSingularResponse =
78
+ | GraphQLResponseWithData
79
+ | GraphQLResponseWithExtensionsOnly
80
+ | GraphQLResponseWithoutData;
81
+
82
+ export type GraphQLResponse =
83
+ | GraphQLSingularResponse
84
+ | $ReadOnlyArray<GraphQLSingularResponse>;
85
+
86
+ /**
87
+ * A function that returns an Observable representing the response of executing
88
+ * a GraphQL operation.
89
+ */
90
+ export type ExecuteFunction = (
91
+ request: RequestParameters,
92
+ variables: Variables,
93
+ cacheConfig: CacheConfig,
94
+ uploadables?: ?UploadableMap,
95
+ logRequestInfo?: ?LogRequestInfoFunction,
96
+ ) => RelayObservable<GraphQLResponse>;
97
+
98
+ /**
99
+ * A function that executes a GraphQL operation with request/response semantics.
100
+ *
101
+ * May return an Observable or Promise of a plain GraphQL server response, or
102
+ * a composed ExecutePayload object supporting additional metadata.
103
+ */
104
+ export type FetchFunction = (
105
+ request: RequestParameters,
106
+ variables: Variables,
107
+ cacheConfig: CacheConfig,
108
+ uploadables: ?UploadableMap,
109
+ logRequestInfo?: ?LogRequestInfoFunction,
110
+ ) => ObservableFromValue<GraphQLResponse>;
111
+
112
+ /**
113
+ * A function that executes a GraphQL subscription operation, returning zero or
114
+ * more raw server responses over time.
115
+ */
116
+ export type SubscribeFunction = (
117
+ request: RequestParameters,
118
+ variables: Variables,
119
+ cacheConfig: CacheConfig,
120
+ ) => RelayObservable<GraphQLResponse>;
121
+
122
+ export type Uploadable = File | Blob;
123
+ export type UploadableMap = {[key: string]: Uploadable, ...};