@apollo/client 4.0.0-alpha.13 → 4.0.0-alpha.14

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 (594) hide show
  1. package/.changeset/curvy-flies-accept.md +5 -0
  2. package/.changeset/few-crabs-move.md +6 -0
  3. package/.changeset/funny-boats-wink.md +35 -0
  4. package/.changeset/gold-oranges-double.md +5 -0
  5. package/.changeset/little-parrots-bow.md +14 -0
  6. package/.changeset/olive-cougars-ring.md +9 -0
  7. package/.changeset/pre.json +13 -0
  8. package/.changeset/serious-items-develop.md +17 -0
  9. package/.changeset/sixty-bats-cry.md +6 -0
  10. package/.changeset/spotty-mugs-poke.md +5 -0
  11. package/.changeset/strong-rivers-fry.md +34 -0
  12. package/.changeset/stupid-pumpkins-travel.md +13 -0
  13. package/.changeset/thirty-pens-jump.md +5 -0
  14. package/.changeset/wicked-kiwis-buy.md +5 -0
  15. package/CHANGELOG.md +134 -0
  16. package/__cjs/cache/core/cache.cjs +9 -7
  17. package/__cjs/cache/core/cache.cjs.map +1 -1
  18. package/__cjs/cache/core/cache.d.cts +9 -7
  19. package/__cjs/cache/inmemory/entityStore.cjs +3 -3
  20. package/__cjs/cache/inmemory/inMemoryCache.cjs.map +1 -1
  21. package/__cjs/cache/inmemory/inMemoryCache.d.cts +9 -7
  22. package/__cjs/cache/inmemory/key-extractor.cjs +1 -1
  23. package/__cjs/cache/inmemory/policies.cjs +4 -4
  24. package/__cjs/cache/inmemory/policies.cjs.map +1 -1
  25. package/__cjs/cache/inmemory/readFromStore.cjs +2 -2
  26. package/__cjs/cache/inmemory/readFromStore.cjs.map +1 -1
  27. package/__cjs/cache/inmemory/writeToStore.cjs +4 -4
  28. package/__cjs/cache/inmemory/writeToStore.cjs.map +1 -1
  29. package/__cjs/core/ApolloClient.cjs +23 -45
  30. package/__cjs/core/ApolloClient.cjs.map +1 -1
  31. package/__cjs/core/ApolloClient.d.cts +9 -21
  32. package/__cjs/core/ObservableQuery.cjs +564 -346
  33. package/__cjs/core/ObservableQuery.cjs.map +1 -1
  34. package/__cjs/core/ObservableQuery.d.cts +95 -33
  35. package/__cjs/core/QueryInfo.cjs +109 -179
  36. package/__cjs/core/QueryInfo.cjs.map +1 -1
  37. package/__cjs/core/QueryInfo.d.cts +9 -14
  38. package/__cjs/core/QueryManager.cjs +168 -108
  39. package/__cjs/core/QueryManager.cjs.map +1 -1
  40. package/__cjs/core/QueryManager.d.cts +12 -8
  41. package/__cjs/core/index.cjs +2 -1
  42. package/__cjs/core/index.cjs.map +1 -1
  43. package/__cjs/core/index.d.cts +2 -3
  44. package/__cjs/core/types.d.cts +18 -6
  45. package/__cjs/errors/LinkError.cjs +5 -1
  46. package/__cjs/errors/LinkError.cjs.map +1 -1
  47. package/__cjs/errors/LinkError.d.cts +5 -1
  48. package/__cjs/errors/LocalStateError.cjs +27 -0
  49. package/__cjs/errors/LocalStateError.cjs.map +1 -0
  50. package/__cjs/errors/LocalStateError.d.cts +20 -0
  51. package/__cjs/errors/index.cjs +5 -1
  52. package/__cjs/errors/index.cjs.map +1 -1
  53. package/__cjs/errors/index.d.cts +2 -0
  54. package/__cjs/invariantErrorCodes.cjs +130 -57
  55. package/__cjs/link/core/ApolloLink.cjs +17 -11
  56. package/__cjs/link/core/ApolloLink.cjs.map +1 -1
  57. package/__cjs/link/core/ApolloLink.d.cts +15 -9
  58. package/__cjs/link/http/checkFetcher.cjs +1 -1
  59. package/__cjs/link/http/createHttpLink.cjs +1 -1
  60. package/__cjs/link/http/parseAndCheckHttpResponse.cjs +1 -1
  61. package/__cjs/link/http/serializeFetchParameter.cjs +1 -1
  62. package/__cjs/link/persisted-queries/index.cjs +2 -2
  63. package/__cjs/link/utils/transformOperation.cjs +1 -1
  64. package/__cjs/link/utils/transformOperation.cjs.map +1 -1
  65. package/__cjs/link/utils/validateOperation.cjs +1 -1
  66. package/__cjs/local-state/LocalState.cjs +535 -0
  67. package/__cjs/local-state/LocalState.cjs.map +1 -0
  68. package/__cjs/local-state/LocalState.d.cts +89 -0
  69. package/__cjs/local-state/index.cjs +6 -0
  70. package/__cjs/local-state/index.cjs.map +1 -0
  71. package/__cjs/local-state/index.d.cts +2 -0
  72. package/__cjs/masking/maskFragment.cjs +5 -1
  73. package/__cjs/masking/maskFragment.cjs.map +1 -1
  74. package/__cjs/masking/maskFragment.d.cts +5 -1
  75. package/__cjs/masking/maskOperation.cjs +5 -1
  76. package/__cjs/masking/maskOperation.cjs.map +1 -1
  77. package/__cjs/masking/maskOperation.d.cts +5 -1
  78. package/__cjs/masking/utils.cjs +5 -1
  79. package/__cjs/masking/utils.cjs.map +1 -1
  80. package/__cjs/masking/utils.d.cts +5 -1
  81. package/__cjs/react/hooks/internal/wrapHook.cjs +36 -34
  82. package/__cjs/react/hooks/internal/wrapHook.cjs.map +1 -1
  83. package/__cjs/react/hooks/internal/wrapHook.d.cts +42 -38
  84. package/__cjs/react/internal/cache/QueryReference.cjs +6 -9
  85. package/__cjs/react/internal/cache/QueryReference.cjs.map +1 -1
  86. package/__cjs/react/internal/cache/QueryReference.d.cts +25 -7
  87. package/__cjs/react/ssr/prerenderStatic.cjs +7 -0
  88. package/__cjs/react/ssr/prerenderStatic.cjs.map +1 -1
  89. package/__cjs/testing/core/mocking/mockLink.cjs +7 -3
  90. package/__cjs/testing/core/mocking/mockLink.cjs.map +1 -1
  91. package/__cjs/testing/core/mocking/mockLink.d.cts +10 -2
  92. package/__cjs/testing/internal/ObservableStream.cjs +13 -1
  93. package/__cjs/testing/internal/ObservableStream.cjs.map +1 -1
  94. package/__cjs/testing/internal/ObservableStream.d.cts +12 -1
  95. package/__cjs/testing/internal/disposables/withCleanup.cjs +5 -1
  96. package/__cjs/testing/internal/disposables/withCleanup.cjs.map +1 -1
  97. package/__cjs/testing/internal/disposables/withCleanup.d.cts +5 -1
  98. package/__cjs/testing/matchers/index.cjs +2 -2
  99. package/__cjs/testing/matchers/index.cjs.map +1 -1
  100. package/__cjs/testing/matchers/toEmitTypedValue.cjs +1 -1
  101. package/__cjs/testing/matchers/toEmitTypedValue.cjs.map +1 -1
  102. package/__cjs/testing/matchers/toEmitTypedValue.d.cts +6 -1
  103. package/__cjs/testing/matchers/toRerenderWithSimilarSnapshot.cjs +31 -18
  104. package/__cjs/testing/matchers/toRerenderWithSimilarSnapshot.cjs.map +1 -1
  105. package/__cjs/testing/matchers/toRerenderWithSimilarSnapshot.d.cts +13 -6
  106. package/__cjs/testing/matchers/toStrictEqualTyped.cjs +1 -1
  107. package/__cjs/testing/matchers/toStrictEqualTyped.cjs.map +1 -1
  108. package/__cjs/testing/matchers/toStrictEqualTyped.d.cts +4 -0
  109. package/__cjs/testing/matchers/utils/getSerializableProperties.cjs +14 -2
  110. package/__cjs/testing/matchers/utils/getSerializableProperties.cjs.map +1 -1
  111. package/__cjs/testing/react/MockedProvider.cjs +2 -2
  112. package/__cjs/testing/react/MockedProvider.cjs.map +1 -1
  113. package/__cjs/testing/react/MockedProvider.d.cts +2 -2
  114. package/__cjs/utilities/graphql/DocumentTransform.cjs +10 -6
  115. package/__cjs/utilities/graphql/DocumentTransform.cjs.map +1 -1
  116. package/__cjs/utilities/graphql/DocumentTransform.d.cts +10 -6
  117. package/__cjs/utilities/internal/DeepMerger.cjs +5 -1
  118. package/__cjs/utilities/internal/DeepMerger.cjs.map +1 -1
  119. package/__cjs/utilities/internal/DeepMerger.d.cts +5 -1
  120. package/__cjs/utilities/internal/argumentsObjectFromField.cjs +5 -1
  121. package/__cjs/utilities/internal/argumentsObjectFromField.cjs.map +1 -1
  122. package/__cjs/utilities/internal/argumentsObjectFromField.d.cts +5 -1
  123. package/__cjs/utilities/internal/caches.cjs +24 -20
  124. package/__cjs/utilities/internal/caches.cjs.map +1 -1
  125. package/__cjs/utilities/internal/caches.d.cts +32 -24
  126. package/__cjs/utilities/internal/canUseDOM.cjs +5 -1
  127. package/__cjs/utilities/internal/canUseDOM.cjs.map +1 -1
  128. package/__cjs/utilities/internal/canUseDOM.d.cts +5 -1
  129. package/__cjs/utilities/internal/checkDocument.cjs +6 -3
  130. package/__cjs/utilities/internal/checkDocument.cjs.map +1 -1
  131. package/__cjs/utilities/internal/checkDocument.d.cts +6 -3
  132. package/__cjs/utilities/internal/cloneDeep.cjs +6 -4
  133. package/__cjs/utilities/internal/cloneDeep.cjs.map +1 -1
  134. package/__cjs/utilities/internal/cloneDeep.d.cts +6 -4
  135. package/__cjs/utilities/internal/compact.cjs +7 -5
  136. package/__cjs/utilities/internal/compact.cjs.map +1 -1
  137. package/__cjs/utilities/internal/compact.d.cts +7 -5
  138. package/__cjs/utilities/internal/createFragmentMap.cjs +7 -4
  139. package/__cjs/utilities/internal/createFragmentMap.cjs.map +1 -1
  140. package/__cjs/utilities/internal/createFragmentMap.d.cts +7 -4
  141. package/__cjs/utilities/internal/createFulfilledPromise.cjs +5 -1
  142. package/__cjs/utilities/internal/createFulfilledPromise.cjs.map +1 -1
  143. package/__cjs/utilities/internal/createFulfilledPromise.d.cts +5 -1
  144. package/__cjs/utilities/internal/createRejectedPromise.cjs +5 -1
  145. package/__cjs/utilities/internal/createRejectedPromise.cjs.map +1 -1
  146. package/__cjs/utilities/internal/createRejectedPromise.d.cts +5 -1
  147. package/__cjs/utilities/internal/dealias.cjs +21 -0
  148. package/__cjs/utilities/internal/dealias.cjs.map +1 -0
  149. package/__cjs/utilities/internal/dealias.d.cts +5 -0
  150. package/__cjs/utilities/internal/decoratePromise.cjs +5 -1
  151. package/__cjs/utilities/internal/decoratePromise.cjs.map +1 -1
  152. package/__cjs/utilities/internal/decoratePromise.d.cts +5 -1
  153. package/__cjs/utilities/internal/deepFreeze.cjs +5 -1
  154. package/__cjs/utilities/internal/deepFreeze.cjs.map +1 -1
  155. package/__cjs/utilities/internal/deepFreeze.d.cts +5 -1
  156. package/__cjs/utilities/internal/filterMap.cjs +31 -0
  157. package/__cjs/utilities/internal/filterMap.cjs.map +1 -0
  158. package/__cjs/utilities/internal/filterMap.d.cts +4 -0
  159. package/__cjs/utilities/internal/getDefaultValues.cjs +5 -1
  160. package/__cjs/utilities/internal/getDefaultValues.cjs.map +1 -1
  161. package/__cjs/utilities/internal/getDefaultValues.d.cts +5 -1
  162. package/__cjs/utilities/internal/getFragmentDefinition.cjs +5 -1
  163. package/__cjs/utilities/internal/getFragmentDefinition.cjs.map +1 -1
  164. package/__cjs/utilities/internal/getFragmentDefinition.d.cts +5 -1
  165. package/__cjs/utilities/internal/getFragmentDefinitions.cjs +5 -1
  166. package/__cjs/utilities/internal/getFragmentDefinitions.cjs.map +1 -1
  167. package/__cjs/utilities/internal/getFragmentDefinitions.d.cts +5 -1
  168. package/__cjs/utilities/internal/getFragmentFromSelection.cjs +5 -1
  169. package/__cjs/utilities/internal/getFragmentFromSelection.cjs.map +1 -1
  170. package/__cjs/utilities/internal/getFragmentFromSelection.d.cts +5 -1
  171. package/__cjs/utilities/internal/getFragmentQueryDocument.cjs +25 -23
  172. package/__cjs/utilities/internal/getFragmentQueryDocument.cjs.map +1 -1
  173. package/__cjs/utilities/internal/getFragmentQueryDocument.d.cts +25 -23
  174. package/__cjs/utilities/internal/getGraphQLErrorsFromResult.cjs +5 -1
  175. package/__cjs/utilities/internal/getGraphQLErrorsFromResult.cjs.map +1 -1
  176. package/__cjs/utilities/internal/getGraphQLErrorsFromResult.d.cts +5 -1
  177. package/__cjs/utilities/internal/getMainDefinition.cjs +8 -6
  178. package/__cjs/utilities/internal/getMainDefinition.cjs.map +1 -1
  179. package/__cjs/utilities/internal/getMainDefinition.d.cts +8 -6
  180. package/__cjs/utilities/internal/getMemoryInternals.cjs +15 -9
  181. package/__cjs/utilities/internal/getMemoryInternals.cjs.map +1 -1
  182. package/__cjs/utilities/internal/getMemoryInternals.d.cts +15 -9
  183. package/__cjs/utilities/internal/getOperationDefinition.cjs +5 -1
  184. package/__cjs/utilities/internal/getOperationDefinition.cjs.map +1 -1
  185. package/__cjs/utilities/internal/getOperationDefinition.d.cts +5 -1
  186. package/__cjs/utilities/internal/getOperationName.cjs +7 -5
  187. package/__cjs/utilities/internal/getOperationName.cjs.map +1 -1
  188. package/__cjs/utilities/internal/getOperationName.d.cts +6 -2
  189. package/__cjs/utilities/internal/getQueryDefinition.cjs +5 -1
  190. package/__cjs/utilities/internal/getQueryDefinition.cjs.map +1 -1
  191. package/__cjs/utilities/internal/getQueryDefinition.d.cts +5 -1
  192. package/__cjs/utilities/internal/getStoreKeyName.cjs +5 -1
  193. package/__cjs/utilities/internal/getStoreKeyName.cjs.map +1 -1
  194. package/__cjs/utilities/internal/getStoreKeyName.d.cts +5 -1
  195. package/__cjs/utilities/internal/graphQLResultHasError.cjs +5 -1
  196. package/__cjs/utilities/internal/graphQLResultHasError.cjs.map +1 -1
  197. package/__cjs/utilities/internal/graphQLResultHasError.d.cts +5 -1
  198. package/__cjs/utilities/internal/hasDirectives.cjs +5 -1
  199. package/__cjs/utilities/internal/hasDirectives.cjs.map +1 -1
  200. package/__cjs/utilities/internal/hasDirectives.d.cts +5 -1
  201. package/__cjs/utilities/internal/hasForcedResolvers.cjs +23 -0
  202. package/__cjs/utilities/internal/hasForcedResolvers.cjs.map +1 -0
  203. package/__cjs/utilities/internal/hasForcedResolvers.d.cts +3 -0
  204. package/__cjs/utilities/internal/index.cjs +8 -4
  205. package/__cjs/utilities/internal/index.cjs.map +1 -1
  206. package/__cjs/utilities/internal/index.d.cts +3 -1
  207. package/__cjs/utilities/internal/isArray.cjs +6 -4
  208. package/__cjs/utilities/internal/isArray.cjs.map +1 -1
  209. package/__cjs/utilities/internal/isArray.d.cts +6 -4
  210. package/__cjs/utilities/internal/isDocumentNode.cjs +5 -1
  211. package/__cjs/utilities/internal/isDocumentNode.cjs.map +1 -1
  212. package/__cjs/utilities/internal/isDocumentNode.d.cts +5 -1
  213. package/__cjs/utilities/internal/isExecutionPatchIncrementalResult.cjs +5 -1
  214. package/__cjs/utilities/internal/isExecutionPatchIncrementalResult.cjs.map +1 -1
  215. package/__cjs/utilities/internal/isExecutionPatchIncrementalResult.d.cts +5 -1
  216. package/__cjs/utilities/internal/isExecutionPatchIninitialResult.cjs +5 -1
  217. package/__cjs/utilities/internal/isExecutionPatchIninitialResult.cjs.map +1 -1
  218. package/__cjs/utilities/internal/isExecutionPatchIninitialResult.d.cts +5 -1
  219. package/__cjs/utilities/internal/isExecutionPatchResult.cjs +5 -1
  220. package/__cjs/utilities/internal/isExecutionPatchResult.cjs.map +1 -1
  221. package/__cjs/utilities/internal/isExecutionPatchResult.d.cts +5 -1
  222. package/__cjs/utilities/internal/isField.cjs +5 -1
  223. package/__cjs/utilities/internal/isField.cjs.map +1 -1
  224. package/__cjs/utilities/internal/isField.d.cts +5 -1
  225. package/__cjs/utilities/internal/isNonEmptyArray.cjs +5 -1
  226. package/__cjs/utilities/internal/isNonEmptyArray.cjs.map +1 -1
  227. package/__cjs/utilities/internal/isNonEmptyArray.d.cts +5 -1
  228. package/__cjs/utilities/internal/isNonNullObject.cjs +5 -1
  229. package/__cjs/utilities/internal/isNonNullObject.cjs.map +1 -1
  230. package/__cjs/utilities/internal/isNonNullObject.d.cts +5 -1
  231. package/__cjs/utilities/internal/isPlainObject.cjs +5 -1
  232. package/__cjs/utilities/internal/isPlainObject.cjs.map +1 -1
  233. package/__cjs/utilities/internal/isPlainObject.d.cts +5 -1
  234. package/__cjs/utilities/internal/makeReference.cjs +5 -1
  235. package/__cjs/utilities/internal/makeReference.cjs.map +1 -1
  236. package/__cjs/utilities/internal/makeReference.d.cts +5 -1
  237. package/__cjs/utilities/internal/makeUniqueId.cjs +7 -5
  238. package/__cjs/utilities/internal/makeUniqueId.cjs.map +1 -1
  239. package/__cjs/utilities/internal/makeUniqueId.d.cts +7 -5
  240. package/__cjs/utilities/internal/maybeDeepFreeze.cjs +5 -1
  241. package/__cjs/utilities/internal/maybeDeepFreeze.cjs.map +1 -1
  242. package/__cjs/utilities/internal/maybeDeepFreeze.d.cts +5 -1
  243. package/__cjs/utilities/internal/mergeDeep.cjs +5 -1
  244. package/__cjs/utilities/internal/mergeDeep.cjs.map +1 -1
  245. package/__cjs/utilities/internal/mergeDeep.d.cts +5 -1
  246. package/__cjs/utilities/internal/mergeDeepArray.cjs +5 -1
  247. package/__cjs/utilities/internal/mergeDeepArray.cjs.map +1 -1
  248. package/__cjs/utilities/internal/mergeDeepArray.d.cts +5 -1
  249. package/__cjs/utilities/internal/mergeIncrementalData.cjs +5 -1
  250. package/__cjs/utilities/internal/mergeIncrementalData.cjs.map +1 -1
  251. package/__cjs/utilities/internal/mergeIncrementalData.d.cts +5 -1
  252. package/__cjs/utilities/internal/mergeOptions.cjs +5 -1
  253. package/__cjs/utilities/internal/mergeOptions.cjs.map +1 -1
  254. package/__cjs/utilities/internal/mergeOptions.d.cts +5 -1
  255. package/__cjs/utilities/internal/omitDeep.cjs +5 -1
  256. package/__cjs/utilities/internal/omitDeep.cjs.map +1 -1
  257. package/__cjs/utilities/internal/omitDeep.d.cts +5 -1
  258. package/__cjs/utilities/internal/onAnyEvent.cjs +5 -1
  259. package/__cjs/utilities/internal/onAnyEvent.cjs.map +1 -1
  260. package/__cjs/utilities/internal/onAnyEvent.d.cts +5 -1
  261. package/__cjs/utilities/internal/removeDirectivesFromDocument.cjs +5 -1
  262. package/__cjs/utilities/internal/removeDirectivesFromDocument.cjs.map +1 -1
  263. package/__cjs/utilities/internal/removeDirectivesFromDocument.d.cts +5 -1
  264. package/__cjs/utilities/internal/resultKeyNameFromField.cjs +5 -1
  265. package/__cjs/utilities/internal/resultKeyNameFromField.cjs.map +1 -1
  266. package/__cjs/utilities/internal/resultKeyNameFromField.d.cts +5 -1
  267. package/__cjs/utilities/internal/shouldInclude.cjs +5 -1
  268. package/__cjs/utilities/internal/shouldInclude.cjs.map +1 -1
  269. package/__cjs/utilities/internal/shouldInclude.d.cts +5 -1
  270. package/__cjs/utilities/internal/storeKeyNameFromField.cjs +5 -1
  271. package/__cjs/utilities/internal/storeKeyNameFromField.cjs.map +1 -1
  272. package/__cjs/utilities/internal/storeKeyNameFromField.d.cts +5 -1
  273. package/__cjs/utilities/internal/stringifyForDisplay.cjs +5 -1
  274. package/__cjs/utilities/internal/stringifyForDisplay.cjs.map +1 -1
  275. package/__cjs/utilities/internal/stringifyForDisplay.d.cts +5 -1
  276. package/__cjs/utilities/internal/toQueryResult.cjs +5 -1
  277. package/__cjs/utilities/internal/toQueryResult.cjs.map +1 -1
  278. package/__cjs/utilities/internal/toQueryResult.d.cts +5 -1
  279. package/__cjs/utilities/internal/types/DecoratedPromise.d.cts +5 -1
  280. package/__cjs/utilities/internal/types/DeepOmit.d.cts +5 -1
  281. package/__cjs/utilities/internal/types/DeepPartial.d.cts +5 -1
  282. package/__cjs/utilities/internal/types/FragmentMap.d.cts +6 -4
  283. package/__cjs/utilities/internal/types/FragmentMapFunction.d.cts +5 -1
  284. package/__cjs/utilities/internal/types/FulfilledPromise.d.cts +5 -1
  285. package/__cjs/utilities/internal/types/IsAny.d.cts +5 -1
  286. package/__cjs/utilities/internal/types/PendingPromise.d.cts +5 -1
  287. package/__cjs/utilities/internal/types/Prettify.d.cts +5 -1
  288. package/__cjs/utilities/internal/types/Primitive.d.cts +5 -1
  289. package/__cjs/utilities/internal/types/RejectedPromise.d.cts +5 -1
  290. package/__cjs/utilities/internal/types/RemoveIndexSignature.d.cts +5 -1
  291. package/__cjs/utilities/internal/types/VariablesOption.d.cts +5 -1
  292. package/__cjs/utilities/internal/valueToObjectRepresentation.cjs +5 -1
  293. package/__cjs/utilities/internal/valueToObjectRepresentation.cjs.map +1 -1
  294. package/__cjs/utilities/internal/valueToObjectRepresentation.d.cts +5 -1
  295. package/__cjs/version.cjs +1 -1
  296. package/cache/core/cache.d.ts +9 -7
  297. package/cache/core/cache.js +9 -7
  298. package/cache/core/cache.js.map +1 -1
  299. package/cache/inmemory/entityStore.js +3 -3
  300. package/cache/inmemory/inMemoryCache.d.ts +9 -7
  301. package/cache/inmemory/inMemoryCache.js.map +1 -1
  302. package/cache/inmemory/key-extractor.js +1 -1
  303. package/cache/inmemory/policies.js +4 -4
  304. package/cache/inmemory/policies.js.map +1 -1
  305. package/cache/inmemory/readFromStore.js +2 -2
  306. package/cache/inmemory/readFromStore.js.map +1 -1
  307. package/cache/inmemory/writeToStore.js +4 -4
  308. package/cache/inmemory/writeToStore.js.map +1 -1
  309. package/core/ApolloClient.d.ts +9 -21
  310. package/core/ApolloClient.js +23 -45
  311. package/core/ApolloClient.js.map +1 -1
  312. package/core/ObservableQuery.d.ts +95 -33
  313. package/core/ObservableQuery.js +569 -351
  314. package/core/ObservableQuery.js.map +1 -1
  315. package/core/QueryInfo.d.ts +9 -14
  316. package/core/QueryInfo.js +109 -179
  317. package/core/QueryInfo.js.map +1 -1
  318. package/core/QueryManager.d.ts +12 -8
  319. package/core/QueryManager.js +151 -110
  320. package/core/QueryManager.js.map +1 -1
  321. package/core/index.d.ts +2 -3
  322. package/core/index.js +1 -1
  323. package/core/index.js.map +1 -1
  324. package/core/types.d.ts +18 -6
  325. package/errors/LinkError.d.ts +5 -1
  326. package/errors/LinkError.js +5 -1
  327. package/errors/LinkError.js.map +1 -1
  328. package/errors/LocalStateError.d.ts +20 -0
  329. package/errors/LocalStateError.js +23 -0
  330. package/errors/LocalStateError.js.map +1 -0
  331. package/errors/index.d.ts +2 -0
  332. package/errors/index.js +2 -0
  333. package/errors/index.js.map +1 -1
  334. package/invariantErrorCodes.js +130 -57
  335. package/legacyEntryPoints/local-state/index.d.ts +1 -0
  336. package/legacyEntryPoints/local-state/index.js +1 -0
  337. package/legacyEntryPoints/local-state/local-state.cjs +1 -0
  338. package/legacyEntryPoints/local-state/local-state.d.cts +1 -0
  339. package/link/core/ApolloLink.d.ts +15 -9
  340. package/link/core/ApolloLink.js +17 -11
  341. package/link/core/ApolloLink.js.map +1 -1
  342. package/link/http/checkFetcher.js +1 -1
  343. package/link/http/createHttpLink.js +1 -1
  344. package/link/http/parseAndCheckHttpResponse.js +1 -1
  345. package/link/http/serializeFetchParameter.js +1 -1
  346. package/link/persisted-queries/index.js +2 -2
  347. package/link/utils/transformOperation.js +1 -1
  348. package/link/utils/transformOperation.js.map +1 -1
  349. package/link/utils/validateOperation.js +1 -1
  350. package/local-state/LocalState.d.ts +89 -0
  351. package/local-state/LocalState.js +527 -0
  352. package/local-state/LocalState.js.map +1 -0
  353. package/local-state/index.d.ts +2 -0
  354. package/local-state/index.js +2 -0
  355. package/local-state/index.js.map +1 -0
  356. package/masking/maskFragment.d.ts +5 -1
  357. package/masking/maskFragment.js +5 -1
  358. package/masking/maskFragment.js.map +1 -1
  359. package/masking/maskOperation.d.ts +5 -1
  360. package/masking/maskOperation.js +5 -1
  361. package/masking/maskOperation.js.map +1 -1
  362. package/masking/utils.d.ts +5 -1
  363. package/masking/utils.js +5 -1
  364. package/masking/utils.js.map +1 -1
  365. package/package.json +11 -1
  366. package/react/hooks/internal/wrapHook.d.ts +42 -38
  367. package/react/hooks/internal/wrapHook.js +36 -34
  368. package/react/hooks/internal/wrapHook.js.map +1 -1
  369. package/react/internal/cache/QueryReference.d.ts +25 -7
  370. package/react/internal/cache/QueryReference.js +6 -9
  371. package/react/internal/cache/QueryReference.js.map +1 -1
  372. package/react/ssr/prerenderStatic.js +7 -0
  373. package/react/ssr/prerenderStatic.js.map +1 -1
  374. package/testing/core/mocking/mockLink.d.ts +10 -2
  375. package/testing/core/mocking/mockLink.js +9 -5
  376. package/testing/core/mocking/mockLink.js.map +1 -1
  377. package/testing/internal/ObservableStream.d.ts +12 -1
  378. package/testing/internal/ObservableStream.js +13 -1
  379. package/testing/internal/ObservableStream.js.map +1 -1
  380. package/testing/internal/disposables/withCleanup.d.ts +5 -1
  381. package/testing/internal/disposables/withCleanup.js +5 -1
  382. package/testing/internal/disposables/withCleanup.js.map +1 -1
  383. package/testing/matchers/index.js +2 -2
  384. package/testing/matchers/index.js.map +1 -1
  385. package/testing/matchers/toEmitTypedValue.d.ts +6 -1
  386. package/testing/matchers/toEmitTypedValue.js +1 -1
  387. package/testing/matchers/toEmitTypedValue.js.map +1 -1
  388. package/testing/matchers/toRerenderWithSimilarSnapshot.d.ts +13 -6
  389. package/testing/matchers/toRerenderWithSimilarSnapshot.js +30 -15
  390. package/testing/matchers/toRerenderWithSimilarSnapshot.js.map +1 -1
  391. package/testing/matchers/toStrictEqualTyped.d.ts +4 -0
  392. package/testing/matchers/toStrictEqualTyped.js +1 -1
  393. package/testing/matchers/toStrictEqualTyped.js.map +1 -1
  394. package/testing/matchers/utils/getSerializableProperties.js +14 -2
  395. package/testing/matchers/utils/getSerializableProperties.js.map +1 -1
  396. package/testing/react/MockedProvider.d.ts +2 -2
  397. package/testing/react/MockedProvider.js +2 -2
  398. package/testing/react/MockedProvider.js.map +1 -1
  399. package/utilities/graphql/DocumentTransform.d.ts +10 -6
  400. package/utilities/graphql/DocumentTransform.js +10 -6
  401. package/utilities/graphql/DocumentTransform.js.map +1 -1
  402. package/utilities/internal/DeepMerger.d.ts +5 -1
  403. package/utilities/internal/DeepMerger.js +5 -1
  404. package/utilities/internal/DeepMerger.js.map +1 -1
  405. package/utilities/internal/argumentsObjectFromField.d.ts +5 -1
  406. package/utilities/internal/argumentsObjectFromField.js +5 -1
  407. package/utilities/internal/argumentsObjectFromField.js.map +1 -1
  408. package/utilities/internal/caches.d.ts +32 -24
  409. package/utilities/internal/caches.js +24 -20
  410. package/utilities/internal/caches.js.map +1 -1
  411. package/utilities/internal/canUseDOM.d.ts +5 -1
  412. package/utilities/internal/canUseDOM.js +5 -1
  413. package/utilities/internal/canUseDOM.js.map +1 -1
  414. package/utilities/internal/checkDocument.d.ts +6 -3
  415. package/utilities/internal/checkDocument.js +6 -3
  416. package/utilities/internal/checkDocument.js.map +1 -1
  417. package/utilities/internal/cloneDeep.d.ts +6 -4
  418. package/utilities/internal/cloneDeep.js +6 -4
  419. package/utilities/internal/cloneDeep.js.map +1 -1
  420. package/utilities/internal/compact.d.ts +7 -5
  421. package/utilities/internal/compact.js +7 -5
  422. package/utilities/internal/compact.js.map +1 -1
  423. package/utilities/internal/createFragmentMap.d.ts +7 -4
  424. package/utilities/internal/createFragmentMap.js +7 -4
  425. package/utilities/internal/createFragmentMap.js.map +1 -1
  426. package/utilities/internal/createFulfilledPromise.d.ts +5 -1
  427. package/utilities/internal/createFulfilledPromise.js +5 -1
  428. package/utilities/internal/createFulfilledPromise.js.map +1 -1
  429. package/utilities/internal/createRejectedPromise.d.ts +5 -1
  430. package/utilities/internal/createRejectedPromise.js +5 -1
  431. package/utilities/internal/createRejectedPromise.js.map +1 -1
  432. package/utilities/internal/dealias.d.ts +5 -0
  433. package/utilities/internal/dealias.js +18 -0
  434. package/utilities/internal/dealias.js.map +1 -0
  435. package/utilities/internal/decoratePromise.d.ts +5 -1
  436. package/utilities/internal/decoratePromise.js +5 -1
  437. package/utilities/internal/decoratePromise.js.map +1 -1
  438. package/utilities/internal/deepFreeze.d.ts +5 -1
  439. package/utilities/internal/deepFreeze.js +5 -1
  440. package/utilities/internal/deepFreeze.js.map +1 -1
  441. package/utilities/internal/filterMap.d.ts +4 -0
  442. package/utilities/internal/filterMap.js +28 -0
  443. package/utilities/internal/filterMap.js.map +1 -0
  444. package/utilities/internal/getDefaultValues.d.ts +5 -1
  445. package/utilities/internal/getDefaultValues.js +5 -1
  446. package/utilities/internal/getDefaultValues.js.map +1 -1
  447. package/utilities/internal/getFragmentDefinition.d.ts +5 -1
  448. package/utilities/internal/getFragmentDefinition.js +5 -1
  449. package/utilities/internal/getFragmentDefinition.js.map +1 -1
  450. package/utilities/internal/getFragmentDefinitions.d.ts +5 -1
  451. package/utilities/internal/getFragmentDefinitions.js +5 -1
  452. package/utilities/internal/getFragmentDefinitions.js.map +1 -1
  453. package/utilities/internal/getFragmentFromSelection.d.ts +5 -1
  454. package/utilities/internal/getFragmentFromSelection.js +5 -1
  455. package/utilities/internal/getFragmentFromSelection.js.map +1 -1
  456. package/utilities/internal/getFragmentQueryDocument.d.ts +25 -23
  457. package/utilities/internal/getFragmentQueryDocument.js +25 -23
  458. package/utilities/internal/getFragmentQueryDocument.js.map +1 -1
  459. package/utilities/internal/getGraphQLErrorsFromResult.d.ts +5 -1
  460. package/utilities/internal/getGraphQLErrorsFromResult.js +5 -1
  461. package/utilities/internal/getGraphQLErrorsFromResult.js.map +1 -1
  462. package/utilities/internal/getMainDefinition.d.ts +8 -6
  463. package/utilities/internal/getMainDefinition.js +8 -6
  464. package/utilities/internal/getMainDefinition.js.map +1 -1
  465. package/utilities/internal/getMemoryInternals.d.ts +15 -9
  466. package/utilities/internal/getMemoryInternals.js +15 -9
  467. package/utilities/internal/getMemoryInternals.js.map +1 -1
  468. package/utilities/internal/getOperationDefinition.d.ts +5 -1
  469. package/utilities/internal/getOperationDefinition.js +5 -1
  470. package/utilities/internal/getOperationDefinition.js.map +1 -1
  471. package/utilities/internal/getOperationName.d.ts +6 -2
  472. package/utilities/internal/getOperationName.js +7 -5
  473. package/utilities/internal/getOperationName.js.map +1 -1
  474. package/utilities/internal/getQueryDefinition.d.ts +5 -1
  475. package/utilities/internal/getQueryDefinition.js +5 -1
  476. package/utilities/internal/getQueryDefinition.js.map +1 -1
  477. package/utilities/internal/getStoreKeyName.d.ts +5 -1
  478. package/utilities/internal/getStoreKeyName.js +5 -1
  479. package/utilities/internal/getStoreKeyName.js.map +1 -1
  480. package/utilities/internal/globals/global.js +2 -2
  481. package/utilities/internal/globals/global.js.map +1 -1
  482. package/utilities/internal/graphQLResultHasError.d.ts +5 -1
  483. package/utilities/internal/graphQLResultHasError.js +5 -1
  484. package/utilities/internal/graphQLResultHasError.js.map +1 -1
  485. package/utilities/internal/hasDirectives.d.ts +5 -1
  486. package/utilities/internal/hasDirectives.js +5 -1
  487. package/utilities/internal/hasDirectives.js.map +1 -1
  488. package/utilities/internal/hasForcedResolvers.d.ts +3 -0
  489. package/utilities/internal/hasForcedResolvers.js +20 -0
  490. package/utilities/internal/hasForcedResolvers.js.map +1 -0
  491. package/utilities/internal/index.d.ts +3 -1
  492. package/utilities/internal/index.js +3 -1
  493. package/utilities/internal/index.js.map +1 -1
  494. package/utilities/internal/isArray.d.ts +6 -4
  495. package/utilities/internal/isArray.js +6 -4
  496. package/utilities/internal/isArray.js.map +1 -1
  497. package/utilities/internal/isDocumentNode.d.ts +5 -1
  498. package/utilities/internal/isDocumentNode.js +5 -1
  499. package/utilities/internal/isDocumentNode.js.map +1 -1
  500. package/utilities/internal/isExecutionPatchIncrementalResult.d.ts +5 -1
  501. package/utilities/internal/isExecutionPatchIncrementalResult.js +5 -1
  502. package/utilities/internal/isExecutionPatchIncrementalResult.js.map +1 -1
  503. package/utilities/internal/isExecutionPatchIninitialResult.d.ts +5 -1
  504. package/utilities/internal/isExecutionPatchIninitialResult.js +5 -1
  505. package/utilities/internal/isExecutionPatchIninitialResult.js.map +1 -1
  506. package/utilities/internal/isExecutionPatchResult.d.ts +5 -1
  507. package/utilities/internal/isExecutionPatchResult.js +5 -1
  508. package/utilities/internal/isExecutionPatchResult.js.map +1 -1
  509. package/utilities/internal/isField.d.ts +5 -1
  510. package/utilities/internal/isField.js +5 -1
  511. package/utilities/internal/isField.js.map +1 -1
  512. package/utilities/internal/isNonEmptyArray.d.ts +5 -1
  513. package/utilities/internal/isNonEmptyArray.js +5 -1
  514. package/utilities/internal/isNonEmptyArray.js.map +1 -1
  515. package/utilities/internal/isNonNullObject.d.ts +5 -1
  516. package/utilities/internal/isNonNullObject.js +5 -1
  517. package/utilities/internal/isNonNullObject.js.map +1 -1
  518. package/utilities/internal/isPlainObject.d.ts +5 -1
  519. package/utilities/internal/isPlainObject.js +5 -1
  520. package/utilities/internal/isPlainObject.js.map +1 -1
  521. package/utilities/internal/makeReference.d.ts +5 -1
  522. package/utilities/internal/makeReference.js +5 -1
  523. package/utilities/internal/makeReference.js.map +1 -1
  524. package/utilities/internal/makeUniqueId.d.ts +7 -5
  525. package/utilities/internal/makeUniqueId.js +7 -5
  526. package/utilities/internal/makeUniqueId.js.map +1 -1
  527. package/utilities/internal/maybeDeepFreeze.d.ts +5 -1
  528. package/utilities/internal/maybeDeepFreeze.js +5 -1
  529. package/utilities/internal/maybeDeepFreeze.js.map +1 -1
  530. package/utilities/internal/mergeDeep.d.ts +5 -1
  531. package/utilities/internal/mergeDeep.js +5 -1
  532. package/utilities/internal/mergeDeep.js.map +1 -1
  533. package/utilities/internal/mergeDeepArray.d.ts +5 -1
  534. package/utilities/internal/mergeDeepArray.js +5 -1
  535. package/utilities/internal/mergeDeepArray.js.map +1 -1
  536. package/utilities/internal/mergeIncrementalData.d.ts +5 -1
  537. package/utilities/internal/mergeIncrementalData.js +5 -1
  538. package/utilities/internal/mergeIncrementalData.js.map +1 -1
  539. package/utilities/internal/mergeOptions.d.ts +5 -1
  540. package/utilities/internal/mergeOptions.js +5 -1
  541. package/utilities/internal/mergeOptions.js.map +1 -1
  542. package/utilities/internal/omitDeep.d.ts +5 -1
  543. package/utilities/internal/omitDeep.js +5 -1
  544. package/utilities/internal/omitDeep.js.map +1 -1
  545. package/utilities/internal/onAnyEvent.d.ts +5 -1
  546. package/utilities/internal/onAnyEvent.js +5 -1
  547. package/utilities/internal/onAnyEvent.js.map +1 -1
  548. package/utilities/internal/removeDirectivesFromDocument.d.ts +5 -1
  549. package/utilities/internal/removeDirectivesFromDocument.js +5 -1
  550. package/utilities/internal/removeDirectivesFromDocument.js.map +1 -1
  551. package/utilities/internal/resultKeyNameFromField.d.ts +5 -1
  552. package/utilities/internal/resultKeyNameFromField.js +5 -1
  553. package/utilities/internal/resultKeyNameFromField.js.map +1 -1
  554. package/utilities/internal/shouldInclude.d.ts +5 -1
  555. package/utilities/internal/shouldInclude.js +5 -1
  556. package/utilities/internal/shouldInclude.js.map +1 -1
  557. package/utilities/internal/storeKeyNameFromField.d.ts +5 -1
  558. package/utilities/internal/storeKeyNameFromField.js +5 -1
  559. package/utilities/internal/storeKeyNameFromField.js.map +1 -1
  560. package/utilities/internal/stringifyForDisplay.d.ts +5 -1
  561. package/utilities/internal/stringifyForDisplay.js +5 -1
  562. package/utilities/internal/stringifyForDisplay.js.map +1 -1
  563. package/utilities/internal/toQueryResult.d.ts +5 -1
  564. package/utilities/internal/toQueryResult.js +5 -1
  565. package/utilities/internal/toQueryResult.js.map +1 -1
  566. package/utilities/internal/types/DecoratedPromise.d.ts +5 -1
  567. package/utilities/internal/types/DeepOmit.d.ts +5 -1
  568. package/utilities/internal/types/DeepPartial.d.ts +5 -1
  569. package/utilities/internal/types/FragmentMap.d.ts +6 -4
  570. package/utilities/internal/types/FragmentMapFunction.d.ts +5 -1
  571. package/utilities/internal/types/FulfilledPromise.d.ts +5 -1
  572. package/utilities/internal/types/IsAny.d.ts +5 -1
  573. package/utilities/internal/types/PendingPromise.d.ts +5 -1
  574. package/utilities/internal/types/Prettify.d.ts +5 -1
  575. package/utilities/internal/types/Primitive.d.ts +5 -1
  576. package/utilities/internal/types/RejectedPromise.d.ts +5 -1
  577. package/utilities/internal/types/RemoveIndexSignature.d.ts +5 -1
  578. package/utilities/internal/types/VariablesOption.d.ts +5 -1
  579. package/utilities/internal/valueToObjectRepresentation.d.ts +5 -1
  580. package/utilities/internal/valueToObjectRepresentation.js +5 -1
  581. package/utilities/internal/valueToObjectRepresentation.js.map +1 -1
  582. package/version.js +1 -1
  583. package/__cjs/core/LocalState.cjs +0 -355
  584. package/__cjs/core/LocalState.cjs.map +0 -1
  585. package/__cjs/core/LocalState.d.cts +0 -53
  586. package/__cjs/utilities/internal/removeClientSetsFromDocument.cjs +0 -21
  587. package/__cjs/utilities/internal/removeClientSetsFromDocument.cjs.map +0 -1
  588. package/__cjs/utilities/internal/removeClientSetsFromDocument.d.cts +0 -8
  589. package/core/LocalState.d.ts +0 -53
  590. package/core/LocalState.js +0 -351
  591. package/core/LocalState.js.map +0 -1
  592. package/utilities/internal/removeClientSetsFromDocument.d.ts +0 -8
  593. package/utilities/internal/removeClientSetsFromDocument.js +0 -18
  594. package/utilities/internal/removeClientSetsFromDocument.js.map +0 -1
@@ -10,7 +10,7 @@ export function transformOperation(operation) {
10
10
  if (!transformedOperation.operationName) {
11
11
  transformedOperation.operationName =
12
12
  typeof transformedOperation.query !== "string" ?
13
- getOperationName(transformedOperation.query) || undefined
13
+ getOperationName(transformedOperation.query)
14
14
  : "";
15
15
  }
16
16
  return transformedOperation;
@@ -1 +1 @@
1
- {"version":3,"file":"transformOperation.js","sources":["../../../src/link/utils/transformOperation.ts"],"sourcesContent":["import type { GraphQLRequest, Operation } from \"@apollo/client/link\";\nimport { getOperationName } from \"@apollo/client/utilities/internal\";\n\nexport function transformOperation(operation: GraphQLRequest): GraphQLRequest {\n const transformedOperation: GraphQLRequest = {\n variables: operation.variables || {},\n extensions: operation.extensions || {},\n operationName: operation.operationName,\n query: operation.query,\n };\n\n // Best guess at an operation name\n if (!transformedOperation.operationName) {\n transformedOperation.operationName =\n typeof transformedOperation.query !== \"string\" ?\n getOperationName(transformedOperation.query) || undefined\n : \"\";\n }\n\n return transformedOperation as Operation;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transformOperation.js","sources":["../../../src/link/utils/transformOperation.ts"],"sourcesContent":["import type { GraphQLRequest, Operation } from \"@apollo/client/link\";\nimport { getOperationName } from \"@apollo/client/utilities/internal\";\n\nexport function transformOperation(operation: GraphQLRequest): GraphQLRequest {\n const transformedOperation: GraphQLRequest = {\n variables: operation.variables || {},\n extensions: operation.extensions || {},\n operationName: operation.operationName,\n query: operation.query,\n };\n\n // Best guess at an operation name\n if (!transformedOperation.operationName) {\n transformedOperation.operationName =\n typeof transformedOperation.query !== \"string\" ?\n getOperationName(transformedOperation.query)\n : \"\";\n }\n\n return transformedOperation as Operation;\n}\n"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export function validateOperation(operation) {
9
9
  ];
10
10
  for (let key of Object.keys(operation)) {
11
11
  if (OPERATION_FIELDS.indexOf(key) < 0) {
12
- throw newInvariantError(48, key);
12
+ throw newInvariantError(58, key);
13
13
  }
14
14
  }
15
15
  return operation;
@@ -0,0 +1,89 @@
1
+ import type { DocumentNode, FieldNode } from "graphql";
2
+ import type { ApolloClient, DefaultContext, OperationVariables, TypedDocumentNode } from "@apollo/client";
3
+ import type { FetchResult } from "@apollo/client/link";
4
+ import type { FragmentMap, NoInfer, RemoveIndexSignature } from "@apollo/client/utilities/internal";
5
+ type InferContextValueFromResolvers<TResolvers> = TResolvers extends {
6
+ [typename: string]: infer TFieldResolvers;
7
+ } ? TFieldResolvers extends ({
8
+ [field: string]: LocalState.Resolver<any, any, infer TContext, any>;
9
+ }) ? unknown extends TContext ? DefaultContext : TContext : DefaultContext : DefaultContext;
10
+ type MaybeRequireContextFunction<TContext> = {} extends RemoveIndexSignature<TContext> ? {} : {
11
+ context: LocalState.ContextFunction<TContext>;
12
+ };
13
+ export declare namespace LocalState {
14
+ type Options<TResolvers extends Resolvers = Resolvers, TContext = DefaultContext> = {
15
+ context?: ContextFunction<TContext>;
16
+ /**
17
+ * The map of resolvers used to provide values for `@local` fields.
18
+ */
19
+ resolvers?: TResolvers;
20
+ } & MaybeRequireContextFunction<TContext>;
21
+ interface RootValueFunctionContext {
22
+ document: DocumentNode;
23
+ client: ApolloClient;
24
+ context: DefaultContext;
25
+ phase: "exports" | "resolve";
26
+ variables: OperationVariables;
27
+ }
28
+ type ContextFunction<TContext> = (options: ContextFunctionOptions) => TContext;
29
+ interface ContextFunctionOptions {
30
+ document: DocumentNode;
31
+ client: ApolloClient;
32
+ phase: "exports" | "resolve";
33
+ variables: OperationVariables;
34
+ requestContext: DefaultContext;
35
+ }
36
+ type RootValueFunction<TRootValue> = (context: RootValueFunctionContext) => TRootValue;
37
+ interface Resolvers<TContext = any> {
38
+ [typename: string]: {
39
+ [field: string]: Resolver<any, any, TContext, any>;
40
+ };
41
+ }
42
+ type Resolver<TResult = unknown, TParent = unknown, TContext = DefaultContext, TArgs = Record<string, unknown>> = (rootValue: TParent, args: TArgs, context: {
43
+ requestContext: TContext;
44
+ client: ApolloClient;
45
+ phase: "exports" | "resolve";
46
+ }, info: {
47
+ field: FieldNode;
48
+ fragmentMap: FragmentMap;
49
+ path: Path;
50
+ }) => TResult | Promise<TResult>;
51
+ type Path = Array<string | number>;
52
+ }
53
+ export declare class LocalState<TResolvers extends LocalState.Resolvers = LocalState.Resolvers<DefaultContext>, TContext = InferContextValueFromResolvers<TResolvers>> {
54
+ private context?;
55
+ private resolvers;
56
+ private traverseCache;
57
+ constructor(...[options]: {} extends TResolvers ? [
58
+ options?: LocalState.Options<TResolvers, NoInfer<TContext>>
59
+ ] : [
60
+ options: LocalState.Options<TResolvers, NoInfer<TContext>> & {
61
+ resolvers: TResolvers;
62
+ }
63
+ ]);
64
+ addResolvers(resolvers: TResolvers): void;
65
+ execute<TData = unknown, TVariables extends OperationVariables = OperationVariables>({ document, client, context, remoteResult, variables, onlyRunForcedResolvers, returnPartialData, }: {
66
+ document: DocumentNode | TypedDocumentNode<TData, TVariables>;
67
+ client: ApolloClient;
68
+ context: DefaultContext | undefined;
69
+ remoteResult: FetchResult<any> | undefined;
70
+ variables: TVariables | undefined;
71
+ onlyRunForcedResolvers?: boolean;
72
+ returnPartialData?: boolean;
73
+ }): Promise<FetchResult<TData>>;
74
+ getExportedVariables<TVariables extends OperationVariables = OperationVariables>({ document, client, context, variables, }: {
75
+ document: DocumentNode | TypedDocumentNode<any, TVariables>;
76
+ client: ApolloClient;
77
+ context: DefaultContext | undefined;
78
+ variables: Partial<NoInfer<TVariables>>;
79
+ }): Promise<TVariables>;
80
+ private resolveSelectionSet;
81
+ private resolveServerField;
82
+ private resolveClientField;
83
+ private addError;
84
+ private getResolver;
85
+ private resolveSubSelectedArray;
86
+ private collectQueryDetail;
87
+ }
88
+ export {};
89
+ //# sourceMappingURL=LocalState.d.ts.map
@@ -0,0 +1,527 @@
1
+ import { isSelectionNode, Kind, visit } from "graphql";
2
+ import { cacheSlot } from "@apollo/client/cache";
3
+ import { LocalStateError, toErrorLike } from "@apollo/client/errors";
4
+ import { stripTypename } from "@apollo/client/utilities";
5
+ import { __DEV__ } from "@apollo/client/utilities/environment";
6
+ import { argumentsObjectFromField, createFragmentMap, dealias, getFragmentDefinitions, getMainDefinition, hasDirectives, mergeDeep, mergeDeepArray, resultKeyNameFromField, shouldInclude, } from "@apollo/client/utilities/internal";
7
+ import { invariant, newInvariantError, } from "@apollo/client/utilities/invariant";
8
+ export class LocalState {
9
+ context;
10
+ resolvers = {};
11
+ traverseCache = new WeakMap();
12
+ constructor(...[options]) {
13
+ this.context = options?.context;
14
+ if (options?.resolvers) {
15
+ this.addResolvers(options.resolvers);
16
+ }
17
+ }
18
+ addResolvers(resolvers) {
19
+ this.resolvers = mergeDeep(this.resolvers, resolvers);
20
+ }
21
+ async execute({ document, client, context, remoteResult, variables = {}, onlyRunForcedResolvers = false, returnPartialData = false, }) {
22
+ if (__DEV__) {
23
+ invariant(hasDirectives(["client"], document), 48);
24
+ validateCacheImplementation(client.cache);
25
+ }
26
+ // note: if `remoteResult` is `undefined`, we will execute resolvers since
27
+ // undefined remote data reflects a client-only query. We specifically want
28
+ // to avoid trying to run local resolvers if the server returned `data` as
29
+ // `null`.
30
+ if (remoteResult?.data === null) {
31
+ return remoteResult;
32
+ }
33
+ const { selectionsToResolve, exportedVariableDefs, operationDefinition, fragmentMap, } = this.collectQueryDetail(document);
34
+ const rootValue = remoteResult ? remoteResult.data : {};
35
+ const diff = client.cache.diff({
36
+ query: toQueryOperation(document),
37
+ variables,
38
+ returnPartialData: true,
39
+ optimistic: false,
40
+ });
41
+ const requestContext = { ...client.defaultContext, ...context };
42
+ const execContext = {
43
+ client,
44
+ operationDefinition,
45
+ fragmentMap,
46
+ context: this.context?.({
47
+ requestContext,
48
+ document,
49
+ client,
50
+ phase: "resolve",
51
+ variables: variables ?? {},
52
+ }) ?? requestContext,
53
+ variables,
54
+ exportedVariables: {},
55
+ selectionsToResolve,
56
+ onlyRunForcedResolvers,
57
+ errors: [],
58
+ phase: "resolve",
59
+ exportedVariableDefs,
60
+ diff,
61
+ returnPartialData,
62
+ };
63
+ const localResult = await this.resolveSelectionSet(operationDefinition.selectionSet, false, rootValue, execContext, []);
64
+ const errors = (remoteResult?.errors ?? []).concat(execContext.errors);
65
+ const result = {
66
+ ...remoteResult,
67
+ data: mergeDeep(rootValue, localResult),
68
+ };
69
+ if (errors.length > 0) {
70
+ result.errors = errors;
71
+ }
72
+ return result;
73
+ }
74
+ async getExportedVariables({ document, client, context, variables, }) {
75
+ if (__DEV__) {
76
+ invariant(hasDirectives(["client"], document), 49);
77
+ validateCacheImplementation(client.cache);
78
+ }
79
+ const { exportsToResolve, exportedVariableDefs, fragmentMap, operationDefinition, } = this.collectQueryDetail(document);
80
+ const diff = client.cache.diff({
81
+ query: toQueryOperation(document),
82
+ variables,
83
+ returnPartialData: true,
84
+ optimistic: false,
85
+ });
86
+ const requestContext = { ...client.defaultContext, ...context };
87
+ const execContext = {
88
+ client,
89
+ operationDefinition,
90
+ fragmentMap,
91
+ context: this.context?.({
92
+ requestContext,
93
+ document,
94
+ client,
95
+ phase: "resolve",
96
+ variables: variables ?? {},
97
+ }) ?? requestContext,
98
+ variables,
99
+ exportedVariables: {},
100
+ selectionsToResolve: exportsToResolve,
101
+ onlyRunForcedResolvers: false,
102
+ errors: [],
103
+ phase: "exports",
104
+ exportedVariableDefs,
105
+ diff,
106
+ returnPartialData: false,
107
+ };
108
+ await this.resolveSelectionSet(operationDefinition.selectionSet, false, diff.result, execContext, []);
109
+ return stripTypename({
110
+ ...variables,
111
+ ...execContext.exportedVariables,
112
+ });
113
+ }
114
+ async resolveSelectionSet(selectionSet, isClientFieldDescendant, rootValue, execContext, path) {
115
+ const { client, fragmentMap, variables, operationDefinition } = execContext;
116
+ const { cache } = client;
117
+ const resultsToMerge = [];
118
+ const execute = async (selection) => {
119
+ if (!isClientFieldDescendant &&
120
+ !execContext.selectionsToResolve.has(selection)) {
121
+ // Skip selections without @client directives
122
+ // (still processing if one of the ancestors or one of the child fields has @client directive)
123
+ return;
124
+ }
125
+ if (!shouldInclude(selection, variables)) {
126
+ // Skip this entirely.
127
+ return;
128
+ }
129
+ if (selection.kind === Kind.FIELD) {
130
+ const isRootField = selectionSet === operationDefinition.selectionSet;
131
+ const isClientField = isClientFieldDescendant ||
132
+ (selection.directives?.some((d) => d.name.value === "client") ??
133
+ false);
134
+ if (isClientField && hasAliasedTypename(selectionSet)) {
135
+ throw new LocalStateError(`'__typename' is a forbidden field alias name in the selection set for field '${path.at(-1)}' when using local resolvers.`, { path });
136
+ }
137
+ const fieldResult = isClientField ?
138
+ await this.resolveClientField(selection, isClientFieldDescendant, rootValue, execContext, selectionSet, path.concat(selection.name.value))
139
+ : await this.resolveServerField(selection, rootValue, execContext, path.concat(selection.name.value));
140
+ // Don't attempt to merge the client field result if the server result
141
+ // was null
142
+ if (fieldResult !== undefined && (!isRootField || rootValue !== null)) {
143
+ resultsToMerge.push({
144
+ [resultKeyNameFromField(selection)]: fieldResult,
145
+ });
146
+ }
147
+ return;
148
+ }
149
+ if (selection.kind === Kind.INLINE_FRAGMENT &&
150
+ selection.typeCondition &&
151
+ rootValue?.__typename &&
152
+ cache.fragmentMatches(selection, rootValue.__typename)) {
153
+ const fragmentResult = await this.resolveSelectionSet(selection.selectionSet, isClientFieldDescendant, rootValue, execContext, path);
154
+ if (fragmentResult) {
155
+ resultsToMerge.push(fragmentResult);
156
+ }
157
+ return;
158
+ }
159
+ if (selection.kind === Kind.FRAGMENT_SPREAD) {
160
+ const fragment = fragmentMap[selection.name.value];
161
+ invariant(fragment, 50, selection.name.value);
162
+ const typename = rootValue?.__typename;
163
+ const typeCondition = fragment.typeCondition.name.value;
164
+ const matches = typename === typeCondition ||
165
+ cache.fragmentMatches(fragment, typename ?? "");
166
+ if (matches) {
167
+ const fragmentResult = await this.resolveSelectionSet(fragment.selectionSet, isClientFieldDescendant, rootValue, execContext, path);
168
+ if (fragmentResult) {
169
+ resultsToMerge.push(fragmentResult);
170
+ }
171
+ }
172
+ return;
173
+ }
174
+ };
175
+ await Promise.all(selectionSet.selections.map(execute));
176
+ return resultsToMerge.length > 0 ?
177
+ mergeDeepArray(resultsToMerge)
178
+ : rootValue;
179
+ }
180
+ resolveServerField(field, rootValue, execContext, path) {
181
+ const result = rootValue?.[field.name.value];
182
+ if (!field.selectionSet) {
183
+ return result;
184
+ }
185
+ if (result == null) {
186
+ if (execContext.phase === "exports") {
187
+ for (const [name, def] of Object.entries(execContext.exportedVariableDefs)) {
188
+ if (def.ancestors.has(field) && def.required) {
189
+ throw new LocalStateError(`${"Field"} '${field.name.value}' is \`${result}\` which contains exported required variable '${name}'. Ensure this value is in the cache or make the variable optional.`, { path });
190
+ }
191
+ }
192
+ }
193
+ return result;
194
+ }
195
+ if (Array.isArray(result)) {
196
+ return this.resolveSubSelectedArray(field, false, result, execContext, path);
197
+ }
198
+ return this.resolveSelectionSet(field.selectionSet, false, result, execContext, path);
199
+ }
200
+ async resolveClientField(field, isClientFieldDescendant, rootValue, execContext, parentSelectionSet, path) {
201
+ const { client, diff, variables, operationDefinition, phase, returnPartialData, onlyRunForcedResolvers, } = execContext;
202
+ const isRootField = parentSelectionSet === operationDefinition.selectionSet;
203
+ const fieldName = field.name.value;
204
+ const typename = isRootField ?
205
+ rootValue?.__typename || inferRootTypename(operationDefinition)
206
+ : rootValue?.__typename;
207
+ const resolverName = `${typename}.${fieldName}`;
208
+ function readField() {
209
+ const fieldResult = rootValue?.[fieldName];
210
+ if (fieldResult !== undefined) {
211
+ return fieldResult;
212
+ }
213
+ return getCacheResultAtPath(diff, path);
214
+ }
215
+ const defaultResolver = isClientFieldDescendant ? readField
216
+ // We expect a resolver to be defined for all `@client` root fields.
217
+ // Warn when a resolver is not defined.
218
+ : (() => {
219
+ const fieldFromCache = getCacheResultAtPath(diff, path);
220
+ if (fieldFromCache !== undefined) {
221
+ return fieldFromCache;
222
+ }
223
+ if (!returnPartialData) {
224
+ if (__DEV__) {
225
+ __DEV__ && invariant.warn(51, resolverName);
226
+ }
227
+ return null;
228
+ }
229
+ });
230
+ const resolver = this.getResolver(typename, fieldName);
231
+ let result;
232
+ try {
233
+ // Avoid running the resolver if we are only trying to run forced
234
+ // resolvers. Fallback to read the value from the root field or the cache
235
+ // value
236
+ if (!onlyRunForcedResolvers || isForcedResolver(field)) {
237
+ result =
238
+ resolver ?
239
+ await Promise.resolve(
240
+ // In case the resolve function accesses reactive variables,
241
+ // set cacheSlot to the current cache instance.
242
+ cacheSlot.withValue(client.cache, resolver, [
243
+ rootValue ? dealias(rootValue, parentSelectionSet) : {},
244
+ (argumentsObjectFromField(field, variables) ?? {}),
245
+ { requestContext: execContext.context, client, phase },
246
+ { field, fragmentMap: execContext.fragmentMap, path },
247
+ ]))
248
+ : defaultResolver();
249
+ }
250
+ else {
251
+ result = readField();
252
+ }
253
+ }
254
+ catch (e) {
255
+ if (phase === "exports") {
256
+ for (const [name, def] of Object.entries(execContext.exportedVariableDefs)) {
257
+ if (def.ancestors.has(field)) {
258
+ throw new LocalStateError(`An error was thrown from resolver '${resolverName}' while resolving ${def.required ? "required" : "optional"} variable '${name}'. Use a try/catch and return \`undefined\` to suppress this error and omit the variable from the request.`, { path, sourceError: e });
259
+ }
260
+ }
261
+ }
262
+ this.addError(toErrorLike(e), path, execContext, {
263
+ resolver: resolverName,
264
+ cause: e,
265
+ });
266
+ return null;
267
+ }
268
+ if (phase === "exports") {
269
+ field.directives?.forEach((directive) => {
270
+ if (directive.name.value !== "export") {
271
+ return;
272
+ }
273
+ const name = getExportedVariableName(directive);
274
+ if (!name) {
275
+ return;
276
+ }
277
+ if (result !== undefined) {
278
+ execContext.exportedVariables[name] = result;
279
+ }
280
+ });
281
+ if (result == null) {
282
+ for (const [name, def] of Object.entries(execContext.exportedVariableDefs)) {
283
+ if (def.ancestors.has(field) && def.required) {
284
+ throw new LocalStateError(`${resolver ? "Resolver" : "Field"} '${resolverName}' returned \`${result}\` ${def.field === field ? "for" : "which contains exported"} required variable '${name}'.`, { path });
285
+ }
286
+ }
287
+ }
288
+ }
289
+ if (result === undefined && !returnPartialData) {
290
+ if (__DEV__ && phase === "resolve") {
291
+ if (resolver && !onlyRunForcedResolvers) {
292
+ __DEV__ && invariant.warn(52, resolverName);
293
+ }
294
+ else if (onlyRunForcedResolvers) {
295
+ __DEV__ && invariant.warn(53, resolverName);
296
+ }
297
+ else {
298
+ __DEV__ && invariant.warn(54, fieldName, rootValue);
299
+ }
300
+ }
301
+ result = null;
302
+ }
303
+ if (result == null || !field.selectionSet) {
304
+ return result;
305
+ }
306
+ if (Array.isArray(result)) {
307
+ return this.resolveSubSelectedArray(field, true, result, execContext, path);
308
+ }
309
+ if (phase === "resolve" && !result.__typename) {
310
+ this.addError(newInvariantError(55, result, resolverName), path, execContext, { resolver: resolverName });
311
+ return null;
312
+ }
313
+ return this.resolveSelectionSet(field.selectionSet, true, result, execContext, path);
314
+ }
315
+ addError(error, path, execContext, meta) {
316
+ execContext.errors.push(addExtension(isGraphQLError(error) ?
317
+ { ...error.toJSON(), path }
318
+ : { message: error.message, path }, meta));
319
+ }
320
+ getResolver(typename, fieldName) {
321
+ return this.resolvers[typename]?.[fieldName];
322
+ }
323
+ resolveSubSelectedArray(field, isClientFieldDescendant, result, execContext, path) {
324
+ return Promise.all(result.map((item, idx) => {
325
+ if (item === null) {
326
+ return null;
327
+ }
328
+ // This is a nested array, recurse.
329
+ if (Array.isArray(item)) {
330
+ return this.resolveSubSelectedArray(field, isClientFieldDescendant, item, execContext, path.concat(idx));
331
+ }
332
+ // This is an object, run the selection set on it.
333
+ if (field.selectionSet) {
334
+ return this.resolveSelectionSet(field.selectionSet, isClientFieldDescendant, item, execContext, path.concat(idx));
335
+ }
336
+ }));
337
+ }
338
+ // Collect selection nodes on paths from document root down to all @client directives.
339
+ // This function takes into account transitive fragment spreads.
340
+ // Complexity equals to a single `visit` over the full document.
341
+ collectQueryDetail(document) {
342
+ const operationDefinition = getMainDefinition(document);
343
+ const fragments = getFragmentDefinitions(document);
344
+ const fragmentMap = createFragmentMap(fragments);
345
+ const isSingleASTNode = (node) => !Array.isArray(node);
346
+ const fields = [];
347
+ let rootClientField;
348
+ function getCurrentPath() {
349
+ return fields.map((field) => field.name.value);
350
+ }
351
+ const traverse = (definitionNode) => {
352
+ if (this.traverseCache.has(definitionNode)) {
353
+ return this.traverseCache.get(definitionNode);
354
+ }
355
+ // Track a separate list of all variable definitions since not all variable
356
+ // definitions are used as exports of an `@export` field.
357
+ const allVariableDefinitions = {};
358
+ const cache = {
359
+ exportedVariableDefs: {},
360
+ exportsToResolve: new Set(),
361
+ selectionsToResolve: new Set(),
362
+ };
363
+ this.traverseCache.set(definitionNode, cache);
364
+ visit(definitionNode, {
365
+ VariableDefinition: (definition) => {
366
+ allVariableDefinitions[definition.variable.name.value] = {
367
+ required: definition.type.kind === Kind.NON_NULL_TYPE,
368
+ ancestors: new WeakSet(),
369
+ };
370
+ },
371
+ Field: {
372
+ enter(field) {
373
+ fields.push(field);
374
+ },
375
+ leave() {
376
+ const removed = fields.pop();
377
+ if (removed === rootClientField) {
378
+ rootClientField = undefined;
379
+ }
380
+ },
381
+ },
382
+ Directive(node, _, __, ___, ancestors) {
383
+ const field = fields.at(-1);
384
+ if (!field) {
385
+ return;
386
+ }
387
+ if (node.name.value === "export" &&
388
+ // Ignore export directives that aren't inside client fields.
389
+ // These will get sent to the server
390
+ rootClientField) {
391
+ const fieldName = field.name.value;
392
+ const variableName = getExportedVariableName(node);
393
+ if (!variableName) {
394
+ throw new LocalStateError(`Cannot determine the variable name from the \`@export\` directive used on field '${fieldName}'. Perhaps you forgot the \`as\` argument?`, { path: getCurrentPath() });
395
+ }
396
+ if (!allVariableDefinitions[variableName]) {
397
+ throw new LocalStateError(`\`@export\` directive on field '${fieldName}' cannot export the '$${variableName}' variable as it is missing in the ${operationDefinition.operation} definition.`, { path: getCurrentPath() });
398
+ }
399
+ cache.exportedVariableDefs[variableName] = {
400
+ ...allVariableDefinitions[variableName],
401
+ field,
402
+ };
403
+ ancestors.forEach((node) => {
404
+ if (isSingleASTNode(node) && isSelectionNode(node)) {
405
+ cache.exportsToResolve.add(node);
406
+ cache.exportedVariableDefs[variableName].ancestors.add(node);
407
+ }
408
+ });
409
+ }
410
+ if (node.name.value === "client") {
411
+ rootClientField ??= field;
412
+ ancestors.forEach((node) => {
413
+ if (isSingleASTNode(node) && isSelectionNode(node)) {
414
+ cache.selectionsToResolve.add(node);
415
+ }
416
+ });
417
+ }
418
+ },
419
+ FragmentSpread(spread, _, __, ___, ancestors) {
420
+ const fragment = fragmentMap[spread.name.value];
421
+ invariant(fragment, 56, spread.name.value);
422
+ const { selectionsToResolve: fragmentSelections } = traverse(fragment);
423
+ if (fragmentSelections.size > 0) {
424
+ // Fragment for this spread contains @client directive (either directly or transitively)
425
+ // Collect selection nodes on paths from the root down to fields with the @client directive
426
+ ancestors.forEach((node) => {
427
+ if (isSingleASTNode(node) && isSelectionNode(node)) {
428
+ cache.selectionsToResolve.add(node);
429
+ }
430
+ });
431
+ cache.selectionsToResolve.add(spread);
432
+ fragmentSelections.forEach((selection) => {
433
+ cache.selectionsToResolve.add(selection);
434
+ });
435
+ }
436
+ },
437
+ });
438
+ return cache;
439
+ };
440
+ return {
441
+ ...traverse(operationDefinition),
442
+ operationDefinition,
443
+ fragmentMap,
444
+ };
445
+ }
446
+ }
447
+ function inferRootTypename({ operation }) {
448
+ return operation.charAt(0).toUpperCase() + operation.slice(1);
449
+ }
450
+ // eslint-disable-next-line @typescript-eslint/no-restricted-types
451
+ function isGraphQLError(error) {
452
+ return (error.name === "GraphQLError" &&
453
+ // Check to see if the error contains keys returned in toJSON. The values
454
+ // might be `undefined` if not set, but we don't care about those as we
455
+ // can be reasonably sure this is a GraphQLError if all of these properties
456
+ // exist on the error
457
+ "path" in error &&
458
+ "locations" in error &&
459
+ "extensions" in error);
460
+ }
461
+ function addExtension(error, meta) {
462
+ return {
463
+ ...error,
464
+ extensions: {
465
+ ...error.extensions,
466
+ localState: meta,
467
+ },
468
+ };
469
+ }
470
+ function getExportedVariableName(directive) {
471
+ if (directive.arguments) {
472
+ for (const arg of directive.arguments) {
473
+ if (arg.name.value === "as" && arg.value.kind === Kind.STRING) {
474
+ return arg.value.value;
475
+ }
476
+ }
477
+ }
478
+ }
479
+ function validateCacheImplementation(cache) {
480
+ invariant(cache.fragmentMatches, 57);
481
+ }
482
+ function getCacheResultAtPath(diff, path) {
483
+ if (diff.result === null) {
484
+ // Intentionally return undefined to signal we have no cache data
485
+ return;
486
+ }
487
+ return path.reduce((value, segment) => value?.[segment], diff.result);
488
+ }
489
+ function isForcedResolver(field) {
490
+ return (field.directives?.some((directive) => {
491
+ if (directive.name.value !== "client" || !directive.arguments) {
492
+ return false;
493
+ }
494
+ return directive.arguments.some((arg) => arg.name.value === "always" &&
495
+ arg.value.kind === "BooleanValue" &&
496
+ arg.value.value === true);
497
+ }) ?? false);
498
+ }
499
+ // If the incoming document is a query, return it as is. Otherwise, build a
500
+ // new document containing a query operation based on the selection set
501
+ // of the previous main operation.
502
+ function toQueryOperation(document) {
503
+ const definition = getMainDefinition(document);
504
+ const definitionOperation = definition.operation;
505
+ if (definitionOperation === "query") {
506
+ // Already a query, so return the existing document.
507
+ return document;
508
+ }
509
+ // Build a new query using the selection set of the main operation.
510
+ const modifiedDoc = visit(document, {
511
+ OperationDefinition: {
512
+ enter(node) {
513
+ return {
514
+ ...node,
515
+ operation: "query",
516
+ };
517
+ },
518
+ },
519
+ });
520
+ return modifiedDoc;
521
+ }
522
+ function hasAliasedTypename(selectionSet) {
523
+ return selectionSet.selections.some((selection) => selection.kind === Kind.FIELD &&
524
+ selection.alias &&
525
+ selection.name.value === "__typename");
526
+ }
527
+ //# sourceMappingURL=LocalState.js.map