relay-runtime 11.0.2 → 13.0.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/README.md +67 -0
  2. package/handlers/RelayDefaultHandlerProvider.js.flow +3 -3
  3. package/handlers/connection/ConnectionHandler.js.flow +9 -18
  4. package/handlers/connection/ConnectionInterface.js.flow +1 -1
  5. package/handlers/connection/MutationHandlers.js.flow +8 -12
  6. package/index.js +1 -1
  7. package/index.js.flow +57 -35
  8. package/lib/handlers/RelayDefaultHandlerProvider.js +1 -1
  9. package/lib/handlers/connection/ConnectionHandler.js +13 -19
  10. package/lib/handlers/connection/ConnectionInterface.js +1 -1
  11. package/lib/handlers/connection/MutationHandlers.js +4 -7
  12. package/lib/index.js +59 -44
  13. package/lib/multi-actor-environment/ActorIdentifier.js +12 -2
  14. package/lib/multi-actor-environment/ActorSpecificEnvironment.js +64 -20
  15. package/lib/multi-actor-environment/ActorUtils.js +27 -0
  16. package/lib/multi-actor-environment/MultiActorEnvironment.js +324 -61
  17. package/lib/multi-actor-environment/MultiActorEnvironmentTypes.js +1 -1
  18. package/lib/multi-actor-environment/index.js +6 -2
  19. package/lib/mutations/RelayDeclarativeMutationConfig.js +5 -2
  20. package/lib/mutations/RelayRecordProxy.js +4 -3
  21. package/lib/mutations/RelayRecordSourceMutator.js +4 -3
  22. package/lib/mutations/RelayRecordSourceProxy.js +13 -5
  23. package/lib/mutations/RelayRecordSourceSelectorProxy.js +19 -6
  24. package/lib/mutations/applyOptimisticMutation.js +7 -7
  25. package/lib/mutations/commitLocalUpdate.js +1 -1
  26. package/lib/mutations/commitMutation.js +15 -11
  27. package/lib/mutations/readUpdatableQuery_EXPERIMENTAL.js +242 -0
  28. package/lib/mutations/validateMutation.js +11 -6
  29. package/lib/network/ConvertToExecuteFunction.js +3 -2
  30. package/lib/network/RelayNetwork.js +4 -3
  31. package/lib/network/RelayNetworkTypes.js +1 -1
  32. package/lib/network/RelayObservable.js +1 -1
  33. package/lib/network/RelayQueryResponseCache.js +22 -6
  34. package/lib/network/wrapNetworkWithLogObserver.js +79 -0
  35. package/lib/query/GraphQLTag.js +3 -2
  36. package/lib/query/PreloadableQueryRegistry.js +1 -1
  37. package/lib/query/fetchQuery.js +7 -6
  38. package/lib/query/fetchQueryInternal.js +1 -1
  39. package/lib/query/fetchQuery_DEPRECATED.js +3 -2
  40. package/lib/store/ClientID.js +8 -2
  41. package/lib/store/DataChecker.js +124 -55
  42. package/lib/store/OperationExecutor.js +489 -215
  43. package/lib/store/RelayConcreteVariables.js +27 -9
  44. package/lib/store/RelayExperimentalGraphResponseHandler.js +153 -0
  45. package/lib/store/RelayExperimentalGraphResponseTransform.js +391 -0
  46. package/lib/store/RelayModernEnvironment.js +100 -120
  47. package/lib/store/RelayModernFragmentSpecResolver.js +53 -27
  48. package/lib/store/RelayModernOperationDescriptor.js +3 -2
  49. package/lib/store/RelayModernRecord.js +48 -13
  50. package/lib/store/RelayModernSelector.js +15 -9
  51. package/lib/store/RelayModernStore.js +56 -23
  52. package/lib/store/RelayOperationTracker.js +34 -24
  53. package/lib/store/RelayOptimisticRecordSource.js +1 -1
  54. package/lib/store/RelayPublishQueue.js +35 -11
  55. package/lib/store/RelayReader.js +257 -72
  56. package/lib/store/RelayRecordSource.js +88 -4
  57. package/lib/store/RelayRecordState.js +1 -1
  58. package/lib/store/RelayReferenceMarker.js +34 -22
  59. package/lib/store/RelayResponseNormalizer.js +172 -96
  60. package/lib/store/RelayStoreReactFlightUtils.js +5 -11
  61. package/lib/store/RelayStoreSubscriptions.js +15 -10
  62. package/lib/store/RelayStoreTypes.js +1 -1
  63. package/lib/store/RelayStoreUtils.js +13 -8
  64. package/lib/store/ResolverCache.js +213 -0
  65. package/lib/store/ResolverFragments.js +10 -6
  66. package/lib/store/StoreInspector.js +1 -1
  67. package/lib/store/TypeID.js +1 -1
  68. package/lib/store/ViewerPattern.js +1 -1
  69. package/lib/store/cloneRelayHandleSourceField.js +6 -5
  70. package/lib/store/cloneRelayScalarHandleSourceField.js +6 -5
  71. package/lib/store/createFragmentSpecResolver.js +1 -1
  72. package/lib/store/createRelayContext.js +5 -3
  73. package/lib/store/defaultGetDataID.js +1 -1
  74. package/lib/store/defaultRequiredFieldLogger.js +1 -1
  75. package/lib/store/hasOverlappingIDs.js +1 -1
  76. package/lib/store/isRelayModernEnvironment.js +1 -1
  77. package/lib/store/normalizeRelayPayload.js +1 -1
  78. package/lib/store/readInlineData.js +7 -3
  79. package/lib/subscription/requestSubscription.js +32 -34
  80. package/lib/util/JSResourceTypes.flow.js +1 -1
  81. package/lib/util/NormalizationNode.js +1 -1
  82. package/lib/util/ReaderNode.js +1 -1
  83. package/lib/util/RelayConcreteNode.js +3 -1
  84. package/lib/util/RelayDefaultHandleKey.js +1 -1
  85. package/lib/util/RelayError.js +1 -1
  86. package/lib/util/RelayFeatureFlags.js +10 -7
  87. package/lib/util/RelayProfiler.js +1 -1
  88. package/lib/util/RelayReplaySubject.js +22 -7
  89. package/lib/util/RelayRuntimeTypes.js +1 -7
  90. package/lib/util/StringInterner.js +71 -0
  91. package/lib/util/createPayloadFor3DField.js +1 -1
  92. package/lib/util/deepFreeze.js +1 -1
  93. package/lib/util/generateID.js +1 -1
  94. package/lib/util/getAllRootVariables.js +29 -0
  95. package/lib/util/getFragmentIdentifier.js +16 -8
  96. package/lib/util/getOperation.js +3 -2
  97. package/lib/util/getPaginationMetadata.js +41 -0
  98. package/lib/util/getPaginationVariables.js +66 -0
  99. package/lib/util/getPendingOperationsForFragment.js +55 -0
  100. package/lib/util/getRefetchMetadata.js +36 -0
  101. package/lib/util/getRelayHandleKey.js +3 -3
  102. package/lib/util/getRequestIdentifier.js +3 -3
  103. package/lib/util/getValueAtPath.js +51 -0
  104. package/lib/util/isEmptyObject.js +2 -2
  105. package/lib/util/isPromise.js +1 -1
  106. package/lib/util/isScalarAndEqual.js +1 -1
  107. package/lib/util/recycleNodesInto.js +1 -1
  108. package/lib/util/registerEnvironmentWithDevTools.js +26 -0
  109. package/lib/util/reportMissingRequiredFields.js +1 -1
  110. package/lib/util/resolveImmediate.js +1 -1
  111. package/lib/util/stableCopy.js +1 -1
  112. package/lib/util/withDuration.js +31 -0
  113. package/multi-actor-environment/ActorIdentifier.js.flow +18 -2
  114. package/multi-actor-environment/ActorSpecificEnvironment.js.flow +94 -58
  115. package/multi-actor-environment/ActorUtils.js.flow +33 -0
  116. package/multi-actor-environment/MultiActorEnvironment.js.flow +366 -93
  117. package/multi-actor-environment/MultiActorEnvironmentTypes.js.flow +88 -23
  118. package/multi-actor-environment/index.js.flow +3 -1
  119. package/mutations/RelayDeclarativeMutationConfig.js.flow +33 -27
  120. package/mutations/RelayRecordProxy.js.flow +5 -6
  121. package/mutations/RelayRecordSourceMutator.js.flow +5 -7
  122. package/mutations/RelayRecordSourceProxy.js.flow +20 -11
  123. package/mutations/RelayRecordSourceSelectorProxy.js.flow +23 -8
  124. package/mutations/applyOptimisticMutation.js.flow +14 -15
  125. package/mutations/commitLocalUpdate.js.flow +2 -2
  126. package/mutations/commitMutation.js.flow +36 -47
  127. package/mutations/readUpdatableQuery_EXPERIMENTAL.js.flow +318 -0
  128. package/mutations/validateMutation.js.flow +27 -17
  129. package/network/ConvertToExecuteFunction.js.flow +3 -3
  130. package/network/RelayNetwork.js.flow +5 -6
  131. package/network/RelayNetworkTypes.js.flow +1 -1
  132. package/network/RelayObservable.js.flow +2 -2
  133. package/network/RelayQueryResponseCache.js.flow +35 -22
  134. package/network/wrapNetworkWithLogObserver.js.flow +99 -0
  135. package/package.json +2 -2
  136. package/query/GraphQLTag.js.flow +11 -11
  137. package/query/PreloadableQueryRegistry.js.flow +5 -3
  138. package/query/fetchQuery.js.flow +19 -19
  139. package/query/fetchQueryInternal.js.flow +7 -10
  140. package/query/fetchQuery_DEPRECATED.js.flow +7 -7
  141. package/relay-runtime.js +2 -2
  142. package/relay-runtime.min.js +2 -2
  143. package/store/ClientID.js.flow +15 -4
  144. package/store/DataChecker.js.flow +142 -60
  145. package/store/OperationExecutor.js.flow +575 -320
  146. package/store/RelayConcreteVariables.js.flow +28 -9
  147. package/store/RelayExperimentalGraphResponseHandler.js.flow +121 -0
  148. package/store/RelayExperimentalGraphResponseTransform.js.flow +470 -0
  149. package/store/RelayModernEnvironment.js.flow +91 -115
  150. package/store/RelayModernFragmentSpecResolver.js.flow +56 -32
  151. package/store/RelayModernOperationDescriptor.js.flow +13 -8
  152. package/store/RelayModernRecord.js.flow +68 -12
  153. package/store/RelayModernSelector.js.flow +25 -15
  154. package/store/RelayModernStore.js.flow +67 -32
  155. package/store/RelayOperationTracker.js.flow +60 -44
  156. package/store/RelayOptimisticRecordSource.js.flow +3 -3
  157. package/store/RelayPublishQueue.js.flow +74 -32
  158. package/store/RelayReader.js.flow +319 -100
  159. package/store/RelayRecordSource.js.flow +73 -7
  160. package/store/RelayRecordState.js.flow +1 -1
  161. package/store/RelayReferenceMarker.js.flow +41 -27
  162. package/store/RelayResponseNormalizer.js.flow +204 -86
  163. package/store/RelayStoreReactFlightUtils.js.flow +5 -12
  164. package/store/RelayStoreSubscriptions.js.flow +20 -12
  165. package/store/RelayStoreTypes.js.flow +200 -41
  166. package/store/RelayStoreUtils.js.flow +25 -12
  167. package/store/ResolverCache.js.flow +249 -0
  168. package/store/ResolverFragments.js.flow +16 -20
  169. package/store/StoreInspector.js.flow +3 -3
  170. package/store/TypeID.js.flow +2 -2
  171. package/store/ViewerPattern.js.flow +3 -3
  172. package/store/cloneRelayHandleSourceField.js.flow +6 -7
  173. package/store/cloneRelayScalarHandleSourceField.js.flow +6 -7
  174. package/store/createFragmentSpecResolver.js.flow +4 -5
  175. package/store/createRelayContext.js.flow +4 -4
  176. package/store/defaultGetDataID.js.flow +1 -1
  177. package/store/defaultRequiredFieldLogger.js.flow +1 -1
  178. package/store/hasOverlappingIDs.js.flow +1 -1
  179. package/store/isRelayModernEnvironment.js.flow +1 -1
  180. package/store/normalizeRelayPayload.js.flow +7 -8
  181. package/store/readInlineData.js.flow +8 -9
  182. package/subscription/requestSubscription.js.flow +55 -51
  183. package/util/JSResourceTypes.flow.js.flow +1 -1
  184. package/util/NormalizationNode.js.flow +11 -4
  185. package/util/ReaderNode.js.flow +25 -2
  186. package/util/RelayConcreteNode.js.flow +5 -1
  187. package/util/RelayDefaultHandleKey.js.flow +1 -1
  188. package/util/RelayError.js.flow +1 -1
  189. package/util/RelayFeatureFlags.js.flow +23 -15
  190. package/util/RelayProfiler.js.flow +1 -1
  191. package/util/RelayReplaySubject.js.flow +10 -10
  192. package/util/RelayRuntimeTypes.js.flow +70 -3
  193. package/util/StringInterner.js.flow +69 -0
  194. package/util/createPayloadFor3DField.js.flow +4 -4
  195. package/util/deepFreeze.js.flow +1 -1
  196. package/util/generateID.js.flow +1 -1
  197. package/util/getAllRootVariables.js.flow +36 -0
  198. package/util/getFragmentIdentifier.js.flow +28 -16
  199. package/util/getOperation.js.flow +3 -3
  200. package/util/getPaginationMetadata.js.flow +69 -0
  201. package/util/getPaginationVariables.js.flow +108 -0
  202. package/util/getPendingOperationsForFragment.js.flow +62 -0
  203. package/util/getRefetchMetadata.js.flow +76 -0
  204. package/util/getRelayHandleKey.js.flow +2 -3
  205. package/util/getRequestIdentifier.js.flow +4 -4
  206. package/util/getValueAtPath.js.flow +46 -0
  207. package/util/isEmptyObject.js.flow +2 -1
  208. package/util/isPromise.js.flow +1 -1
  209. package/util/isScalarAndEqual.js.flow +1 -1
  210. package/util/recycleNodesInto.js.flow +1 -1
  211. package/util/registerEnvironmentWithDevTools.js.flow +33 -0
  212. package/util/reportMissingRequiredFields.js.flow +1 -1
  213. package/util/resolveImmediate.js.flow +2 -2
  214. package/util/stableCopy.js.flow +1 -1
  215. package/util/withDuration.js.flow +32 -0
  216. package/lib/store/RelayRecordSourceMapImpl.js +0 -107
  217. package/lib/store/RelayStoreSubscriptionsUsingMapByID.js +0 -318
  218. package/store/RelayRecordSourceMapImpl.js.flow +0 -91
  219. package/store/RelayStoreSubscriptionsUsingMapByID.js.flow +0 -283
package/lib/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -14,25 +14,48 @@ var ConnectionHandler = require('./handlers/connection/ConnectionHandler');
14
14
 
15
15
  var ConnectionInterface = require('./handlers/connection/ConnectionInterface');
16
16
 
17
- var GraphQLTag = require('./query/GraphQLTag');
18
-
19
17
  var MutationHandlers = require('./handlers/connection/MutationHandlers');
20
18
 
21
- var PreloadableQueryRegistry = require('./query/PreloadableQueryRegistry');
19
+ var RelayDefaultHandlerProvider = require('./handlers/RelayDefaultHandlerProvider');
22
20
 
23
- var RelayConcreteNode = require('./util/RelayConcreteNode');
21
+ var applyOptimisticMutation = require('./mutations/applyOptimisticMutation');
24
22
 
25
- var RelayConcreteVariables = require('./store/RelayConcreteVariables');
23
+ var commitLocalUpdate = require('./mutations/commitLocalUpdate');
24
+
25
+ var commitMutation = require('./mutations/commitMutation');
26
26
 
27
27
  var RelayDeclarativeMutationConfig = require('./mutations/RelayDeclarativeMutationConfig');
28
28
 
29
- var RelayDefaultHandleKey = require('./util/RelayDefaultHandleKey');
29
+ var RelayNetwork = require('./network/RelayNetwork');
30
30
 
31
- var RelayDefaultHandlerProvider = require('./handlers/RelayDefaultHandlerProvider');
31
+ var RelayObservable = require('./network/RelayObservable');
32
32
 
33
- var RelayError = require('./util/RelayError');
33
+ var RelayQueryResponseCache = require('./network/RelayQueryResponseCache');
34
34
 
35
- var RelayFeatureFlags = require('./util/RelayFeatureFlags');
35
+ var fetchQuery = require('./query/fetchQuery');
36
+
37
+ var fetchQuery_DEPRECATED = require('./query/fetchQuery_DEPRECATED');
38
+
39
+ var fetchQueryInternal = require('./query/fetchQueryInternal');
40
+
41
+ var GraphQLTag = require('./query/GraphQLTag');
42
+
43
+ var PreloadableQueryRegistry = require('./query/PreloadableQueryRegistry');
44
+
45
+ var _require = require('./store/ClientID'),
46
+ generateClientID = _require.generateClientID,
47
+ generateUniqueClientID = _require.generateUniqueClientID,
48
+ isClientID = _require.isClientID;
49
+
50
+ var createFragmentSpecResolver = require('./store/createFragmentSpecResolver');
51
+
52
+ var createRelayContext = require('./store/createRelayContext');
53
+
54
+ var isRelayModernEnvironment = require('./store/isRelayModernEnvironment');
55
+
56
+ var readInlineData = require('./store/readInlineData');
57
+
58
+ var RelayConcreteVariables = require('./store/RelayConcreteVariables');
36
59
 
37
60
  var RelayModernEnvironment = require('./store/RelayModernEnvironment');
38
61
 
@@ -44,70 +67,57 @@ var RelayModernSelector = require('./store/RelayModernSelector');
44
67
 
45
68
  var RelayModernStore = require('./store/RelayModernStore');
46
69
 
47
- var RelayNetwork = require('./network/RelayNetwork');
48
-
49
- var RelayObservable = require('./network/RelayObservable');
50
-
51
70
  var RelayOperationTracker = require('./store/RelayOperationTracker');
52
71
 
53
- var RelayProfiler = require('./util/RelayProfiler');
54
-
55
- var RelayQueryResponseCache = require('./network/RelayQueryResponseCache');
56
-
57
72
  var RelayRecordSource = require('./store/RelayRecordSource');
58
73
 
59
- var RelayReplaySubject = require('./util/RelayReplaySubject');
60
-
61
74
  var RelayStoreUtils = require('./store/RelayStoreUtils');
62
75
 
63
76
  var ViewerPattern = require('./store/ViewerPattern');
64
77
 
65
- var applyOptimisticMutation = require('./mutations/applyOptimisticMutation');
66
-
67
- var commitLocalUpdate = require('./mutations/commitLocalUpdate');
68
-
69
- var commitMutation = require('./mutations/commitMutation');
70
-
71
- var createFragmentSpecResolver = require('./store/createFragmentSpecResolver');
78
+ var requestSubscription = require('./subscription/requestSubscription');
72
79
 
73
80
  var createPayloadFor3DField = require('./util/createPayloadFor3DField');
74
81
 
75
- var createRelayContext = require('./store/createRelayContext');
76
-
77
82
  var deepFreeze = require('./util/deepFreeze');
78
83
 
79
- var fetchQuery = require('./query/fetchQuery');
84
+ var getFragmentIdentifier = require('./util/getFragmentIdentifier');
80
85
 
81
- var fetchQueryInternal = require('./query/fetchQueryInternal');
86
+ var getPaginationMetadata = require('./util/getPaginationMetadata');
82
87
 
83
- var fetchQuery_DEPRECATED = require('./query/fetchQuery_DEPRECATED');
88
+ var getPaginationVariables = require('./util/getPaginationVariables');
84
89
 
85
- var getFragmentIdentifier = require('./util/getFragmentIdentifier');
90
+ var getPendingOperationsForFragment = require('./util/getPendingOperationsForFragment');
91
+
92
+ var getRefetchMetadata = require('./util/getRefetchMetadata');
86
93
 
87
94
  var getRelayHandleKey = require('./util/getRelayHandleKey');
88
95
 
89
96
  var getRequestIdentifier = require('./util/getRequestIdentifier');
90
97
 
91
- var isPromise = require('./util/isPromise');
98
+ var getValueAtPath = require('./util/getValueAtPath');
92
99
 
93
- var isRelayModernEnvironment = require('./store/isRelayModernEnvironment');
100
+ var isPromise = require('./util/isPromise');
94
101
 
95
102
  var isScalarAndEqual = require('./util/isScalarAndEqual');
96
103
 
97
- var readInlineData = require('./store/readInlineData');
98
-
99
104
  var recycleNodesInto = require('./util/recycleNodesInto');
100
105
 
101
- var reportMissingRequiredFields = require('./util/reportMissingRequiredFields');
106
+ var RelayConcreteNode = require('./util/RelayConcreteNode');
102
107
 
103
- var requestSubscription = require('./subscription/requestSubscription');
108
+ var RelayDefaultHandleKey = require('./util/RelayDefaultHandleKey');
104
109
 
105
- var stableCopy = require('./util/stableCopy');
110
+ var RelayError = require('./util/RelayError');
106
111
 
107
- var _require = require('./store/ClientID'),
108
- generateClientID = _require.generateClientID,
109
- generateUniqueClientID = _require.generateUniqueClientID,
110
- isClientID = _require.isClientID;
112
+ var RelayFeatureFlags = require('./util/RelayFeatureFlags');
113
+
114
+ var RelayProfiler = require('./util/RelayProfiler');
115
+
116
+ var RelayReplaySubject = require('./util/RelayReplaySubject');
117
+
118
+ var reportMissingRequiredFields = require('./util/reportMissingRequiredFields');
119
+
120
+ var stableCopy = require('./util/stableCopy');
111
121
 
112
122
  // As early as possible, check for the existence of the JavaScript globals which
113
123
  // Relay Runtime relies upon, and produce a clear message if they do not exist.
@@ -214,6 +224,11 @@ module.exports = {
214
224
  recycleNodesInto: recycleNodesInto,
215
225
  stableCopy: stableCopy,
216
226
  getFragmentIdentifier: getFragmentIdentifier,
227
+ getRefetchMetadata: getRefetchMetadata,
228
+ getPaginationMetadata: getPaginationMetadata,
229
+ getPaginationVariables: getPaginationVariables,
230
+ getPendingOperationsForFragment: getPendingOperationsForFragment,
231
+ getValueAtPath: getValueAtPath,
217
232
  __internal: {
218
233
  OperationTracker: RelayOperationTracker,
219
234
  createRelayContext: createRelayContext,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -13,11 +13,21 @@
13
13
  * A unique identifier of the current actor.
14
14
  */
15
15
 
16
+ var invariant = require('invariant');
17
+
18
+ var INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE = 'INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE';
19
+
20
+ function assertInternalActorIndentifier(actorIdentifier) {
21
+ !(actorIdentifier === INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE) ? process.env.NODE_ENV !== "production" ? invariant(false, 'Expected to use only internal version of the `actorIdentifier`. "%s" was provided.', actorIdentifier) : invariant(false) : void 0;
22
+ }
23
+
16
24
  module.exports = {
25
+ assertInternalActorIndentifier: assertInternalActorIndentifier,
17
26
  getActorIdentifier: function getActorIdentifier(actorID) {
18
27
  return actorID;
19
28
  },
20
29
  getDefaultActorIdentifier: function getDefaultActorIdentifier() {
21
30
  throw new Error('Not Implemented');
22
- }
31
+ },
32
+ INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE: INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE
23
33
  };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -10,52 +10,92 @@
10
10
  */
11
11
  'use strict';
12
12
 
13
+ var wrapNetworkWithLogObserver = require('../network/wrapNetworkWithLogObserver');
14
+
15
+ var defaultGetDataID = require('../store/defaultGetDataID');
16
+
13
17
  var RelayOperationTracker = require('../store/RelayOperationTracker');
14
18
 
15
- function todo() {
16
- throw new Error('Not implementd');
17
- }
19
+ var RelayPublishQueue = require('../store/RelayPublishQueue');
20
+
21
+ var registerEnvironmentWithDevTools = require('../util/registerEnvironmentWithDevTools');
18
22
 
19
23
  var ActorSpecificEnvironment = /*#__PURE__*/function () {
20
- // Actor specific properties
21
24
  function ActorSpecificEnvironment(config) {
25
+ var _this = this;
26
+
27
+ this.configName = config.configName;
22
28
  this.actorIdentifier = config.actorIdentifier;
23
29
  this.multiActorEnvironment = config.multiActorEnvironment;
24
30
  this.__log = config.logFn;
25
31
  this.requiredFieldLogger = config.requiredFieldLogger;
26
32
  this._operationTracker = new RelayOperationTracker();
27
33
  this._store = config.store;
28
- this._network = config.network;
34
+ this._network = wrapNetworkWithLogObserver(this, config.network);
35
+ this._publishQueue = new RelayPublishQueue(config.store, config.handlerProvider, defaultGetDataID);
36
+ this._defaultRenderPolicy = config.defaultRenderPolicy; // TODO:T92305692 Remove `options` in favor of directly using `actorIdentifier` on the environment
37
+
38
+ this.options = {
39
+ actorID: this.actorIdentifier
40
+ }; // We need to add this here to pass `isRelayModernEnvironment` check
41
+ // $FlowFixMe[prop-missing]
42
+
43
+ this['@@RelayModernEnvironment'] = true;
44
+
45
+ if (process.env.NODE_ENV !== "production") {
46
+ var _require = require('../store/StoreInspector'),
47
+ inspect = _require.inspect;
48
+
49
+ this.DEBUG_inspect = function (dataID) {
50
+ return inspect(_this, dataID);
51
+ };
52
+ } // Register this Relay Environment with Relay DevTools if it exists.
53
+ // Note: this must always be the last step in the constructor.
54
+
55
+
56
+ registerEnvironmentWithDevTools(this);
29
57
  }
30
58
 
31
59
  var _proto = ActorSpecificEnvironment.prototype;
32
60
 
61
+ _proto.getPublishQueue = function getPublishQueue() {
62
+ return this._publishQueue;
63
+ };
64
+
33
65
  _proto.UNSTABLE_getDefaultRenderPolicy = function UNSTABLE_getDefaultRenderPolicy() {
34
- return todo();
66
+ return this._defaultRenderPolicy;
35
67
  };
36
68
 
37
69
  _proto.applyMutation = function applyMutation(optimisticConfig) {
38
- return this.multiActorEnvironment.applyMutation(this.actorIdentifier, optimisticConfig);
70
+ return this.multiActorEnvironment.applyMutation(this, optimisticConfig);
39
71
  };
40
72
 
41
73
  _proto.applyUpdate = function applyUpdate(optimisticUpdate) {
42
- return this.multiActorEnvironment.applyUpdate(this.actorIdentifier, optimisticUpdate);
74
+ return this.multiActorEnvironment.applyUpdate(this, optimisticUpdate);
75
+ };
76
+
77
+ _proto.revertUpdate = function revertUpdate(optimisticUpdate) {
78
+ return this.multiActorEnvironment.revertUpdate(this, optimisticUpdate);
79
+ };
80
+
81
+ _proto.replaceUpdate = function replaceUpdate(optimisticUpdate, replacementUpdate) {
82
+ return this.multiActorEnvironment.replaceUpdate(this, optimisticUpdate, replacementUpdate);
43
83
  };
44
84
 
45
85
  _proto.check = function check(operation) {
46
- return this.multiActorEnvironment.check(this.actorIdentifier, operation);
86
+ return this.multiActorEnvironment.check(this, operation);
47
87
  };
48
88
 
49
89
  _proto.subscribe = function subscribe(snapshot, callback) {
50
- return this.multiActorEnvironment.subscribe(this.actorIdentifier, snapshot, callback);
90
+ return this.multiActorEnvironment.subscribe(this, snapshot, callback);
51
91
  };
52
92
 
53
93
  _proto.retain = function retain(operation) {
54
- return this.multiActorEnvironment.retain(this.actorIdentifier, operation);
94
+ return this.multiActorEnvironment.retain(this, operation);
55
95
  };
56
96
 
57
97
  _proto.commitUpdate = function commitUpdate(updater) {
58
- return this.multiActorEnvironment.commitUpdate(this.actorIdentifier, updater);
98
+ return this.multiActorEnvironment.commitUpdate(this, updater);
59
99
  }
60
100
  /**
61
101
  * Commit a payload to the environment using the given operation selector.
@@ -63,7 +103,7 @@ var ActorSpecificEnvironment = /*#__PURE__*/function () {
63
103
  ;
64
104
 
65
105
  _proto.commitPayload = function commitPayload(operationDescriptor, payload) {
66
- return this.multiActorEnvironment.commitPayload(this.actorIdentifier, operationDescriptor, payload);
106
+ return this.multiActorEnvironment.commitPayload(this, operationDescriptor, payload);
67
107
  };
68
108
 
69
109
  _proto.getNetwork = function getNetwork() {
@@ -79,27 +119,31 @@ var ActorSpecificEnvironment = /*#__PURE__*/function () {
79
119
  };
80
120
 
81
121
  _proto.lookup = function lookup(selector) {
82
- return this.multiActorEnvironment.lookup(this.actorIdentifier, selector);
122
+ return this.multiActorEnvironment.lookup(this, selector);
83
123
  };
84
124
 
85
125
  _proto.execute = function execute(config) {
86
- return this.multiActorEnvironment.execute(this.actorIdentifier, config);
126
+ return this.multiActorEnvironment.execute(this, config);
127
+ };
128
+
129
+ _proto.executeSubscription = function executeSubscription(config) {
130
+ return this.multiActorEnvironment.executeSubscription(this, config);
87
131
  };
88
132
 
89
133
  _proto.executeMutation = function executeMutation(options) {
90
- return this.multiActorEnvironment.executeMutation(this.actorIdentifier, options);
134
+ return this.multiActorEnvironment.executeMutation(this, options);
91
135
  };
92
136
 
93
137
  _proto.executeWithSource = function executeWithSource(options) {
94
- return this.multiActorEnvironment.executeWithSource(this.actorIdentifier, options);
138
+ return this.multiActorEnvironment.executeWithSource(this, options);
95
139
  };
96
140
 
97
141
  _proto.isRequestActive = function isRequestActive(requestIdentifier) {
98
- return this.multiActorEnvironment.isRequestActive(this.actorIdentifier, requestIdentifier);
142
+ return this.multiActorEnvironment.isRequestActive(this, requestIdentifier);
99
143
  };
100
144
 
101
145
  _proto.isServer = function isServer() {
102
- return todo();
146
+ return this.multiActorEnvironment.isServer();
103
147
  };
104
148
 
105
149
  return ActorSpecificEnvironment;
@@ -0,0 +1,27 @@
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
+ * @emails oncall+relay
8
+ *
9
+ * @format
10
+ */
11
+ 'use strict';
12
+
13
+ var ACTOR_IDENTIFIER_FIELD_NAME = 'actor_key';
14
+
15
+ var _require = require('./ActorIdentifier'),
16
+ getActorIdentifier = _require.getActorIdentifier;
17
+
18
+ function getActorIdentifierFromPayload(payload) {
19
+ if (payload != null && typeof payload === 'object' && typeof payload[ACTOR_IDENTIFIER_FIELD_NAME] === 'string') {
20
+ return getActorIdentifier(payload[ACTOR_IDENTIFIER_FIELD_NAME]);
21
+ }
22
+ }
23
+
24
+ module.exports = {
25
+ ACTOR_IDENTIFIER_FIELD_NAME: ACTOR_IDENTIFIER_FIELD_NAME,
26
+ getActorIdentifierFromPayload: getActorIdentifierFromPayload
27
+ };