@apollo/client 3.8.0-alpha.13 → 3.8.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 (420) hide show
  1. package/apollo-client.cjs +195 -164
  2. package/apollo-client.cjs.map +1 -1
  3. package/apollo-client.min.cjs +1 -1
  4. package/cache/cache.cjs +1 -1
  5. package/cache/cache.cjs.map +1 -1
  6. package/cache/cache.cjs.native.js +1 -1
  7. package/cache/core/cache.d.ts +4 -4
  8. package/cache/core/cache.d.ts.map +1 -1
  9. package/cache/core/cache.js.map +1 -1
  10. package/cache/core/types/Cache.d.ts +2 -2
  11. package/cache/core/types/Cache.d.ts.map +1 -1
  12. package/cache/core/types/Cache.js.map +1 -1
  13. package/cache/core/types/DataProxy.d.ts +4 -4
  14. package/cache/core/types/DataProxy.d.ts.map +1 -1
  15. package/cache/core/types/DataProxy.js.map +1 -1
  16. package/cache/core/types/common.d.ts +3 -3
  17. package/cache/core/types/common.d.ts.map +1 -1
  18. package/cache/core/types/common.js.map +1 -1
  19. package/cache/inmemory/entityStore.d.ts +5 -5
  20. package/cache/inmemory/entityStore.d.ts.map +1 -1
  21. package/cache/inmemory/entityStore.js.map +1 -1
  22. package/cache/inmemory/fragmentRegistry.d.ts +1 -1
  23. package/cache/inmemory/fragmentRegistry.d.ts.map +1 -1
  24. package/cache/inmemory/fragmentRegistry.js.map +1 -1
  25. package/cache/inmemory/helpers.d.ts +6 -5
  26. package/cache/inmemory/helpers.d.ts.map +1 -1
  27. package/cache/inmemory/helpers.js.map +1 -1
  28. package/cache/inmemory/inMemoryCache.d.ts +5 -5
  29. package/cache/inmemory/inMemoryCache.d.ts.map +1 -1
  30. package/cache/inmemory/inMemoryCache.js.map +1 -1
  31. package/cache/inmemory/key-extractor.d.ts +1 -1
  32. package/cache/inmemory/key-extractor.d.ts.map +1 -1
  33. package/cache/inmemory/key-extractor.js.map +1 -1
  34. package/cache/inmemory/policies.d.ts +7 -6
  35. package/cache/inmemory/policies.d.ts.map +1 -1
  36. package/cache/inmemory/policies.js +1 -1
  37. package/cache/inmemory/policies.js.map +1 -1
  38. package/cache/inmemory/reactiveVars.d.ts +1 -1
  39. package/cache/inmemory/reactiveVars.d.ts.map +1 -1
  40. package/cache/inmemory/reactiveVars.js.map +1 -1
  41. package/cache/inmemory/readFromStore.d.ts +6 -6
  42. package/cache/inmemory/readFromStore.d.ts.map +1 -1
  43. package/cache/inmemory/readFromStore.js +2 -2
  44. package/cache/inmemory/readFromStore.js.map +1 -1
  45. package/cache/inmemory/types.d.ts +6 -6
  46. package/cache/inmemory/types.d.ts.map +1 -1
  47. package/cache/inmemory/types.js.map +1 -1
  48. package/cache/inmemory/writeToStore.d.ts +6 -6
  49. package/cache/inmemory/writeToStore.d.ts.map +1 -1
  50. package/cache/inmemory/writeToStore.js.map +1 -1
  51. package/core/ApolloClient.d.ts +10 -9
  52. package/core/ApolloClient.d.ts.map +1 -1
  53. package/core/ApolloClient.js +1 -1
  54. package/core/ApolloClient.js.map +1 -1
  55. package/core/LocalState.d.ts +6 -6
  56. package/core/LocalState.d.ts.map +1 -1
  57. package/core/LocalState.js +1 -1
  58. package/core/LocalState.js.map +1 -1
  59. package/core/ObservableQuery.d.ts +9 -8
  60. package/core/ObservableQuery.d.ts.map +1 -1
  61. package/core/ObservableQuery.js.map +1 -1
  62. package/core/QueryInfo.d.ts +9 -9
  63. package/core/QueryInfo.d.ts.map +1 -1
  64. package/core/QueryInfo.js.map +1 -1
  65. package/core/QueryManager.d.ts +6 -6
  66. package/core/QueryManager.d.ts.map +1 -1
  67. package/core/QueryManager.js.map +1 -1
  68. package/core/core.cjs +1 -1
  69. package/core/core.cjs.map +1 -1
  70. package/core/core.cjs.native.js +1 -1
  71. package/core/equalByQuery.d.ts +2 -2
  72. package/core/equalByQuery.d.ts.map +1 -1
  73. package/core/equalByQuery.js.map +1 -1
  74. package/core/types.d.ts +11 -11
  75. package/core/types.d.ts.map +1 -1
  76. package/core/types.js.map +1 -1
  77. package/core/watchQueryOptions.d.ts +6 -6
  78. package/core/watchQueryOptions.d.ts.map +1 -1
  79. package/core/watchQueryOptions.js.map +1 -1
  80. package/errors/index.d.ts +4 -4
  81. package/errors/index.d.ts.map +1 -1
  82. package/errors/index.js.map +1 -1
  83. package/invariantErrorCodes.js +45 -28
  84. package/link/batch/batchLink.d.ts +4 -3
  85. package/link/batch/batchLink.d.ts.map +1 -1
  86. package/link/batch/batchLink.js.map +1 -1
  87. package/link/batch/batching.d.ts +1 -1
  88. package/link/batch/batching.d.ts.map +1 -1
  89. package/link/batch/batching.js.map +1 -1
  90. package/link/batch-http/batchHttpLink.d.ts +3 -2
  91. package/link/batch-http/batchHttpLink.d.ts.map +1 -1
  92. package/link/batch-http/batchHttpLink.js.map +1 -1
  93. package/link/context/index.d.ts +3 -2
  94. package/link/context/index.d.ts.map +1 -1
  95. package/link/context/index.js.map +1 -1
  96. package/link/core/ApolloLink.d.ts +3 -2
  97. package/link/core/ApolloLink.d.ts.map +1 -1
  98. package/link/core/ApolloLink.js.map +1 -1
  99. package/link/core/types.d.ts +4 -3
  100. package/link/core/types.d.ts.map +1 -1
  101. package/link/core/types.js.map +1 -1
  102. package/link/error/index.d.ts +4 -3
  103. package/link/error/index.d.ts.map +1 -1
  104. package/link/error/index.js.map +1 -1
  105. package/link/http/HttpLink.d.ts +3 -2
  106. package/link/http/HttpLink.d.ts.map +1 -1
  107. package/link/http/HttpLink.js.map +1 -1
  108. package/link/http/createHttpLink.d.ts +1 -1
  109. package/link/http/createHttpLink.d.ts.map +1 -1
  110. package/link/http/createHttpLink.js.map +1 -1
  111. package/link/http/http.cjs +1 -1
  112. package/link/http/http.cjs.map +1 -1
  113. package/link/http/http.cjs.native.js +1 -1
  114. package/link/http/iterators/nodeStream.d.ts +1 -1
  115. package/link/http/iterators/nodeStream.d.ts.map +1 -1
  116. package/link/http/iterators/nodeStream.js.map +1 -1
  117. package/link/http/parseAndCheckHttpResponse.d.ts +2 -2
  118. package/link/http/parseAndCheckHttpResponse.d.ts.map +1 -1
  119. package/link/http/parseAndCheckHttpResponse.js.map +1 -1
  120. package/link/http/responseIterator.d.ts +1 -1
  121. package/link/http/responseIterator.d.ts.map +1 -1
  122. package/link/http/responseIterator.js.map +1 -1
  123. package/link/http/rewriteURIForGET.d.ts +1 -1
  124. package/link/http/rewriteURIForGET.d.ts.map +1 -1
  125. package/link/http/rewriteURIForGET.js.map +1 -1
  126. package/link/http/selectHttpOptionsAndBody.d.ts +3 -2
  127. package/link/http/selectHttpOptionsAndBody.d.ts.map +1 -1
  128. package/link/http/selectHttpOptionsAndBody.js +1 -2
  129. package/link/http/selectHttpOptionsAndBody.js.map +1 -1
  130. package/link/http/selectURI.d.ts +1 -1
  131. package/link/http/selectURI.d.ts.map +1 -1
  132. package/link/http/selectURI.js.map +1 -1
  133. package/link/persisted-queries/index.d.ts +4 -3
  134. package/link/persisted-queries/index.d.ts.map +1 -1
  135. package/link/persisted-queries/index.js.map +1 -1
  136. package/link/remove-typename/index.d.ts +2 -0
  137. package/link/remove-typename/index.d.ts.map +1 -0
  138. package/link/remove-typename/index.js +2 -0
  139. package/link/remove-typename/index.js.map +1 -0
  140. package/link/remove-typename/package.json +8 -0
  141. package/link/remove-typename/remove-typename.cjs +70 -0
  142. package/link/remove-typename/remove-typename.cjs.map +1 -0
  143. package/link/remove-typename/remove-typename.cjs.native.js +70 -0
  144. package/link/remove-typename/removeTypenameFromVariables.d.ts +11 -0
  145. package/link/remove-typename/removeTypenameFromVariables.d.ts.map +1 -0
  146. package/link/remove-typename/removeTypenameFromVariables.js +62 -0
  147. package/link/remove-typename/removeTypenameFromVariables.js.map +1 -0
  148. package/link/retry/delayFunction.d.ts +1 -1
  149. package/link/retry/delayFunction.d.ts.map +1 -1
  150. package/link/retry/delayFunction.js.map +1 -1
  151. package/link/retry/retryFunction.d.ts +1 -1
  152. package/link/retry/retryFunction.d.ts.map +1 -1
  153. package/link/retry/retryFunction.js.map +1 -1
  154. package/link/retry/retryLink.d.ts +4 -3
  155. package/link/retry/retryLink.d.ts.map +1 -1
  156. package/link/retry/retryLink.js.map +1 -1
  157. package/link/schema/index.d.ts +3 -2
  158. package/link/schema/index.d.ts.map +1 -1
  159. package/link/schema/index.js.map +1 -1
  160. package/link/subscriptions/index.d.ts +2 -1
  161. package/link/subscriptions/index.d.ts.map +1 -1
  162. package/link/subscriptions/index.js +2 -2
  163. package/link/subscriptions/index.js.map +1 -1
  164. package/link/subscriptions/subscriptions.cjs +1 -1
  165. package/link/subscriptions/subscriptions.cjs.map +1 -1
  166. package/link/subscriptions/subscriptions.cjs.native.js +1 -1
  167. package/link/utils/createOperation.d.ts +1 -1
  168. package/link/utils/createOperation.d.ts.map +1 -1
  169. package/link/utils/createOperation.js.map +1 -1
  170. package/link/utils/filterOperationVariables.d.ts +1 -1
  171. package/link/utils/filterOperationVariables.d.ts.map +1 -1
  172. package/link/utils/filterOperationVariables.js.map +1 -1
  173. package/link/utils/toPromise.d.ts +1 -1
  174. package/link/utils/toPromise.d.ts.map +1 -1
  175. package/link/utils/toPromise.js.map +1 -1
  176. package/link/utils/transformOperation.d.ts +1 -1
  177. package/link/utils/transformOperation.d.ts.map +1 -1
  178. package/link/utils/transformOperation.js.map +1 -1
  179. package/link/utils/validateOperation.d.ts +1 -1
  180. package/link/utils/validateOperation.d.ts.map +1 -1
  181. package/link/utils/validateOperation.js.map +1 -1
  182. package/link/ws/index.d.ts +5 -3
  183. package/link/ws/index.d.ts.map +1 -1
  184. package/link/ws/index.js.map +1 -1
  185. package/package.json +18 -15
  186. package/react/cache/{QuerySubscription.d.ts → QueryReference.d.ts} +12 -11
  187. package/react/cache/QueryReference.d.ts.map +1 -0
  188. package/react/cache/{QuerySubscription.js → QueryReference.js} +37 -36
  189. package/react/cache/QueryReference.js.map +1 -0
  190. package/react/cache/SuspenseCache.d.ts +5 -5
  191. package/react/cache/SuspenseCache.d.ts.map +1 -1
  192. package/react/cache/SuspenseCache.js +8 -7
  193. package/react/cache/SuspenseCache.js.map +1 -1
  194. package/react/cache/types.d.ts +2 -0
  195. package/react/cache/types.d.ts.map +1 -0
  196. package/react/cache/types.js +2 -0
  197. package/react/cache/types.js.map +1 -0
  198. package/react/components/Mutation.d.ts +2 -2
  199. package/react/components/Mutation.d.ts.map +1 -1
  200. package/react/components/Mutation.js.map +1 -1
  201. package/react/components/Query.d.ts +2 -2
  202. package/react/components/Query.d.ts.map +1 -1
  203. package/react/components/Query.js.map +1 -1
  204. package/react/components/Subscription.d.ts +2 -2
  205. package/react/components/Subscription.d.ts.map +1 -1
  206. package/react/components/Subscription.js.map +1 -1
  207. package/react/components/types.d.ts +4 -4
  208. package/react/components/types.d.ts.map +1 -1
  209. package/react/components/types.js.map +1 -1
  210. package/react/context/ApolloConsumer.d.ts +1 -1
  211. package/react/context/ApolloConsumer.d.ts.map +1 -1
  212. package/react/context/ApolloConsumer.js.map +1 -1
  213. package/react/context/ApolloContext.d.ts +10 -3
  214. package/react/context/ApolloContext.d.ts.map +1 -1
  215. package/react/context/ApolloContext.js +13 -8
  216. package/react/context/ApolloContext.js.map +1 -1
  217. package/react/context/ApolloProvider.d.ts +2 -2
  218. package/react/context/ApolloProvider.d.ts.map +1 -1
  219. package/react/context/ApolloProvider.js +8 -12
  220. package/react/context/ApolloProvider.js.map +1 -1
  221. package/react/context/context.cjs +21 -20
  222. package/react/context/context.cjs.map +1 -1
  223. package/react/context/context.cjs.native.js +21 -20
  224. package/react/context/index.d.ts +1 -1
  225. package/react/context/index.d.ts.map +1 -1
  226. package/react/context/index.js +1 -1
  227. package/react/context/index.js.map +1 -1
  228. package/react/hoc/graphql.d.ts +3 -3
  229. package/react/hoc/graphql.d.ts.map +1 -1
  230. package/react/hoc/graphql.js.map +1 -1
  231. package/react/hoc/hoc-utils.d.ts +2 -2
  232. package/react/hoc/hoc-utils.d.ts.map +1 -1
  233. package/react/hoc/hoc-utils.js +1 -1
  234. package/react/hoc/hoc-utils.js.map +1 -1
  235. package/react/hoc/hoc.cjs +2 -2
  236. package/react/hoc/hoc.cjs.map +1 -1
  237. package/react/hoc/hoc.cjs.native.js +2 -2
  238. package/react/hoc/mutation-hoc.d.ts +4 -4
  239. package/react/hoc/mutation-hoc.d.ts.map +1 -1
  240. package/react/hoc/mutation-hoc.js.map +1 -1
  241. package/react/hoc/query-hoc.d.ts +2 -2
  242. package/react/hoc/query-hoc.d.ts.map +1 -1
  243. package/react/hoc/query-hoc.js.map +1 -1
  244. package/react/hoc/subscription-hoc.d.ts +2 -2
  245. package/react/hoc/subscription-hoc.d.ts.map +1 -1
  246. package/react/hoc/subscription-hoc.js.map +1 -1
  247. package/react/hoc/types.d.ts +4 -4
  248. package/react/hoc/types.d.ts.map +1 -1
  249. package/react/hoc/types.js.map +1 -1
  250. package/react/hoc/withApollo.d.ts +1 -1
  251. package/react/hoc/withApollo.d.ts.map +1 -1
  252. package/react/hoc/withApollo.js +1 -1
  253. package/react/hoc/withApollo.js.map +1 -1
  254. package/react/hooks/hooks.cjs +101 -32
  255. package/react/hooks/hooks.cjs.map +1 -1
  256. package/react/hooks/hooks.cjs.native.js +101 -32
  257. package/react/hooks/index.d.ts +2 -1
  258. package/react/hooks/index.d.ts.map +1 -1
  259. package/react/hooks/index.js +2 -1
  260. package/react/hooks/index.js.map +1 -1
  261. package/react/hooks/internal/useDeepMemo.d.ts +1 -1
  262. package/react/hooks/internal/useDeepMemo.d.ts.map +1 -1
  263. package/react/hooks/internal/useDeepMemo.js.map +1 -1
  264. package/react/hooks/useApolloClient.d.ts +1 -1
  265. package/react/hooks/useApolloClient.d.ts.map +1 -1
  266. package/react/hooks/useApolloClient.js +1 -1
  267. package/react/hooks/useApolloClient.js.map +1 -1
  268. package/react/hooks/useBackgroundQuery.d.ts +18 -0
  269. package/react/hooks/useBackgroundQuery.d.ts.map +1 -0
  270. package/react/hooks/useBackgroundQuery.js +71 -0
  271. package/react/hooks/useBackgroundQuery.js.map +1 -0
  272. package/react/hooks/useFragment.d.ts +12 -8
  273. package/react/hooks/useFragment.d.ts.map +1 -1
  274. package/react/hooks/useFragment.js +1 -1
  275. package/react/hooks/useFragment.js.map +1 -1
  276. package/react/hooks/useLazyQuery.d.ts +4 -4
  277. package/react/hooks/useLazyQuery.d.ts.map +1 -1
  278. package/react/hooks/useLazyQuery.js.map +1 -1
  279. package/react/hooks/useMutation.d.ts +4 -4
  280. package/react/hooks/useMutation.d.ts.map +1 -1
  281. package/react/hooks/useMutation.js +1 -1
  282. package/react/hooks/useMutation.js.map +1 -1
  283. package/react/hooks/useQuery.d.ts +3 -3
  284. package/react/hooks/useQuery.d.ts.map +1 -1
  285. package/react/hooks/useQuery.js +2 -2
  286. package/react/hooks/useQuery.js.map +1 -1
  287. package/react/hooks/useReactiveVar.d.ts +1 -1
  288. package/react/hooks/useReactiveVar.d.ts.map +1 -1
  289. package/react/hooks/useReactiveVar.js.map +1 -1
  290. package/react/hooks/useSubscription.d.ts +4 -4
  291. package/react/hooks/useSubscription.d.ts.map +1 -1
  292. package/react/hooks/useSubscription.js.map +1 -1
  293. package/react/hooks/useSuspenseCache.d.ts +1 -1
  294. package/react/hooks/useSuspenseCache.d.ts.map +1 -1
  295. package/react/hooks/useSuspenseCache.js +1 -1
  296. package/react/hooks/useSuspenseCache.js.map +1 -1
  297. package/react/hooks/useSuspenseQuery.d.ts +16 -6
  298. package/react/hooks/useSuspenseQuery.d.ts.map +1 -1
  299. package/react/hooks/useSuspenseQuery.js +32 -29
  300. package/react/hooks/useSuspenseQuery.js.map +1 -1
  301. package/react/parser/index.d.ts +1 -1
  302. package/react/parser/index.d.ts.map +1 -1
  303. package/react/parser/index.js +5 -5
  304. package/react/parser/index.js.map +1 -1
  305. package/react/parser/parser.cjs +5 -5
  306. package/react/parser/parser.cjs.map +1 -1
  307. package/react/parser/parser.cjs.native.js +5 -5
  308. package/react/react.cjs +40 -37
  309. package/react/react.cjs.map +1 -1
  310. package/react/react.cjs.native.js +40 -37
  311. package/react/ssr/RenderPromises.d.ts +2 -2
  312. package/react/ssr/RenderPromises.d.ts.map +1 -1
  313. package/react/ssr/RenderPromises.js.map +1 -1
  314. package/react/ssr/renderToStringWithData.d.ts +1 -1
  315. package/react/ssr/renderToStringWithData.d.ts.map +1 -1
  316. package/react/ssr/renderToStringWithData.js.map +1 -1
  317. package/react/types/types.d.ts +8 -8
  318. package/react/types/types.d.ts.map +1 -1
  319. package/react/types/types.js.map +1 -1
  320. package/testing/core/core.cjs +1 -1
  321. package/testing/core/core.cjs.map +1 -1
  322. package/testing/core/core.cjs.native.js +1 -1
  323. package/testing/core/mocking/mockClient.d.ts +2 -2
  324. package/testing/core/mocking/mockClient.d.ts.map +1 -1
  325. package/testing/core/mocking/mockClient.js.map +1 -1
  326. package/testing/core/mocking/mockLink.d.ts +2 -1
  327. package/testing/core/mocking/mockLink.d.ts.map +1 -1
  328. package/testing/core/mocking/mockLink.js +2 -2
  329. package/testing/core/mocking/mockLink.js.map +1 -1
  330. package/testing/core/mocking/mockQueryManager.d.ts +1 -1
  331. package/testing/core/mocking/mockQueryManager.d.ts.map +1 -1
  332. package/testing/core/mocking/mockQueryManager.js.map +1 -1
  333. package/testing/core/mocking/mockSubscriptionLink.d.ts +2 -1
  334. package/testing/core/mocking/mockSubscriptionLink.d.ts.map +1 -1
  335. package/testing/core/mocking/mockSubscriptionLink.js.map +1 -1
  336. package/testing/core/mocking/mockWatchQuery.d.ts +2 -2
  337. package/testing/core/mocking/mockWatchQuery.d.ts.map +1 -1
  338. package/testing/core/mocking/mockWatchQuery.js.map +1 -1
  339. package/testing/core/observableToPromise.d.ts +2 -2
  340. package/testing/core/observableToPromise.d.ts.map +1 -1
  341. package/testing/core/observableToPromise.js.map +1 -1
  342. package/testing/core/subscribeAndCount.d.ts +1 -1
  343. package/testing/core/subscribeAndCount.d.ts.map +1 -1
  344. package/testing/core/subscribeAndCount.js.map +1 -1
  345. package/testing/react/MockedProvider.d.ts +7 -6
  346. package/testing/react/MockedProvider.d.ts.map +1 -1
  347. package/testing/react/MockedProvider.js.map +1 -1
  348. package/utilities/common/compact.d.ts +1 -1
  349. package/utilities/common/compact.d.ts.map +1 -1
  350. package/utilities/common/compact.js.map +1 -1
  351. package/utilities/common/errorHandling.d.ts +1 -1
  352. package/utilities/common/errorHandling.d.ts.map +1 -1
  353. package/utilities/common/errorHandling.js.map +1 -1
  354. package/utilities/common/incrementalResult.d.ts +1 -1
  355. package/utilities/common/incrementalResult.d.ts.map +1 -1
  356. package/utilities/common/incrementalResult.js.map +1 -1
  357. package/utilities/common/omitDeep.d.ts +10 -2
  358. package/utilities/common/omitDeep.d.ts.map +1 -1
  359. package/utilities/common/omitDeep.js +22 -10
  360. package/utilities/common/omitDeep.js.map +1 -1
  361. package/utilities/common/responseIterator.d.ts +2 -2
  362. package/utilities/common/responseIterator.d.ts.map +1 -1
  363. package/utilities/common/responseIterator.js.map +1 -1
  364. package/utilities/common/stripTypename.d.ts +9 -1
  365. package/utilities/common/stripTypename.d.ts.map +1 -1
  366. package/utilities/common/stripTypename.js +3 -2
  367. package/utilities/common/stripTypename.js.map +1 -1
  368. package/utilities/globals/global.d.ts +6 -3
  369. package/utilities/globals/global.d.ts.map +1 -1
  370. package/utilities/globals/global.js.map +1 -1
  371. package/utilities/graphql/directives.d.ts +1 -1
  372. package/utilities/graphql/directives.d.ts.map +1 -1
  373. package/utilities/graphql/directives.js +4 -4
  374. package/utilities/graphql/directives.js.map +1 -1
  375. package/utilities/graphql/fragments.d.ts +1 -1
  376. package/utilities/graphql/fragments.d.ts.map +1 -1
  377. package/utilities/graphql/fragments.js +3 -3
  378. package/utilities/graphql/fragments.js.map +1 -1
  379. package/utilities/graphql/getFromAST.d.ts +1 -1
  380. package/utilities/graphql/getFromAST.d.ts.map +1 -1
  381. package/utilities/graphql/getFromAST.js +8 -8
  382. package/utilities/graphql/getFromAST.js.map +1 -1
  383. package/utilities/graphql/storeUtils.d.ts +2 -2
  384. package/utilities/graphql/storeUtils.d.ts.map +1 -1
  385. package/utilities/graphql/storeUtils.js +14 -4
  386. package/utilities/graphql/storeUtils.js.map +1 -1
  387. package/utilities/graphql/transform.d.ts +1 -1
  388. package/utilities/graphql/transform.d.ts.map +1 -1
  389. package/utilities/graphql/transform.js +2 -2
  390. package/utilities/graphql/transform.js.map +1 -1
  391. package/utilities/index.d.ts +1 -1
  392. package/utilities/index.d.ts.map +1 -1
  393. package/utilities/index.js.map +1 -1
  394. package/utilities/observables/Concast.d.ts +2 -1
  395. package/utilities/observables/Concast.d.ts.map +1 -1
  396. package/utilities/observables/Concast.js.map +1 -1
  397. package/utilities/observables/Observable.d.ts +2 -1
  398. package/utilities/observables/Observable.d.ts.map +1 -1
  399. package/utilities/observables/Observable.js +1 -1
  400. package/utilities/observables/Observable.js.map +1 -1
  401. package/utilities/observables/asyncMap.d.ts.map +1 -1
  402. package/utilities/observables/asyncMap.js.map +1 -1
  403. package/utilities/observables/iteration.d.ts +1 -1
  404. package/utilities/observables/iteration.d.ts.map +1 -1
  405. package/utilities/observables/iteration.js.map +1 -1
  406. package/utilities/policies/pagination.d.ts +1 -1
  407. package/utilities/policies/pagination.d.ts.map +1 -1
  408. package/utilities/policies/pagination.js.map +1 -1
  409. package/utilities/types/DeepOmit.d.ts +1 -1
  410. package/utilities/types/DeepOmit.d.ts.map +1 -1
  411. package/utilities/types/DeepOmit.js.map +1 -1
  412. package/utilities/types/DeepPartial.d.ts +1 -1
  413. package/utilities/types/DeepPartial.d.ts.map +1 -1
  414. package/utilities/types/DeepPartial.js.map +1 -1
  415. package/utilities/utilities.cjs +54 -31
  416. package/utilities/utilities.cjs.map +1 -1
  417. package/utilities/utilities.cjs.native.js +54 -31
  418. package/version.js +1 -1
  419. package/react/cache/QuerySubscription.d.ts.map +0 -1
  420. package/react/cache/QuerySubscription.js.map +0 -1
@@ -1,6 +1,7 @@
1
- import { DocumentNode, ExecutionResult, GraphQLError } from 'graphql';
2
- import { ApolloLink, Operation } from '../core';
3
- import { NetworkError } from '../../errors';
1
+ import type { DocumentNode, ExecutionResult, GraphQLError } from 'graphql';
2
+ import type { Operation } from '../core';
3
+ import { ApolloLink } from '../core';
4
+ import type { NetworkError } from '../../errors';
4
5
  export declare const VERSION = 1;
5
6
  export interface ErrorResponse {
6
7
  graphQLErrors?: readonly GraphQLError[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/link/persisted-queries/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EACZ,eAAe,EACf,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAQhD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,eAAO,MAAM,OAAO,IAAI,CAAC;AAEzB,MAAM,WAAW,aAAa;IAC5B,aAAa,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,KAAK,cAAc,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AACvE,KAAK,oBAAoB,GAAG,CAAC,QAAQ,EAAE,YAAY,KAAK,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAErF,yBAAiB,kBAAkB,CAAC;IAClC,UAAU,WAAW;QACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC;QAC5C,sBAAsB,CAAC,EAAE,OAAO,CAAC;KAClC;IAED,UAAU,aAAc,SAAQ,WAAW;QACzC,MAAM,EAAE,cAAc,CAAC;QACvB,YAAY,CAAC,EAAE,KAAK,CAAC;KACtB;IAED,UAAU,mBAAoB,SAAQ,WAAW;QAC/C,MAAM,CAAC,EAAE,KAAK,CAAC;QACf,YAAY,EAAE,oBAAoB,CAAC;KACpC;IAED,MAAM,MAAM,OAAO,GAAG,aAAa,GAAG,mBAAmB,CAAC;;CAC3D;AA8CD,eAAO,MAAM,wBAAwB,YAC1B,mBAAmB,OAAO,eA+LpC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/link/persisted-queries/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AASrC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,eAAO,MAAM,OAAO,IAAI,CAAC;AAEzB,MAAM,WAAW,aAAa;IAC5B,aAAa,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,KAAK,cAAc,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AACvE,KAAK,oBAAoB,GAAG,CAAC,QAAQ,EAAE,YAAY,KAAK,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAErF,yBAAiB,kBAAkB,CAAC;IAClC,UAAU,WAAW;QACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC;QAC5C,sBAAsB,CAAC,EAAE,OAAO,CAAC;KAClC;IAED,UAAU,aAAc,SAAQ,WAAW;QACzC,MAAM,EAAE,cAAc,CAAC;QACvB,YAAY,CAAC,EAAE,KAAK,CAAC;KACtB;IAED,UAAU,mBAAoB,SAAQ,WAAW;QAC/C,MAAM,CAAC,EAAE,KAAK,CAAC;QACf,YAAY,EAAE,oBAAoB,CAAC;KACpC;IAED,MAAM,MAAM,OAAO,GAAG,aAAa,GAAG,mBAAmB,CAAC;;CAC3D;AA8CD,eAAO,MAAM,wBAAwB,YAC1B,mBAAmB,OAAO,eA+LpC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/link/persisted-queries/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant } from '../../utilities/globals';\n\nimport { print } from 'graphql';\nimport {\n DocumentNode,\n ExecutionResult,\n GraphQLError,\n} from 'graphql';\n\nimport { ApolloLink, Operation } from '../core';\nimport {\n Observable,\n Observer,\n ObservableSubscription,\n compact,\n isNonEmptyArray,\n} from '../../utilities';\nimport { NetworkError } from '../../errors';\nimport { ServerError } from '../utils';\n\nexport const VERSION = 1;\n\nexport interface ErrorResponse {\n graphQLErrors?: readonly GraphQLError[];\n networkError?: NetworkError;\n response?: ExecutionResult;\n operation: Operation;\n}\n\ntype SHA256Function = (...args: any[]) => string | PromiseLike<string>;\ntype GenerateHashFunction = (document: DocumentNode) => string | PromiseLike<string>;\n\nexport namespace PersistedQueryLink {\n interface BaseOptions {\n disable?: (error: ErrorResponse) => boolean;\n useGETForHashedQueries?: boolean;\n };\n\n interface SHA256Options extends BaseOptions {\n sha256: SHA256Function;\n generateHash?: never;\n };\n\n interface GenerateHashOptions extends BaseOptions {\n sha256?: never;\n generateHash: GenerateHashFunction;\n };\n\n export type Options = SHA256Options | GenerateHashOptions;\n}\n\nfunction collectErrorsByMessage<TError extends Error>(\n graphQLErrors: TError[] | readonly TError[] | undefined,\n): Record<string, TError> {\n const collected: Record<string, TError> = Object.create(null);\n if (isNonEmptyArray(graphQLErrors)) {\n graphQLErrors.forEach(error => collected[error.message] = error);\n }\n return collected;\n}\n\nconst defaultOptions = {\n disable: ({ graphQLErrors, operation }: ErrorResponse) => {\n const errorMessages = collectErrorsByMessage(graphQLErrors);\n\n // if the server doesn't support persisted queries, don't try anymore\n if (errorMessages.PersistedQueryNotSupported) {\n return true;\n }\n\n if (errorMessages.PersistedQueryNotFound) {\n return false;\n }\n\n const { response } = operation.getContext();\n // if the server responds with bad request\n // Apollo Server responds with 400 for GET and 500 for POST when no query is found\n if (\n response &&\n response.status &&\n (response.status === 400 || response.status === 500)\n ) {\n return true;\n }\n\n return false;\n },\n useGETForHashedQueries: false,\n};\n\nfunction operationDefinesMutation(operation: Operation) {\n return operation.query.definitions.some(\n d => d.kind === 'OperationDefinition' && d.operation === 'mutation');\n}\n\nexport const createPersistedQueryLink = (\n options: PersistedQueryLink.Options,\n) => {\n const hashesByQuery = new WeakMap<\n DocumentNode,\n Promise<string>\n >();\n // Ensure a SHA-256 hash function is provided, if a custom hash\n // generation function is not provided. We don't supply a SHA-256 hash\n // function by default, to avoid forcing one as a dependency. Developers\n // should pick the most appropriate SHA-256 function (sync or async) for\n // their needs/environment, or provide a fully custom hash generation\n // function (via the `generateHash` option) if they want to handle\n // hashing with something other than SHA-256.\n invariant(\n options && (\n typeof options.sha256 === 'function' ||\n typeof options.generateHash === 'function'\n ),\n 'Missing/invalid \"sha256\" or \"generateHash\" function. Please ' +\n 'configure one using the \"createPersistedQueryLink(options)\" options ' +\n 'parameter.'\n );\n\n const {\n sha256,\n // If both a `sha256` and `generateHash` option are provided, the\n // `sha256` option will be ignored. Developers can configure and\n // use any hashing approach they want in a custom `generateHash`\n // function; they aren't limited to SHA-256.\n generateHash = (query: DocumentNode) =>\n Promise.resolve<string>(sha256!(print(query))),\n disable,\n useGETForHashedQueries\n } = compact(defaultOptions, options);\n\n let supportsPersistedQueries = true;\n\n const getHashPromise = (query: DocumentNode) =>\n new Promise<string>(resolve => resolve(generateHash(query)));\n\n function getQueryHash(query: DocumentNode): Promise<string> {\n if (!query || typeof query !== 'object') {\n // If the query is not an object, we won't be able to store its hash as\n // a property of query[hashesKey], so we let generateHash(query) decide\n // what to do with the bogus query.\n return getHashPromise(query);\n }\n let hash = hashesByQuery.get(query)!;\n if (!hash) hashesByQuery.set(query, hash = getHashPromise(query));\n return hash;\n }\n\n return new ApolloLink((operation, forward) => {\n invariant(\n forward,\n 'PersistedQueryLink cannot be the last link in the chain.'\n );\n\n const { query } = operation;\n\n return new Observable((observer: Observer<ExecutionResult>) => {\n let subscription: ObservableSubscription;\n let retried = false;\n let originalFetchOptions: any;\n let setFetchOptions = false;\n const retry = (\n {\n response,\n networkError,\n }: { response?: ExecutionResult; networkError?: ServerError },\n cb: () => void,\n ) => {\n if (!retried && ((response && response.errors) || networkError)) {\n retried = true;\n\n const graphQLErrors: GraphQLError[] = [];\n\n const responseErrors = response && response.errors;\n if (isNonEmptyArray(responseErrors)) {\n graphQLErrors.push(...responseErrors);\n }\n\n // Network errors can return GraphQL errors on for example a 403\n let networkErrors;\n if (typeof networkError?.result !== 'string') {\n networkErrors =\n networkError &&\n networkError.result &&\n networkError.result.errors as GraphQLError[];\n }\n if (isNonEmptyArray(networkErrors)) {\n graphQLErrors.push(...networkErrors);\n }\n\n const disablePayload = {\n response,\n networkError,\n operation,\n graphQLErrors: isNonEmptyArray(graphQLErrors) ? graphQLErrors : void 0,\n };\n\n // if the server doesn't support persisted queries, don't try anymore\n supportsPersistedQueries = !disable(disablePayload);\n\n // if its not found, we can try it again, otherwise just report the error\n if (\n collectErrorsByMessage(graphQLErrors).PersistedQueryNotFound ||\n !supportsPersistedQueries\n ) {\n // need to recall the link chain\n if (subscription) subscription.unsubscribe();\n // actually send the query this time\n operation.setContext({\n http: {\n includeQuery: true,\n includeExtensions: supportsPersistedQueries,\n },\n fetchOptions: {\n // Since we're including the full query, which may be\n // large, we should send it in the body of a POST request.\n // See issue #7456.\n method: 'POST',\n },\n });\n if (setFetchOptions) {\n operation.setContext({ fetchOptions: originalFetchOptions });\n }\n subscription = forward(operation).subscribe(handler);\n\n return;\n }\n }\n cb();\n };\n const handler = {\n next: (response: ExecutionResult) => {\n retry({ response }, () => observer.next!(response));\n },\n error: (networkError: ServerError) => {\n retry({ networkError }, () => observer.error!(networkError));\n },\n complete: observer.complete!.bind(observer),\n };\n\n // don't send the query the first time\n operation.setContext({\n http: {\n includeQuery: !supportsPersistedQueries,\n includeExtensions: supportsPersistedQueries,\n },\n });\n\n // If requested, set method to GET if there are no mutations. Remember the\n // original fetchOptions so we can restore them if we fall back to a\n // non-hashed request.\n if (\n useGETForHashedQueries &&\n supportsPersistedQueries &&\n !operationDefinesMutation(operation)\n ) {\n operation.setContext(\n ({ fetchOptions = {} }: { fetchOptions: Record<string, any> }) => {\n originalFetchOptions = fetchOptions;\n return {\n fetchOptions: {\n ...fetchOptions,\n method: 'GET',\n },\n };\n },\n );\n setFetchOptions = true;\n }\n\n if (supportsPersistedQueries) {\n getQueryHash(query).then((sha256Hash) => {\n operation.extensions.persistedQuery = {\n version: VERSION,\n sha256Hash,\n };\n subscription = forward(operation).subscribe(handler);\n }).catch(observer.error!.bind(observer));;\n } else {\n subscription = forward(operation).subscribe(handler);\n }\n\n return () => {\n if (subscription) subscription.unsubscribe();\n };\n });\n });\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/link/persisted-queries/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant } from '../../utilities/globals';\n\nimport { print } from 'graphql';\nimport type {\n DocumentNode,\n ExecutionResult,\n GraphQLError,\n} from 'graphql';\n\nimport type { Operation } from '../core';\nimport { ApolloLink } from '../core';\nimport type {\n Observer,\n ObservableSubscription} from '../../utilities';\nimport {\n Observable,\n compact,\n isNonEmptyArray,\n} from '../../utilities';\nimport type { NetworkError } from '../../errors';\nimport type { ServerError } from '../utils';\n\nexport const VERSION = 1;\n\nexport interface ErrorResponse {\n graphQLErrors?: readonly GraphQLError[];\n networkError?: NetworkError;\n response?: ExecutionResult;\n operation: Operation;\n}\n\ntype SHA256Function = (...args: any[]) => string | PromiseLike<string>;\ntype GenerateHashFunction = (document: DocumentNode) => string | PromiseLike<string>;\n\nexport namespace PersistedQueryLink {\n interface BaseOptions {\n disable?: (error: ErrorResponse) => boolean;\n useGETForHashedQueries?: boolean;\n };\n\n interface SHA256Options extends BaseOptions {\n sha256: SHA256Function;\n generateHash?: never;\n };\n\n interface GenerateHashOptions extends BaseOptions {\n sha256?: never;\n generateHash: GenerateHashFunction;\n };\n\n export type Options = SHA256Options | GenerateHashOptions;\n}\n\nfunction collectErrorsByMessage<TError extends Error>(\n graphQLErrors: TError[] | readonly TError[] | undefined,\n): Record<string, TError> {\n const collected: Record<string, TError> = Object.create(null);\n if (isNonEmptyArray(graphQLErrors)) {\n graphQLErrors.forEach(error => collected[error.message] = error);\n }\n return collected;\n}\n\nconst defaultOptions = {\n disable: ({ graphQLErrors, operation }: ErrorResponse) => {\n const errorMessages = collectErrorsByMessage(graphQLErrors);\n\n // if the server doesn't support persisted queries, don't try anymore\n if (errorMessages.PersistedQueryNotSupported) {\n return true;\n }\n\n if (errorMessages.PersistedQueryNotFound) {\n return false;\n }\n\n const { response } = operation.getContext();\n // if the server responds with bad request\n // Apollo Server responds with 400 for GET and 500 for POST when no query is found\n if (\n response &&\n response.status &&\n (response.status === 400 || response.status === 500)\n ) {\n return true;\n }\n\n return false;\n },\n useGETForHashedQueries: false,\n};\n\nfunction operationDefinesMutation(operation: Operation) {\n return operation.query.definitions.some(\n d => d.kind === 'OperationDefinition' && d.operation === 'mutation');\n}\n\nexport const createPersistedQueryLink = (\n options: PersistedQueryLink.Options,\n) => {\n const hashesByQuery = new WeakMap<\n DocumentNode,\n Promise<string>\n >();\n // Ensure a SHA-256 hash function is provided, if a custom hash\n // generation function is not provided. We don't supply a SHA-256 hash\n // function by default, to avoid forcing one as a dependency. Developers\n // should pick the most appropriate SHA-256 function (sync or async) for\n // their needs/environment, or provide a fully custom hash generation\n // function (via the `generateHash` option) if they want to handle\n // hashing with something other than SHA-256.\n invariant(\n options && (\n typeof options.sha256 === 'function' ||\n typeof options.generateHash === 'function'\n ),\n 'Missing/invalid \"sha256\" or \"generateHash\" function. Please ' +\n 'configure one using the \"createPersistedQueryLink(options)\" options ' +\n 'parameter.'\n );\n\n const {\n sha256,\n // If both a `sha256` and `generateHash` option are provided, the\n // `sha256` option will be ignored. Developers can configure and\n // use any hashing approach they want in a custom `generateHash`\n // function; they aren't limited to SHA-256.\n generateHash = (query: DocumentNode) =>\n Promise.resolve<string>(sha256!(print(query))),\n disable,\n useGETForHashedQueries\n } = compact(defaultOptions, options);\n\n let supportsPersistedQueries = true;\n\n const getHashPromise = (query: DocumentNode) =>\n new Promise<string>(resolve => resolve(generateHash(query)));\n\n function getQueryHash(query: DocumentNode): Promise<string> {\n if (!query || typeof query !== 'object') {\n // If the query is not an object, we won't be able to store its hash as\n // a property of query[hashesKey], so we let generateHash(query) decide\n // what to do with the bogus query.\n return getHashPromise(query);\n }\n let hash = hashesByQuery.get(query)!;\n if (!hash) hashesByQuery.set(query, hash = getHashPromise(query));\n return hash;\n }\n\n return new ApolloLink((operation, forward) => {\n invariant(\n forward,\n 'PersistedQueryLink cannot be the last link in the chain.'\n );\n\n const { query } = operation;\n\n return new Observable((observer: Observer<ExecutionResult>) => {\n let subscription: ObservableSubscription;\n let retried = false;\n let originalFetchOptions: any;\n let setFetchOptions = false;\n const retry = (\n {\n response,\n networkError,\n }: { response?: ExecutionResult; networkError?: ServerError },\n cb: () => void,\n ) => {\n if (!retried && ((response && response.errors) || networkError)) {\n retried = true;\n\n const graphQLErrors: GraphQLError[] = [];\n\n const responseErrors = response && response.errors;\n if (isNonEmptyArray(responseErrors)) {\n graphQLErrors.push(...responseErrors);\n }\n\n // Network errors can return GraphQL errors on for example a 403\n let networkErrors;\n if (typeof networkError?.result !== 'string') {\n networkErrors =\n networkError &&\n networkError.result &&\n networkError.result.errors as GraphQLError[];\n }\n if (isNonEmptyArray(networkErrors)) {\n graphQLErrors.push(...networkErrors);\n }\n\n const disablePayload = {\n response,\n networkError,\n operation,\n graphQLErrors: isNonEmptyArray(graphQLErrors) ? graphQLErrors : void 0,\n };\n\n // if the server doesn't support persisted queries, don't try anymore\n supportsPersistedQueries = !disable(disablePayload);\n\n // if its not found, we can try it again, otherwise just report the error\n if (\n collectErrorsByMessage(graphQLErrors).PersistedQueryNotFound ||\n !supportsPersistedQueries\n ) {\n // need to recall the link chain\n if (subscription) subscription.unsubscribe();\n // actually send the query this time\n operation.setContext({\n http: {\n includeQuery: true,\n includeExtensions: supportsPersistedQueries,\n },\n fetchOptions: {\n // Since we're including the full query, which may be\n // large, we should send it in the body of a POST request.\n // See issue #7456.\n method: 'POST',\n },\n });\n if (setFetchOptions) {\n operation.setContext({ fetchOptions: originalFetchOptions });\n }\n subscription = forward(operation).subscribe(handler);\n\n return;\n }\n }\n cb();\n };\n const handler = {\n next: (response: ExecutionResult) => {\n retry({ response }, () => observer.next!(response));\n },\n error: (networkError: ServerError) => {\n retry({ networkError }, () => observer.error!(networkError));\n },\n complete: observer.complete!.bind(observer),\n };\n\n // don't send the query the first time\n operation.setContext({\n http: {\n includeQuery: !supportsPersistedQueries,\n includeExtensions: supportsPersistedQueries,\n },\n });\n\n // If requested, set method to GET if there are no mutations. Remember the\n // original fetchOptions so we can restore them if we fall back to a\n // non-hashed request.\n if (\n useGETForHashedQueries &&\n supportsPersistedQueries &&\n !operationDefinesMutation(operation)\n ) {\n operation.setContext(\n ({ fetchOptions = {} }: { fetchOptions: Record<string, any> }) => {\n originalFetchOptions = fetchOptions;\n return {\n fetchOptions: {\n ...fetchOptions,\n method: 'GET',\n },\n };\n },\n );\n setFetchOptions = true;\n }\n\n if (supportsPersistedQueries) {\n getQueryHash(query).then((sha256Hash) => {\n operation.extensions.persistedQuery = {\n version: VERSION,\n sha256Hash,\n };\n subscription = forward(operation).subscribe(handler);\n }).catch(observer.error!.bind(observer));;\n } else {\n subscription = forward(operation).subscribe(handler);\n }\n\n return () => {\n if (subscription) subscription.unsubscribe();\n };\n });\n });\n};\n"]}
@@ -0,0 +1,2 @@
1
+ export { removeTypenameFromVariables, KEEP, RemoveTypenameFromVariablesOptions, } from './removeTypenameFromVariables';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/link/remove-typename/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,IAAI,EACJ,kCAAkC,GACnC,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { removeTypenameFromVariables, KEEP, } from "./removeTypenameFromVariables.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/link/remove-typename/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,IAAI,GAEL,MAAM,+BAA+B,CAAC","sourcesContent":["export {\n removeTypenameFromVariables,\n KEEP,\n RemoveTypenameFromVariablesOptions,\n} from './removeTypenameFromVariables';\n"]}
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "@apollo/client/link/remove-typename",
3
+ "type": "module",
4
+ "main": "remove-typename.cjs",
5
+ "module": "index.js",
6
+ "types": "index.d.ts",
7
+ "sideEffects": false
8
+ }
@@ -0,0 +1,70 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib = require('tslib');
6
+ var trie = require('@wry/trie');
7
+ var optimism = require('optimism');
8
+ var graphql = require('graphql');
9
+ var core = require('../core');
10
+ var utilities = require('../../utilities');
11
+
12
+ var KEEP = '__KEEP';
13
+ function removeTypenameFromVariables(options) {
14
+ if (options === void 0) { options = Object.create(null); }
15
+ var except = options.except;
16
+ var trie$1 = new trie.Trie(utilities.canUseWeakMap, function () { return utilities.stripTypename.BREAK; });
17
+ if (except) {
18
+ collectPaths(except, function (path) { return trie$1.lookupArray(path); });
19
+ }
20
+ return new core.ApolloLink(function (operation, forward) {
21
+ var query = operation.query, variables = operation.variables;
22
+ if (!variables) {
23
+ return forward(operation);
24
+ }
25
+ if (!except) {
26
+ return forward(tslib.__assign(tslib.__assign({}, operation), { variables: utilities.stripTypename(variables) }));
27
+ }
28
+ var variableDefinitions = getVariableDefinitions(query);
29
+ return forward(tslib.__assign(tslib.__assign({}, operation), { variables: utilities.stripTypename(variables, {
30
+ keep: function (variablePath) {
31
+ var typename = variableDefinitions[variablePath[0]];
32
+ var withoutArrayIndexes = variablePath.filter(function (segment) { return typeof segment === 'string'; });
33
+ return trie$1.peekArray(tslib.__spreadArray([typename], withoutArrayIndexes.slice(1), true));
34
+ },
35
+ }) }));
36
+ });
37
+ }
38
+ var getVariableDefinitions = optimism.wrap(function (document) {
39
+ var definitions = {};
40
+ graphql.visit(document, {
41
+ VariableDefinition: function (node) {
42
+ definitions[node.variable.name.value] = unwrapType(node.type);
43
+ },
44
+ });
45
+ return definitions;
46
+ });
47
+ function unwrapType(node) {
48
+ switch (node.kind) {
49
+ case graphql.Kind.NON_NULL_TYPE:
50
+ return unwrapType(node.type);
51
+ case graphql.Kind.LIST_TYPE:
52
+ return unwrapType(node.type);
53
+ case graphql.Kind.NAMED_TYPE:
54
+ return node.name.value;
55
+ }
56
+ }
57
+ function collectPaths(config, register, path) {
58
+ if (path === void 0) { path = []; }
59
+ Object.entries(config).forEach(function (_a) {
60
+ var key = _a[0], value = _a[1];
61
+ if (value === KEEP) {
62
+ return register(tslib.__spreadArray(tslib.__spreadArray([], path, true), [key], false));
63
+ }
64
+ collectPaths(value, register, path.concat(key));
65
+ });
66
+ }
67
+
68
+ exports.KEEP = KEEP;
69
+ exports.removeTypenameFromVariables = removeTypenameFromVariables;
70
+ //# sourceMappingURL=remove-typename.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove-typename.cjs","sources":["removeTypenameFromVariables.js"],"sourcesContent":["import { __assign, __spreadArray } from \"tslib\";\nimport { Trie } from '@wry/trie';\nimport { wrap } from 'optimism';\nimport { Kind, visit } from 'graphql';\nimport { ApolloLink } from '../core';\nimport { canUseWeakMap, stripTypename } from '../../utilities';\nexport var KEEP = '__KEEP';\nexport function removeTypenameFromVariables(options) {\n if (options === void 0) { options = Object.create(null); }\n var except = options.except;\n var trie = new Trie(canUseWeakMap, function () { return stripTypename.BREAK; });\n if (except) {\n collectPaths(except, function (path) { return trie.lookupArray(path); });\n }\n return new ApolloLink(function (operation, forward) {\n var query = operation.query, variables = operation.variables;\n if (!variables) {\n return forward(operation);\n }\n if (!except) {\n return forward(__assign(__assign({}, operation), { variables: stripTypename(variables) }));\n }\n var variableDefinitions = getVariableDefinitions(query);\n return forward(__assign(__assign({}, operation), { variables: stripTypename(variables, {\n keep: function (variablePath) {\n var typename = variableDefinitions[variablePath[0]];\n var withoutArrayIndexes = variablePath.filter(function (segment) { return typeof segment === 'string'; });\n return trie.peekArray(__spreadArray([typename], withoutArrayIndexes.slice(1), true));\n },\n }) }));\n });\n}\nvar getVariableDefinitions = wrap(function (document) {\n var definitions = {};\n visit(document, {\n VariableDefinition: function (node) {\n definitions[node.variable.name.value] = unwrapType(node.type);\n },\n });\n return definitions;\n});\nfunction unwrapType(node) {\n switch (node.kind) {\n case Kind.NON_NULL_TYPE:\n return unwrapType(node.type);\n case Kind.LIST_TYPE:\n return unwrapType(node.type);\n case Kind.NAMED_TYPE:\n return node.name.value;\n }\n}\nfunction collectPaths(config, register, path) {\n if (path === void 0) { path = []; }\n Object.entries(config).forEach(function (_a) {\n var key = _a[0], value = _a[1];\n if (value === KEEP) {\n return register(__spreadArray(__spreadArray([], path, true), [key], false));\n }\n collectPaths(value, register, path.concat(key));\n });\n}\n//# sourceMappingURL=removeTypenameFromVariables.js.map"],"names":["trie","Trie","canUseWeakMap","stripTypename","ApolloLink","__assign","__spreadArray","wrap","visit","Kind"],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib = require('tslib');
6
+ var trie = require('@wry/trie');
7
+ var optimism = require('optimism');
8
+ var graphql = require('graphql');
9
+ var core = require('../core');
10
+ var utilities = require('../../utilities');
11
+
12
+ var KEEP = '__KEEP';
13
+ function removeTypenameFromVariables(options) {
14
+ if (options === void 0) { options = Object.create(null); }
15
+ var except = options.except;
16
+ var trie$1 = new trie.Trie(utilities.canUseWeakMap, function () { return utilities.stripTypename.BREAK; });
17
+ if (except) {
18
+ collectPaths(except, function (path) { return trie$1.lookupArray(path); });
19
+ }
20
+ return new core.ApolloLink(function (operation, forward) {
21
+ var query = operation.query, variables = operation.variables;
22
+ if (!variables) {
23
+ return forward(operation);
24
+ }
25
+ if (!except) {
26
+ return forward(tslib.__assign(tslib.__assign({}, operation), { variables: utilities.stripTypename(variables) }));
27
+ }
28
+ var variableDefinitions = getVariableDefinitions(query);
29
+ return forward(tslib.__assign(tslib.__assign({}, operation), { variables: utilities.stripTypename(variables, {
30
+ keep: function (variablePath) {
31
+ var typename = variableDefinitions[variablePath[0]];
32
+ var withoutArrayIndexes = variablePath.filter(function (segment) { return typeof segment === 'string'; });
33
+ return trie$1.peekArray(tslib.__spreadArray([typename], withoutArrayIndexes.slice(1), true));
34
+ },
35
+ }) }));
36
+ });
37
+ }
38
+ var getVariableDefinitions = optimism.wrap(function (document) {
39
+ var definitions = {};
40
+ graphql.visit(document, {
41
+ VariableDefinition: function (node) {
42
+ definitions[node.variable.name.value] = unwrapType(node.type);
43
+ },
44
+ });
45
+ return definitions;
46
+ });
47
+ function unwrapType(node) {
48
+ switch (node.kind) {
49
+ case graphql.Kind.NON_NULL_TYPE:
50
+ return unwrapType(node.type);
51
+ case graphql.Kind.LIST_TYPE:
52
+ return unwrapType(node.type);
53
+ case graphql.Kind.NAMED_TYPE:
54
+ return node.name.value;
55
+ }
56
+ }
57
+ function collectPaths(config, register, path) {
58
+ if (path === void 0) { path = []; }
59
+ Object.entries(config).forEach(function (_a) {
60
+ var key = _a[0], value = _a[1];
61
+ if (value === KEEP) {
62
+ return register(tslib.__spreadArray(tslib.__spreadArray([], path, true), [key], false));
63
+ }
64
+ collectPaths(value, register, path.concat(key));
65
+ });
66
+ }
67
+
68
+ exports.KEEP = KEEP;
69
+ exports.removeTypenameFromVariables = removeTypenameFromVariables;
70
+ //# sourceMappingURL=remove-typename.cjs.map
@@ -0,0 +1,11 @@
1
+ import { ApolloLink } from '../core';
2
+ export declare const KEEP = "__KEEP";
3
+ interface KeepTypenameConfig {
4
+ [key: string]: typeof KEEP | KeepTypenameConfig;
5
+ }
6
+ export interface RemoveTypenameFromVariablesOptions {
7
+ except?: KeepTypenameConfig;
8
+ }
9
+ export declare function removeTypenameFromVariables(options?: RemoveTypenameFromVariablesOptions): ApolloLink;
10
+ export {};
11
+ //# sourceMappingURL=removeTypenameFromVariables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeTypenameFromVariables.d.ts","sourceRoot":"","sources":["../../../src/link/remove-typename/removeTypenameFromVariables.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC,eAAO,MAAM,IAAI,WAAW,CAAC;AAE7B,UAAU,kBAAkB;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,IAAI,GAAG,kBAAkB,CAAC;CACjD;AAED,MAAM,WAAW,kCAAkC;IACjD,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B;AAED,wBAAgB,2BAA2B,CACzC,OAAO,GAAE,kCAAwD,cAiDlE"}
@@ -0,0 +1,62 @@
1
+ import { __assign, __spreadArray } from "tslib";
2
+ import { Trie } from '@wry/trie';
3
+ import { wrap } from 'optimism';
4
+ import { Kind, visit } from 'graphql';
5
+ import { ApolloLink } from "../core/index.js";
6
+ import { canUseWeakMap, stripTypename } from "../../utilities/index.js";
7
+ export var KEEP = '__KEEP';
8
+ export function removeTypenameFromVariables(options) {
9
+ if (options === void 0) { options = Object.create(null); }
10
+ var except = options.except;
11
+ var trie = new Trie(canUseWeakMap, function () { return stripTypename.BREAK; });
12
+ if (except) {
13
+ collectPaths(except, function (path) { return trie.lookupArray(path); });
14
+ }
15
+ return new ApolloLink(function (operation, forward) {
16
+ var query = operation.query, variables = operation.variables;
17
+ if (!variables) {
18
+ return forward(operation);
19
+ }
20
+ if (!except) {
21
+ return forward(__assign(__assign({}, operation), { variables: stripTypename(variables) }));
22
+ }
23
+ var variableDefinitions = getVariableDefinitions(query);
24
+ return forward(__assign(__assign({}, operation), { variables: stripTypename(variables, {
25
+ keep: function (variablePath) {
26
+ var typename = variableDefinitions[variablePath[0]];
27
+ var withoutArrayIndexes = variablePath.filter(function (segment) { return typeof segment === 'string'; });
28
+ return trie.peekArray(__spreadArray([typename], withoutArrayIndexes.slice(1), true));
29
+ },
30
+ }) }));
31
+ });
32
+ }
33
+ var getVariableDefinitions = wrap(function (document) {
34
+ var definitions = {};
35
+ visit(document, {
36
+ VariableDefinition: function (node) {
37
+ definitions[node.variable.name.value] = unwrapType(node.type);
38
+ },
39
+ });
40
+ return definitions;
41
+ });
42
+ function unwrapType(node) {
43
+ switch (node.kind) {
44
+ case Kind.NON_NULL_TYPE:
45
+ return unwrapType(node.type);
46
+ case Kind.LIST_TYPE:
47
+ return unwrapType(node.type);
48
+ case Kind.NAMED_TYPE:
49
+ return node.name.value;
50
+ }
51
+ }
52
+ function collectPaths(config, register, path) {
53
+ if (path === void 0) { path = []; }
54
+ Object.entries(config).forEach(function (_a) {
55
+ var key = _a[0], value = _a[1];
56
+ if (value === KEEP) {
57
+ return register(__spreadArray(__spreadArray([], path, true), [key], false));
58
+ }
59
+ collectPaths(value, register, path.concat(key));
60
+ });
61
+ }
62
+ //# sourceMappingURL=removeTypenameFromVariables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeTypenameFromVariables.js","sourceRoot":"","sources":["../../../src/link/remove-typename/removeTypenameFromVariables.ts"],"names":[],"mappings":"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","sourcesContent":["import { Trie } from '@wry/trie';\nimport { wrap } from 'optimism';\nimport type { DocumentNode, TypeNode } from 'graphql';\nimport { Kind, visit } from 'graphql';\nimport { ApolloLink } from '../core';\nimport { canUseWeakMap, stripTypename } from '../../utilities';\n\nexport const KEEP = '__KEEP';\n\ninterface KeepTypenameConfig {\n [key: string]: typeof KEEP | KeepTypenameConfig;\n}\n\nexport interface RemoveTypenameFromVariablesOptions {\n except?: KeepTypenameConfig;\n}\n\nexport function removeTypenameFromVariables(\n options: RemoveTypenameFromVariablesOptions = Object.create(null)\n) {\n const { except } = options;\n\n const trie = new Trie<typeof stripTypename.BREAK>(\n canUseWeakMap,\n () => stripTypename.BREAK\n );\n\n if (except) {\n // Use `lookupArray` to store the path in the `trie` ahead of time. We use\n // `peekArray` when actually checking if a path is configured in the trie\n // to avoid creating additional lookup paths in the trie.\n collectPaths(except, (path) => trie.lookupArray(path));\n }\n\n return new ApolloLink((operation, forward) => {\n const { query, variables } = operation;\n\n if (!variables) {\n return forward(operation);\n }\n\n if (!except) {\n return forward({ ...operation, variables: stripTypename(variables) });\n }\n\n const variableDefinitions = getVariableDefinitions(query);\n\n return forward({\n ...operation,\n variables: stripTypename(variables, {\n keep: (variablePath) => {\n const typename = variableDefinitions[variablePath[0]];\n\n // The path configurations do not include array indexes, so we\n // omit them when checking the `trie` for a configured path\n const withoutArrayIndexes = variablePath.filter(\n (segment) => typeof segment === 'string'\n );\n\n // Our path configurations use the typename as the root so we need to\n // replace the first segment in the variable path with the typename\n // instead of the top-level variable name.\n return trie.peekArray([typename, ...withoutArrayIndexes.slice(1)]);\n },\n }),\n });\n });\n}\n\nconst getVariableDefinitions = wrap((document: DocumentNode) => {\n const definitions: Record<string, string> = {};\n\n visit(document, {\n VariableDefinition(node) {\n definitions[node.variable.name.value] = unwrapType(node.type);\n },\n });\n\n return definitions;\n});\n\nfunction unwrapType(node: TypeNode): string {\n switch (node.kind) {\n case Kind.NON_NULL_TYPE:\n return unwrapType(node.type);\n case Kind.LIST_TYPE:\n return unwrapType(node.type);\n case Kind.NAMED_TYPE:\n return node.name.value;\n }\n}\n\nfunction collectPaths(\n config: KeepTypenameConfig,\n register: (path: string[]) => void,\n path: string[] = []\n) {\n Object.entries(config).forEach(([key, value]) => {\n if (value === KEEP) {\n return register([...path, key]);\n }\n\n collectPaths(value, register, path.concat(key));\n });\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { Operation } from '../core';
1
+ import type { Operation } from '../core';
2
2
  export interface DelayFunction {
3
3
  (count: number, operation: Operation, error: any): number;
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"delayFunction.d.ts","sourceRoot":"","sources":["../../../src/link/retry/delayFunction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAMpC,MAAM,WAAW,aAAa;IAC5B,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,GAAG,MAAM,CAAC;CAC3D;AAED,MAAM,WAAW,oBAAoB;IAYnC,OAAO,CAAC,EAAE,MAAM,CAAC;IAQjB,GAAG,CAAC,EAAE,MAAM,CAAC;IAUb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,kBAAkB,CAChC,YAAY,CAAC,EAAE,oBAAoB,GAClC,aAAa,CAkBf"}
1
+ {"version":3,"file":"delayFunction.d.ts","sourceRoot":"","sources":["../../../src/link/retry/delayFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAMzC,MAAM,WAAW,aAAa;IAC5B,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,GAAG,MAAM,CAAC;CAC3D;AAED,MAAM,WAAW,oBAAoB;IAYnC,OAAO,CAAC,EAAE,MAAM,CAAC;IAQjB,GAAG,CAAC,EAAE,MAAM,CAAC;IAUb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,kBAAkB,CAChC,YAAY,CAAC,EAAE,oBAAoB,GAClC,aAAa,CAkBf"}
@@ -1 +1 @@
1
- {"version":3,"file":"delayFunction.js","sourceRoot":"","sources":["../../../src/link/retry/delayFunction.ts"],"names":[],"mappings":"AA2CA,MAAM,UAAU,kBAAkB,CAChC,YAAmC;IAE7B,IAAA,KAAmD,YAAY,IAAI,EAAE,EAAnE,eAAa,EAAb,OAAO,mBAAG,GAAG,KAAA,EAAE,cAAa,EAAb,MAAM,mBAAG,IAAI,KAAA,EAAE,WAAc,EAAd,GAAG,mBAAG,QAAQ,KAAuB,CAAC;IAK5E,IAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;IAEjD,OAAO,SAAS,aAAa,CAAC,KAAa;QACzC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,GAAG,SAAA,CAAC,EAAI,KAAK,CAAA,CAAC,CAAC;QAClD,IAAI,MAAM,EAAE;YAGV,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC;SAC/B;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { Operation } from '../core';\n\n/**\n * Advanced mode: a function that implements the strategy for calculating delays\n * for particular responses.\n */\nexport interface DelayFunction {\n (count: number, operation: Operation, error: any): number;\n}\n\nexport interface DelayFunctionOptions {\n /**\n * The number of milliseconds to wait before attempting the first retry.\n *\n * Delays will increase exponentially for each attempt. E.g. if this is\n * set to 100, subsequent retries will be delayed by 200, 400, 800, etc,\n * until they reach maxDelay.\n *\n * Note that if jittering is enabled, this is the _average_ delay.\n *\n * Defaults to 300.\n */\n initial?: number;\n\n /**\n * The maximum number of milliseconds that the link should wait for any\n * retry.\n *\n * Defaults to Infinity.\n */\n max?: number;\n\n /**\n * Whether delays between attempts should be randomized.\n *\n * This helps avoid thundering herd type situations by better distributing\n * load during major outages.\n *\n * Defaults to true.\n */\n jitter?: boolean;\n}\n\nexport function buildDelayFunction(\n delayOptions?: DelayFunctionOptions,\n): DelayFunction {\n const { initial = 300, jitter = true, max = Infinity } = delayOptions || {};\n // If we're jittering, baseDelay is half of the maximum delay for that\n // attempt (and is, on average, the delay we will encounter).\n // If we're not jittering, adjust baseDelay so that the first attempt\n // lines up with initialDelay, for everyone's sanity.\n const baseDelay = jitter ? initial : initial / 2;\n\n return function delayFunction(count: number) {\n let delay = Math.min(max, baseDelay * 2 ** count);\n if (jitter) {\n // We opt for a full jitter approach for a mostly uniform distribution,\n // but bound it within initialDelay and delay for everyone's sanity.\n delay = Math.random() * delay;\n }\n\n return delay;\n };\n}\n"]}
1
+ {"version":3,"file":"delayFunction.js","sourceRoot":"","sources":["../../../src/link/retry/delayFunction.ts"],"names":[],"mappings":"AA2CA,MAAM,UAAU,kBAAkB,CAChC,YAAmC;IAE7B,IAAA,KAAmD,YAAY,IAAI,EAAE,EAAnE,eAAa,EAAb,OAAO,mBAAG,GAAG,KAAA,EAAE,cAAa,EAAb,MAAM,mBAAG,IAAI,KAAA,EAAE,WAAc,EAAd,GAAG,mBAAG,QAAQ,KAAuB,CAAC;IAK5E,IAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;IAEjD,OAAO,SAAS,aAAa,CAAC,KAAa;QACzC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,GAAG,SAAA,CAAC,EAAI,KAAK,CAAA,CAAC,CAAC;QAClD,IAAI,MAAM,EAAE;YAGV,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC;SAC/B;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import type { Operation } from '../core';\n\n/**\n * Advanced mode: a function that implements the strategy for calculating delays\n * for particular responses.\n */\nexport interface DelayFunction {\n (count: number, operation: Operation, error: any): number;\n}\n\nexport interface DelayFunctionOptions {\n /**\n * The number of milliseconds to wait before attempting the first retry.\n *\n * Delays will increase exponentially for each attempt. E.g. if this is\n * set to 100, subsequent retries will be delayed by 200, 400, 800, etc,\n * until they reach maxDelay.\n *\n * Note that if jittering is enabled, this is the _average_ delay.\n *\n * Defaults to 300.\n */\n initial?: number;\n\n /**\n * The maximum number of milliseconds that the link should wait for any\n * retry.\n *\n * Defaults to Infinity.\n */\n max?: number;\n\n /**\n * Whether delays between attempts should be randomized.\n *\n * This helps avoid thundering herd type situations by better distributing\n * load during major outages.\n *\n * Defaults to true.\n */\n jitter?: boolean;\n}\n\nexport function buildDelayFunction(\n delayOptions?: DelayFunctionOptions,\n): DelayFunction {\n const { initial = 300, jitter = true, max = Infinity } = delayOptions || {};\n // If we're jittering, baseDelay is half of the maximum delay for that\n // attempt (and is, on average, the delay we will encounter).\n // If we're not jittering, adjust baseDelay so that the first attempt\n // lines up with initialDelay, for everyone's sanity.\n const baseDelay = jitter ? initial : initial / 2;\n\n return function delayFunction(count: number) {\n let delay = Math.min(max, baseDelay * 2 ** count);\n if (jitter) {\n // We opt for a full jitter approach for a mostly uniform distribution,\n // but bound it within initialDelay and delay for everyone's sanity.\n delay = Math.random() * delay;\n }\n\n return delay;\n };\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { Operation } from '../core';
1
+ import type { Operation } from '../core';
2
2
  export interface RetryFunction {
3
3
  (count: number, operation: Operation, error: any): boolean | Promise<boolean>;
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"retryFunction.d.ts","sourceRoot":"","sources":["../../../src/link/retry/retryFunction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAMpC,MAAM,WAAW,aAAa;IAC5B,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/E;AAED,MAAM,WAAW,oBAAoB;IASnC,GAAG,CAAC,EAAE,MAAM,CAAC;IAUb,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5E;AAED,wBAAgB,kBAAkB,CAChC,YAAY,CAAC,EAAE,oBAAoB,GAClC,aAAa,CAMf"}
1
+ {"version":3,"file":"retryFunction.d.ts","sourceRoot":"","sources":["../../../src/link/retry/retryFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAMzC,MAAM,WAAW,aAAa;IAC5B,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/E;AAED,MAAM,WAAW,oBAAoB;IASnC,GAAG,CAAC,EAAE,MAAM,CAAC;IAUb,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5E;AAED,wBAAgB,kBAAkB,CAChC,YAAY,CAAC,EAAE,oBAAoB,GAClC,aAAa,CAMf"}
@@ -1 +1 @@
1
- {"version":3,"file":"retryFunction.js","sourceRoot":"","sources":["../../../src/link/retry/retryFunction.ts"],"names":[],"mappings":"AAgCA,MAAM,UAAU,kBAAkB,CAChC,YAAmC;IAE7B,IAAA,KAAuB,YAAY,IAAK,EAA2B,EAAjE,OAAO,aAAA,EAAE,WAAO,EAAP,GAAG,mBAAG,CAAC,KAAiD,CAAC;IAC1E,OAAO,SAAS,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK;QACnD,IAAI,KAAK,IAAI,GAAG;YAAE,OAAO,KAAK,CAAC;QAC/B,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACvD,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { Operation } from '../core';\n\n/**\n * Advanced mode: a function that determines both whether a particular\n * response should be retried.\n */\nexport interface RetryFunction {\n (count: number, operation: Operation, error: any): boolean | Promise<boolean>;\n}\n\nexport interface RetryFunctionOptions {\n /**\n * The max number of times to try a single operation before giving up.\n *\n * Note that this INCLUDES the initial request as part of the count.\n * E.g. maxTries of 1 indicates no retrying should occur.\n *\n * Defaults to 5. Pass Infinity for infinite retries.\n */\n max?: number;\n\n /**\n * Predicate function that determines whether a particular error should\n * trigger a retry.\n *\n * For example, you may want to not retry 4xx class HTTP errors.\n *\n * By default, all errors are retried.\n */\n retryIf?: (error: any, operation: Operation) => boolean | Promise<boolean>;\n}\n\nexport function buildRetryFunction(\n retryOptions?: RetryFunctionOptions,\n): RetryFunction {\n const { retryIf, max = 5 } = retryOptions || ({} as RetryFunctionOptions);\n return function retryFunction(count, operation, error) {\n if (count >= max) return false;\n return retryIf ? retryIf(error, operation) : !!error;\n };\n}\n"]}
1
+ {"version":3,"file":"retryFunction.js","sourceRoot":"","sources":["../../../src/link/retry/retryFunction.ts"],"names":[],"mappings":"AAgCA,MAAM,UAAU,kBAAkB,CAChC,YAAmC;IAE7B,IAAA,KAAuB,YAAY,IAAK,EAA2B,EAAjE,OAAO,aAAA,EAAE,WAAO,EAAP,GAAG,mBAAG,CAAC,KAAiD,CAAC;IAC1E,OAAO,SAAS,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK;QACnD,IAAI,KAAK,IAAI,GAAG;YAAE,OAAO,KAAK,CAAC;QAC/B,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACvD,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import type { Operation } from '../core';\n\n/**\n * Advanced mode: a function that determines both whether a particular\n * response should be retried.\n */\nexport interface RetryFunction {\n (count: number, operation: Operation, error: any): boolean | Promise<boolean>;\n}\n\nexport interface RetryFunctionOptions {\n /**\n * The max number of times to try a single operation before giving up.\n *\n * Note that this INCLUDES the initial request as part of the count.\n * E.g. maxTries of 1 indicates no retrying should occur.\n *\n * Defaults to 5. Pass Infinity for infinite retries.\n */\n max?: number;\n\n /**\n * Predicate function that determines whether a particular error should\n * trigger a retry.\n *\n * For example, you may want to not retry 4xx class HTTP errors.\n *\n * By default, all errors are retried.\n */\n retryIf?: (error: any, operation: Operation) => boolean | Promise<boolean>;\n}\n\nexport function buildRetryFunction(\n retryOptions?: RetryFunctionOptions,\n): RetryFunction {\n const { retryIf, max = 5 } = retryOptions || ({} as RetryFunctionOptions);\n return function retryFunction(count, operation, error) {\n if (count >= max) return false;\n return retryIf ? retryIf(error, operation) : !!error;\n };\n}\n"]}
@@ -1,7 +1,8 @@
1
- import { ApolloLink, Operation, FetchResult, NextLink } from '../core';
1
+ import type { Operation, FetchResult, NextLink } from '../core';
2
+ import { ApolloLink } from '../core';
2
3
  import { Observable } from '../../utilities';
3
- import { DelayFunction, DelayFunctionOptions } from './delayFunction';
4
- import { RetryFunction, RetryFunctionOptions } from './retryFunction';
4
+ import type { DelayFunction, DelayFunctionOptions } from './delayFunction';
5
+ import type { RetryFunction, RetryFunctionOptions } from './retryFunction';
5
6
  export declare namespace RetryLink {
6
7
  interface Options {
7
8
  delay?: DelayFunctionOptions | DelayFunction;
@@ -1 +1 @@
1
- {"version":3,"file":"retryLink.d.ts","sourceRoot":"","sources":["../../../src/link/retry/retryLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,EAAE,UAAU,EAAoC,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EACL,aAAa,EACb,oBAAoB,EAErB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,aAAa,EACb,oBAAoB,EAErB,MAAM,iBAAiB,CAAC;AAEzB,yBAAiB,SAAS,CAAC;IACzB,UAAiB,OAAO;QAItB,KAAK,CAAC,EAAE,oBAAoB,GAAG,aAAa,CAAC;QAK7C,QAAQ,CAAC,EAAE,oBAAoB,GAAG,aAAa,CAAC;KACjD;CACF;AAsJD,qBAAa,SAAU,SAAQ,UAAU;IACvC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,OAAO,CAAgB;gBAEnB,OAAO,CAAC,EAAE,SAAS,CAAC,OAAO;IAShC,OAAO,CACZ,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,GACjB,UAAU,CAAC,WAAW,CAAC;CAgB3B"}
1
+ {"version":3,"file":"retryLink.d.ts","sourceRoot":"","sources":["../../../src/link/retry/retryLink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EAAC,MAAM,iBAAiB,CAAC;AAI/C,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EAAC,MAAM,iBAAiB,CAAC;AAK/C,yBAAiB,SAAS,CAAC;IACzB,UAAiB,OAAO;QAItB,KAAK,CAAC,EAAE,oBAAoB,GAAG,aAAa,CAAC;QAK7C,QAAQ,CAAC,EAAE,oBAAoB,GAAG,aAAa,CAAC;KACjD;CACF;AAsJD,qBAAa,SAAU,SAAQ,UAAU;IACvC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,OAAO,CAAgB;gBAEnB,OAAO,CAAC,EAAE,SAAS,CAAC,OAAO;IAShC,OAAO,CACZ,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,GACjB,UAAU,CAAC,WAAW,CAAC;CAgB3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"retryLink.js","sourceRoot":"","sources":["../../../src/link/retry/retryLink.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAoC,MAAM,SAAS,CAAC;AACvE,OAAO,EAAE,UAAU,EAAoC,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAGL,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAGL,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAmBzB;IAUE,4BACU,SAAoB,EACpB,QAAkB,EAClB,QAAuB,EACvB,OAAsB;QAJhC,iBAKI;QAJM,cAAS,GAAT,SAAS,CAAW;QACpB,aAAQ,GAAR,QAAQ,CAAU;QAClB,aAAQ,GAAR,QAAQ,CAAe;QACvB,YAAO,GAAP,OAAO,CAAe;QAbxB,eAAU,GAAW,CAAC,CAAC;QACvB,WAAM,GAAU,EAAE,CAAC;QAEnB,aAAQ,GAAG,KAAK,CAAC;QACjB,aAAQ,GAAG,KAAK,CAAC;QACjB,cAAS,GAAgC,EAAE,CAAC;QAC5C,wBAAmB,GAAkC,IAAI,CAAC;QAyF1D,WAAM,GAAG,UAAC,KAAU;YAC1B,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,KAAuB,UAAc,EAAd,KAAA,KAAI,CAAC,SAAS,EAAd,cAAc,EAAd,IAAc,EAAE;gBAAlC,IAAM,QAAQ,SAAA;gBACjB,IAAI,CAAC,QAAQ;oBAAE,SAAS;gBACxB,QAAQ,CAAC,IAAK,CAAC,KAAK,CAAC,CAAC;aACvB;QACH,CAAC,CAAC;QAEM,eAAU,GAAG;YACnB,KAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,KAAuB,UAAc,EAAd,KAAA,KAAI,CAAC,SAAS,EAAd,cAAc,EAAd,IAAc,EAAE;gBAAlC,IAAM,QAAQ,SAAA;gBACjB,IAAI,CAAC,QAAQ;oBAAE,SAAS;gBACxB,QAAQ,CAAC,QAAS,EAAE,CAAC;aACtB;QACH,CAAC,CAAC;QAEM,YAAO,GAAG,UAAO,KAAU;;;;;wBACjC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;wBAGD,WAAM,IAAI,CAAC,OAAO,CACpC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,SAAS,EACd,KAAK,CACN,EAAA;;wBAJK,WAAW,GAAG,SAInB;wBACD,IAAI,WAAW,EAAE;4BACf,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;4BAC1E,WAAO;yBACR;wBAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;wBACnB,WAAqC,EAAd,KAAA,IAAI,CAAC,SAAS,EAAd,cAAc,EAAd,IAAc,EAAE;4BAA5B,QAAQ;4BACjB,IAAI,CAAC,QAAQ;gCAAE,SAAS;4BACxB,QAAQ,CAAC,KAAM,CAAC,KAAK,CAAC,CAAC;yBACxB;;;;aACF,CAAC;IApHC,CAAC;IAQG,sCAAS,GAAhB,UAAiB,QAA0B;QACzC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;SACH;QACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAG9B,KAAoB,UAAW,EAAX,KAAA,IAAI,CAAC,MAAM,EAAX,cAAW,EAAX,IAAW,EAAE;YAA5B,IAAM,KAAK,SAAA;YACd,QAAQ,CAAC,IAAK,CAAC,KAAK,CAAC,CAAC;SACvB;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,QAAQ,CAAC,QAAS,EAAE,CAAC;SACtB;aAAM,IAAI,IAAI,CAAC,KAAK,EAAE;YACrB,QAAQ,CAAC,KAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC7B;IACH,CAAC;IAQM,wCAAW,GAAlB,UAAmB,QAA0B;QAC3C,IAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,KAAK,GAAG,CAAC,EAAE;YACb,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;SACH;QAGD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAG7B,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,IAAI,EAAV,CAAU,CAAC,EAAE;YACzC,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;IACH,CAAC;IAKM,kCAAK,GAAZ;QACE,IAAI,IAAI,CAAC,mBAAmB;YAAE,OAAO;QAErC,IAAI,CAAC,GAAG,EAAE,CAAC;IACb,CAAC;IAKM,mCAAM,GAAb;QACE,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;SACxC;QACD,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAEO,gCAAG,GAAX;QACE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC;YACjE,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,KAAK,EAAE,IAAI,CAAC,OAAO;YACnB,QAAQ,EAAE,IAAI,CAAC,UAAU;SAC1B,CAAC,CAAC;IACL,CAAC;IAuCO,0CAAa,GAArB,UAAsB,KAAa;QAAnC,iBASC;QARC,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;SACnE;QAED,IAAI,CAAC,OAAO,GAAI,UAAU,CAAC;YACzB,KAAI,CAAC,OAAO,GAAG,SAAS,CAAC;YACzB,KAAI,CAAC,GAAG,EAAE,CAAC;QACb,CAAC,EAAE,KAAK,CAAmB,CAAC;IAC9B,CAAC;IACH,yBAAC;AAAD,CAAC,AA/ID,IA+IC;AAED;IAA+B,6BAAU;IAIvC,mBAAY,OAA2B;QAAvC,YACE,iBAAO,SAMR;QALO,IAAA,KAAsB,OAAO,IAAK,EAAwB,EAAxD,QAAQ,cAAA,EAAE,KAAK,WAAyC,CAAC;QACjE,KAAI,CAAC,QAAQ;YACX,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAClE,KAAI,CAAC,OAAO;YACV,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;;IAC7E,CAAC;IAEM,2BAAO,GAAd,UACE,SAAoB,EACpB,QAAkB;QAElB,IAAM,SAAS,GAAG,IAAI,kBAAkB,CACtC,SAAS,EACT,QAAQ,EACR,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,OAAO,CACb,CAAC;QACF,SAAS,CAAC,KAAK,EAAE,CAAC;QAElB,OAAO,IAAI,UAAU,CAAC,UAAA,QAAQ;YAC5B,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC9B,OAAO;gBACL,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAClC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IACH,gBAAC;AAAD,CAAC,AAhCD,CAA+B,UAAU,GAgCxC","sourcesContent":["import { ApolloLink, Operation, FetchResult, NextLink } from '../core';\nimport { Observable, Observer, ObservableSubscription } from '../../utilities';\nimport {\n DelayFunction,\n DelayFunctionOptions,\n buildDelayFunction,\n} from './delayFunction';\nimport {\n RetryFunction,\n RetryFunctionOptions,\n buildRetryFunction,\n} from './retryFunction';\n\nexport namespace RetryLink {\n export interface Options {\n /**\n * Configuration for the delay strategy to use, or a custom delay strategy.\n */\n delay?: DelayFunctionOptions | DelayFunction;\n\n /**\n * Configuration for the retry strategy to use, or a custom retry strategy.\n */\n attempts?: RetryFunctionOptions | RetryFunction;\n }\n}\n\n/**\n * Tracking and management of operations that may be (or currently are) retried.\n */\nclass RetryableOperation<TValue = any> {\n private retryCount: number = 0;\n private values: any[] = [];\n private error: any;\n private complete = false;\n private canceled = false;\n private observers: (Observer<TValue> | null)[] = [];\n private currentSubscription: ObservableSubscription | null = null;\n private timerId: number | undefined;\n\n constructor(\n private operation: Operation,\n private nextLink: NextLink,\n private delayFor: DelayFunction,\n private retryIf: RetryFunction,\n ) {}\n\n /**\n * Register a new observer for this operation.\n *\n * If the operation has previously emitted other events, they will be\n * immediately triggered for the observer.\n */\n public subscribe(observer: Observer<TValue>) {\n if (this.canceled) {\n throw new Error(\n `Subscribing to a retryable link that was canceled is not supported`,\n );\n }\n this.observers.push(observer);\n\n // If we've already begun, catch this observer up.\n for (const value of this.values) {\n observer.next!(value);\n }\n\n if (this.complete) {\n observer.complete!();\n } else if (this.error) {\n observer.error!(this.error);\n }\n }\n\n /**\n * Remove a previously registered observer from this operation.\n *\n * If no observers remain, the operation will stop retrying, and unsubscribe\n * from its downstream link.\n */\n public unsubscribe(observer: Observer<TValue>) {\n const index = this.observers.indexOf(observer);\n if (index < 0) {\n throw new Error(\n `RetryLink BUG! Attempting to unsubscribe unknown observer!`,\n );\n }\n // Note that we are careful not to change the order of length of the array,\n // as we are often mid-iteration when calling this method.\n this.observers[index] = null;\n\n // If this is the last observer, we're done.\n if (this.observers.every(o => o === null)) {\n this.cancel();\n }\n }\n\n /**\n * Start the initial request.\n */\n public start() {\n if (this.currentSubscription) return; // Already started.\n\n this.try();\n }\n\n /**\n * Stop retrying for the operation, and cancel any in-progress requests.\n */\n public cancel() {\n if (this.currentSubscription) {\n this.currentSubscription.unsubscribe();\n }\n clearTimeout(this.timerId);\n this.timerId = undefined;\n this.currentSubscription = null;\n this.canceled = true;\n }\n\n private try() {\n this.currentSubscription = this.nextLink(this.operation).subscribe({\n next: this.onNext,\n error: this.onError,\n complete: this.onComplete,\n });\n }\n\n private onNext = (value: any) => {\n this.values.push(value);\n for (const observer of this.observers) {\n if (!observer) continue;\n observer.next!(value);\n }\n };\n\n private onComplete = () => {\n this.complete = true;\n for (const observer of this.observers) {\n if (!observer) continue;\n observer.complete!();\n }\n };\n\n private onError = async (error: any) => {\n this.retryCount += 1;\n\n // Should we retry?\n const shouldRetry = await this.retryIf(\n this.retryCount,\n this.operation,\n error,\n );\n if (shouldRetry) {\n this.scheduleRetry(this.delayFor(this.retryCount, this.operation, error));\n return;\n }\n\n this.error = error;\n for (const observer of this.observers) {\n if (!observer) continue;\n observer.error!(error);\n }\n };\n\n private scheduleRetry(delay: number) {\n if (this.timerId) {\n throw new Error(`RetryLink BUG! Encountered overlapping retries`);\n }\n\n this.timerId = (setTimeout(() => {\n this.timerId = undefined;\n this.try();\n }, delay) as any) as number;\n }\n}\n\nexport class RetryLink extends ApolloLink {\n private delayFor: DelayFunction;\n private retryIf: RetryFunction;\n\n constructor(options?: RetryLink.Options) {\n super();\n const { attempts, delay } = options || ({} as RetryLink.Options);\n this.delayFor =\n typeof delay === 'function' ? delay : buildDelayFunction(delay);\n this.retryIf =\n typeof attempts === 'function' ? attempts : buildRetryFunction(attempts);\n }\n\n public request(\n operation: Operation,\n nextLink: NextLink,\n ): Observable<FetchResult> {\n const retryable = new RetryableOperation(\n operation,\n nextLink,\n this.delayFor,\n this.retryIf,\n );\n retryable.start();\n\n return new Observable(observer => {\n retryable.subscribe(observer);\n return () => {\n retryable.unsubscribe(observer);\n };\n });\n }\n}\n"]}
1
+ {"version":3,"file":"retryLink.js","sourceRoot":"","sources":["../../../src/link/retry/retryLink.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Operation, FetchResult, NextLink } from '../core';\nimport { ApolloLink } from '../core';\nimport type { Observer, ObservableSubscription } from '../../utilities';\nimport { Observable } from '../../utilities';\nimport type {\n DelayFunction,\n DelayFunctionOptions} from './delayFunction';\nimport {\n buildDelayFunction,\n} from './delayFunction';\nimport type {\n RetryFunction,\n RetryFunctionOptions} from './retryFunction';\nimport {\n buildRetryFunction,\n} from './retryFunction';\n\nexport namespace RetryLink {\n export interface Options {\n /**\n * Configuration for the delay strategy to use, or a custom delay strategy.\n */\n delay?: DelayFunctionOptions | DelayFunction;\n\n /**\n * Configuration for the retry strategy to use, or a custom retry strategy.\n */\n attempts?: RetryFunctionOptions | RetryFunction;\n }\n}\n\n/**\n * Tracking and management of operations that may be (or currently are) retried.\n */\nclass RetryableOperation<TValue = any> {\n private retryCount: number = 0;\n private values: any[] = [];\n private error: any;\n private complete = false;\n private canceled = false;\n private observers: (Observer<TValue> | null)[] = [];\n private currentSubscription: ObservableSubscription | null = null;\n private timerId: number | undefined;\n\n constructor(\n private operation: Operation,\n private nextLink: NextLink,\n private delayFor: DelayFunction,\n private retryIf: RetryFunction,\n ) {}\n\n /**\n * Register a new observer for this operation.\n *\n * If the operation has previously emitted other events, they will be\n * immediately triggered for the observer.\n */\n public subscribe(observer: Observer<TValue>) {\n if (this.canceled) {\n throw new Error(\n `Subscribing to a retryable link that was canceled is not supported`,\n );\n }\n this.observers.push(observer);\n\n // If we've already begun, catch this observer up.\n for (const value of this.values) {\n observer.next!(value);\n }\n\n if (this.complete) {\n observer.complete!();\n } else if (this.error) {\n observer.error!(this.error);\n }\n }\n\n /**\n * Remove a previously registered observer from this operation.\n *\n * If no observers remain, the operation will stop retrying, and unsubscribe\n * from its downstream link.\n */\n public unsubscribe(observer: Observer<TValue>) {\n const index = this.observers.indexOf(observer);\n if (index < 0) {\n throw new Error(\n `RetryLink BUG! Attempting to unsubscribe unknown observer!`,\n );\n }\n // Note that we are careful not to change the order of length of the array,\n // as we are often mid-iteration when calling this method.\n this.observers[index] = null;\n\n // If this is the last observer, we're done.\n if (this.observers.every(o => o === null)) {\n this.cancel();\n }\n }\n\n /**\n * Start the initial request.\n */\n public start() {\n if (this.currentSubscription) return; // Already started.\n\n this.try();\n }\n\n /**\n * Stop retrying for the operation, and cancel any in-progress requests.\n */\n public cancel() {\n if (this.currentSubscription) {\n this.currentSubscription.unsubscribe();\n }\n clearTimeout(this.timerId);\n this.timerId = undefined;\n this.currentSubscription = null;\n this.canceled = true;\n }\n\n private try() {\n this.currentSubscription = this.nextLink(this.operation).subscribe({\n next: this.onNext,\n error: this.onError,\n complete: this.onComplete,\n });\n }\n\n private onNext = (value: any) => {\n this.values.push(value);\n for (const observer of this.observers) {\n if (!observer) continue;\n observer.next!(value);\n }\n };\n\n private onComplete = () => {\n this.complete = true;\n for (const observer of this.observers) {\n if (!observer) continue;\n observer.complete!();\n }\n };\n\n private onError = async (error: any) => {\n this.retryCount += 1;\n\n // Should we retry?\n const shouldRetry = await this.retryIf(\n this.retryCount,\n this.operation,\n error,\n );\n if (shouldRetry) {\n this.scheduleRetry(this.delayFor(this.retryCount, this.operation, error));\n return;\n }\n\n this.error = error;\n for (const observer of this.observers) {\n if (!observer) continue;\n observer.error!(error);\n }\n };\n\n private scheduleRetry(delay: number) {\n if (this.timerId) {\n throw new Error(`RetryLink BUG! Encountered overlapping retries`);\n }\n\n this.timerId = (setTimeout(() => {\n this.timerId = undefined;\n this.try();\n }, delay) as any) as number;\n }\n}\n\nexport class RetryLink extends ApolloLink {\n private delayFor: DelayFunction;\n private retryIf: RetryFunction;\n\n constructor(options?: RetryLink.Options) {\n super();\n const { attempts, delay } = options || ({} as RetryLink.Options);\n this.delayFor =\n typeof delay === 'function' ? delay : buildDelayFunction(delay);\n this.retryIf =\n typeof attempts === 'function' ? attempts : buildRetryFunction(attempts);\n }\n\n public request(\n operation: Operation,\n nextLink: NextLink,\n ): Observable<FetchResult> {\n const retryable = new RetryableOperation(\n operation,\n nextLink,\n this.delayFor,\n this.retryIf,\n );\n retryable.start();\n\n return new Observable(observer => {\n retryable.subscribe(observer);\n return () => {\n retryable.unsubscribe(observer);\n };\n });\n }\n}\n"]}
@@ -1,5 +1,6 @@
1
- import { GraphQLSchema } from 'graphql';
2
- import { ApolloLink, Operation, FetchResult } from '../core';
1
+ import type { GraphQLSchema } from 'graphql';
2
+ import type { Operation, FetchResult } from '../core';
3
+ import { ApolloLink } from '../core';
3
4
  import { Observable } from '../../utilities';
4
5
  export declare namespace SchemaLink {
5
6
  type ResolverContext = Record<string, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/link/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,aAAa,EAAE,MAAM,SAAS,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,yBAAiB,UAAU,CAAC;IAC1B,KAAY,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClD,KAAY,uBAAuB,GAAG,CACpC,SAAS,EAAE,SAAS,KACjB,eAAe,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC;IAEpD,UAAiB,OAAO;QAItB,MAAM,EAAE,aAAa,CAAC;QAKtB,SAAS,CAAC,EAAE,GAAG,CAAC;QAKhB,OAAO,CAAC,EAAE,eAAe,GAAG,uBAAuB,CAAC;QAMpD,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB;CACF;AAED,qBAAa,UAAW,SAAQ,UAAU;IACjC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrC,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3C,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvC,QAAQ,EAAE,OAAO,CAAC;gBAEb,OAAO,EAAE,UAAU,CAAC,OAAO;IAQhC,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC;CAoC9D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/link/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG7C,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,yBAAiB,UAAU,CAAC;IAC1B,KAAY,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClD,KAAY,uBAAuB,GAAG,CACpC,SAAS,EAAE,SAAS,KACjB,eAAe,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC;IAEpD,UAAiB,OAAO;QAItB,MAAM,EAAE,aAAa,CAAC;QAKtB,SAAS,CAAC,EAAE,GAAG,CAAC;QAKhB,OAAO,CAAC,EAAE,eAAe,GAAG,uBAAuB,CAAC;QAMpD,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB;CACF;AAED,qBAAa,UAAW,SAAQ,UAAU;IACjC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrC,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3C,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvC,QAAQ,EAAE,OAAO,CAAC;gBAEb,OAAO,EAAE,UAAU,CAAC,OAAO;IAQhC,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC;CAoC9D"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/link/schema/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAiB,MAAM,SAAS,CAAC;AAE3D,OAAO,EAAE,UAAU,EAA0B,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAgC7C;IAAgC,8BAAU;IAMxC,oBAAY,OAA2B;QAAvC,YACE,iBAAO,SAKR;QAJC,KAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,KAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,KAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;;IACrC,CAAC;IAEM,4BAAO,GAAd,UAAe,SAAoB;QAAnC,iBAmCC;QAlCC,OAAO,IAAI,UAAU,CAAc,UAAA,QAAQ;YACzC,IAAI,OAAO,CACT,UAAA,OAAO,IAAI,OAAA,OAAO,CAChB,OAAO,KAAI,CAAC,OAAO,KAAK,UAAU;gBAChC,CAAC,CAAC,KAAI,CAAC,OAAO,CAAC,SAAS,CAAC;gBACzB,CAAC,CAAC,KAAI,CAAC,OAAO,CACjB,EAJU,CAIV,CACF,CAAC,IAAI,CAAC,UAAA,OAAO;gBACZ,IAAI,KAAI,CAAC,QAAQ,EAAE;oBACjB,IAAM,gBAAgB,GAAG,QAAQ,CAAC,KAAI,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;oBAChE,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC/B,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;qBACrC;iBACF;gBAED,OAAO,OAAO,CAAC;oBACb,MAAM,EAAE,KAAI,CAAC,MAAM;oBACnB,QAAQ,EAAE,SAAS,CAAC,KAAK;oBACzB,SAAS,EAAE,KAAI,CAAC,SAAS;oBACzB,YAAY,EAAE,OAAO;oBACrB,cAAc,EAAE,SAAS,CAAC,SAAS;oBACnC,aAAa,EAAE,SAAS,CAAC,aAAa;iBACvC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC,IAAI,CAAC,UAAA,IAAI;gBACV,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;oBACpB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACpB,QAAQ,CAAC,QAAQ,EAAE,CAAC;iBACrB;YACH,CAAC,CAAC,CAAC,KAAK,CAAC,UAAA,KAAK;gBACZ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;oBACpB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;iBACvB;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IACH,iBAAC;AAAD,CAAC,AAlDD,CAAgC,UAAU,GAkDzC","sourcesContent":["import { validate, execute, GraphQLSchema } from 'graphql';\n\nimport { ApolloLink, Operation, FetchResult } from '../core';\nimport { Observable } from '../../utilities';\n\nexport namespace SchemaLink {\n export type ResolverContext = Record<string, any>;\n export type ResolverContextFunction = (\n operation: Operation,\n ) => ResolverContext | PromiseLike<ResolverContext>;\n\n export interface Options {\n /**\n * The schema to generate responses from.\n */\n schema: GraphQLSchema;\n\n /**\n * The root value to use when generating responses.\n */\n rootValue?: any;\n\n /**\n * A context to provide to resolvers declared within the schema.\n */\n context?: ResolverContext | ResolverContextFunction;\n\n /**\n * Validate incoming queries against the given schema, returning\n * validation errors as a GraphQL server would.\n */\n validate?: boolean;\n }\n}\n\nexport class SchemaLink extends ApolloLink {\n public schema: SchemaLink.Options[\"schema\"];\n public rootValue: SchemaLink.Options[\"rootValue\"];\n public context: SchemaLink.Options[\"context\"];\n public validate: boolean;\n\n constructor(options: SchemaLink.Options) {\n super();\n this.schema = options.schema;\n this.rootValue = options.rootValue;\n this.context = options.context;\n this.validate = !!options.validate;\n }\n\n public request(operation: Operation): Observable<FetchResult> {\n return new Observable<FetchResult>(observer => {\n new Promise<SchemaLink.ResolverContext>(\n resolve => resolve(\n typeof this.context === 'function'\n ? this.context(operation)\n : this.context\n )\n ).then(context => {\n if (this.validate) {\n const validationErrors = validate(this.schema, operation.query);\n if (validationErrors.length > 0) {\n return { errors: validationErrors };\n }\n }\n\n return execute({\n schema: this.schema,\n document: operation.query,\n rootValue: this.rootValue,\n contextValue: context,\n variableValues: operation.variables,\n operationName: operation.operationName,\n });\n }).then(data => {\n if (!observer.closed) {\n observer.next(data);\n observer.complete();\n }\n }).catch(error => {\n if (!observer.closed) {\n observer.error(error);\n }\n });\n });\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/link/schema/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAG5C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAgC7C;IAAgC,8BAAU;IAMxC,oBAAY,OAA2B;QAAvC,YACE,iBAAO,SAKR;QAJC,KAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,KAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,KAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;;IACrC,CAAC;IAEM,4BAAO,GAAd,UAAe,SAAoB;QAAnC,iBAmCC;QAlCC,OAAO,IAAI,UAAU,CAAc,UAAA,QAAQ;YACzC,IAAI,OAAO,CACT,UAAA,OAAO,IAAI,OAAA,OAAO,CAChB,OAAO,KAAI,CAAC,OAAO,KAAK,UAAU;gBAChC,CAAC,CAAC,KAAI,CAAC,OAAO,CAAC,SAAS,CAAC;gBACzB,CAAC,CAAC,KAAI,CAAC,OAAO,CACjB,EAJU,CAIV,CACF,CAAC,IAAI,CAAC,UAAA,OAAO;gBACZ,IAAI,KAAI,CAAC,QAAQ,EAAE;oBACjB,IAAM,gBAAgB,GAAG,QAAQ,CAAC,KAAI,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;oBAChE,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC/B,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;qBACrC;iBACF;gBAED,OAAO,OAAO,CAAC;oBACb,MAAM,EAAE,KAAI,CAAC,MAAM;oBACnB,QAAQ,EAAE,SAAS,CAAC,KAAK;oBACzB,SAAS,EAAE,KAAI,CAAC,SAAS;oBACzB,YAAY,EAAE,OAAO;oBACrB,cAAc,EAAE,SAAS,CAAC,SAAS;oBACnC,aAAa,EAAE,SAAS,CAAC,aAAa;iBACvC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC,IAAI,CAAC,UAAA,IAAI;gBACV,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;oBACpB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACpB,QAAQ,CAAC,QAAQ,EAAE,CAAC;iBACrB;YACH,CAAC,CAAC,CAAC,KAAK,CAAC,UAAA,KAAK;gBACZ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;oBACpB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;iBACvB;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IACH,iBAAC;AAAD,CAAC,AAlDD,CAAgC,UAAU,GAkDzC","sourcesContent":["import type { GraphQLSchema } from 'graphql';\nimport { validate, execute } from 'graphql';\n\nimport type { Operation, FetchResult } from '../core';\nimport { ApolloLink } from '../core';\nimport { Observable } from '../../utilities';\n\nexport namespace SchemaLink {\n export type ResolverContext = Record<string, any>;\n export type ResolverContextFunction = (\n operation: Operation,\n ) => ResolverContext | PromiseLike<ResolverContext>;\n\n export interface Options {\n /**\n * The schema to generate responses from.\n */\n schema: GraphQLSchema;\n\n /**\n * The root value to use when generating responses.\n */\n rootValue?: any;\n\n /**\n * A context to provide to resolvers declared within the schema.\n */\n context?: ResolverContext | ResolverContextFunction;\n\n /**\n * Validate incoming queries against the given schema, returning\n * validation errors as a GraphQL server would.\n */\n validate?: boolean;\n }\n}\n\nexport class SchemaLink extends ApolloLink {\n public schema: SchemaLink.Options[\"schema\"];\n public rootValue: SchemaLink.Options[\"rootValue\"];\n public context: SchemaLink.Options[\"context\"];\n public validate: boolean;\n\n constructor(options: SchemaLink.Options) {\n super();\n this.schema = options.schema;\n this.rootValue = options.rootValue;\n this.context = options.context;\n this.validate = !!options.validate;\n }\n\n public request(operation: Operation): Observable<FetchResult> {\n return new Observable<FetchResult>(observer => {\n new Promise<SchemaLink.ResolverContext>(\n resolve => resolve(\n typeof this.context === 'function'\n ? this.context(operation)\n : this.context\n )\n ).then(context => {\n if (this.validate) {\n const validationErrors = validate(this.schema, operation.query);\n if (validationErrors.length > 0) {\n return { errors: validationErrors };\n }\n }\n\n return execute({\n schema: this.schema,\n document: operation.query,\n rootValue: this.rootValue,\n contextValue: context,\n variableValues: operation.variables,\n operationName: operation.operationName,\n });\n }).then(data => {\n if (!observer.closed) {\n observer.next(data);\n observer.complete();\n }\n }).catch(error => {\n if (!observer.closed) {\n observer.error(error);\n }\n });\n });\n }\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  import type { Client } from "graphql-ws";
2
- import { ApolloLink, Operation, FetchResult } from "../core";
2
+ import type { Operation, FetchResult } from "../core";
3
+ import { ApolloLink } from "../core";
3
4
  import { Observable } from "../../utilities";
4
5
  export declare class GraphQLWsLink extends ApolloLink {
5
6
  readonly client: Client;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/link/subscriptions/index.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAkC,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAa7E,qBAAa,aAAc,SAAQ,UAAU;aACf,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;IAInC,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC;CAqC9D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/link/subscriptions/index.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAmB,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAa9D,qBAAa,aAAc,SAAQ,UAAU;aACf,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;IAInC,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC;CAiC9D"}
@@ -1,7 +1,7 @@
1
1
  import { __assign, __extends } from "tslib";
2
2
  import { print } from "graphql";
3
3
  import { ApolloLink } from "../core/index.js";
4
- import { isNonNullObject, stripTypename, Observable } from "../../utilities/index.js";
4
+ import { isNonNullObject, Observable } from "../../utilities/index.js";
5
5
  import { ApolloError } from "../../errors/index.js";
6
6
  function isLikeCloseEvent(val) {
7
7
  return isNonNullObject(val) && "code" in val && "reason" in val;
@@ -20,7 +20,7 @@ var GraphQLWsLink = (function (_super) {
20
20
  GraphQLWsLink.prototype.request = function (operation) {
21
21
  var _this = this;
22
22
  return new Observable(function (observer) {
23
- return _this.client.subscribe(__assign(__assign({}, operation), { query: print(operation.query), variables: stripTypename(operation.variables) }), {
23
+ return _this.client.subscribe(__assign(__assign({}, operation), { query: print(operation.query) }), {
24
24
  next: observer.next.bind(observer),
25
25
  complete: observer.complete.bind(observer),
26
26
  error: function (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/link/subscriptions/index.ts"],"names":[],"mappings":";AA8BA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,OAAO,EAAE,UAAU,EAA0B,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,SAAS,gBAAgB,CAAC,GAAY;IACpC,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,MAAM,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,CAAC;AAClE,CAAC;AAGD,SAAS,gBAAgB,CAAC,GAAY;;IACpC,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,CAAA,MAAA,GAAG,CAAC,MAAM,0CAAE,UAAU,MAAK,SAAS,CAAC,MAAM,CAAC;AAC7E,CAAC;AAED;IAAmC,iCAAU;IAC3C,uBAA4B,MAAc;QAA1C,YACE,iBAAO,SACR;QAF2B,YAAM,GAAN,MAAM,CAAQ;;IAE1C,CAAC;IAEM,+BAAO,GAAd,UAAe,SAAoB;QAAnC,iBAoCC;QAnCC,OAAO,IAAI,UAAU,CAAC,UAAC,QAAQ;YAC7B,OAAO,KAAI,CAAC,MAAM,CAAC,SAAS,uBAErB,SAAS,KACZ,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAC7B,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,KAE/C;gBACE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAClC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAC1C,KAAK,EAAE,UAAC,GAAG;oBACT,IAAI,GAAG,YAAY,KAAK,EAAE;wBACxB,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;qBAC5B;oBACD,IAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;oBACxC,IAAI,SAAS,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE;wBACtC,OAAO,QAAQ,CAAC,KAAK,CAEnB,IAAI,KAAK,CAAC,uBACR,SAAS,CAAC,CAAC,CAAC,sBAAe,GAAG,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC,EAAE,SAE1C,SAAS,CAAC,CAAC,CAAC,WAAI,GAAG,CAAC,MAAM,CAAE,CAAC,CAAC,CAAC,EAAE,CACjC,CAAC,CACJ,CAAC;qBACH;oBAED,OAAO,QAAQ,CAAC,KAAK,CACnB,IAAI,WAAW,CAAC;wBACd,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;qBAChD,CAAC,CACH,CAAC;gBACJ,CAAC;aACF,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IACH,oBAAC;AAAD,CAAC,AA1CD,CAAmC,UAAU,GA0C5C","sourcesContent":["// This file is adapted from the graphql-ws npm package:\n// https://github.com/enisdenjo/graphql-ws\n//\n// Most of the file comes from that package's README; some other parts (such as\n// isLikeCloseEvent) come from its source.\n//\n// Here's the license of the original code:\n//\n// The MIT License (MIT)\n//\n// Copyright (c) 2020-2021 Denis Badurina\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport { print } from \"graphql\";\nimport type { Client } from \"graphql-ws\";\n\nimport { ApolloLink, Operation, FetchResult } from \"../core\";\nimport { isNonNullObject, stripTypename, Observable } from \"../../utilities\";\nimport { ApolloError } from \"../../errors\";\n\n// https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/close_event\nfunction isLikeCloseEvent(val: unknown): val is CloseEvent {\n return isNonNullObject(val) && \"code\" in val && \"reason\" in val;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/error_event\nfunction isLikeErrorEvent(err: unknown): err is Event {\n return isNonNullObject(err) && err.target?.readyState === WebSocket.CLOSED;\n}\n\nexport class GraphQLWsLink extends ApolloLink {\n constructor(public readonly client: Client) {\n super();\n }\n\n public request(operation: Operation): Observable<FetchResult> {\n return new Observable((observer) => {\n return this.client.subscribe<FetchResult>(\n { \n ...operation,\n query: print(operation.query),\n variables: stripTypename(operation.variables) \n },\n {\n next: observer.next.bind(observer),\n complete: observer.complete.bind(observer),\n error: (err) => {\n if (err instanceof Error) {\n return observer.error(err);\n }\n const likeClose = isLikeCloseEvent(err);\n if (likeClose || isLikeErrorEvent(err)) {\n return observer.error(\n // reason will be available on clean closes\n new Error(`Socket closed${\n likeClose ? ` with event ${err.code}` : \"\"\n }${\n likeClose ? ` ${err.reason}` : \"\"\n }`)\n );\n }\n\n return observer.error(\n new ApolloError({\n graphQLErrors: Array.isArray(err) ? err : [err],\n })\n );\n },\n }\n );\n });\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/link/subscriptions/index.ts"],"names":[],"mappings":";AA8BA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIhC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,SAAS,gBAAgB,CAAC,GAAY;IACpC,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,MAAM,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,CAAC;AAClE,CAAC;AAGD,SAAS,gBAAgB,CAAC,GAAY;;IACpC,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,CAAA,MAAA,GAAG,CAAC,MAAM,0CAAE,UAAU,MAAK,SAAS,CAAC,MAAM,CAAC;AAC7E,CAAC;AAED;IAAmC,iCAAU;IAC3C,uBAA4B,MAAc;QAA1C,YACE,iBAAO,SACR;QAF2B,YAAM,GAAN,MAAM,CAAQ;;IAE1C,CAAC;IAEM,+BAAO,GAAd,UAAe,SAAoB;QAAnC,iBAgCC;QA/BC,OAAO,IAAI,UAAU,CAAC,UAAC,QAAQ;YAC7B,OAAO,KAAI,CAAC,MAAM,CAAC,SAAS,uBACrB,SAAS,KAAE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAC7C;gBACE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAClC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAC1C,KAAK,EAAE,UAAC,GAAG;oBACT,IAAI,GAAG,YAAY,KAAK,EAAE;wBACxB,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;qBAC5B;oBACD,IAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;oBACxC,IAAI,SAAS,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE;wBACtC,OAAO,QAAQ,CAAC,KAAK,CAEnB,IAAI,KAAK,CAAC,uBACR,SAAS,CAAC,CAAC,CAAC,sBAAe,GAAG,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC,EAAE,SAE1C,SAAS,CAAC,CAAC,CAAC,WAAI,GAAG,CAAC,MAAM,CAAE,CAAC,CAAC,CAAC,EAAE,CACjC,CAAC,CACJ,CAAC;qBACH;oBAED,OAAO,QAAQ,CAAC,KAAK,CACnB,IAAI,WAAW,CAAC;wBACd,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;qBAChD,CAAC,CACH,CAAC;gBACJ,CAAC;aACF,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IACH,oBAAC;AAAD,CAAC,AAtCD,CAAmC,UAAU,GAsC5C","sourcesContent":["// This file is adapted from the graphql-ws npm package:\n// https://github.com/enisdenjo/graphql-ws\n//\n// Most of the file comes from that package's README; some other parts (such as\n// isLikeCloseEvent) come from its source.\n//\n// Here's the license of the original code:\n//\n// The MIT License (MIT)\n//\n// Copyright (c) 2020-2021 Denis Badurina\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport { print } from \"graphql\";\nimport type { Client } from \"graphql-ws\";\n\nimport type { Operation, FetchResult } from \"../core\";\nimport { ApolloLink } from \"../core\";\nimport { isNonNullObject, Observable } from \"../../utilities\";\nimport { ApolloError } from \"../../errors\";\n\n// https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/close_event\nfunction isLikeCloseEvent(val: unknown): val is CloseEvent {\n return isNonNullObject(val) && \"code\" in val && \"reason\" in val;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/error_event\nfunction isLikeErrorEvent(err: unknown): err is Event {\n return isNonNullObject(err) && err.target?.readyState === WebSocket.CLOSED;\n}\n\nexport class GraphQLWsLink extends ApolloLink {\n constructor(public readonly client: Client) {\n super();\n }\n\n public request(operation: Operation): Observable<FetchResult> {\n return new Observable((observer) => {\n return this.client.subscribe<FetchResult>(\n { ...operation, query: print(operation.query) },\n {\n next: observer.next.bind(observer),\n complete: observer.complete.bind(observer),\n error: (err) => {\n if (err instanceof Error) {\n return observer.error(err);\n }\n const likeClose = isLikeCloseEvent(err);\n if (likeClose || isLikeErrorEvent(err)) {\n return observer.error(\n // reason will be available on clean closes\n new Error(`Socket closed${\n likeClose ? ` with event ${err.code}` : \"\"\n }${\n likeClose ? ` ${err.reason}` : \"\"\n }`)\n );\n }\n\n return observer.error(\n new ApolloError({\n graphQLErrors: Array.isArray(err) ? err : [err],\n })\n );\n },\n }\n );\n });\n }\n}\n"]}