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.
Files changed (262) hide show
  1. package/experimental.js +1 -1
  2. package/experimental.js.flow +8 -8
  3. package/handlers/connection/ConnectionHandler.js.flow +5 -5
  4. package/handlers/connection/ConnectionInterface.js.flow +1 -1
  5. package/index.js +1 -1
  6. package/index.js.flow +125 -62
  7. package/lib/experimental.js +3 -3
  8. package/lib/index.js +105 -57
  9. package/lib/multi-actor-environment/ActorIdentifier.js +2 -2
  10. package/lib/multi-actor-environment/MultiActorEnvironment.js +3 -1
  11. package/lib/mutations/commitMutation.js +8 -8
  12. package/lib/mutations/validateMutation.js +4 -4
  13. package/lib/query/GraphQLTag.js +3 -3
  14. package/lib/query/fetchQuery.js +15 -3
  15. package/lib/store/DataChecker.js +38 -4
  16. package/lib/store/NormalizationEngine.js +373 -0
  17. package/lib/store/OperationExecutor.js +172 -113
  18. package/lib/store/RelayConcreteVariables.js +1 -1
  19. package/lib/store/RelayErrorTrie.js +2 -2
  20. package/lib/store/RelayExperimentalGraphResponseTransform.js +8 -8
  21. package/lib/store/RelayModernEnvironment.js +26 -19
  22. package/lib/store/RelayModernRecord.js +18 -8
  23. package/lib/store/RelayModernSelector.js +9 -9
  24. package/lib/store/RelayModernStore.js +152 -43
  25. package/lib/store/RelayPublishQueue.js +1 -1
  26. package/lib/store/RelayReader.js +76 -38
  27. package/lib/store/RelayRecordSource.js +6 -0
  28. package/lib/store/RelayReferenceMarker.js +2 -1
  29. package/lib/store/RelayResponseNormalizer.js +88 -55
  30. package/lib/store/RelayStoreSubscriptions.js +34 -10
  31. package/lib/store/RelayStoreUtils.js +8 -1
  32. package/lib/store/ResolverFragments.js +2 -2
  33. package/lib/store/live-resolvers/LiveResolverCache.js +25 -9
  34. package/lib/store/observeFragmentExperimental.js +17 -1
  35. package/lib/store/observeQueryExperimental.js +2 -2
  36. package/lib/subscription/requestSubscription.js +3 -3
  37. package/lib/util/RelayError.js +3 -0
  38. package/lib/util/RelayFeatureFlags.js +6 -2
  39. package/lib/util/RelayReplaySubject.js +4 -4
  40. package/lib/util/handlePotentialSnapshotErrors.js +2 -2
  41. package/lib/util/stableCopy.js +2 -2
  42. package/llm-docs/api-reference/entrypoint-apis/entrypoint-container.mdx +38 -0
  43. package/llm-docs/api-reference/entrypoint-apis/load-entrypoint.mdx +77 -0
  44. package/llm-docs/api-reference/entrypoint-apis/use-entrypoint-loader.mdx +99 -0
  45. package/llm-docs/api-reference/graphql/graphql-directives.mdx +378 -0
  46. package/llm-docs/api-reference/hooks/_use-lazy-load-query-extra.mdx +16 -0
  47. package/llm-docs/api-reference/hooks/load-query.mdx +84 -0
  48. package/llm-docs/api-reference/hooks/relay-environment-provider.mdx +78 -0
  49. package/llm-docs/api-reference/hooks/use-client-query.mdx +65 -0
  50. package/llm-docs/api-reference/hooks/use-fragment.mdx +69 -0
  51. package/llm-docs/api-reference/hooks/use-lazy-load-query.mdx +62 -0
  52. package/llm-docs/api-reference/hooks/use-mutation.mdx +94 -0
  53. package/llm-docs/api-reference/hooks/use-pagination-fragment.mdx +166 -0
  54. package/llm-docs/api-reference/hooks/use-prefetchable-forward-pagination-fragment.mdx +134 -0
  55. package/llm-docs/api-reference/hooks/use-preloaded-query.mdx +84 -0
  56. package/llm-docs/api-reference/hooks/use-query-loader.mdx +95 -0
  57. package/llm-docs/api-reference/hooks/use-refetchable-fragment.mdx +122 -0
  58. package/llm-docs/api-reference/hooks/use-relay-environment.mdx +37 -0
  59. package/llm-docs/api-reference/hooks/use-subscription.mdx +66 -0
  60. package/llm-docs/api-reference/relay-resolvers/docblock-format.mdx +321 -0
  61. package/llm-docs/api-reference/relay-resolvers/runtime-functions.mdx +94 -0
  62. package/llm-docs/api-reference/relay-runtime/commit-mutation.mdx +65 -0
  63. package/llm-docs/api-reference/relay-runtime/fetch-query.mdx +113 -0
  64. package/llm-docs/api-reference/relay-runtime/field-logger.mdx +170 -0
  65. package/llm-docs/api-reference/relay-runtime/observe-fragment.mdx +92 -0
  66. package/llm-docs/api-reference/relay-runtime/relay-environment.mdx +53 -0
  67. package/llm-docs/api-reference/relay-runtime/request-subscription.mdx +54 -0
  68. package/llm-docs/api-reference/relay-runtime/runtime-configuration.mdx +52 -0
  69. package/llm-docs/api-reference/relay-runtime/store.mdx +734 -0
  70. package/llm-docs/api-reference/relay-runtime/wait-for-fragment-data.mdx +89 -0
  71. package/llm-docs/api-reference/types/CacheConfig.mdx +8 -0
  72. package/llm-docs/api-reference/types/Disposable.mdx +4 -0
  73. package/llm-docs/api-reference/types/GraphQLSubscriptionConfig.mdx +17 -0
  74. package/llm-docs/api-reference/types/MutationConfig.mdx +31 -0
  75. package/llm-docs/api-reference/types/SelectorStoreUpdater.mdx +6 -0
  76. package/llm-docs/api-reference/types/UploadableMap.mdx +3 -0
  77. package/llm-docs/community/learning-resources.mdx +64 -0
  78. package/llm-docs/debugging/declarative-mutation-directives.mdx +34 -0
  79. package/llm-docs/debugging/disallowed-id-types-error.mdx +43 -0
  80. package/llm-docs/debugging/inconsistent-typename-error.mdx +47 -0
  81. package/llm-docs/debugging/relay-devtools.mdx +73 -0
  82. package/llm-docs/debugging/why-null.mdx +116 -0
  83. package/llm-docs/editor-support.mdx +55 -0
  84. package/llm-docs/error-reference/unknown-field.mdx +36 -0
  85. package/llm-docs/getting-started/babel-plugin.mdx +31 -0
  86. package/llm-docs/getting-started/compiler-config.mdx +25 -0
  87. package/llm-docs/getting-started/compiler.mdx +82 -0
  88. package/llm-docs/getting-started/lint-rules.mdx +87 -0
  89. package/llm-docs/getting-started/production.mdx +30 -0
  90. package/llm-docs/getting-started/quick-start.mdx +213 -0
  91. package/llm-docs/glossary/glossary.mdx +1040 -0
  92. package/llm-docs/guided-tour/list-data/advanced-pagination.mdx +157 -0
  93. package/llm-docs/guided-tour/list-data/connections.mdx +81 -0
  94. package/llm-docs/guided-tour/list-data/pagination.mdx +193 -0
  95. package/llm-docs/guided-tour/list-data/rendering-connections.mdx +112 -0
  96. package/llm-docs/guided-tour/list-data/streaming-pagination.mdx +87 -0
  97. package/llm-docs/guided-tour/managing-data-outside-react/retaining-queries.mdx +51 -0
  98. package/llm-docs/guided-tour/refetching/refetching-queries-with-different-data.mdx +337 -0
  99. package/llm-docs/guided-tour/refetching/refreshing-queries.mdx +350 -0
  100. package/llm-docs/guided-tour/rendering/environment.mdx +59 -0
  101. package/llm-docs/guided-tour/rendering/error-states.mdx +295 -0
  102. package/llm-docs/guided-tour/rendering/fragments.mdx +354 -0
  103. package/llm-docs/guided-tour/rendering/loading-states.mdx +245 -0
  104. package/llm-docs/guided-tour/rendering/queries.mdx +261 -0
  105. package/llm-docs/guided-tour/rendering/variables.mdx +233 -0
  106. package/llm-docs/guided-tour/reusing-cached-data/fetch-policies.mdx +56 -0
  107. package/llm-docs/guided-tour/reusing-cached-data/filling-in-missing-data.mdx +102 -0
  108. package/llm-docs/guided-tour/reusing-cached-data/introduction.mdx +22 -0
  109. package/llm-docs/guided-tour/reusing-cached-data/presence-of-data.mdx +93 -0
  110. package/llm-docs/guided-tour/reusing-cached-data/rendering-partially-cached-data.mdx +175 -0
  111. package/llm-docs/guided-tour/reusing-cached-data/staleness-of-data.mdx +116 -0
  112. package/llm-docs/guided-tour/updating-data/client-only-data.mdx +115 -0
  113. package/llm-docs/guided-tour/updating-data/graphql-mutations.mdx +334 -0
  114. package/llm-docs/guided-tour/updating-data/graphql-subscriptions.mdx +279 -0
  115. package/llm-docs/guided-tour/updating-data/imperatively-modifying-linked-fields.mdx +511 -0
  116. package/llm-docs/guided-tour/updating-data/imperatively-modifying-store-data-legacy.mdx +142 -0
  117. package/llm-docs/guided-tour/updating-data/imperatively-modifying-store-data.mdx +275 -0
  118. package/llm-docs/guided-tour/updating-data/introduction.mdx +25 -0
  119. package/llm-docs/guided-tour/updating-data/local-data-updates.mdx +71 -0
  120. package/llm-docs/guided-tour/updating-data/typesafe-updaters-faq.mdx +83 -0
  121. package/llm-docs/guided-tour/updating-data/updating-connections.mdx +592 -0
  122. package/llm-docs/guides/alias-directive.mdx +160 -0
  123. package/llm-docs/guides/catch-directive.mdx +167 -0
  124. package/llm-docs/guides/client-schema-extensions.mdx +208 -0
  125. package/llm-docs/guides/codemods.mdx +66 -0
  126. package/llm-docs/guides/data-driven-dependencies/client-3d.mdx +255 -0
  127. package/llm-docs/guides/data-driven-dependencies/configuration.mdx +127 -0
  128. package/llm-docs/guides/data-driven-dependencies/introduction.mdx +39 -0
  129. package/llm-docs/guides/data-driven-dependencies/server-3d.mdx +664 -0
  130. package/llm-docs/guides/document-comparison.mdx +106 -0
  131. package/llm-docs/guides/graphql-server-specification.mdx +453 -0
  132. package/llm-docs/guides/network-layer.mdx +69 -0
  133. package/llm-docs/guides/persisted-queries.mdx +328 -0
  134. package/llm-docs/guides/relay-resolvers/context.mdx +99 -0
  135. package/llm-docs/guides/relay-resolvers/defining-fields.mdx +151 -0
  136. package/llm-docs/guides/relay-resolvers/defining-types.mdx +164 -0
  137. package/llm-docs/guides/relay-resolvers/deprecated.mdx +27 -0
  138. package/llm-docs/guides/relay-resolvers/derived-fields.mdx +127 -0
  139. package/llm-docs/guides/relay-resolvers/descriptions.mdx +44 -0
  140. package/llm-docs/guides/relay-resolvers/enabling.mdx +41 -0
  141. package/llm-docs/guides/relay-resolvers/errors.mdx +64 -0
  142. package/llm-docs/guides/relay-resolvers/field-arguments.mdx +63 -0
  143. package/llm-docs/guides/relay-resolvers/introduction.mdx +62 -0
  144. package/llm-docs/guides/relay-resolvers/limitations.mdx +30 -0
  145. package/llm-docs/guides/relay-resolvers/live-fields.mdx +164 -0
  146. package/llm-docs/guides/relay-resolvers/return-types.mdx +161 -0
  147. package/llm-docs/guides/relay-resolvers/suspense.mdx +41 -0
  148. package/llm-docs/guides/required-directive.mdx +240 -0
  149. package/llm-docs/guides/semantic-nullability.mdx +93 -0
  150. package/llm-docs/guides/testing-relay-components.mdx +642 -0
  151. package/llm-docs/guides/testing-relay-with-preloaded-queries.mdx +160 -0
  152. package/llm-docs/guides/throw-on-field-error-directive.mdx +58 -0
  153. package/llm-docs/guides/type-emission.mdx +414 -0
  154. package/llm-docs/home.mdx +32 -0
  155. package/llm-docs/principles-and-architecture/architecture-overview.mdx +24 -0
  156. package/llm-docs/principles-and-architecture/compiler-architecture.mdx +106 -0
  157. package/llm-docs/principles-and-architecture/runtime-architecture.mdx +249 -0
  158. package/llm-docs/principles-and-architecture/thinking-in-graphql.mdx +309 -0
  159. package/llm-docs/principles-and-architecture/thinking-in-relay.mdx +104 -0
  160. package/llm-docs/principles-and-architecture/videos.mdx +50 -0
  161. package/llm-docs/tutorial/arrays-lists.mdx +126 -0
  162. package/llm-docs/tutorial/fragments-1.mdx +487 -0
  163. package/llm-docs/tutorial/graphql.mdx +172 -0
  164. package/llm-docs/tutorial/interfaces-polymorphism.mdx +161 -0
  165. package/llm-docs/tutorial/intro.mdx +58 -0
  166. package/llm-docs/tutorial/mutations-updates.mdx +624 -0
  167. package/llm-docs/tutorial/organizing-mutations-queries-and-subscriptions.mdx +13 -0
  168. package/llm-docs/tutorial/queries-1.mdx +267 -0
  169. package/llm-docs/tutorial/queries-2.mdx +389 -0
  170. package/llm-docs/tutorial/refetchable-fragments.mdx +352 -0
  171. package/multi-actor-environment/ActorIdentifier.js.flow +2 -2
  172. package/multi-actor-environment/ActorSpecificEnvironment.js.flow +7 -7
  173. package/multi-actor-environment/ActorUtils.js.flow +1 -1
  174. package/multi-actor-environment/MultiActorEnvironment.js.flow +12 -8
  175. package/multi-actor-environment/MultiActorEnvironmentTypes.js.flow +3 -3
  176. package/mutations/RelayDeclarativeMutationConfig.js.flow +9 -9
  177. package/mutations/RelayRecordProxy.js.flow +8 -11
  178. package/mutations/RelayRecordSourceMutator.js.flow +4 -4
  179. package/mutations/RelayRecordSourceProxy.js.flow +4 -4
  180. package/mutations/RelayRecordSourceSelectorProxy.js.flow +6 -6
  181. package/mutations/applyOptimisticMutation.js.flow +2 -2
  182. package/mutations/commitMutation.js.flow +20 -16
  183. package/mutations/createUpdatableProxy.js.flow +19 -19
  184. package/mutations/readUpdatableFragment.js.flow +3 -3
  185. package/mutations/readUpdatableQuery.js.flow +3 -3
  186. package/mutations/validateMutation.js.flow +7 -7
  187. package/network/RelayNetworkTypes.js.flow +4 -4
  188. package/network/RelayObservable.js.flow +16 -14
  189. package/network/RelayQueryResponseCache.js.flow +3 -3
  190. package/network/wrapNetworkWithLogObserver.js.flow +1 -1
  191. package/package.json +2 -1
  192. package/query/GraphQLTag.js.flow +22 -10
  193. package/query/fetchQuery.js.flow +23 -10
  194. package/query/fetchQuery_DEPRECATED.js.flow +1 -1
  195. package/store/DataChecker.js.flow +43 -9
  196. package/store/NormalizationEngine.js.flow +779 -0
  197. package/store/OperationExecutor.js.flow +173 -70
  198. package/store/RelayConcreteVariables.js.flow +5 -5
  199. package/store/RelayErrorTrie.js.flow +12 -12
  200. package/store/RelayExperimentalGraphResponseHandler.js.flow +3 -3
  201. package/store/RelayExperimentalGraphResponseTransform.js.flow +10 -10
  202. package/store/RelayModernEnvironment.js.flow +41 -26
  203. package/store/RelayModernFragmentSpecResolver.js.flow +1 -1
  204. package/store/RelayModernOperationDescriptor.js.flow +1 -1
  205. package/store/RelayModernRecord.js.flow +44 -20
  206. package/store/RelayModernSelector.js.flow +21 -21
  207. package/store/RelayModernStore.js.flow +219 -58
  208. package/store/RelayOperationTracker.js.flow +2 -2
  209. package/store/RelayOptimisticRecordSource.js.flow +2 -2
  210. package/store/RelayPublishQueue.js.flow +21 -12
  211. package/store/RelayReader.js.flow +129 -57
  212. package/store/RelayRecordSource.js.flow +10 -0
  213. package/store/RelayRecordState.js.flow +1 -1
  214. package/store/RelayReferenceMarker.js.flow +5 -4
  215. package/store/RelayResponseNormalizer.js.flow +125 -57
  216. package/store/RelayStoreSubscriptions.js.flow +52 -8
  217. package/store/RelayStoreTypes.js.flow +153 -64
  218. package/store/RelayStoreUtils.js.flow +15 -7
  219. package/store/ResolverCache.js.flow +2 -2
  220. package/store/ResolverFragments.js.flow +12 -12
  221. package/store/StoreInspector.js.flow +6 -7
  222. package/store/cloneRelayHandleSourceField.js.flow +1 -1
  223. package/store/cloneRelayScalarHandleSourceField.js.flow +1 -1
  224. package/store/createRelayContext.js.flow +1 -1
  225. package/store/createRelayLoggingContext.js.flow +4 -4
  226. package/store/defaultGetDataID.js.flow +2 -2
  227. package/store/isRelayModernEnvironment.js.flow +4 -2
  228. package/store/live-resolvers/LiveResolverCache.js.flow +55 -20
  229. package/store/live-resolvers/LiveResolverSuspenseSentinel.js.flow +3 -3
  230. package/store/live-resolvers/getOutputTypeRecordIDs.js.flow +1 -1
  231. package/store/live-resolvers/isLiveStateValue.js.flow +2 -2
  232. package/store/live-resolvers/resolverDataInjector.js.flow +8 -5
  233. package/store/observeFragmentExperimental.js.flow +49 -20
  234. package/store/observeQueryExperimental.js.flow +5 -5
  235. package/store/readInlineData.js.flow +4 -4
  236. package/store/waitForFragmentExperimental.js.flow +3 -3
  237. package/subscription/requestSubscription.js.flow +7 -7
  238. package/util/NormalizationNode.js.flow +34 -32
  239. package/util/ReaderNode.js.flow +32 -30
  240. package/util/RelayConcreteNode.js.flow +5 -5
  241. package/util/RelayError.js.flow +4 -1
  242. package/util/RelayFeatureFlags.js.flow +21 -1
  243. package/util/RelayProfiler.js.flow +1 -1
  244. package/util/RelayReplaySubject.js.flow +3 -3
  245. package/util/RelayRuntimeTypes.js.flow +11 -11
  246. package/util/createPayloadFor3DField.js.flow +9 -5
  247. package/util/deepFreeze.js.flow +2 -2
  248. package/util/getFragmentIdentifier.js.flow +1 -1
  249. package/util/getPaginationMetadata.js.flow +1 -1
  250. package/util/getPaginationVariables.js.flow +1 -1
  251. package/util/getPendingOperationsForFragment.js.flow +2 -2
  252. package/util/getRefetchMetadata.js.flow +6 -5
  253. package/util/getValueAtPath.js.flow +3 -3
  254. package/util/handlePotentialSnapshotErrors.js.flow +5 -5
  255. package/util/isEmptyObject.js.flow +1 -1
  256. package/util/isPromise.js.flow +2 -2
  257. package/util/isScalarAndEqual.js.flow +1 -1
  258. package/util/recycleNodesInto.js.flow +2 -2
  259. package/util/registerEnvironmentWithDevTools.js.flow +1 -1
  260. package/util/shallowFreeze.js.flow +1 -1
  261. package/util/stableCopy.js.flow +5 -5
  262. package/util/withProvidedVariables.js.flow +14 -10
package/experimental.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v20.1.1
2
+ * Relay v21.0.0
3
3
  *
4
4
  * Copyright (c) Meta Platforms, Inc. and affiliates.
5
5
  *
@@ -22,7 +22,7 @@ const {waitForFragmentData} = require('./store/waitForFragmentExperimental');
22
22
  // Annotates a strong object return type, where `A` is the GraphQL typename and `Typename` is the
23
23
  // `__typename` field for returning an interface
24
24
  // eslint-disable-next-line no-unused-vars
25
- export type IdOf<A: string, Typename: void | string = void> = [
25
+ export type IdOf<A extends string, Typename extends void | string = void> = [
26
26
  Typename,
27
27
  ] extends [void]
28
28
  ? {id: DataID}
@@ -41,11 +41,11 @@ export type IdOf<A: string, Typename: void | string = void> = [
41
41
  * can return null or not. If the field is nullable, you can type it as
42
42
  * returning `?RelayResolverValue<T>`.
43
43
  */
44
- export type RelayResolverValue<A> = $NonMaybeType<A>;
44
+ export type RelayResolverValue<A> = NonNullable<A>;
45
45
 
46
46
  type ErrorResult<Error> = {
47
47
  +ok: false,
48
- +errors: $ReadOnlyArray<Error>,
48
+ +errors: ReadonlyArray<Error>,
49
49
  };
50
50
 
51
51
  type OkayResult<T> = {
@@ -55,23 +55,23 @@ type OkayResult<T> = {
55
55
 
56
56
  export type Result<T, Error> = OkayResult<T> | ErrorResult<Error>;
57
57
 
58
- function isValueResult<T = mixed>(
58
+ function isValueResult<T = unknown>(
59
59
  input: Result<T, Error>,
60
60
  ): input is OkayResult<T> {
61
61
  return input.ok === (true as const);
62
62
  }
63
63
 
64
- function isErrorResult<T = mixed>(
64
+ function isErrorResult<T = unknown>(
65
65
  input: Result<T, Error>,
66
66
  ): input is ErrorResult<Error> {
67
67
  return input.ok === (false as const);
68
68
  }
69
69
 
70
70
  module.exports = {
71
- resolverDataInjector,
72
- isValueResult,
73
71
  isErrorResult,
74
- observeQuery,
72
+ isValueResult,
75
73
  observeFragment,
74
+ observeQuery,
75
+ resolverDataInjector,
76
76
  waitForFragmentData,
77
77
  };
@@ -166,7 +166,7 @@ function update(store: RecordSourceProxy, payload: HandleFieldPayload): void {
166
166
  // end cursor from the server matches the end cursor from the
167
167
  // client then we're just filling out the rest of this page.
168
168
  if (isAddingEdgesAfterCurrentPage || isFillingOutCurrentPage) {
169
- const nodeIDs = new Set<mixed>();
169
+ const nodeIDs = new Set<unknown>();
170
170
  mergeEdges(prevEdges, nextEdges, nodeIDs);
171
171
  mergeEdges(serverEdges, nextEdges, nodeIDs);
172
172
  } else {
@@ -185,7 +185,7 @@ function update(store: RecordSourceProxy, payload: HandleFieldPayload): void {
185
185
  clientPageInfo &&
186
186
  args.before === clientPageInfo.getValue(START_CURSOR)
187
187
  ) {
188
- const nodeIDs = new Set<mixed>();
188
+ const nodeIDs = new Set<unknown>();
189
189
  mergeEdges(serverEdges, nextEdges, nodeIDs);
190
190
  mergeEdges(prevEdges, nextEdges, nodeIDs);
191
191
  } else {
@@ -380,7 +380,7 @@ function insertEdgeAfter(
380
380
  if (cursor == null) {
381
381
  nextEdges = edges.concat(newEdge);
382
382
  } else {
383
- nextEdges = ([]: Array<?RecordProxy>);
383
+ nextEdges = [] as Array<?RecordProxy>;
384
384
  let foundCursor = false;
385
385
  for (let ii = 0; ii < edges.length; ii++) {
386
386
  const edge = edges[ii];
@@ -484,7 +484,7 @@ function insertEdgeBefore(
484
484
  if (cursor == null) {
485
485
  nextEdges = [newEdge].concat(edges);
486
486
  } else {
487
- nextEdges = ([]: Array<?RecordProxy>);
487
+ nextEdges = [] as Array<?RecordProxy>;
488
488
  let foundCursor = false;
489
489
  for (let ii = 0; ii < edges.length; ii++) {
490
490
  const edge = edges[ii];
@@ -584,7 +584,7 @@ function buildConnectionEdge(
584
584
  function mergeEdges(
585
585
  sourceEdges: Array<?RecordProxy>,
586
586
  targetEdges: Array<?RecordProxy>,
587
- nodeIDs: Set<mixed>,
587
+ nodeIDs: Set<unknown>,
588
588
  ): void {
589
589
  const {NODE} = ConnectionInterface.get();
590
590
 
@@ -16,7 +16,7 @@ import type {Record} from '../../store/RelayStoreTypes';
16
16
  type Call = {name: string, ...};
17
17
 
18
18
  export type EdgeRecord = Record & {
19
- cursor: mixed,
19
+ cursor: unknown,
20
20
  node: Record,
21
21
  ...
22
22
  };
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v20.1.1
2
+ * Relay v21.0.0
3
3
  *
4
4
  * Copyright (c) Meta Platforms, Inc. and affiliates.
5
5
  *
package/index.js.flow CHANGED
@@ -9,8 +9,14 @@
9
9
  * @oncall relay
10
10
  */
11
11
 
12
+ /**
13
+ * LLM/AI Agent: Relay documentation is available in node_modules/relay-runtime/llm-docs/
14
+ */
15
+
12
16
  'use strict';
13
17
 
18
+ /* eslint relay-internal/esm-compatible-cjs: error */
19
+
14
20
  const {isErrorResult, isValueResult} = require('./experimental');
15
21
  const ConnectionHandler = require('./handlers/connection/ConnectionHandler');
16
22
  const ConnectionInterface = require('./handlers/connection/ConnectionInterface');
@@ -36,11 +42,13 @@ const {
36
42
  const createFragmentSpecResolver = require('./store/createFragmentSpecResolver');
37
43
  const createRelayContext = require('./store/createRelayContext');
38
44
  const createRelayLoggingContext = require('./store/createRelayLoggingContext');
45
+ const defaultGetDataID = require('./store/defaultGetDataID');
39
46
  const isRelayModernEnvironment = require('./store/isRelayModernEnvironment');
40
47
  const {
41
48
  isSuspenseSentinel,
42
49
  suspenseSentinel,
43
50
  } = require('./store/live-resolvers/LiveResolverSuspenseSentinel');
51
+ const NormalizationEngine = require('./store/NormalizationEngine');
44
52
  const normalizeResponse = require('./store/normalizeResponse');
45
53
  const readInlineData = require('./store/readInlineData');
46
54
  const RelayConcreteVariables = require('./store/RelayConcreteVariables');
@@ -262,6 +270,79 @@ if (__DEV__) {
262
270
  }
263
271
  }
264
272
 
273
+ const {
274
+ areEqualSelectors,
275
+ createNormalizationSelector,
276
+ createReaderSelector,
277
+ getDataIDsFromFragment,
278
+ getDataIDsFromObject,
279
+ getPluralSelector,
280
+ getSelector,
281
+ getSelectorsFromObject,
282
+ getSingularSelector,
283
+ getVariablesFromFragment,
284
+ getVariablesFromObject,
285
+ getVariablesFromPluralFragment,
286
+ getVariablesFromSingularFragment,
287
+ } = RelayModernSelector;
288
+
289
+ const {createOperationDescriptor, createRequestDescriptor} =
290
+ RelayModernOperationDescriptor;
291
+
292
+ const {
293
+ getArgumentValues,
294
+ getModuleComponentKey,
295
+ getModuleOperationKey,
296
+ getStorageKey,
297
+ FRAGMENTS_KEY,
298
+ FRAGMENT_OWNER_KEY,
299
+ ID_KEY,
300
+ REF_KEY,
301
+ REFS_KEY,
302
+ ROOT_ID,
303
+ ROOT_TYPE,
304
+ TYPENAME_KEY,
305
+ } = RelayStoreUtils;
306
+
307
+ const {
308
+ getNode,
309
+ getFragment,
310
+ getInlineDataFragment,
311
+ getPaginationFragment,
312
+ getRefetchableFragment,
313
+ getRequest,
314
+ graphql,
315
+ isFragment,
316
+ isInlineDataFragment,
317
+ isRequest,
318
+ } = GraphQLTag;
319
+
320
+ const {readFragment} = ResolverFragments;
321
+
322
+ const {DEFAULT_HANDLE_KEY} = RelayDefaultHandleKey;
323
+
324
+ const {MutationTypes, RangeOperations} = RelayDeclarativeMutationConfig;
325
+
326
+ const {VIEWER_ID, VIEWER_TYPE} = ViewerPattern;
327
+
328
+ const __internal = {
329
+ ResolverFragments,
330
+ OperationTracker: RelayOperationTracker,
331
+ createRelayContext: createRelayContext,
332
+ createRelayLoggingContext: createRelayLoggingContext,
333
+ defaultGetDataID: defaultGetDataID,
334
+ getOperationVariables: RelayConcreteVariables.getOperationVariables,
335
+ getLocalVariables: RelayConcreteVariables.getLocalVariables,
336
+ fetchQuery: fetchQueryInternal.fetchQuery,
337
+ fetchQueryDeduped: fetchQueryInternal.fetchQueryDeduped,
338
+ getPromiseForActiveRequest: fetchQueryInternal.getPromiseForActiveRequest,
339
+ getObservableForActiveRequest:
340
+ fetchQueryInternal.getObservableForActiveRequest,
341
+ NormalizationEngine: NormalizationEngine,
342
+ normalizeResponse: normalizeResponse,
343
+ withProvidedVariables: withProvidedVariables,
344
+ };
345
+
265
346
  /**
266
347
  * The public interface to Relay Runtime.
267
348
  */
@@ -276,59 +357,55 @@ module.exports = {
276
357
  ReplaySubject: RelayReplaySubject,
277
358
  Store: RelayModernStore,
278
359
 
279
- areEqualSelectors: RelayModernSelector.areEqualSelectors,
360
+ areEqualSelectors,
280
361
  createFragmentSpecResolver: createFragmentSpecResolver,
281
- createNormalizationSelector: RelayModernSelector.createNormalizationSelector,
282
- createOperationDescriptor:
283
- RelayModernOperationDescriptor.createOperationDescriptor,
284
- createReaderSelector: RelayModernSelector.createReaderSelector,
285
- createRequestDescriptor:
286
- RelayModernOperationDescriptor.createRequestDescriptor,
287
- getArgumentValues: RelayStoreUtils.getArgumentValues,
288
- getDataIDsFromFragment: RelayModernSelector.getDataIDsFromFragment,
289
- getDataIDsFromObject: RelayModernSelector.getDataIDsFromObject,
290
- getNode: GraphQLTag.getNode,
291
- getFragment: GraphQLTag.getFragment,
292
- getInlineDataFragment: GraphQLTag.getInlineDataFragment,
293
- getModuleComponentKey: RelayStoreUtils.getModuleComponentKey,
294
- getModuleOperationKey: RelayStoreUtils.getModuleOperationKey,
295
- getPaginationFragment: GraphQLTag.getPaginationFragment,
296
- getPluralSelector: RelayModernSelector.getPluralSelector,
297
- getRefetchableFragment: GraphQLTag.getRefetchableFragment,
298
- getRequest: GraphQLTag.getRequest,
362
+ createNormalizationSelector,
363
+ createOperationDescriptor,
364
+ createReaderSelector,
365
+ createRequestDescriptor,
366
+ getArgumentValues,
367
+ getDataIDsFromFragment,
368
+ getDataIDsFromObject,
369
+ getNode,
370
+ getFragment,
371
+ getInlineDataFragment,
372
+ getModuleComponentKey,
373
+ getModuleOperationKey,
374
+ getPaginationFragment,
375
+ getPluralSelector,
376
+ getRefetchableFragment,
377
+ getRequest,
299
378
  getRequestIdentifier: getRequestIdentifier,
300
- getSelector: RelayModernSelector.getSelector,
301
- getSelectorsFromObject: RelayModernSelector.getSelectorsFromObject,
302
- getSingularSelector: RelayModernSelector.getSingularSelector,
303
- getStorageKey: RelayStoreUtils.getStorageKey,
304
- getVariablesFromFragment: RelayModernSelector.getVariablesFromFragment,
305
- getVariablesFromObject: RelayModernSelector.getVariablesFromObject,
306
- getVariablesFromPluralFragment:
307
- RelayModernSelector.getVariablesFromPluralFragment,
308
- getVariablesFromSingularFragment:
309
- RelayModernSelector.getVariablesFromSingularFragment,
379
+ getSelector,
380
+ getSelectorsFromObject,
381
+ getSingularSelector,
382
+ getStorageKey,
383
+ getVariablesFromFragment,
384
+ getVariablesFromObject,
385
+ getVariablesFromPluralFragment,
386
+ getVariablesFromSingularFragment,
310
387
  handlePotentialSnapshotErrors,
311
- graphql: GraphQLTag.graphql,
388
+ graphql,
312
389
  isErrorResult: isErrorResult,
313
390
  isValueResult: isValueResult,
314
- isFragment: GraphQLTag.isFragment,
315
- isInlineDataFragment: GraphQLTag.isInlineDataFragment,
391
+ isFragment,
392
+ isInlineDataFragment,
316
393
  isSuspenseSentinel,
317
394
  suspenseSentinel,
318
- isRequest: GraphQLTag.isRequest,
395
+ isRequest,
319
396
  readInlineData,
320
- readFragment: ResolverFragments.readFragment,
397
+ readFragment,
321
398
 
322
399
  // Declarative mutation API
323
- MutationTypes: RelayDeclarativeMutationConfig.MutationTypes,
324
- RangeOperations: RelayDeclarativeMutationConfig.RangeOperations,
400
+ MutationTypes,
401
+ RangeOperations,
325
402
 
326
403
  // Extensions
327
404
  DefaultHandlerProvider: RelayDefaultHandlerProvider,
328
405
  ConnectionHandler,
329
406
  MutationHandlers,
330
- VIEWER_ID: ViewerPattern.VIEWER_ID,
331
- VIEWER_TYPE: ViewerPattern.VIEWER_TYPE,
407
+ VIEWER_ID,
408
+ VIEWER_TYPE,
332
409
 
333
410
  // Helpers (can be implemented via the above API)
334
411
  applyOptimisticMutation,
@@ -351,15 +428,15 @@ module.exports = {
351
428
  RelayConcreteNode: RelayConcreteNode,
352
429
  RelayError: RelayError,
353
430
  RelayFeatureFlags: RelayFeatureFlags,
354
- DEFAULT_HANDLE_KEY: RelayDefaultHandleKey.DEFAULT_HANDLE_KEY,
355
- FRAGMENTS_KEY: RelayStoreUtils.FRAGMENTS_KEY,
356
- FRAGMENT_OWNER_KEY: RelayStoreUtils.FRAGMENT_OWNER_KEY,
357
- ID_KEY: RelayStoreUtils.ID_KEY,
358
- REF_KEY: RelayStoreUtils.REF_KEY,
359
- REFS_KEY: RelayStoreUtils.REFS_KEY,
360
- ROOT_ID: RelayStoreUtils.ROOT_ID,
361
- ROOT_TYPE: RelayStoreUtils.ROOT_TYPE,
362
- TYPENAME_KEY: RelayStoreUtils.TYPENAME_KEY,
431
+ DEFAULT_HANDLE_KEY,
432
+ FRAGMENTS_KEY,
433
+ FRAGMENT_OWNER_KEY,
434
+ ID_KEY,
435
+ REF_KEY,
436
+ REFS_KEY,
437
+ ROOT_ID,
438
+ ROOT_TYPE,
439
+ TYPENAME_KEY,
363
440
 
364
441
  deepFreeze: deepFreeze,
365
442
  generateClientID: generateClientID,
@@ -377,19 +454,5 @@ module.exports = {
377
454
  getPaginationVariables: getPaginationVariables,
378
455
  getPendingOperationsForFragment: getPendingOperationsForFragment,
379
456
  getValueAtPath: getValueAtPath,
380
- __internal: {
381
- ResolverFragments,
382
- OperationTracker: RelayOperationTracker,
383
- createRelayContext: createRelayContext,
384
- createRelayLoggingContext: createRelayLoggingContext,
385
- getOperationVariables: RelayConcreteVariables.getOperationVariables,
386
- getLocalVariables: RelayConcreteVariables.getLocalVariables,
387
- fetchQuery: fetchQueryInternal.fetchQuery,
388
- fetchQueryDeduped: fetchQueryInternal.fetchQueryDeduped,
389
- getPromiseForActiveRequest: fetchQueryInternal.getPromiseForActiveRequest,
390
- getObservableForActiveRequest:
391
- fetchQueryInternal.getObservableForActiveRequest,
392
- normalizeResponse: normalizeResponse,
393
- withProvidedVariables: withProvidedVariables,
394
- },
457
+ __internal,
395
458
  };
@@ -14,10 +14,10 @@ function isErrorResult(input) {
14
14
  return input.ok === false;
15
15
  }
16
16
  module.exports = {
17
- resolverDataInjector: resolverDataInjector,
18
- isValueResult: isValueResult,
19
17
  isErrorResult: isErrorResult,
20
- observeQuery: observeQuery,
18
+ isValueResult: isValueResult,
21
19
  observeFragment: observeFragment,
20
+ observeQuery: observeQuery,
21
+ resolverDataInjector: resolverDataInjector,
22
22
  waitForFragmentData: waitForFragmentData
23
23
  };
package/lib/index.js CHANGED
@@ -26,10 +26,12 @@ var _require2 = require('./store/ClientID'),
26
26
  var createFragmentSpecResolver = require('./store/createFragmentSpecResolver');
27
27
  var createRelayContext = require('./store/createRelayContext');
28
28
  var createRelayLoggingContext = require('./store/createRelayLoggingContext');
29
+ var defaultGetDataID = require('./store/defaultGetDataID');
29
30
  var isRelayModernEnvironment = require('./store/isRelayModernEnvironment');
30
31
  var _require3 = require('./store/live-resolvers/LiveResolverSuspenseSentinel'),
31
32
  isSuspenseSentinel = _require3.isSuspenseSentinel,
32
33
  suspenseSentinel = _require3.suspenseSentinel;
34
+ var NormalizationEngine = require('./store/NormalizationEngine');
33
35
  var normalizeResponse = require('./store/normalizeResponse');
34
36
  var readInlineData = require('./store/readInlineData');
35
37
  var RelayConcreteVariables = require('./store/RelayConcreteVariables');
@@ -78,6 +80,65 @@ if (process.env.NODE_ENV !== "production") {
78
80
  throw new Error("relay-runtime requires ".concat([mapStr, setStr, promiseStr, objStr].filter(Boolean).join(', and '), " to exist. ") + 'Use a polyfill to provide these for older browsers.');
79
81
  }
80
82
  }
83
+ var areEqualSelectors = RelayModernSelector.areEqualSelectors,
84
+ createNormalizationSelector = RelayModernSelector.createNormalizationSelector,
85
+ createReaderSelector = RelayModernSelector.createReaderSelector,
86
+ getDataIDsFromFragment = RelayModernSelector.getDataIDsFromFragment,
87
+ getDataIDsFromObject = RelayModernSelector.getDataIDsFromObject,
88
+ getPluralSelector = RelayModernSelector.getPluralSelector,
89
+ getSelector = RelayModernSelector.getSelector,
90
+ getSelectorsFromObject = RelayModernSelector.getSelectorsFromObject,
91
+ getSingularSelector = RelayModernSelector.getSingularSelector,
92
+ getVariablesFromFragment = RelayModernSelector.getVariablesFromFragment,
93
+ getVariablesFromObject = RelayModernSelector.getVariablesFromObject,
94
+ getVariablesFromPluralFragment = RelayModernSelector.getVariablesFromPluralFragment,
95
+ getVariablesFromSingularFragment = RelayModernSelector.getVariablesFromSingularFragment;
96
+ var createOperationDescriptor = RelayModernOperationDescriptor.createOperationDescriptor,
97
+ createRequestDescriptor = RelayModernOperationDescriptor.createRequestDescriptor;
98
+ var getArgumentValues = RelayStoreUtils.getArgumentValues,
99
+ getModuleComponentKey = RelayStoreUtils.getModuleComponentKey,
100
+ getModuleOperationKey = RelayStoreUtils.getModuleOperationKey,
101
+ getStorageKey = RelayStoreUtils.getStorageKey,
102
+ FRAGMENTS_KEY = RelayStoreUtils.FRAGMENTS_KEY,
103
+ FRAGMENT_OWNER_KEY = RelayStoreUtils.FRAGMENT_OWNER_KEY,
104
+ ID_KEY = RelayStoreUtils.ID_KEY,
105
+ REF_KEY = RelayStoreUtils.REF_KEY,
106
+ REFS_KEY = RelayStoreUtils.REFS_KEY,
107
+ ROOT_ID = RelayStoreUtils.ROOT_ID,
108
+ ROOT_TYPE = RelayStoreUtils.ROOT_TYPE,
109
+ TYPENAME_KEY = RelayStoreUtils.TYPENAME_KEY;
110
+ var getNode = GraphQLTag.getNode,
111
+ getFragment = GraphQLTag.getFragment,
112
+ getInlineDataFragment = GraphQLTag.getInlineDataFragment,
113
+ getPaginationFragment = GraphQLTag.getPaginationFragment,
114
+ getRefetchableFragment = GraphQLTag.getRefetchableFragment,
115
+ getRequest = GraphQLTag.getRequest,
116
+ graphql = GraphQLTag.graphql,
117
+ isFragment = GraphQLTag.isFragment,
118
+ isInlineDataFragment = GraphQLTag.isInlineDataFragment,
119
+ isRequest = GraphQLTag.isRequest;
120
+ var readFragment = ResolverFragments.readFragment;
121
+ var DEFAULT_HANDLE_KEY = RelayDefaultHandleKey.DEFAULT_HANDLE_KEY;
122
+ var MutationTypes = RelayDeclarativeMutationConfig.MutationTypes,
123
+ RangeOperations = RelayDeclarativeMutationConfig.RangeOperations;
124
+ var VIEWER_ID = ViewerPattern.VIEWER_ID,
125
+ VIEWER_TYPE = ViewerPattern.VIEWER_TYPE;
126
+ var __internal = {
127
+ ResolverFragments: ResolverFragments,
128
+ OperationTracker: RelayOperationTracker,
129
+ createRelayContext: createRelayContext,
130
+ createRelayLoggingContext: createRelayLoggingContext,
131
+ defaultGetDataID: defaultGetDataID,
132
+ getOperationVariables: RelayConcreteVariables.getOperationVariables,
133
+ getLocalVariables: RelayConcreteVariables.getLocalVariables,
134
+ fetchQuery: fetchQueryInternal.fetchQuery,
135
+ fetchQueryDeduped: fetchQueryInternal.fetchQueryDeduped,
136
+ getPromiseForActiveRequest: fetchQueryInternal.getPromiseForActiveRequest,
137
+ getObservableForActiveRequest: fetchQueryInternal.getObservableForActiveRequest,
138
+ NormalizationEngine: NormalizationEngine,
139
+ normalizeResponse: normalizeResponse,
140
+ withProvidedVariables: withProvidedVariables
141
+ };
81
142
  module.exports = {
82
143
  Environment: RelayModernEnvironment,
83
144
  Network: RelayNetwork,
@@ -87,51 +148,51 @@ module.exports = {
87
148
  Record: RelayModernRecord,
88
149
  ReplaySubject: RelayReplaySubject,
89
150
  Store: RelayModernStore,
90
- areEqualSelectors: RelayModernSelector.areEqualSelectors,
151
+ areEqualSelectors: areEqualSelectors,
91
152
  createFragmentSpecResolver: createFragmentSpecResolver,
92
- createNormalizationSelector: RelayModernSelector.createNormalizationSelector,
93
- createOperationDescriptor: RelayModernOperationDescriptor.createOperationDescriptor,
94
- createReaderSelector: RelayModernSelector.createReaderSelector,
95
- createRequestDescriptor: RelayModernOperationDescriptor.createRequestDescriptor,
96
- getArgumentValues: RelayStoreUtils.getArgumentValues,
97
- getDataIDsFromFragment: RelayModernSelector.getDataIDsFromFragment,
98
- getDataIDsFromObject: RelayModernSelector.getDataIDsFromObject,
99
- getNode: GraphQLTag.getNode,
100
- getFragment: GraphQLTag.getFragment,
101
- getInlineDataFragment: GraphQLTag.getInlineDataFragment,
102
- getModuleComponentKey: RelayStoreUtils.getModuleComponentKey,
103
- getModuleOperationKey: RelayStoreUtils.getModuleOperationKey,
104
- getPaginationFragment: GraphQLTag.getPaginationFragment,
105
- getPluralSelector: RelayModernSelector.getPluralSelector,
106
- getRefetchableFragment: GraphQLTag.getRefetchableFragment,
107
- getRequest: GraphQLTag.getRequest,
153
+ createNormalizationSelector: createNormalizationSelector,
154
+ createOperationDescriptor: createOperationDescriptor,
155
+ createReaderSelector: createReaderSelector,
156
+ createRequestDescriptor: createRequestDescriptor,
157
+ getArgumentValues: getArgumentValues,
158
+ getDataIDsFromFragment: getDataIDsFromFragment,
159
+ getDataIDsFromObject: getDataIDsFromObject,
160
+ getNode: getNode,
161
+ getFragment: getFragment,
162
+ getInlineDataFragment: getInlineDataFragment,
163
+ getModuleComponentKey: getModuleComponentKey,
164
+ getModuleOperationKey: getModuleOperationKey,
165
+ getPaginationFragment: getPaginationFragment,
166
+ getPluralSelector: getPluralSelector,
167
+ getRefetchableFragment: getRefetchableFragment,
168
+ getRequest: getRequest,
108
169
  getRequestIdentifier: getRequestIdentifier,
109
- getSelector: RelayModernSelector.getSelector,
110
- getSelectorsFromObject: RelayModernSelector.getSelectorsFromObject,
111
- getSingularSelector: RelayModernSelector.getSingularSelector,
112
- getStorageKey: RelayStoreUtils.getStorageKey,
113
- getVariablesFromFragment: RelayModernSelector.getVariablesFromFragment,
114
- getVariablesFromObject: RelayModernSelector.getVariablesFromObject,
115
- getVariablesFromPluralFragment: RelayModernSelector.getVariablesFromPluralFragment,
116
- getVariablesFromSingularFragment: RelayModernSelector.getVariablesFromSingularFragment,
170
+ getSelector: getSelector,
171
+ getSelectorsFromObject: getSelectorsFromObject,
172
+ getSingularSelector: getSingularSelector,
173
+ getStorageKey: getStorageKey,
174
+ getVariablesFromFragment: getVariablesFromFragment,
175
+ getVariablesFromObject: getVariablesFromObject,
176
+ getVariablesFromPluralFragment: getVariablesFromPluralFragment,
177
+ getVariablesFromSingularFragment: getVariablesFromSingularFragment,
117
178
  handlePotentialSnapshotErrors: handlePotentialSnapshotErrors,
118
- graphql: GraphQLTag.graphql,
179
+ graphql: graphql,
119
180
  isErrorResult: isErrorResult,
120
181
  isValueResult: isValueResult,
121
- isFragment: GraphQLTag.isFragment,
122
- isInlineDataFragment: GraphQLTag.isInlineDataFragment,
182
+ isFragment: isFragment,
183
+ isInlineDataFragment: isInlineDataFragment,
123
184
  isSuspenseSentinel: isSuspenseSentinel,
124
185
  suspenseSentinel: suspenseSentinel,
125
- isRequest: GraphQLTag.isRequest,
186
+ isRequest: isRequest,
126
187
  readInlineData: readInlineData,
127
- readFragment: ResolverFragments.readFragment,
128
- MutationTypes: RelayDeclarativeMutationConfig.MutationTypes,
129
- RangeOperations: RelayDeclarativeMutationConfig.RangeOperations,
188
+ readFragment: readFragment,
189
+ MutationTypes: MutationTypes,
190
+ RangeOperations: RangeOperations,
130
191
  DefaultHandlerProvider: RelayDefaultHandlerProvider,
131
192
  ConnectionHandler: ConnectionHandler,
132
193
  MutationHandlers: MutationHandlers,
133
- VIEWER_ID: ViewerPattern.VIEWER_ID,
134
- VIEWER_TYPE: ViewerPattern.VIEWER_TYPE,
194
+ VIEWER_ID: VIEWER_ID,
195
+ VIEWER_TYPE: VIEWER_TYPE,
135
196
  applyOptimisticMutation: applyOptimisticMutation,
136
197
  commitLocalUpdate: commitLocalUpdate,
137
198
  commitMutation: commitMutation,
@@ -146,15 +207,15 @@ module.exports = {
146
207
  RelayConcreteNode: RelayConcreteNode,
147
208
  RelayError: RelayError,
148
209
  RelayFeatureFlags: RelayFeatureFlags,
149
- DEFAULT_HANDLE_KEY: RelayDefaultHandleKey.DEFAULT_HANDLE_KEY,
150
- FRAGMENTS_KEY: RelayStoreUtils.FRAGMENTS_KEY,
151
- FRAGMENT_OWNER_KEY: RelayStoreUtils.FRAGMENT_OWNER_KEY,
152
- ID_KEY: RelayStoreUtils.ID_KEY,
153
- REF_KEY: RelayStoreUtils.REF_KEY,
154
- REFS_KEY: RelayStoreUtils.REFS_KEY,
155
- ROOT_ID: RelayStoreUtils.ROOT_ID,
156
- ROOT_TYPE: RelayStoreUtils.ROOT_TYPE,
157
- TYPENAME_KEY: RelayStoreUtils.TYPENAME_KEY,
210
+ DEFAULT_HANDLE_KEY: DEFAULT_HANDLE_KEY,
211
+ FRAGMENTS_KEY: FRAGMENTS_KEY,
212
+ FRAGMENT_OWNER_KEY: FRAGMENT_OWNER_KEY,
213
+ ID_KEY: ID_KEY,
214
+ REF_KEY: REF_KEY,
215
+ REFS_KEY: REFS_KEY,
216
+ ROOT_ID: ROOT_ID,
217
+ ROOT_TYPE: ROOT_TYPE,
218
+ TYPENAME_KEY: TYPENAME_KEY,
158
219
  deepFreeze: deepFreeze,
159
220
  generateClientID: generateClientID,
160
221
  generateUniqueClientID: generateUniqueClientID,
@@ -171,18 +232,5 @@ module.exports = {
171
232
  getPaginationVariables: getPaginationVariables,
172
233
  getPendingOperationsForFragment: getPendingOperationsForFragment,
173
234
  getValueAtPath: getValueAtPath,
174
- __internal: {
175
- ResolverFragments: ResolverFragments,
176
- OperationTracker: RelayOperationTracker,
177
- createRelayContext: createRelayContext,
178
- createRelayLoggingContext: createRelayLoggingContext,
179
- getOperationVariables: RelayConcreteVariables.getOperationVariables,
180
- getLocalVariables: RelayConcreteVariables.getLocalVariables,
181
- fetchQuery: fetchQueryInternal.fetchQuery,
182
- fetchQueryDeduped: fetchQueryInternal.fetchQueryDeduped,
183
- getPromiseForActiveRequest: fetchQueryInternal.getPromiseForActiveRequest,
184
- getObservableForActiveRequest: fetchQueryInternal.getObservableForActiveRequest,
185
- normalizeResponse: normalizeResponse,
186
- withProvidedVariables: withProvidedVariables
187
- }
235
+ __internal: __internal
188
236
  };
@@ -6,12 +6,12 @@ function assertInternalActorIdentifier(actorIdentifier) {
6
6
  !(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;
7
7
  }
8
8
  module.exports = {
9
+ INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE: INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE,
9
10
  assertInternalActorIdentifier: assertInternalActorIdentifier,
10
11
  getActorIdentifier: function getActorIdentifier(actorID) {
11
12
  return actorID;
12
13
  },
13
14
  getDefaultActorIdentifier: function getDefaultActorIdentifier() {
14
15
  throw new Error('Not Implemented');
15
- },
16
- INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE: INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE
16
+ }
17
17
  };
@@ -14,7 +14,7 @@ var RelayRecordSource = require('../store/RelayRecordSource');
14
14
  var ActorSpecificEnvironment = require('./ActorSpecificEnvironment');
15
15
  var MultiActorEnvironment = /*#__PURE__*/function () {
16
16
  function MultiActorEnvironment(config) {
17
- var _config$getDataID, _config$logFn, _config$relayFieldLog, _config$treatMissingF, _config$isServer, _config$missingFieldH, _config$defaultRender, _config$normalizeResp;
17
+ var _config$getDataID, _config$logFn, _config$relayFieldLog, _config$treatMissingF, _config$deferDeduplic, _config$isServer, _config$missingFieldH, _config$defaultRender, _config$normalizeResp;
18
18
  this._actorEnvironments = new Map();
19
19
  this._operationLoader = config.operationLoader;
20
20
  this._createNetworkForActor = config.createNetworkForActor;
@@ -26,6 +26,7 @@ var MultiActorEnvironment = /*#__PURE__*/function () {
26
26
  this._relayFieldLogger = (_config$relayFieldLog = config.relayFieldLogger) !== null && _config$relayFieldLog !== void 0 ? _config$relayFieldLog : defaultRelayFieldLogger;
27
27
  this._shouldProcessClientComponents = config.shouldProcessClientComponents;
28
28
  this._treatMissingFieldsAsNull = (_config$treatMissingF = config.treatMissingFieldsAsNull) !== null && _config$treatMissingF !== void 0 ? _config$treatMissingF : false;
29
+ this._deferDeduplicatedFields = (_config$deferDeduplic = config.deferDeduplicatedFields) !== null && _config$deferDeduplic !== void 0 ? _config$deferDeduplic : false;
29
30
  this._isServer = (_config$isServer = config.isServer) !== null && _config$isServer !== void 0 ? _config$isServer : false;
30
31
  this._missingFieldHandlers = (_config$missingFieldH = config.missingFieldHandlers) !== null && _config$missingFieldH !== void 0 ? _config$missingFieldH : [];
31
32
  this._createStoreForActor = config.createStoreForActor;
@@ -288,6 +289,7 @@ var MultiActorEnvironment = /*#__PURE__*/function () {
288
289
  return _this4.forActor(actorIdentifier).getStore();
289
290
  },
290
291
  treatMissingFieldsAsNull: _this4._treatMissingFieldsAsNull,
292
+ deferDeduplicatedFields: _this4._deferDeduplicatedFields,
291
293
  updater: updater,
292
294
  log: _this4._logFn,
293
295
  normalizeResponse: _this4._normalizeResponse
@@ -54,6 +54,14 @@ function commitMutation(environment, config) {
54
54
  updater: updater,
55
55
  uploadables: uploadables
56
56
  }).subscribe({
57
+ complete: function complete() {
58
+ var onCompleted = config.onCompleted;
59
+ if (onCompleted) {
60
+ var snapshot = environment.lookup(operation.fragment);
61
+ onCompleted(snapshot.data, errors.length !== 0 ? errors : null);
62
+ }
63
+ },
64
+ error: onError,
57
65
  next: function next(payload) {
58
66
  var _config$onNext;
59
67
  if (Array.isArray(payload)) {
@@ -69,14 +77,6 @@ function commitMutation(environment, config) {
69
77
  }
70
78
  (_config$onNext = config.onNext) === null || _config$onNext === void 0 ? void 0 : _config$onNext.call(config);
71
79
  },
72
- complete: function complete() {
73
- var onCompleted = config.onCompleted;
74
- if (onCompleted) {
75
- var snapshot = environment.lookup(operation.fragment);
76
- onCompleted(snapshot.data, errors.length !== 0 ? errors : null);
77
- }
78
- },
79
- error: onError,
80
80
  unsubscribe: onUnsubscribe
81
81
  });
82
82
  return {