@apollo/client 4.0.0-rc.8 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. package/CHANGELOG.md +2488 -0
  2. package/README.md +6 -2
  3. package/__cjs/cache/inmemory/inMemoryCache.cjs +2 -2
  4. package/__cjs/cache/inmemory/inMemoryCache.cjs.map +1 -1
  5. package/__cjs/cache/inmemory/policies.cjs +18 -12
  6. package/__cjs/cache/inmemory/policies.cjs.map +1 -1
  7. package/__cjs/cache/inmemory/writeToStore.cjs +1 -1
  8. package/__cjs/cache/inmemory/writeToStore.cjs.map +1 -1
  9. package/__cjs/core/ObservableQuery.cjs +1 -1
  10. package/__cjs/core/ObservableQuery.cjs.map +1 -1
  11. package/__cjs/core/ObservableQuery.d.cts +1 -1
  12. package/__cjs/core/QueryInfo.cjs +2 -6
  13. package/__cjs/core/QueryInfo.cjs.map +1 -1
  14. package/__cjs/core/index.cjs.map +1 -1
  15. package/__cjs/core/index.d.cts +1 -1
  16. package/__cjs/incremental/handlers/defer20220824.cjs.map +1 -1
  17. package/__cjs/incremental/handlers/defer20220824.d.cts +9 -6
  18. package/__cjs/incremental/handlers/notImplemented.cjs.map +1 -1
  19. package/__cjs/incremental/handlers/notImplemented.d.cts +11 -0
  20. package/__cjs/link/batch/batchLink.cjs +30 -2
  21. package/__cjs/link/batch/batchLink.cjs.map +1 -1
  22. package/__cjs/link/batch/batchLink.d.cts +69 -2
  23. package/__cjs/link/batch-http/BaseBatchHttpLink.cjs +156 -0
  24. package/__cjs/link/batch-http/BaseBatchHttpLink.cjs.map +1 -0
  25. package/__cjs/link/batch-http/BaseBatchHttpLink.d.cts +68 -0
  26. package/__cjs/link/batch-http/batchHttpLink.cjs +3 -128
  27. package/__cjs/link/batch-http/batchHttpLink.cjs.map +1 -1
  28. package/__cjs/link/batch-http/batchHttpLink.d.cts +4 -20
  29. package/__cjs/link/batch-http/index.cjs +2 -1
  30. package/__cjs/link/batch-http/index.cjs.map +1 -1
  31. package/__cjs/link/batch-http/index.d.cts +2 -1
  32. package/__cjs/link/client-awareness/ClientAwarenessLink.cjs +3 -3
  33. package/__cjs/link/client-awareness/ClientAwarenessLink.cjs.map +1 -1
  34. package/__cjs/link/client-awareness/ClientAwarenessLink.d.cts +20 -1
  35. package/__cjs/link/context/index.cjs +19 -0
  36. package/__cjs/link/context/index.cjs.map +1 -1
  37. package/__cjs/link/context/index.d.cts +64 -2
  38. package/__cjs/link/core/ApolloLink.cjs.map +1 -1
  39. package/__cjs/link/core/ApolloLink.d.cts +5 -2
  40. package/__cjs/link/core/types.d.cts +0 -4
  41. package/__cjs/link/http/BaseHttpLink.cjs +59 -8
  42. package/__cjs/link/http/BaseHttpLink.cjs.map +1 -1
  43. package/__cjs/link/http/BaseHttpLink.d.cts +256 -2
  44. package/__cjs/link/http/HttpLink.cjs +1 -1
  45. package/__cjs/link/http/HttpLink.cjs.map +1 -1
  46. package/__cjs/link/http/HttpLink.d.cts +5 -208
  47. package/__cjs/link/http/rewriteURIForGET.cjs.map +1 -1
  48. package/__cjs/link/http/rewriteURIForGET.d.cts +2 -2
  49. package/__cjs/link/http/selectHttpOptionsAndBody.cjs.map +1 -1
  50. package/__cjs/link/http/selectHttpOptionsAndBody.d.cts +7 -7
  51. package/__cjs/link/index.cjs.map +1 -1
  52. package/__cjs/link/index.d.cts +2 -1
  53. package/__cjs/link/persisted-queries/index.cjs +16 -0
  54. package/__cjs/link/persisted-queries/index.cjs.map +1 -1
  55. package/__cjs/link/persisted-queries/index.d.cts +181 -0
  56. package/__cjs/link/remove-typename/removeTypenameFromVariables.cjs +48 -0
  57. package/__cjs/link/remove-typename/removeTypenameFromVariables.cjs.map +1 -1
  58. package/__cjs/link/remove-typename/removeTypenameFromVariables.d.cts +115 -0
  59. package/__cjs/link/retry/retryLink.cjs +25 -3
  60. package/__cjs/link/retry/retryLink.cjs.map +1 -1
  61. package/__cjs/link/retry/retryLink.d.cts +82 -9
  62. package/__cjs/link/schema/index.cjs +20 -0
  63. package/__cjs/link/schema/index.cjs.map +1 -1
  64. package/__cjs/link/schema/index.d.cts +128 -6
  65. package/__cjs/link/ws/index.cjs +18 -0
  66. package/__cjs/link/ws/index.cjs.map +1 -1
  67. package/__cjs/link/ws/index.d.cts +56 -5
  68. package/__cjs/local-state/LocalState.cjs.map +1 -1
  69. package/__cjs/masking/GraphQLCodegenDataMasking.d.cts +10 -42
  70. package/__cjs/masking/PreserveTypes.cjs +3 -0
  71. package/__cjs/masking/PreserveTypes.cjs.map +1 -0
  72. package/__cjs/masking/PreserveTypes.d.cts +26 -0
  73. package/__cjs/masking/index.cjs.map +1 -1
  74. package/__cjs/masking/index.d.cts +1 -1
  75. package/__cjs/masking/internal/types.d.cts +0 -1
  76. package/__cjs/masking/types.d.cts +6 -23
  77. package/__cjs/react/hooks/useBackgroundQuery.cjs.map +1 -1
  78. package/__cjs/react/hooks/useBackgroundQuery.d.cts +2 -1
  79. package/__cjs/react/hooks/useLazyQuery.d.cts +1 -1
  80. package/__cjs/react/hooks/useLoadableQuery.cjs.map +1 -1
  81. package/__cjs/react/hooks/useLoadableQuery.d.cts +2 -1
  82. package/__cjs/react/hooks/useQuery.d.cts +1 -1
  83. package/__cjs/react/hooks/useQueryRefHandlers.cjs.map +1 -1
  84. package/__cjs/react/hooks/useQueryRefHandlers.d.cts +2 -1
  85. package/__cjs/react/hooks/useReadQuery.cjs.map +1 -1
  86. package/__cjs/react/hooks/useReadQuery.d.cts +1 -1
  87. package/__cjs/react/hooks/useSyncExternalStore.cjs +2 -6
  88. package/__cjs/react/hooks/useSyncExternalStore.cjs.map +1 -1
  89. package/__cjs/react/query-preloader/createQueryPreloader.cjs.map +1 -1
  90. package/__cjs/react/query-preloader/createQueryPreloader.d.cts +1 -1
  91. package/__cjs/react/types/deprecated.d.cts +1 -1
  92. package/__cjs/react/types/types.documentation.d.cts +1 -1
  93. package/__cjs/testing/core/mocking/mockSubscriptionLink.d.cts +1 -1
  94. package/__cjs/testing/react/MockedProvider.cjs.map +1 -1
  95. package/__cjs/testing/react/MockedProvider.d.cts +5 -0
  96. package/__cjs/utilities/common/stripTypename.cjs +11 -0
  97. package/__cjs/utilities/common/stripTypename.cjs.map +1 -1
  98. package/__cjs/utilities/common/stripTypename.d.cts +11 -0
  99. package/__cjs/utilities/graphql/DocumentTransform.cjs +84 -1
  100. package/__cjs/utilities/graphql/DocumentTransform.cjs.map +1 -1
  101. package/__cjs/utilities/graphql/DocumentTransform.d.cts +94 -5
  102. package/__cjs/utilities/graphql/isFormattedExecutionResult.cjs +27 -0
  103. package/__cjs/utilities/graphql/isFormattedExecutionResult.cjs.map +1 -1
  104. package/__cjs/utilities/graphql/isFormattedExecutionResult.d.cts +27 -0
  105. package/__cjs/utilities/graphql/operations.cjs +54 -3
  106. package/__cjs/utilities/graphql/operations.cjs.map +1 -1
  107. package/__cjs/utilities/graphql/operations.d.cts +54 -3
  108. package/__cjs/utilities/graphql/storeUtils.cjs +9 -0
  109. package/__cjs/utilities/graphql/storeUtils.cjs.map +1 -1
  110. package/__cjs/utilities/graphql/storeUtils.d.cts +9 -0
  111. package/__cjs/utilities/graphql/transform.cjs +12 -1
  112. package/__cjs/utilities/graphql/transform.cjs.map +1 -1
  113. package/__cjs/utilities/graphql/transform.d.cts +12 -1
  114. package/__cjs/utilities/internal/canonicalStringify.cjs +30 -7
  115. package/__cjs/utilities/internal/canonicalStringify.cjs.map +1 -1
  116. package/__cjs/utilities/internal/canonicalStringify.d.cts +30 -7
  117. package/__cjs/utilities/internal/getMainDefinition.cjs +36 -8
  118. package/__cjs/utilities/internal/getMainDefinition.cjs.map +1 -1
  119. package/__cjs/utilities/internal/getMainDefinition.d.cts +36 -8
  120. package/__cjs/utilities/internal/removeDirectivesFromDocument.cjs +2 -6
  121. package/__cjs/utilities/internal/removeDirectivesFromDocument.cjs.map +1 -1
  122. package/__cjs/utilities/internal/types/DocumentationTypes.d.cts +1 -1
  123. package/__cjs/utilities/subscriptions/relay/index.cjs.map +1 -1
  124. package/__cjs/v4-migration.cjs +9 -0
  125. package/__cjs/v4-migration.cjs.map +1 -0
  126. package/__cjs/v4-migration.d.cts +826 -0
  127. package/__cjs/version.cjs +1 -1
  128. package/__cjs/version.cjs.map +1 -1
  129. package/cache/inmemory/inMemoryCache.js +2 -2
  130. package/cache/inmemory/inMemoryCache.js.map +1 -1
  131. package/cache/inmemory/policies.js +18 -12
  132. package/cache/inmemory/policies.js.map +1 -1
  133. package/cache/inmemory/writeToStore.js +1 -1
  134. package/cache/inmemory/writeToStore.js.map +1 -1
  135. package/core/ObservableQuery.d.ts +1 -1
  136. package/core/ObservableQuery.js +1 -1
  137. package/core/ObservableQuery.js.map +1 -1
  138. package/core/QueryInfo.js +1 -2
  139. package/core/QueryInfo.js.map +1 -1
  140. package/core/index.d.ts +1 -1
  141. package/core/index.js.map +1 -1
  142. package/incremental/handlers/defer20220824.d.ts +9 -6
  143. package/incremental/handlers/defer20220824.js.map +1 -1
  144. package/incremental/handlers/notImplemented.d.ts +11 -0
  145. package/incremental/handlers/notImplemented.js.map +1 -1
  146. package/legacyEntryPoints/v4-migration/index.d.ts +1 -0
  147. package/legacyEntryPoints/v4-migration/index.js +1 -0
  148. package/legacyEntryPoints/v4-migration/v4-migration.cjs +1 -0
  149. package/legacyEntryPoints/v4-migration/v4-migration.d.cts +1 -0
  150. package/link/batch/batchLink.d.ts +69 -2
  151. package/link/batch/batchLink.js +30 -2
  152. package/link/batch/batchLink.js.map +1 -1
  153. package/link/batch-http/BaseBatchHttpLink.d.ts +68 -0
  154. package/link/batch-http/BaseBatchHttpLink.js +152 -0
  155. package/link/batch-http/BaseBatchHttpLink.js.map +1 -0
  156. package/link/batch-http/batchHttpLink.d.ts +5 -21
  157. package/link/batch-http/batchHttpLink.js +1 -125
  158. package/link/batch-http/batchHttpLink.js.map +1 -1
  159. package/link/batch-http/index.d.ts +2 -1
  160. package/link/batch-http/index.js +2 -1
  161. package/link/batch-http/index.js.map +1 -1
  162. package/link/client-awareness/ClientAwarenessLink.d.ts +21 -2
  163. package/link/client-awareness/ClientAwarenessLink.js +3 -3
  164. package/link/client-awareness/ClientAwarenessLink.js.map +1 -1
  165. package/link/context/index.d.ts +65 -3
  166. package/link/context/index.js +19 -0
  167. package/link/context/index.js.map +1 -1
  168. package/link/core/ApolloLink.d.ts +5 -2
  169. package/link/core/ApolloLink.js.map +1 -1
  170. package/link/core/types.d.ts +0 -4
  171. package/link/core/types.js.map +1 -1
  172. package/link/http/BaseHttpLink.d.ts +257 -3
  173. package/link/http/BaseHttpLink.js +59 -8
  174. package/link/http/BaseHttpLink.js.map +1 -1
  175. package/link/http/HttpLink.d.ts +6 -209
  176. package/link/http/HttpLink.js +1 -1
  177. package/link/http/HttpLink.js.map +1 -1
  178. package/link/http/rewriteURIForGET.d.ts +2 -2
  179. package/link/http/rewriteURIForGET.js.map +1 -1
  180. package/link/http/selectHttpOptionsAndBody.d.ts +7 -7
  181. package/link/http/selectHttpOptionsAndBody.js.map +1 -1
  182. package/link/index.d.ts +2 -1
  183. package/link/index.js.map +1 -1
  184. package/link/persisted-queries/index.d.ts +182 -1
  185. package/link/persisted-queries/index.js +16 -0
  186. package/link/persisted-queries/index.js.map +1 -1
  187. package/link/remove-typename/removeTypenameFromVariables.d.ts +115 -0
  188. package/link/remove-typename/removeTypenameFromVariables.js +48 -0
  189. package/link/remove-typename/removeTypenameFromVariables.js.map +1 -1
  190. package/link/retry/retryLink.d.ts +83 -10
  191. package/link/retry/retryLink.js +25 -3
  192. package/link/retry/retryLink.js.map +1 -1
  193. package/link/schema/index.d.ts +129 -7
  194. package/link/schema/index.js +20 -0
  195. package/link/schema/index.js.map +1 -1
  196. package/link/ws/index.d.ts +56 -5
  197. package/link/ws/index.js +18 -0
  198. package/link/ws/index.js.map +1 -1
  199. package/local-state/LocalState.js.map +1 -1
  200. package/masking/GraphQLCodegenDataMasking.d.ts +10 -42
  201. package/masking/GraphQLCodegenDataMasking.js.map +1 -1
  202. package/masking/PreserveTypes.d.ts +26 -0
  203. package/masking/PreserveTypes.js +2 -0
  204. package/masking/PreserveTypes.js.map +1 -0
  205. package/masking/index.d.ts +1 -1
  206. package/masking/index.js.map +1 -1
  207. package/masking/internal/types.d.ts +0 -1
  208. package/masking/internal/types.js.map +1 -1
  209. package/masking/types.d.ts +6 -23
  210. package/masking/types.js.map +1 -1
  211. package/package.json +8 -2
  212. package/react/hooks/useBackgroundQuery.d.ts +2 -1
  213. package/react/hooks/useBackgroundQuery.js.map +1 -1
  214. package/react/hooks/useLazyQuery.d.ts +1 -1
  215. package/react/hooks/useLoadableQuery.d.ts +2 -1
  216. package/react/hooks/useLoadableQuery.js.map +1 -1
  217. package/react/hooks/useQuery.d.ts +1 -1
  218. package/react/hooks/useQueryRefHandlers.d.ts +2 -1
  219. package/react/hooks/useQueryRefHandlers.js.map +1 -1
  220. package/react/hooks/useReadQuery.d.ts +1 -1
  221. package/react/hooks/useReadQuery.js.map +1 -1
  222. package/react/hooks/useSyncExternalStore.js +1 -1
  223. package/react/hooks/useSyncExternalStore.js.map +1 -1
  224. package/react/hooks-compiled/useBackgroundQuery.d.ts +2 -1
  225. package/react/hooks-compiled/useBackgroundQuery.js.map +1 -1
  226. package/react/hooks-compiled/useLazyQuery.d.ts +1 -1
  227. package/react/hooks-compiled/useLoadableQuery.d.ts +2 -1
  228. package/react/hooks-compiled/useLoadableQuery.js.map +1 -1
  229. package/react/hooks-compiled/useQuery.d.ts +1 -1
  230. package/react/hooks-compiled/useQueryRefHandlers.d.ts +2 -1
  231. package/react/hooks-compiled/useQueryRefHandlers.js.map +1 -1
  232. package/react/hooks-compiled/useReadQuery.d.ts +1 -1
  233. package/react/hooks-compiled/useReadQuery.js.map +1 -1
  234. package/react/hooks-compiled/useSyncExternalStore.js +1 -1
  235. package/react/hooks-compiled/useSyncExternalStore.js.map +1 -1
  236. package/react/query-preloader/createQueryPreloader.d.ts +1 -1
  237. package/react/query-preloader/createQueryPreloader.js.map +1 -1
  238. package/react/types/deprecated.d.ts +1 -1
  239. package/react/types/deprecated.js.map +1 -1
  240. package/react/types/types.documentation.d.ts +1 -1
  241. package/react/types/types.documentation.js.map +1 -1
  242. package/testing/core/mocking/mockSubscriptionLink.d.ts +1 -1
  243. package/testing/react/MockedProvider.d.ts +5 -0
  244. package/testing/react/MockedProvider.js.map +1 -1
  245. package/utilities/common/stripTypename.d.ts +11 -0
  246. package/utilities/common/stripTypename.js +11 -0
  247. package/utilities/common/stripTypename.js.map +1 -1
  248. package/utilities/graphql/DocumentTransform.d.ts +94 -5
  249. package/utilities/graphql/DocumentTransform.js +84 -1
  250. package/utilities/graphql/DocumentTransform.js.map +1 -1
  251. package/utilities/graphql/isFormattedExecutionResult.d.ts +27 -0
  252. package/utilities/graphql/isFormattedExecutionResult.js +27 -0
  253. package/utilities/graphql/isFormattedExecutionResult.js.map +1 -1
  254. package/utilities/graphql/operations.d.ts +54 -3
  255. package/utilities/graphql/operations.js +54 -3
  256. package/utilities/graphql/operations.js.map +1 -1
  257. package/utilities/graphql/storeUtils.d.ts +9 -0
  258. package/utilities/graphql/storeUtils.js +9 -0
  259. package/utilities/graphql/storeUtils.js.map +1 -1
  260. package/utilities/graphql/transform.d.ts +12 -1
  261. package/utilities/graphql/transform.js +12 -1
  262. package/utilities/graphql/transform.js.map +1 -1
  263. package/utilities/internal/canonicalStringify.d.ts +30 -7
  264. package/utilities/internal/canonicalStringify.js +30 -7
  265. package/utilities/internal/canonicalStringify.js.map +1 -1
  266. package/utilities/internal/getMainDefinition.d.ts +37 -9
  267. package/utilities/internal/getMainDefinition.js +36 -8
  268. package/utilities/internal/getMainDefinition.js.map +1 -1
  269. package/utilities/internal/removeDirectivesFromDocument.js +1 -2
  270. package/utilities/internal/removeDirectivesFromDocument.js.map +1 -1
  271. package/utilities/internal/types/DocumentationTypes.d.ts +1 -1
  272. package/utilities/subscriptions/relay/index.js.map +1 -1
  273. package/v4-migration.d.ts +826 -0
  274. package/v4-migration.js +8 -0
  275. package/v4-migration.js.map +1 -0
  276. package/version.js +1 -1
  277. package/version.js.map +1 -1
@@ -10,6 +10,25 @@ const sizes_js_1 = require("../caching/sizes.cjs");
10
10
  function identity(document) {
11
11
  return document;
12
12
  }
13
+ /**
14
+ * A class for transforming GraphQL documents. See the [Document transforms
15
+ * documentation](https://www.apollographql.com/docs/react/data/document-transforms) for more details on using them.
16
+ *
17
+ * @example
18
+ *
19
+ * ```ts
20
+ * import { DocumentTransform } from "@apollo/client/utilities";
21
+ * import { visit } from "graphql";
22
+ *
23
+ * const documentTransform = new DocumentTransform((doc) => {
24
+ * return visit(doc, {
25
+ * // ...
26
+ * });
27
+ * });
28
+ *
29
+ * const transformedDoc = documentTransform.transformDocument(myDocument);
30
+ * ```
31
+ */
13
32
  class DocumentTransform {
14
33
  transform;
15
34
  cached;
@@ -22,12 +41,37 @@ class DocumentTransform {
22
41
  getCacheKey(document) {
23
42
  return [document];
24
43
  }
44
+ /**
45
+ * Creates a DocumentTransform that returns the input document unchanged.
46
+ *
47
+ * @returns The input document
48
+ */
25
49
  static identity() {
26
50
  // No need to cache this transform since it just returns the document
27
51
  // unchanged. This should save a bit of memory that would otherwise be
28
52
  // needed to populate the `documentCache` of this transform.
29
53
  return new DocumentTransform(identity, { cache: false });
30
54
  }
55
+ /**
56
+ * Creates a DocumentTransform that conditionally applies one of two transforms.
57
+ *
58
+ * @param predicate - Function that determines which transform to apply
59
+ * @param left - Transform to apply when `predicate` returns `true`
60
+ * @param right - Transform to apply when `predicate` returns `false`. If not provided, it defaults to `DocumentTransform.identity()`.
61
+ * @returns A DocumentTransform that conditionally applies a document transform based on the predicate
62
+ *
63
+ * @example
64
+ *
65
+ * ```ts
66
+ * import { isQueryOperation } from "@apollo/client/utilities";
67
+ *
68
+ * const conditionalTransform = DocumentTransform.split(
69
+ * (document) => isQueryOperation(document),
70
+ * queryTransform,
71
+ * mutationTransform
72
+ * );
73
+ * ```
74
+ */
31
75
  static split(predicate, left, right = DocumentTransform.identity()) {
32
76
  return Object.assign(new DocumentTransform((document) => {
33
77
  const documentTransform = predicate(document) ? left : right;
@@ -46,7 +90,7 @@ class DocumentTransform {
46
90
  this.resetCache();
47
91
  }
48
92
  /**
49
- * Resets the internal cache of this transform, if it has one.
93
+ * Resets the internal cache of this transform, if it is cached.
50
94
  */
51
95
  resetCache() {
52
96
  if (this.cached) {
@@ -68,6 +112,29 @@ class DocumentTransform {
68
112
  (0, internal_1.checkDocument)(document);
69
113
  return this.transform(document);
70
114
  }
115
+ /**
116
+ * Transforms a GraphQL document using the configured transform function.
117
+ *
118
+ * @remarks
119
+ *
120
+ * Note that `transformDocument` caches the transformed document. Calling
121
+ * `transformDocument` again with the already-transformed document will
122
+ * immediately return it.
123
+ *
124
+ * @param document - The GraphQL document to transform
125
+ * @returns The transformed document
126
+ *
127
+ * @example
128
+ *
129
+ * ```ts
130
+ * const document = gql`
131
+ * # ...
132
+ * `;
133
+ *
134
+ * const documentTransform = new DocumentTransform(transformFn);
135
+ * const transformedDocument = documentTransform.transformDocument(document);
136
+ * ```
137
+ */
71
138
  transformDocument(document) {
72
139
  // If a user passes an already transformed result back to this function,
73
140
  // immediately return it.
@@ -78,6 +145,22 @@ class DocumentTransform {
78
145
  this.resultCache.add(transformedDocument);
79
146
  return transformedDocument;
80
147
  }
148
+ /**
149
+ * Combines this document transform with another document transform. The
150
+ * returned document transform first applies the current document transform,
151
+ * then applies the other document transform.
152
+ *
153
+ * @param otherTransform - The transform to apply after this one
154
+ * @returns A new DocumentTransform that applies both transforms in sequence
155
+ *
156
+ * @example
157
+ *
158
+ * ```ts
159
+ * const combinedTransform = addTypenameTransform.concat(
160
+ * removeDirectivesTransform
161
+ * );
162
+ * ```
163
+ */
81
164
  concat(otherTransform) {
82
165
  return Object.assign(new DocumentTransform((document) => {
83
166
  return otherTransform.transformDocument(this.transformDocument(document));
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentTransform.cjs","sources":["../../../../src/utilities/graphql/DocumentTransform.ts"],"sourcesContent":["import { WeakCache } from \"@wry/caches\";\nimport { Trie } from \"@wry/trie\";\nimport type { DocumentNode } from \"graphql\";\nimport { wrap } from \"optimism\";\n\nimport { checkDocument } from \"@apollo/client/utilities/internal\";\nimport { invariant } from \"@apollo/client/utilities/invariant\";\n\nimport { cacheSizes } from \"../caching/sizes.js\";\n\nexport type DocumentTransformCacheKey = ReadonlyArray<unknown>;\n\ntype TransformFn = (document: DocumentNode) => DocumentNode;\n\ninterface DocumentTransformOptions {\n /**\n * Determines whether to cache the transformed GraphQL document. Caching can speed up repeated calls to the document transform for the same input document. Set to `false` to completely disable caching for the document transform. When disabled, this option takes precedence over the [`getCacheKey`](#getcachekey) option.\n *\n * The default value is `true`.\n */\n cache?: boolean;\n /**\n * Defines a custom cache key for a GraphQL document that will determine whether to re-run the document transform when given the same input GraphQL document. Returns an array that defines the cache key. Return `undefined` to disable caching for that GraphQL document.\n *\n * > **Note:** The items in the array may be any type, but also need to be referentially stable to guarantee a stable cache key.\n *\n * The default implementation of this function returns the `document` as the cache key.\n */\n getCacheKey?: (\n document: DocumentNode\n ) => DocumentTransformCacheKey | undefined;\n}\n\nfunction identity(document: DocumentNode) {\n return document;\n}\n\nexport class DocumentTransform {\n private readonly transform: TransformFn;\n private cached: boolean;\n\n private readonly resultCache = new WeakSet<DocumentNode>();\n\n // This default implementation of getCacheKey can be overridden by providing\n // options.getCacheKey to the DocumentTransform constructor. In general, a\n // getCacheKey function may either return an array of keys (often including\n // the document) to be used as a cache key, or undefined to indicate the\n // transform for this document should not be cached.\n private getCacheKey(\n document: DocumentNode\n ): DocumentTransformCacheKey | undefined {\n return [document];\n }\n\n static identity() {\n // No need to cache this transform since it just returns the document\n // unchanged. This should save a bit of memory that would otherwise be\n // needed to populate the `documentCache` of this transform.\n return new DocumentTransform(identity, { cache: false });\n }\n\n static split(\n predicate: (document: DocumentNode) => boolean,\n left: DocumentTransform,\n right: DocumentTransform = DocumentTransform.identity()\n ) {\n return Object.assign(\n new DocumentTransform(\n (document) => {\n const documentTransform = predicate(document) ? left : right;\n\n return documentTransform.transformDocument(document);\n },\n // Reasonably assume both `left` and `right` transforms handle their own caching\n { cache: false }\n ),\n { left, right }\n );\n }\n\n constructor(transform: TransformFn, options: DocumentTransformOptions = {}) {\n this.transform = transform;\n\n if (options.getCacheKey) {\n // Override default `getCacheKey` function, which returns [document].\n this.getCacheKey = options.getCacheKey;\n }\n this.cached = options.cache !== false;\n\n this.resetCache();\n }\n\n /**\n * Resets the internal cache of this transform, if it has one.\n */\n resetCache() {\n if (this.cached) {\n const stableCacheKeys = new Trie<WeakKey>();\n this.performWork = wrap(\n DocumentTransform.prototype.performWork.bind(this),\n {\n makeCacheKey: (document) => {\n const cacheKeys = this.getCacheKey(document);\n if (cacheKeys) {\n invariant(\n Array.isArray(cacheKeys),\n \"`getCacheKey` must return an array or undefined\"\n );\n return stableCacheKeys.lookupArray(cacheKeys);\n }\n },\n max: cacheSizes[\"documentTransform.cache\"],\n cache: WeakCache<any, any>,\n }\n );\n }\n }\n\n private performWork(document: DocumentNode) {\n checkDocument(document);\n return this.transform(document);\n }\n\n transformDocument(document: DocumentNode) {\n // If a user passes an already transformed result back to this function,\n // immediately return it.\n if (this.resultCache.has(document)) {\n return document;\n }\n\n const transformedDocument = this.performWork(document);\n\n this.resultCache.add(transformedDocument);\n\n return transformedDocument;\n }\n\n concat(otherTransform: DocumentTransform): DocumentTransform {\n return Object.assign(\n new DocumentTransform(\n (document) => {\n return otherTransform.transformDocument(\n this.transformDocument(document)\n );\n },\n // Reasonably assume both transforms handle their own caching\n { cache: false }\n ),\n {\n left: this,\n right: otherTransform,\n }\n );\n }\n\n /**\n * @internal\n * Used to iterate through all transforms that are concatenations or `split` links.\n */\n readonly left?: DocumentTransform;\n /**\n * @internal\n * Used to iterate through all transforms that are concatenations or `split` links.\n */\n readonly right?: DocumentTransform;\n}\n"],"names":[],"mappings":";;;AAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CA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"}
1
+ {"version":3,"file":"DocumentTransform.cjs","sources":["../../../../src/utilities/graphql/DocumentTransform.ts"],"sourcesContent":["import { WeakCache } from \"@wry/caches\";\nimport { Trie } from \"@wry/trie\";\nimport type { DocumentNode } from \"graphql\";\nimport { wrap } from \"optimism\";\n\nimport { checkDocument } from \"@apollo/client/utilities/internal\";\nimport { invariant } from \"@apollo/client/utilities/invariant\";\n\nimport { cacheSizes } from \"../caching/sizes.js\";\n\nexport type DocumentTransformCacheKey = ReadonlyArray<unknown>;\n\ntype TransformFn = (document: DocumentNode) => DocumentNode;\n\ninterface DocumentTransformOptions {\n /**\n * Determines whether to cache the transformed GraphQL document. Caching can\n * speed up repeated calls to the document transform for the same input\n * document. Set to `false` to completely disable caching for the document\n * transform. When disabled, this option takes precedence over the [`getCacheKey`](#getcachekey)\n * option.\n *\n * @defaultValue `true`\n */\n cache?: boolean;\n /**\n * Defines a custom cache key for a GraphQL document that will determine whether to re-run the document transform when given the same input GraphQL document. Returns an array that defines the cache key. Return `undefined` to disable caching for that GraphQL document.\n *\n * > [!NOTE]\n * > The items in the array can be any type, but each item needs to be\n * > referentially stable to guarantee a stable cache key.\n *\n * @defaultValue `(document) => [document]`\n */\n getCacheKey?: (\n document: DocumentNode\n ) => DocumentTransformCacheKey | undefined;\n}\n\nfunction identity(document: DocumentNode) {\n return document;\n}\n\n/**\n * A class for transforming GraphQL documents. See the [Document transforms\n * documentation](https://www.apollographql.com/docs/react/data/document-transforms) for more details on using them.\n *\n * @example\n *\n * ```ts\n * import { DocumentTransform } from \"@apollo/client/utilities\";\n * import { visit } from \"graphql\";\n *\n * const documentTransform = new DocumentTransform((doc) => {\n * return visit(doc, {\n * // ...\n * });\n * });\n *\n * const transformedDoc = documentTransform.transformDocument(myDocument);\n * ```\n */\nexport class DocumentTransform {\n private readonly transform: TransformFn;\n private cached: boolean;\n\n private readonly resultCache = new WeakSet<DocumentNode>();\n\n // This default implementation of getCacheKey can be overridden by providing\n // options.getCacheKey to the DocumentTransform constructor. In general, a\n // getCacheKey function may either return an array of keys (often including\n // the document) to be used as a cache key, or undefined to indicate the\n // transform for this document should not be cached.\n private getCacheKey(\n document: DocumentNode\n ): DocumentTransformCacheKey | undefined {\n return [document];\n }\n\n /**\n * Creates a DocumentTransform that returns the input document unchanged.\n *\n * @returns The input document\n */\n static identity() {\n // No need to cache this transform since it just returns the document\n // unchanged. This should save a bit of memory that would otherwise be\n // needed to populate the `documentCache` of this transform.\n return new DocumentTransform(identity, { cache: false });\n }\n\n /**\n * Creates a DocumentTransform that conditionally applies one of two transforms.\n *\n * @param predicate - Function that determines which transform to apply\n * @param left - Transform to apply when `predicate` returns `true`\n * @param right - Transform to apply when `predicate` returns `false`. If not provided, it defaults to `DocumentTransform.identity()`.\n * @returns A DocumentTransform that conditionally applies a document transform based on the predicate\n *\n * @example\n *\n * ```ts\n * import { isQueryOperation } from \"@apollo/client/utilities\";\n *\n * const conditionalTransform = DocumentTransform.split(\n * (document) => isQueryOperation(document),\n * queryTransform,\n * mutationTransform\n * );\n * ```\n */\n static split(\n predicate: (document: DocumentNode) => boolean,\n left: DocumentTransform,\n right: DocumentTransform = DocumentTransform.identity()\n ) {\n return Object.assign(\n new DocumentTransform(\n (document) => {\n const documentTransform = predicate(document) ? left : right;\n\n return documentTransform.transformDocument(document);\n },\n // Reasonably assume both `left` and `right` transforms handle their own caching\n { cache: false }\n ),\n { left, right }\n );\n }\n\n constructor(transform: TransformFn, options: DocumentTransformOptions = {}) {\n this.transform = transform;\n\n if (options.getCacheKey) {\n // Override default `getCacheKey` function, which returns [document].\n this.getCacheKey = options.getCacheKey;\n }\n this.cached = options.cache !== false;\n\n this.resetCache();\n }\n\n /**\n * Resets the internal cache of this transform, if it is cached.\n */\n resetCache() {\n if (this.cached) {\n const stableCacheKeys = new Trie<WeakKey>();\n this.performWork = wrap(\n DocumentTransform.prototype.performWork.bind(this),\n {\n makeCacheKey: (document) => {\n const cacheKeys = this.getCacheKey(document);\n if (cacheKeys) {\n invariant(\n Array.isArray(cacheKeys),\n \"`getCacheKey` must return an array or undefined\"\n );\n return stableCacheKeys.lookupArray(cacheKeys);\n }\n },\n max: cacheSizes[\"documentTransform.cache\"],\n cache: WeakCache<any, any>,\n }\n );\n }\n }\n\n private performWork(document: DocumentNode) {\n checkDocument(document);\n return this.transform(document);\n }\n\n /**\n * Transforms a GraphQL document using the configured transform function.\n *\n * @remarks\n *\n * Note that `transformDocument` caches the transformed document. Calling\n * `transformDocument` again with the already-transformed document will\n * immediately return it.\n *\n * @param document - The GraphQL document to transform\n * @returns The transformed document\n *\n * @example\n *\n * ```ts\n * const document = gql`\n * # ...\n * `;\n *\n * const documentTransform = new DocumentTransform(transformFn);\n * const transformedDocument = documentTransform.transformDocument(document);\n * ```\n */\n transformDocument(document: DocumentNode) {\n // If a user passes an already transformed result back to this function,\n // immediately return it.\n if (this.resultCache.has(document)) {\n return document;\n }\n\n const transformedDocument = this.performWork(document);\n\n this.resultCache.add(transformedDocument);\n\n return transformedDocument;\n }\n\n /**\n * Combines this document transform with another document transform. The\n * returned document transform first applies the current document transform,\n * then applies the other document transform.\n *\n * @param otherTransform - The transform to apply after this one\n * @returns A new DocumentTransform that applies both transforms in sequence\n *\n * @example\n *\n * ```ts\n * const combinedTransform = addTypenameTransform.concat(\n * removeDirectivesTransform\n * );\n * ```\n */\n concat(otherTransform: DocumentTransform): DocumentTransform {\n return Object.assign(\n new DocumentTransform(\n (document) => {\n return otherTransform.transformDocument(\n this.transformDocument(document)\n );\n },\n // Reasonably assume both transforms handle their own caching\n { cache: false }\n ),\n {\n left: this,\n right: otherTransform,\n }\n );\n }\n\n /**\n * @internal\n * Used to iterate through all transforms that are concatenations or `split` links.\n */\n readonly left?: DocumentTransform;\n /**\n * @internal\n * Used to iterate through all transforms that are concatenations or `split` links.\n */\n readonly right?: DocumentTransform;\n}\n"],"names":[],"mappings":";;;AAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AA+BA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,CAAC,CAAlB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAwC,EAAxC;IACE,CAAF,CAAA,CAAA,CAAA,CAAA,EAAS,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB;AACjB;AAEA,CAAA,CAAA;;;;;;;;;;;;;;;;;;CAkBA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,EAAa,CAAb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA;IACmB,CAAnB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA4B;IAClB,CAAV,CAAA,CAAA,CAAA,CAAA,CAAgB;IAEG,CAAnB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAiC,CAAjC,CAAA,EAAqC,CAArC,CAAA,CAAA,CAAA,CAAA,CAAA,CAA4C,CAA5C,CAA4D;IAE1D,CAAF,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACE,CAAF,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA;IACE,CAAF,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACE,CAAF,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA;IACE,CAAF,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACU,CAAV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqB,CACjB,CADJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAC0B,EAD1B;QAGI,CAAJ,CAAA,CAAA,CAAA,CAAA,EAAW,CAAC,CAAZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoB,CAAC;IACnB;IAEA,CAAF,CAAA;;;;KAIA,CAAA;IACE,CAAF,CAAA,CAAA,CAAA,CAAA,EAAS,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,CAAjB,EAAA;QACI,CAAJ,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QACI,CAAJ,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;QACI,CAAJ,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QACI,CAAJ,CAAA,CAAA,CAAA,CAAA,EAAW,CAAX,CAAA,EAAe,CAAf,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgC,CAAC,CAAjC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAyC,EAAE,EAAE,CAA7C,CAAA,CAAA,CAAA,CAAkD,EAAE,CAApD,CAAA,CAAA,CAAA,EAAA,CAA2D,CAAC;IAC1D;IAEA,CAAF,CAAA;;;;;;;;;;;;;;;;;;;KAmBA,CAAA;IACE,CAAF,CAAA,CAAA,CAAA,CAAA,EAAS,CAAT,CAAA,CAAA,CAAA,CAAc,CACV,CADJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACkD,EAC9C,CAFJ,CAAA,CAAA,CAE2B,EACvB,CAHJ,CAAA,CAAA,CAAA,EAAA,EAG+B,CAH/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAGgD,CAAC,CAHjD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAGyD,CAHzD,CAG2D,EAH3D;QAKI,CAAJ,CAAA,CAAA,CAAA,CAAA,EAAW,CAAX,CAAA,CAAA,CAAA,CAAA,CAAiB,CAAC,CAAlB,CAAA,CAAA,CAAA,CAAA,CAAwB,CAClB,CADN,CAAA,EACU,CADV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAC2B,CACnB,CAAC,CAFT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEiB,EAAE,CAFnB,EAAA;YAGU,CAAV,CAAA,CAAA,CAAA,EAAgB,CAAhB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAoC,CAApC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA6C,CAAC,CAA9C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsD,EAAE,EAAE,CAA1D,CAAA,CAAA,EAA+D,EAAE,CAAjE,CAAA,CAAA,CAAA,CAAsE;YAE5D,CAAV,CAAA,CAAA,CAAA,CAAA,EAAiB,CAAjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkC,CAAC,CAAnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoD,CAAC,CAArD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA6D,CAAC;QACtD,CAAC;QACD,CAAR,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QACQ,EAAE,CAAV,CAAA,CAAA,CAAA,CAAe,EAAE,CAAjB,CAAA,CAAA,CAAA,EAAA,CAAwB,CACjB,EACD,EAAE,CAFR,CAAA,CAAA,CAEY,EAAE,CAFd,CAAA,CAAA,CAAA,EAAA,CAEqB,CAChB;IACH;IAEA,CAAF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoC,EAAE,CAAtC,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAA0E,CAA1E,CAA4E,EAA5E;QACI,CAAJ,CAAA,CAAA,CAAQ,CAAC,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAqB,CAArB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA8B;QAE1B,CAAJ,EAAA,CAAQ,CAAR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,CAAC,CAAhB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA2B,EAAE;YACvB,CAAN,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACM,CAAN,CAAA,CAAA,CAAU,CAAC,CAAX,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAyB,CAAzB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgC,CAAC,CAAjC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA4C;QACxC;QACA,CAAJ,CAAA,CAAA,CAAQ,CAAC,CAAT,CAAA,CAAA,CAAA,CAAA,EAAA,EAAkB,CAAlB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAyB,CAAC,CAA1B,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAoC,CAApC,CAAA,CAAA,CAAA,CAAyC;QAErC,CAAJ,CAAA,CAAA,CAAQ,CAAC,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAmB,CAAnB,CAAqB;IACnB;IAEA,CAAF,CAAA;;KAEA,CAAA;IACE,CAAF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAZ,EAAA;QACI,CAAJ,EAAA,CAAQ,CAAR,CAAA,CAAA,CAAY,CAAC,CAAb,CAAA,CAAA,CAAA,CAAA,CAAmB,EAAE;YACf,CAAN,CAAA,CAAA,CAAA,EAAY,CAAZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAA8B,CAA9B,CAAA,EAAkC,CAAlC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsC,CAAtC,CAAiD;YAC3C,CAAN,CAAA,CAAA,CAAU,CAAC,CAAX,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAyB,CAAzB,CAAA,EAAyB,CAAzB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA6B,CAA7B,CACQ,CADR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACyB,CAAC,CAD1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACmC,CAAC,CADpC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAC+C,CAAC,CADhD,CAAA,CAAA,CACoD,CAAC,CADrD,CAAA,CAAA,CACyD,CAAC,EAClD;gBACE,CAAV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,EAAE,CAAC,CAAzB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiC,EAAE,CAAnC,EAAA;oBACY,CAAZ,CAAA,CAAA,CAAA,EAAkB,CAAlB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAA8B,CAA9B,CAAA,CAAA,CAAkC,CAAC,CAAnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA8C,CAAC,CAA/C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuD,CAAC;oBAC5C,CAAZ,EAAA,CAAgB,CAAhB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAyB,EAAE;yBAC3B,GAAc,CAAd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GACgB,CADhB,CAAA,CAAA,CAAA,CACqB,CAAC,CADtB,CAAA,CAAA,CAAA,CAAA,CAAA,CAC6B,CAAC,CAD9B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACuC,MAExB;wBACD,CAAd,CAAA,CAAA,CAAA,CAAA,EAAqB,CAArB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoC,CAAC,CAArC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgD,CAAC,CAAjD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA0D,CAAC;oBAC/C;gBACF,CAAC;gBACD,CAAV,CAAA,CAAa,EAAE,CAAf,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAyB,CAAC,CAA1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAmD,CAAC;gBAC1C,CAAV,CAAA,CAAA,CAAA,CAAe,EAAE,CAAA,CAAjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoC,CAAA;YACpC,CAAS,CACF;QACH;IACF;IAEQ,CAAV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqB,CAAC,CAAtB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA4C,EAA5C;QACI,CAAJ,CAAA,EAAI,CAAJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,CAAjB,CAAkB,CAAlB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA0B,CAAC;QACvB,CAAJ,CAAA,CAAA,CAAA,CAAA,EAAW,CAAX,CAAA,CAAA,CAAe,CAAC,CAAhB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAyB,CAAC,CAA1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkC,CAAC;IACjC;IAEA,CAAF,CAAA;;;;;;;;;;;;;;;;;;;;;;KAsBA,CAAA;IACE,CAAF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAmB,CAAC,CAApB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA0C,EAA1C;QACI,CAAJ,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QACI,CAAJ,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA;QACI,CAAJ,EAAA,CAAQ,CAAR,CAAA,CAAA,CAAY,CAAC,CAAb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAwB,CAAC,CAAzB,CAAA,CAA4B,CAAC,CAA7B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqC,CAAC,EAAE;YAClC,CAAN,CAAA,CAAA,CAAA,CAAA,EAAa,CAAb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqB;QACjB;QAEA,CAAJ,CAAA,CAAA,CAAA,EAAU,CAAV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAgC,CAAhC,CAAA,CAAA,CAAoC,CAAC,CAArC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgD,CAAC,CAAjD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAyD,CAAC;QAEtD,CAAJ,CAAA,CAAA,CAAQ,CAAC,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoB,CAAC,CAArB,CAAA,CAAwB,CAAC,CAAzB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA4C,CAAC;QAEzC,CAAJ,CAAA,CAAA,CAAA,CAAA,EAAW,CAAX,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA8B;IAC5B;IAEA,CAAF,CAAA;;;;;;;;;;;;;;;KAeA,CAAA;IACE,CAAF,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAC,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA0C,EAA1C;QACI,CAAJ,CAAA,CAAA,CAAA,CAAA,EAAW,CAAX,CAAA,CAAA,CAAA,CAAA,CAAiB,CAAC,CAAlB,CAAA,CAAA,CAAA,CAAA,CAAwB,CAClB,CADN,CAAA,EACU,CADV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAC2B,CACnB,CAAC,CAFT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEiB,EAAE,CAFnB,EAAA;YAGU,CAAV,CAAA,CAAA,CAAA,CAAA,EAAiB,CAAjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA+B,CAAC,CAAhC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiD,CACrC,CADZ,CAAA,CAAA,CACgB,CAAC,CADjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACkC,CAAC,CADnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAC2C,CAAC,CACjC;QACH,CAAC;QACD,CAAR,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QACQ,EAAE,CAAV,CAAA,CAAA,CAAA,CAAe,EAAE,CAAjB,CAAA,CAAA,CAAA,EAAA,CAAwB,CACjB,EACD;YACE,CAAR,CAAA,CAAA,CAAY,EAAE,CAAd,CAAA,CAAA,CAAkB;YACV,CAAR,CAAA,CAAA,CAAA,CAAa,EAAE,CAAf,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA6B;QAC7B,CAAO,CACF;IACH;;;;;;;IAMS,CAAX,CAAA,CAAA,CAAe;;;;;;;IAKJ,CAAX,CAAA,CAAA,CAAA,CAAgB;AAChB;AAhMA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;"}
@@ -3,37 +3,126 @@ export type DocumentTransformCacheKey = ReadonlyArray<unknown>;
3
3
  type TransformFn = (document: DocumentNode) => DocumentNode;
4
4
  interface DocumentTransformOptions {
5
5
  /**
6
- * Determines whether to cache the transformed GraphQL document. Caching can speed up repeated calls to the document transform for the same input document. Set to `false` to completely disable caching for the document transform. When disabled, this option takes precedence over the [`getCacheKey`](#getcachekey) option.
6
+ * Determines whether to cache the transformed GraphQL document. Caching can
7
+ * speed up repeated calls to the document transform for the same input
8
+ * document. Set to `false` to completely disable caching for the document
9
+ * transform. When disabled, this option takes precedence over the [`getCacheKey`](#getcachekey)
10
+ * option.
7
11
  *
8
- * The default value is `true`.
12
+ * @defaultValue `true`
9
13
  */
10
14
  cache?: boolean;
11
15
  /**
12
16
  * Defines a custom cache key for a GraphQL document that will determine whether to re-run the document transform when given the same input GraphQL document. Returns an array that defines the cache key. Return `undefined` to disable caching for that GraphQL document.
13
17
  *
14
- * > **Note:** The items in the array may be any type, but also need to be referentially stable to guarantee a stable cache key.
18
+ * > [!NOTE]
19
+ * > The items in the array can be any type, but each item needs to be
20
+ * > referentially stable to guarantee a stable cache key.
15
21
  *
16
- * The default implementation of this function returns the `document` as the cache key.
22
+ * @defaultValue `(document) => [document]`
17
23
  */
18
24
  getCacheKey?: (document: DocumentNode) => DocumentTransformCacheKey | undefined;
19
25
  }
26
+ /**
27
+ * A class for transforming GraphQL documents. See the [Document transforms
28
+ * documentation](https://www.apollographql.com/docs/react/data/document-transforms) for more details on using them.
29
+ *
30
+ * @example
31
+ *
32
+ * ```ts
33
+ * import { DocumentTransform } from "@apollo/client/utilities";
34
+ * import { visit } from "graphql";
35
+ *
36
+ * const documentTransform = new DocumentTransform((doc) => {
37
+ * return visit(doc, {
38
+ * // ...
39
+ * });
40
+ * });
41
+ *
42
+ * const transformedDoc = documentTransform.transformDocument(myDocument);
43
+ * ```
44
+ */
20
45
  export declare class DocumentTransform {
21
46
  private readonly transform;
22
47
  private cached;
23
48
  private readonly resultCache;
24
49
  private getCacheKey;
50
+ /**
51
+ * Creates a DocumentTransform that returns the input document unchanged.
52
+ *
53
+ * @returns The input document
54
+ */
25
55
  static identity(): DocumentTransform;
56
+ /**
57
+ * Creates a DocumentTransform that conditionally applies one of two transforms.
58
+ *
59
+ * @param predicate - Function that determines which transform to apply
60
+ * @param left - Transform to apply when `predicate` returns `true`
61
+ * @param right - Transform to apply when `predicate` returns `false`. If not provided, it defaults to `DocumentTransform.identity()`.
62
+ * @returns A DocumentTransform that conditionally applies a document transform based on the predicate
63
+ *
64
+ * @example
65
+ *
66
+ * ```ts
67
+ * import { isQueryOperation } from "@apollo/client/utilities";
68
+ *
69
+ * const conditionalTransform = DocumentTransform.split(
70
+ * (document) => isQueryOperation(document),
71
+ * queryTransform,
72
+ * mutationTransform
73
+ * );
74
+ * ```
75
+ */
26
76
  static split(predicate: (document: DocumentNode) => boolean, left: DocumentTransform, right?: DocumentTransform): DocumentTransform & {
27
77
  left: DocumentTransform;
28
78
  right: DocumentTransform;
29
79
  };
30
80
  constructor(transform: TransformFn, options?: DocumentTransformOptions);
31
81
  /**
32
- * Resets the internal cache of this transform, if it has one.
82
+ * Resets the internal cache of this transform, if it is cached.
33
83
  */
34
84
  resetCache(): void;
35
85
  private performWork;
86
+ /**
87
+ * Transforms a GraphQL document using the configured transform function.
88
+ *
89
+ * @remarks
90
+ *
91
+ * Note that `transformDocument` caches the transformed document. Calling
92
+ * `transformDocument` again with the already-transformed document will
93
+ * immediately return it.
94
+ *
95
+ * @param document - The GraphQL document to transform
96
+ * @returns The transformed document
97
+ *
98
+ * @example
99
+ *
100
+ * ```ts
101
+ * const document = gql`
102
+ * # ...
103
+ * `;
104
+ *
105
+ * const documentTransform = new DocumentTransform(transformFn);
106
+ * const transformedDocument = documentTransform.transformDocument(document);
107
+ * ```
108
+ */
36
109
  transformDocument(document: DocumentNode): DocumentNode;
110
+ /**
111
+ * Combines this document transform with another document transform. The
112
+ * returned document transform first applies the current document transform,
113
+ * then applies the other document transform.
114
+ *
115
+ * @param otherTransform - The transform to apply after this one
116
+ * @returns A new DocumentTransform that applies both transforms in sequence
117
+ *
118
+ * @example
119
+ *
120
+ * ```ts
121
+ * const combinedTransform = addTypenameTransform.concat(
122
+ * removeDirectivesTransform
123
+ * );
124
+ * ```
125
+ */
37
126
  concat(otherTransform: DocumentTransform): DocumentTransform;
38
127
  /**
39
128
  * @internal
@@ -1,6 +1,33 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isFormattedExecutionResult = isFormattedExecutionResult;
4
+ /**
5
+ * Determines whether the given object is a valid GraphQL execution result
6
+ * according to the GraphQL specification.
7
+ *
8
+ * @remarks
9
+ *
10
+ * A valid execution result must be an object that contains only `data`,
11
+ * `errors`, and/or `extensions` properties. At least one of `data` or `errors`
12
+ * must be present.
13
+ *
14
+ * @param result - The object to test
15
+ * @returns `true` if the object conforms to the GraphQL execution result format
16
+ *
17
+ * @example
18
+ *
19
+ * ```ts
20
+ * import { isFormattedExecutionResult } from "@apollo/client/utilities";
21
+ *
22
+ * // Valid execution result
23
+ * const validResult = { data: { user: { name: "John" } } };
24
+ * console.log(isFormattedExecutionResult(validResult)); // true
25
+ *
26
+ * // Invalid - contains non-standard properties
27
+ * const invalidResult = { data: {}, customField: "value" };
28
+ * console.log(isFormattedExecutionResult(invalidResult)); // false
29
+ * ```
30
+ */
4
31
  function isFormattedExecutionResult(result) {
5
32
  return (!!result &&
6
33
  ("errors" in result || "data" in result) &&
@@ -1 +1 @@
1
- {"version":3,"file":"isFormattedExecutionResult.cjs","sources":["../../../../src/utilities/graphql/isFormattedExecutionResult.ts"],"sourcesContent":["import type { FormattedExecutionResult } from \"graphql\";\n\nexport function isFormattedExecutionResult(\n result?: object\n): result is FormattedExecutionResult {\n return (\n !!result &&\n (\"errors\" in result || \"data\" in result) &&\n Object.keys(result).every(\n (key) => key === \"errors\" || key === \"data\" || key === \"extensions\"\n )\n );\n}\n"],"names":[],"mappings":";;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAgB,CAAhB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA0C,CACxC,CADF,CAAA,CAAA,CAAA,CAAA,CACiB,EADjB;IAGE,CAAF,CAAA,CAAA,CAAA,CAAA,EAAS,CACL,CAAC,CAAC,CADN,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;QAEI,CAAC,CAAL,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAiB,CAAjB,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAA2B,CAA3B,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAqC,CAArC,CAAA,CAAA,CAAA,CAAA,CAA2C,EAA3C,CAAA;QACI,CAAJ,CAAA,CAAA,CAAA,CAAA,CAAU,CAAC,CAAX,CAAA,CAAA,CAAe,CAAC,CAAhB,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAC,CAAC,CAAxB,CAAA,CAAA,CAAA,CAA6B,CACvB,CAAC,CADP,CAAA,CACU,EAAE,CADZ,EACe,CADf,CAAA,EAAA,CAAA,CAAA,EACuB,CADvB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EACmC,CADnC,CAAA,EAAA,CAAA,CAAA,EAC2C,CAD3C,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EACqD,CADrD,CAAA,EAAA,CAAA,CAAA,EAC6D,CAD7D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACyE,CACpE,CACF;AACH;"}
1
+ {"version":3,"file":"isFormattedExecutionResult.cjs","sources":["../../../../src/utilities/graphql/isFormattedExecutionResult.ts"],"sourcesContent":["import type { FormattedExecutionResult } from \"graphql\";\n\n/**\n * Determines whether the given object is a valid GraphQL execution result\n * according to the GraphQL specification.\n *\n * @remarks\n *\n * A valid execution result must be an object that contains only `data`,\n * `errors`, and/or `extensions` properties. At least one of `data` or `errors`\n * must be present.\n *\n * @param result - The object to test\n * @returns `true` if the object conforms to the GraphQL execution result format\n *\n * @example\n *\n * ```ts\n * import { isFormattedExecutionResult } from \"@apollo/client/utilities\";\n *\n * // Valid execution result\n * const validResult = { data: { user: { name: \"John\" } } };\n * console.log(isFormattedExecutionResult(validResult)); // true\n *\n * // Invalid - contains non-standard properties\n * const invalidResult = { data: {}, customField: \"value\" };\n * console.log(isFormattedExecutionResult(invalidResult)); // false\n * ```\n */\nexport function isFormattedExecutionResult(\n result?: object\n): result is FormattedExecutionResult {\n return (\n !!result &&\n (\"errors\" in result || \"data\" in result) &&\n Object.keys(result).every(\n (key) => key === \"errors\" || key === \"data\" || key === \"extensions\"\n )\n );\n}\n"],"names":[],"mappings":";;AA6BA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AA3BA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAgB,CAAhB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA0C,CACxC,CADF,CAAA,CAAA,CAAA,CAAA,CACiB,EADjB;IAGE,CAAF,CAAA,CAAA,CAAA,CAAA,EAAS,CACL,CAAC,CAAC,CADN,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;QAEI,CAAC,CAAL,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAiB,CAAjB,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAA2B,CAA3B,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAqC,CAArC,CAAA,CAAA,CAAA,CAAA,CAA2C,EAA3C,CAAA;QACI,CAAJ,CAAA,CAAA,CAAA,CAAA,CAAU,CAAC,CAAX,CAAA,CAAA,CAAe,CAAC,CAAhB,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAC,CAAC,CAAxB,CAAA,CAAA,CAAA,CAA6B,CACvB,CAAC,CADP,CAAA,CACU,EAAE,CADZ,EACe,CADf,CAAA,EAAA,CAAA,CAAA,EACuB,CADvB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EACmC,CADnC,CAAA,EAAA,CAAA,CAAA,EAC2C,CAD3C,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EACqD,CADrD,CAAA,EAAA,CAAA,CAAA,EAC6D,CAD7D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACyE,CACpE,CACF;AACH;"}
@@ -1,3 +1,30 @@
1
1
  import type { FormattedExecutionResult } from "graphql";
2
+ /**
3
+ * Determines whether the given object is a valid GraphQL execution result
4
+ * according to the GraphQL specification.
5
+ *
6
+ * @remarks
7
+ *
8
+ * A valid execution result must be an object that contains only `data`,
9
+ * `errors`, and/or `extensions` properties. At least one of `data` or `errors`
10
+ * must be present.
11
+ *
12
+ * @param result - The object to test
13
+ * @returns `true` if the object conforms to the GraphQL execution result format
14
+ *
15
+ * @example
16
+ *
17
+ * ```ts
18
+ * import { isFormattedExecutionResult } from "@apollo/client/utilities";
19
+ *
20
+ * // Valid execution result
21
+ * const validResult = { data: { user: { name: "John" } } };
22
+ * console.log(isFormattedExecutionResult(validResult)); // true
23
+ *
24
+ * // Invalid - contains non-standard properties
25
+ * const invalidResult = { data: {}, customField: "value" };
26
+ * console.log(isFormattedExecutionResult(invalidResult)); // false
27
+ * ```
28
+ */
2
29
  export declare function isFormattedExecutionResult(result?: object): result is FormattedExecutionResult;
3
30
  //# sourceMappingURL=isFormattedExecutionResult.d.cts.map
@@ -10,9 +10,26 @@ function isOperation(document, operation) {
10
10
  /**
11
11
  * Determine if a document is a mutation document.
12
12
  *
13
+ * @remarks
14
+ * If you are authoring an Apollo link, you might not need this utility.
15
+ * Prefer using the `operationType` property the `operation` object instead.
16
+ *
13
17
  * @param document - The GraphQL document to check
18
+ * @returns A boolean indicating if the document is a mutation operation
19
+ *
20
+ * @example
21
+ *
22
+ * ```ts
23
+ * import { isMutationOperation } from "@apollo/client/utilities";
14
24
  *
15
- * @since 3.8.0
25
+ * const mutation = gql`
26
+ * mutation MyMutation {
27
+ * # ...
28
+ * }
29
+ * `;
30
+ *
31
+ * isMutationOperation(mutation); // true
32
+ * ```
16
33
  */
17
34
  function isMutationOperation(document) {
18
35
  return isOperation(document, "mutation");
@@ -20,9 +37,26 @@ function isMutationOperation(document) {
20
37
  /**
21
38
  * Determine if a document is a query document.
22
39
  *
40
+ * @remarks
41
+ * If you are authoring an Apollo link, you might not need this utility.
42
+ * Prefer using the `operationType` property the `operation` object instead.
43
+ *
23
44
  * @param document - The GraphQL document to check
45
+ * @returns A boolean indicating if the document is a query operation
46
+ *
47
+ * @example
24
48
  *
25
- * @since 3.8.0
49
+ * ```ts
50
+ * import { isQueryOperation } from "@apollo/client/utilities";
51
+ *
52
+ * const query = gql`
53
+ * query MyQuery {
54
+ * # ...
55
+ * }
56
+ * `;
57
+ *
58
+ * isQueryOperation(query); // true
59
+ * ```
26
60
  */
27
61
  function isQueryOperation(document) {
28
62
  return isOperation(document, "query");
@@ -30,9 +64,26 @@ function isQueryOperation(document) {
30
64
  /**
31
65
  * Determine if a document is a subscription document.
32
66
  *
67
+ * @remarks
68
+ * If you are authoring an Apollo link, you might not need this utility.
69
+ * Prefer using the `operationType` property the `operation` object instead.
70
+ *
33
71
  * @param document - The GraphQL document to check
72
+ * @returns A boolean indicating if the document is a subscription operation
73
+ *
74
+ * @example
75
+ *
76
+ * ```ts
77
+ * import { isSubscriptionOperation } from "@apollo/client/utilities";
78
+ *
79
+ * const subscription = gql`
80
+ * subscription MySubscription {
81
+ * # ...
82
+ * }
83
+ * `;
34
84
  *
35
- * @since 3.8.0
85
+ * isSubscriptionOperation(subscription); // true
86
+ * ```
36
87
  */
37
88
  function isSubscriptionOperation(document) {
38
89
  return isOperation(document, "subscription");
@@ -1 +1 @@
1
- {"version":3,"file":"operations.cjs","sources":["../../../../src/utilities/graphql/operations.ts"],"sourcesContent":["import type { DocumentNode } from \"@apollo/client\";\nimport { getOperationDefinition } from \"@apollo/client/utilities/internal\";\n\nfunction isOperation(\n document: DocumentNode,\n operation: \"query\" | \"mutation\" | \"subscription\"\n) {\n return getOperationDefinition(document)?.operation === operation;\n}\n\n/**\n * Determine if a document is a mutation document.\n *\n * @param document - The GraphQL document to check\n *\n * @since 3.8.0\n */\nexport function isMutationOperation(document: DocumentNode) {\n return isOperation(document, \"mutation\");\n}\n\n/**\n * Determine if a document is a query document.\n *\n * @param document - The GraphQL document to check\n *\n * @since 3.8.0\n */\nexport function isQueryOperation(document: DocumentNode) {\n return isOperation(document, \"query\");\n}\n\n/**\n * Determine if a document is a subscription document.\n *\n * @param document - The GraphQL document to check\n *\n * @since 3.8.0\n */\nexport function isSubscriptionOperation(document: DocumentNode) {\n return isOperation(document, \"subscription\");\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operations.cjs","sources":["../../../../src/utilities/graphql/operations.ts"],"sourcesContent":["import type { DocumentNode } from \"@apollo/client\";\nimport { getOperationDefinition } from \"@apollo/client/utilities/internal\";\n\nfunction isOperation(\n document: DocumentNode,\n operation: \"query\" | \"mutation\" | \"subscription\"\n) {\n return getOperationDefinition(document)?.operation === operation;\n}\n\n/**\n * Determine if a document is a mutation document.\n *\n * @remarks\n * If you are authoring an Apollo link, you might not need this utility.\n * Prefer using the `operationType` property the `operation` object instead.\n *\n * @param document - The GraphQL document to check\n * @returns A boolean indicating if the document is a mutation operation\n *\n * @example\n *\n * ```ts\n * import { isMutationOperation } from \"@apollo/client/utilities\";\n *\n * const mutation = gql`\n * mutation MyMutation {\n * # ...\n * }\n * `;\n *\n * isMutationOperation(mutation); // true\n * ```\n */\nexport function isMutationOperation(document: DocumentNode) {\n return isOperation(document, \"mutation\");\n}\n\n/**\n * Determine if a document is a query document.\n *\n * @remarks\n * If you are authoring an Apollo link, you might not need this utility.\n * Prefer using the `operationType` property the `operation` object instead.\n *\n * @param document - The GraphQL document to check\n * @returns A boolean indicating if the document is a query operation\n *\n * @example\n *\n * ```ts\n * import { isQueryOperation } from \"@apollo/client/utilities\";\n *\n * const query = gql`\n * query MyQuery {\n * # ...\n * }\n * `;\n *\n * isQueryOperation(query); // true\n * ```\n */\nexport function isQueryOperation(document: DocumentNode) {\n return isOperation(document, \"query\");\n}\n\n/**\n * Determine if a document is a subscription document.\n *\n * @remarks\n * If you are authoring an Apollo link, you might not need this utility.\n * Prefer using the `operationType` property the `operation` object instead.\n *\n * @param document - The GraphQL document to check\n * @returns A boolean indicating if the document is a subscription operation\n *\n * @example\n *\n * ```ts\n * import { isSubscriptionOperation } from \"@apollo/client/utilities\";\n *\n * const subscription = gql`\n * subscription MySubscription {\n * # ...\n * }\n * `;\n *\n * isSubscriptionOperation(subscription); // true\n * ```\n */\nexport function isSubscriptionOperation(document: DocumentNode) {\n return isOperation(document, \"subscription\");\n}\n"],"names":[],"mappings":";;AAkCA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AA4BA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AA4BA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAzFA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoB,CAClB,CADF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACwB,EACtB,CAFF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEkD,EAFlD;IAIE,CAAF,CAAA,CAAA,CAAA,CAAA,EAAS,CAAT,CAAA,EAAS,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA+B,CAA/B,CAAgC,CAAhC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAwC,CAAC,CAAzC,CAA2C,CAA3C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAyD,CAAzD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkE;AAClE;AAEA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;CAuBA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAgB,CAAhB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAmC,CAAC,CAApC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA0D,EAA1D;IACE,CAAF,CAAA,CAAA,CAAA,CAAA,EAAS,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoB,CAAC,CAArB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA6B,EAAE,CAA/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAyC,CAAC;AAC1C;AAEA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;CAuBA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAgB,CAAhB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgC,CAAC,CAAjC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuD,EAAvD;IACE,CAAF,CAAA,CAAA,CAAA,CAAA,EAAS,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoB,CAAC,CAArB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA6B,EAAE,CAA/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsC,CAAC;AACvC;AAEA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;CAuBA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAgB,CAAhB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuC,CAAC,CAAxC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA8D,EAA9D;IACE,CAAF,CAAA,CAAA,CAAA,CAAA,EAAS,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoB,CAAC,CAArB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA6B,EAAE,CAA/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA6C,CAAC;AAC9C;"}
@@ -2,25 +2,76 @@ import type { DocumentNode } from "@apollo/client";
2
2
  /**
3
3
  * Determine if a document is a mutation document.
4
4
  *
5
+ * @remarks
6
+ * If you are authoring an Apollo link, you might not need this utility.
7
+ * Prefer using the `operationType` property the `operation` object instead.
8
+ *
5
9
  * @param document - The GraphQL document to check
10
+ * @returns A boolean indicating if the document is a mutation operation
11
+ *
12
+ * @example
13
+ *
14
+ * ```ts
15
+ * import { isMutationOperation } from "@apollo/client/utilities";
6
16
  *
7
- * @since 3.8.0
17
+ * const mutation = gql`
18
+ * mutation MyMutation {
19
+ * # ...
20
+ * }
21
+ * `;
22
+ *
23
+ * isMutationOperation(mutation); // true
24
+ * ```
8
25
  */
9
26
  export declare function isMutationOperation(document: DocumentNode): boolean;
10
27
  /**
11
28
  * Determine if a document is a query document.
12
29
  *
30
+ * @remarks
31
+ * If you are authoring an Apollo link, you might not need this utility.
32
+ * Prefer using the `operationType` property the `operation` object instead.
33
+ *
13
34
  * @param document - The GraphQL document to check
35
+ * @returns A boolean indicating if the document is a query operation
36
+ *
37
+ * @example
14
38
  *
15
- * @since 3.8.0
39
+ * ```ts
40
+ * import { isQueryOperation } from "@apollo/client/utilities";
41
+ *
42
+ * const query = gql`
43
+ * query MyQuery {
44
+ * # ...
45
+ * }
46
+ * `;
47
+ *
48
+ * isQueryOperation(query); // true
49
+ * ```
16
50
  */
17
51
  export declare function isQueryOperation(document: DocumentNode): boolean;
18
52
  /**
19
53
  * Determine if a document is a subscription document.
20
54
  *
55
+ * @remarks
56
+ * If you are authoring an Apollo link, you might not need this utility.
57
+ * Prefer using the `operationType` property the `operation` object instead.
58
+ *
21
59
  * @param document - The GraphQL document to check
60
+ * @returns A boolean indicating if the document is a subscription operation
61
+ *
62
+ * @example
63
+ *
64
+ * ```ts
65
+ * import { isSubscriptionOperation } from "@apollo/client/utilities";
66
+ *
67
+ * const subscription = gql`
68
+ * subscription MySubscription {
69
+ * # ...
70
+ * }
71
+ * `;
22
72
  *
23
- * @since 3.8.0
73
+ * isSubscriptionOperation(subscription); // true
74
+ * ```
24
75
  */
25
76
  export declare function isSubscriptionOperation(document: DocumentNode): boolean;
26
77
  //# sourceMappingURL=operations.d.cts.map
@@ -5,6 +5,15 @@ exports.isReference = isReference;
5
5
  * Determines if a given object is a reference object.
6
6
  *
7
7
  * @param obj - The object to check if its a reference object
8
+ *
9
+ * @example
10
+ *
11
+ * ```ts
12
+ * import { isReference } from "@apollo/client/utilities";
13
+ *
14
+ * isReference({ __ref: "User:1" }); // true
15
+ * isReference({ __typename: "User", id: 1 }); // false
16
+ * ```
8
17
  */
9
18
  function isReference(obj) {
10
19
  return Boolean(obj && typeof obj === "object" && typeof obj.__ref === "string");
@@ -1 +1 @@
1
- {"version":3,"file":"storeUtils.cjs","sources":["../../../../src/utilities/graphql/storeUtils.ts"],"sourcesContent":["/**\n * Representation of a reference object inside the cache.\n */\nexport interface Reference {\n readonly __ref: string;\n}\n\n/**\n * Determines if a given object is a reference object.\n *\n * @param obj - The object to check if its a reference object\n */\nexport function isReference(obj: any): obj is Reference {\n return Boolean(\n obj && typeof obj === \"object\" && typeof obj.__ref === \"string\"\n );\n}\n\n/**\n * Represents the union of valid values that can be stored in the cache.\n */\nexport type StoreValue =\n | number\n | string\n | string[]\n | Reference\n | Reference[]\n | null\n | undefined\n | void\n | Object;\n\n/**\n * Represents an object that is stored in the cache.\n */\nexport interface StoreObject {\n __typename?: string;\n [storeFieldName: string]: StoreValue;\n}\n\n/**\n * Workaround for a TypeScript quirk:\n * types per default have an implicit index signature that makes them\n * assignable to `StoreObject`.\n * interfaces do not have that implicit index signature, so they cannot\n * be assigned to `StoreObject`.\n * This type just maps over a type or interface that is passed in,\n * implicitly adding the index signature.\n * That way, the result can be assigned to `StoreObject`.\n *\n * This is important if some user-defined interface is used e.g.\n * in cache.modify, where the `toReference` method expects a\n * `StoreObject` as input.\n */\nexport type AsStoreObject<T extends { __typename?: string }> = {\n [K in keyof T]: T[K];\n};\n"],"names":[],"mappings":";;AAYA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AALA,CAAA,CAAA;;;;CAIA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAgB,CAAhB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA2B,CAAC,CAA5B,CAAA,CAAoC,EAApC;IACE,CAAF,CAAA,CAAA,CAAA,CAAA,EAAS,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CACZ,CADJ,CAAA,EAAA,CAAA,EACW,CADX,CAAA,CAAA,CAAA,CAAA,EACkB,CADlB,CAAA,EAAA,CAAA,CAAA,EAC0B,CAD1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EACsC,CADtC,CAAA,CAAA,CAAA,CAAA,EAC6C,CAD7C,CAAA,CACgD,CAAC,CADjD,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAC2D,CAD3D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACmE,CAChE;AACH;"}
1
+ {"version":3,"file":"storeUtils.cjs","sources":["../../../../src/utilities/graphql/storeUtils.ts"],"sourcesContent":["/**\n * Representation of a reference object inside the cache.\n */\nexport interface Reference {\n readonly __ref: string;\n}\n\n/**\n * Determines if a given object is a reference object.\n *\n * @param obj - The object to check if its a reference object\n *\n * @example\n *\n * ```ts\n * import { isReference } from \"@apollo/client/utilities\";\n *\n * isReference({ __ref: \"User:1\" }); // true\n * isReference({ __typename: \"User\", id: 1 }); // false\n * ```\n */\nexport function isReference(obj: any): obj is Reference {\n return Boolean(\n obj && typeof obj === \"object\" && typeof obj.__ref === \"string\"\n );\n}\n\n/**\n * Represents the union of valid values that can be stored in the cache.\n */\nexport type StoreValue =\n | number\n | string\n | string[]\n | Reference\n | Reference[]\n | null\n | undefined\n | void\n | Object;\n\n/**\n * Represents an object that is stored in the cache.\n */\nexport interface StoreObject {\n __typename?: string;\n [storeFieldName: string]: StoreValue;\n}\n\n/**\n * Workaround for a TypeScript quirk:\n * types per default have an implicit index signature that makes them\n * assignable to `StoreObject`.\n * interfaces do not have that implicit index signature, so they cannot\n * be assigned to `StoreObject`.\n * This type just maps over a type or interface that is passed in,\n * implicitly adding the index signature.\n * That way, the result can be assigned to `StoreObject`.\n *\n * This is important if some user-defined interface is used e.g.\n * in cache.modify, where the `toReference` method expects a\n * `StoreObject` as input.\n */\nexport type AsStoreObject<T extends { __typename?: string }> = {\n [K in keyof T]: T[K];\n};\n"],"names":[],"mappings":";;AAqBA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAdA,CAAA,CAAA;;;;;;;;;;;;;CAaA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAgB,CAAhB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA2B,CAAC,CAA5B,CAAA,CAAoC,EAApC;IACE,CAAF,CAAA,CAAA,CAAA,CAAA,EAAS,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CACZ,CADJ,CAAA,EAAA,CAAA,EACW,CADX,CAAA,CAAA,CAAA,CAAA,EACkB,CADlB,CAAA,EAAA,CAAA,CAAA,EAC0B,CAD1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EACsC,CADtC,CAAA,CAAA,CAAA,CAAA,EAC6C,CAD7C,CAAA,CACgD,CAAC,CADjD,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAC2D,CAD3D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACmE,CAChE;AACH;"}