@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
@@ -7,6 +7,25 @@ import { cacheSizes } from "../caching/sizes.js";
7
7
  function identity(document) {
8
8
  return document;
9
9
  }
10
+ /**
11
+ * A class for transforming GraphQL documents. See the [Document transforms
12
+ * documentation](https://www.apollographql.com/docs/react/data/document-transforms) for more details on using them.
13
+ *
14
+ * @example
15
+ *
16
+ * ```ts
17
+ * import { DocumentTransform } from "@apollo/client/utilities";
18
+ * import { visit } from "graphql";
19
+ *
20
+ * const documentTransform = new DocumentTransform((doc) => {
21
+ * return visit(doc, {
22
+ * // ...
23
+ * });
24
+ * });
25
+ *
26
+ * const transformedDoc = documentTransform.transformDocument(myDocument);
27
+ * ```
28
+ */
10
29
  export class DocumentTransform {
11
30
  transform;
12
31
  cached;
@@ -19,12 +38,37 @@ export class DocumentTransform {
19
38
  getCacheKey(document) {
20
39
  return [document];
21
40
  }
41
+ /**
42
+ * Creates a DocumentTransform that returns the input document unchanged.
43
+ *
44
+ * @returns The input document
45
+ */
22
46
  static identity() {
23
47
  // No need to cache this transform since it just returns the document
24
48
  // unchanged. This should save a bit of memory that would otherwise be
25
49
  // needed to populate the `documentCache` of this transform.
26
50
  return new DocumentTransform(identity, { cache: false });
27
51
  }
52
+ /**
53
+ * Creates a DocumentTransform that conditionally applies one of two transforms.
54
+ *
55
+ * @param predicate - Function that determines which transform to apply
56
+ * @param left - Transform to apply when `predicate` returns `true`
57
+ * @param right - Transform to apply when `predicate` returns `false`. If not provided, it defaults to `DocumentTransform.identity()`.
58
+ * @returns A DocumentTransform that conditionally applies a document transform based on the predicate
59
+ *
60
+ * @example
61
+ *
62
+ * ```ts
63
+ * import { isQueryOperation } from "@apollo/client/utilities";
64
+ *
65
+ * const conditionalTransform = DocumentTransform.split(
66
+ * (document) => isQueryOperation(document),
67
+ * queryTransform,
68
+ * mutationTransform
69
+ * );
70
+ * ```
71
+ */
28
72
  static split(predicate, left, right = DocumentTransform.identity()) {
29
73
  return Object.assign(new DocumentTransform((document) => {
30
74
  const documentTransform = predicate(document) ? left : right;
@@ -43,7 +87,7 @@ export class DocumentTransform {
43
87
  this.resetCache();
44
88
  }
45
89
  /**
46
- * Resets the internal cache of this transform, if it has one.
90
+ * Resets the internal cache of this transform, if it is cached.
47
91
  */
48
92
  resetCache() {
49
93
  if (this.cached) {
@@ -65,6 +109,29 @@ export class DocumentTransform {
65
109
  checkDocument(document);
66
110
  return this.transform(document);
67
111
  }
112
+ /**
113
+ * Transforms a GraphQL document using the configured transform function.
114
+ *
115
+ * @remarks
116
+ *
117
+ * Note that `transformDocument` caches the transformed document. Calling
118
+ * `transformDocument` again with the already-transformed document will
119
+ * immediately return it.
120
+ *
121
+ * @param document - The GraphQL document to transform
122
+ * @returns The transformed document
123
+ *
124
+ * @example
125
+ *
126
+ * ```ts
127
+ * const document = gql`
128
+ * # ...
129
+ * `;
130
+ *
131
+ * const documentTransform = new DocumentTransform(transformFn);
132
+ * const transformedDocument = documentTransform.transformDocument(document);
133
+ * ```
134
+ */
68
135
  transformDocument(document) {
69
136
  // If a user passes an already transformed result back to this function,
70
137
  // immediately return it.
@@ -75,6 +142,22 @@ export class DocumentTransform {
75
142
  this.resultCache.add(transformedDocument);
76
143
  return transformedDocument;
77
144
  }
145
+ /**
146
+ * Combines this document transform with another document transform. The
147
+ * returned document transform first applies the current document transform,
148
+ * then applies the other document transform.
149
+ *
150
+ * @param otherTransform - The transform to apply after this one
151
+ * @returns A new DocumentTransform that applies both transforms in sequence
152
+ *
153
+ * @example
154
+ *
155
+ * ```ts
156
+ * const combinedTransform = addTypenameTransform.concat(
157
+ * removeDirectivesTransform
158
+ * );
159
+ * ```
160
+ */
78
161
  concat(otherTransform) {
79
162
  return Object.assign(new DocumentTransform((document) => {
80
163
  return otherTransform.transformDocument(this.transformDocument(document));
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentTransform.js","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":"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"}
1
+ {"version":3,"file":"DocumentTransform.js","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":"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"}
@@ -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.ts.map
@@ -1,3 +1,30 @@
1
+ /**
2
+ * Determines whether the given object is a valid GraphQL execution result
3
+ * according to the GraphQL specification.
4
+ *
5
+ * @remarks
6
+ *
7
+ * A valid execution result must be an object that contains only `data`,
8
+ * `errors`, and/or `extensions` properties. At least one of `data` or `errors`
9
+ * must be present.
10
+ *
11
+ * @param result - The object to test
12
+ * @returns `true` if the object conforms to the GraphQL execution result format
13
+ *
14
+ * @example
15
+ *
16
+ * ```ts
17
+ * import { isFormattedExecutionResult } from "@apollo/client/utilities";
18
+ *
19
+ * // Valid execution result
20
+ * const validResult = { data: { user: { name: "John" } } };
21
+ * console.log(isFormattedExecutionResult(validResult)); // true
22
+ *
23
+ * // Invalid - contains non-standard properties
24
+ * const invalidResult = { data: {}, customField: "value" };
25
+ * console.log(isFormattedExecutionResult(invalidResult)); // false
26
+ * ```
27
+ */
1
28
  export function isFormattedExecutionResult(result) {
2
29
  return (!!result &&
3
30
  ("errors" in result || "data" in result) &&
@@ -1 +1 @@
1
- {"version":3,"file":"isFormattedExecutionResult.js","sourceRoot":"","sources":["../../../src/utilities/graphql/isFormattedExecutionResult.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,0BAA0B,CACxC,MAAe;IAEf,OAAO,CACL,CAAC,CAAC,MAAM;QACR,CAAC,QAAQ,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CACvB,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,YAAY,CACpE,CACF,CAAC;AACJ,CAAC","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"]}
1
+ {"version":3,"file":"isFormattedExecutionResult.js","sourceRoot":"","sources":["../../../src/utilities/graphql/isFormattedExecutionResult.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAe;IAEf,OAAO,CACL,CAAC,CAAC,MAAM;QACR,CAAC,QAAQ,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CACvB,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,YAAY,CACpE,CACF,CAAC;AACJ,CAAC","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"]}
@@ -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.ts.map
@@ -5,9 +5,26 @@ function isOperation(document, operation) {
5
5
  /**
6
6
  * Determine if a document is a mutation document.
7
7
  *
8
+ * @remarks
9
+ * If you are authoring an Apollo link, you might not need this utility.
10
+ * Prefer using the `operationType` property the `operation` object instead.
11
+ *
8
12
  * @param document - The GraphQL document to check
13
+ * @returns A boolean indicating if the document is a mutation operation
14
+ *
15
+ * @example
16
+ *
17
+ * ```ts
18
+ * import { isMutationOperation } from "@apollo/client/utilities";
9
19
  *
10
- * @since 3.8.0
20
+ * const mutation = gql`
21
+ * mutation MyMutation {
22
+ * # ...
23
+ * }
24
+ * `;
25
+ *
26
+ * isMutationOperation(mutation); // true
27
+ * ```
11
28
  */
12
29
  export function isMutationOperation(document) {
13
30
  return isOperation(document, "mutation");
@@ -15,9 +32,26 @@ export function isMutationOperation(document) {
15
32
  /**
16
33
  * Determine if a document is a query document.
17
34
  *
35
+ * @remarks
36
+ * If you are authoring an Apollo link, you might not need this utility.
37
+ * Prefer using the `operationType` property the `operation` object instead.
38
+ *
18
39
  * @param document - The GraphQL document to check
40
+ * @returns A boolean indicating if the document is a query operation
41
+ *
42
+ * @example
19
43
  *
20
- * @since 3.8.0
44
+ * ```ts
45
+ * import { isQueryOperation } from "@apollo/client/utilities";
46
+ *
47
+ * const query = gql`
48
+ * query MyQuery {
49
+ * # ...
50
+ * }
51
+ * `;
52
+ *
53
+ * isQueryOperation(query); // true
54
+ * ```
21
55
  */
22
56
  export function isQueryOperation(document) {
23
57
  return isOperation(document, "query");
@@ -25,9 +59,26 @@ export function isQueryOperation(document) {
25
59
  /**
26
60
  * Determine if a document is a subscription document.
27
61
  *
62
+ * @remarks
63
+ * If you are authoring an Apollo link, you might not need this utility.
64
+ * Prefer using the `operationType` property the `operation` object instead.
65
+ *
28
66
  * @param document - The GraphQL document to check
67
+ * @returns A boolean indicating if the document is a subscription operation
68
+ *
69
+ * @example
70
+ *
71
+ * ```ts
72
+ * import { isSubscriptionOperation } from "@apollo/client/utilities";
73
+ *
74
+ * const subscription = gql`
75
+ * subscription MySubscription {
76
+ * # ...
77
+ * }
78
+ * `;
29
79
  *
30
- * @since 3.8.0
80
+ * isSubscriptionOperation(subscription); // true
81
+ * ```
31
82
  */
32
83
  export function isSubscriptionOperation(document) {
33
84
  return isOperation(document, "subscription");
@@ -1 +1 @@
1
- {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../../src/utilities/graphql/operations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,SAAS,WAAW,CAClB,QAAsB,EACtB,SAAgD;IAEhD,OAAO,sBAAsB,CAAC,QAAQ,CAAC,EAAE,SAAS,KAAK,SAAS,CAAC;AACnE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAsB;IACxD,OAAO,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAsB;IACrD,OAAO,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAsB;IAC5D,OAAO,WAAW,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AAC/C,CAAC","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"]}
1
+ {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../../src/utilities/graphql/operations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,SAAS,WAAW,CAClB,QAAsB,EACtB,SAAgD;IAEhD,OAAO,sBAAsB,CAAC,QAAQ,CAAC,EAAE,SAAS,KAAK,SAAS,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAsB;IACxD,OAAO,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAsB;IACrD,OAAO,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAsB;IAC5D,OAAO,WAAW,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AAC/C,CAAC","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"]}
@@ -8,6 +8,15 @@ export interface Reference {
8
8
  * Determines if a given object is a reference object.
9
9
  *
10
10
  * @param obj - The object to check if its a reference object
11
+ *
12
+ * @example
13
+ *
14
+ * ```ts
15
+ * import { isReference } from "@apollo/client/utilities";
16
+ *
17
+ * isReference({ __ref: "User:1" }); // true
18
+ * isReference({ __typename: "User", id: 1 }); // false
19
+ * ```
11
20
  */
12
21
  export declare function isReference(obj: any): obj is Reference;
13
22
  /**
@@ -2,6 +2,15 @@
2
2
  * Determines if a given object is a reference object.
3
3
  *
4
4
  * @param obj - The object to check if its a reference object
5
+ *
6
+ * @example
7
+ *
8
+ * ```ts
9
+ * import { isReference } from "@apollo/client/utilities";
10
+ *
11
+ * isReference({ __ref: "User:1" }); // true
12
+ * isReference({ __typename: "User", id: 1 }); // false
13
+ * ```
5
14
  */
6
15
  export function isReference(obj) {
7
16
  return Boolean(obj && typeof obj === "object" && typeof obj.__ref === "string");
@@ -1 +1 @@
1
- {"version":3,"file":"storeUtils.js","sourceRoot":"","sources":["../../../src/utilities/graphql/storeUtils.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,GAAQ;IAClC,OAAO,OAAO,CACZ,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAChE,CAAC;AACJ,CAAC","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"]}
1
+ {"version":3,"file":"storeUtils.js","sourceRoot":"","sources":["../../../src/utilities/graphql/storeUtils.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CAAC,GAAQ;IAClC,OAAO,OAAO,CACZ,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAChE,CAAC;AACJ,CAAC","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"]}
@@ -1,8 +1,19 @@
1
1
  import type { ASTNode, FieldNode } from "graphql";
2
2
  /**
3
- * Adds `__typename` to all selection sets in the document.
3
+ * Adds `__typename` to all selection sets in the document except for the root
4
+ * selection set.
4
5
  *
5
6
  * @param doc - The `ASTNode` to add `__typename` to
7
+ *
8
+ * @example
9
+ *
10
+ * ```ts
11
+ * const document = gql`
12
+ * # ...
13
+ * `;
14
+ *
15
+ * const withTypename = addTypenameToDocument(document);
16
+ * ```
6
17
  */
7
18
  export declare const addTypenameToDocument: (<TNode extends ASTNode>(doc: TNode) => TNode) & {
8
19
  added(field: FieldNode): boolean;
@@ -7,9 +7,20 @@ const TYPENAME_FIELD = {
7
7
  },
8
8
  };
9
9
  /**
10
- * Adds `__typename` to all selection sets in the document.
10
+ * Adds `__typename` to all selection sets in the document except for the root
11
+ * selection set.
11
12
  *
12
13
  * @param doc - The `ASTNode` to add `__typename` to
14
+ *
15
+ * @example
16
+ *
17
+ * ```ts
18
+ * const document = gql`
19
+ * # ...
20
+ * `;
21
+ *
22
+ * const withTypename = addTypenameToDocument(document);
23
+ * ```
13
24
  */
14
25
  export const addTypenameToDocument = Object.assign(function (doc) {
15
26
  return visit(doc, {
@@ -1 +1 @@
1
- {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../src/utilities/graphql/transform.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEtC,MAAM,cAAc,GAAc;IAChC,IAAI,EAAE,IAAI,CAAC,KAAK;IAChB,IAAI,EAAE;QACJ,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,YAAY;KACpB;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAChD,UAAiC,GAAU;IACzC,OAAO,KAAK,CAAC,GAAG,EAAE;QAChB,YAAY,EAAE;YACZ,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM;gBACtB,gDAAgD;gBAChD,IACE,MAAM;oBACL,MAAkC,CAAC,IAAI;wBACtC,IAAI,CAAC,oBAAoB,EAC3B,CAAC;oBACD,OAAO;gBACT,CAAC;gBAED,+BAA+B;gBAC/B,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;gBAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,OAAO;gBACT,CAAC;gBAED,6DAA6D;gBAC7D,mCAAmC;gBACnC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;oBACzC,OAAO,CACL,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK;wBAC7B,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,YAAY;4BACpC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CACnD,CAAC;gBACJ,CAAC,CAAC,CAAC;gBACH,IAAI,IAAI,EAAE,CAAC;oBACT,OAAO;gBACT,CAAC;gBAED,qEAAqE;gBACrE,iDAAiD;gBACjD,MAAM,KAAK,GAAG,MAAmB,CAAC;gBAClC,IACE,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK;oBACzB,KAAK,CAAC,UAAU;oBAChB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,EACvD,CAAC;oBACD,OAAO;gBACT,CAAC;gBAED,gEAAgE;gBAChE,OAAO;oBACL,GAAG,IAAI;oBACP,UAAU,EAAE,CAAC,GAAG,UAAU,EAAE,cAAc,CAAC;iBAC5C,CAAC;YACJ,CAAC;SACF;KACF,CAAC,CAAC;AACL,CAAC,EACD;IACE,KAAK,CAAC,KAAgB;QACpB,OAAO,KAAK,KAAK,cAAc,CAAC;IAClC,CAAC;CACF,CACF,CAAC","sourcesContent":["import type { ASTNode, FieldNode, OperationDefinitionNode } from \"graphql\";\nimport { Kind, visit } from \"graphql\";\n\nconst TYPENAME_FIELD: FieldNode = {\n kind: Kind.FIELD,\n name: {\n kind: Kind.NAME,\n value: \"__typename\",\n },\n};\n\n/**\n * Adds `__typename` to all selection sets in the document.\n *\n * @param doc - The `ASTNode` to add `__typename` to\n */\nexport const addTypenameToDocument = Object.assign(\n function <TNode extends ASTNode>(doc: TNode): TNode {\n return visit(doc, {\n SelectionSet: {\n enter(node, _key, parent) {\n // Don't add __typename to OperationDefinitions.\n if (\n parent &&\n (parent as OperationDefinitionNode).kind ===\n Kind.OPERATION_DEFINITION\n ) {\n return;\n }\n\n // No changes if no selections.\n const { selections } = node;\n if (!selections) {\n return;\n }\n\n // If selections already have a __typename, or are part of an\n // introspection query, do nothing.\n const skip = selections.some((selection) => {\n return (\n selection.kind === Kind.FIELD &&\n (selection.name.value === \"__typename\" ||\n selection.name.value.lastIndexOf(\"__\", 0) === 0)\n );\n });\n if (skip) {\n return;\n }\n\n // If this SelectionSet is @export-ed as an input variable, it should\n // not have a __typename field (see issue #4691).\n const field = parent as FieldNode;\n if (\n field.kind === Kind.FIELD &&\n field.directives &&\n field.directives.some((d) => d.name.value === \"export\")\n ) {\n return;\n }\n\n // Create and return a new SelectionSet with a __typename Field.\n return {\n ...node,\n selections: [...selections, TYPENAME_FIELD],\n };\n },\n },\n });\n },\n {\n added(field: FieldNode): boolean {\n return field === TYPENAME_FIELD;\n },\n }\n);\n"]}
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../src/utilities/graphql/transform.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEtC,MAAM,cAAc,GAAc;IAChC,IAAI,EAAE,IAAI,CAAC,KAAK;IAChB,IAAI,EAAE;QACJ,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,YAAY;KACpB;CACF,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAChD,UAAiC,GAAU;IACzC,OAAO,KAAK,CAAC,GAAG,EAAE;QAChB,YAAY,EAAE;YACZ,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM;gBACtB,gDAAgD;gBAChD,IACE,MAAM;oBACL,MAAkC,CAAC,IAAI;wBACtC,IAAI,CAAC,oBAAoB,EAC3B,CAAC;oBACD,OAAO;gBACT,CAAC;gBAED,+BAA+B;gBAC/B,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;gBAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,OAAO;gBACT,CAAC;gBAED,6DAA6D;gBAC7D,mCAAmC;gBACnC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;oBACzC,OAAO,CACL,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK;wBAC7B,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,YAAY;4BACpC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CACnD,CAAC;gBACJ,CAAC,CAAC,CAAC;gBACH,IAAI,IAAI,EAAE,CAAC;oBACT,OAAO;gBACT,CAAC;gBAED,qEAAqE;gBACrE,iDAAiD;gBACjD,MAAM,KAAK,GAAG,MAAmB,CAAC;gBAClC,IACE,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK;oBACzB,KAAK,CAAC,UAAU;oBAChB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,EACvD,CAAC;oBACD,OAAO;gBACT,CAAC;gBAED,gEAAgE;gBAChE,OAAO;oBACL,GAAG,IAAI;oBACP,UAAU,EAAE,CAAC,GAAG,UAAU,EAAE,cAAc,CAAC;iBAC5C,CAAC;YACJ,CAAC;SACF;KACF,CAAC,CAAC;AACL,CAAC,EACD;IACE,KAAK,CAAC,KAAgB;QACpB,OAAO,KAAK,KAAK,cAAc,CAAC;IAClC,CAAC;CACF,CACF,CAAC","sourcesContent":["import type { ASTNode, FieldNode, OperationDefinitionNode } from \"graphql\";\nimport { Kind, visit } from \"graphql\";\n\nconst TYPENAME_FIELD: FieldNode = {\n kind: Kind.FIELD,\n name: {\n kind: Kind.NAME,\n value: \"__typename\",\n },\n};\n\n/**\n * Adds `__typename` to all selection sets in the document except for the root\n * selection set.\n *\n * @param doc - The `ASTNode` to add `__typename` to\n *\n * @example\n *\n * ```ts\n * const document = gql`\n * # ...\n * `;\n *\n * const withTypename = addTypenameToDocument(document);\n * ```\n */\nexport const addTypenameToDocument = Object.assign(\n function <TNode extends ASTNode>(doc: TNode): TNode {\n return visit(doc, {\n SelectionSet: {\n enter(node, _key, parent) {\n // Don't add __typename to OperationDefinitions.\n if (\n parent &&\n (parent as OperationDefinitionNode).kind ===\n Kind.OPERATION_DEFINITION\n ) {\n return;\n }\n\n // No changes if no selections.\n const { selections } = node;\n if (!selections) {\n return;\n }\n\n // If selections already have a __typename, or are part of an\n // introspection query, do nothing.\n const skip = selections.some((selection) => {\n return (\n selection.kind === Kind.FIELD &&\n (selection.name.value === \"__typename\" ||\n selection.name.value.lastIndexOf(\"__\", 0) === 0)\n );\n });\n if (skip) {\n return;\n }\n\n // If this SelectionSet is @export-ed as an input variable, it should\n // not have a __typename field (see issue #4691).\n const field = parent as FieldNode;\n if (\n field.kind === Kind.FIELD &&\n field.directives &&\n field.directives.some((d) => d.name.value === \"export\")\n ) {\n return;\n }\n\n // Create and return a new SelectionSet with a __typename Field.\n return {\n ...node,\n selections: [...selections, TYPENAME_FIELD],\n };\n },\n },\n });\n },\n {\n added(field: FieldNode): boolean {\n return field === TYPENAME_FIELD;\n },\n }\n);\n"]}
@@ -1,19 +1,42 @@
1
1
  /**
2
- * Like JSON.stringify, but with object keys always sorted in the same order.
2
+ * Serializes a value to JSON with object keys in a consistent, sorted order.
3
3
  *
4
- * To achieve performant sorting, this function uses a Map from JSON-serialized
4
+ * @remarks
5
+ *
6
+ * Unlike `JSON.stringify()`, this function ensures that object keys are always
7
+ * serialized in the same alphabetical order, regardless of their original order.
8
+ * This makes it suitable for creating consistent cache keys from objects,
9
+ * comparing objects by their serialized representation, or generating
10
+ * deterministic hashes of objects.
11
+ *
12
+ * To achieve performant sorting, this function uses a `Map` from JSON-serialized
5
13
  * arrays of keys (in any order) to sorted arrays of the same keys, with a
6
14
  * single sorted array reference shared by all permutations of the keys.
7
15
  *
8
- * As a drawback, this function will add a little bit more memory for every
9
- * object encountered that has different (more, less, a different order of) keys
10
- * than in the past.
16
+ * As a drawback, this function will add a little more memory for every object
17
+ * encountered that has different (more, less, a different order of) keys than
18
+ * in the past.
11
19
  *
12
20
  * In a typical application, this extra memory usage should not play a
13
21
  * significant role, as `canonicalStringify` will be called for only a limited
14
22
  * number of object shapes, and the cache will not grow beyond a certain point.
15
- * But in some edge cases, this could be a problem, so we provide
16
- * canonicalStringify.reset() as a way of clearing the cache.
23
+ * But in some edge cases, this could be a problem. Use canonicalStringify.reset()
24
+ * as a way to clear the memoization cache.
25
+ *
26
+ * @param value - The value to stringify
27
+ * @returns JSON string with consistently ordered object keys
28
+ *
29
+ * @example
30
+ *
31
+ * ```ts
32
+ * import { canonicalStringify } from "@apollo/client/utilities";
33
+ *
34
+ * const obj1 = { b: 2, a: 1 };
35
+ * const obj2 = { a: 1, b: 2 };
36
+ *
37
+ * console.log(canonicalStringify(obj1)); // '{"a":1,"b":2}'
38
+ * console.log(canonicalStringify(obj2)); // '{"a":1,"b":2}'
39
+ * ```
17
40
  */
18
41
  export declare const canonicalStringify: ((value: any) => string) & {
19
42
  reset(): void;