@apollo/client 4.3.0-alpha.4 → 4.3.0-alpha.6

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 (158) hide show
  1. package/CHANGELOG.md +116 -0
  2. package/README.md +3 -7
  3. package/__cjs/cache/core/cache.cjs +1 -1
  4. package/__cjs/cache/core/cache.cjs.map +1 -1
  5. package/__cjs/cache/core/cache.d.cts +5 -1
  6. package/__cjs/cache/inmemory/entityStore.cjs +3 -3
  7. package/__cjs/cache/inmemory/inMemoryCache.cjs +0 -4
  8. package/__cjs/cache/inmemory/inMemoryCache.cjs.map +1 -1
  9. package/__cjs/cache/inmemory/inMemoryCache.d.cts +3 -4
  10. package/__cjs/cache/inmemory/key-extractor.cjs +1 -1
  11. package/__cjs/cache/inmemory/policies.cjs +28 -6
  12. package/__cjs/cache/inmemory/policies.cjs.map +1 -1
  13. package/__cjs/cache/inmemory/readFromStore.cjs +71 -54
  14. package/__cjs/cache/inmemory/readFromStore.cjs.map +1 -1
  15. package/__cjs/cache/inmemory/readFromStore.d.cts +1 -1
  16. package/__cjs/cache/inmemory/types.d.cts +1 -2
  17. package/__cjs/cache/inmemory/writeToStore.cjs +4 -4
  18. package/__cjs/core/ApolloClient.cjs +21 -22
  19. package/__cjs/core/ApolloClient.cjs.map +1 -1
  20. package/__cjs/core/ApolloClient.d.cts +44 -10
  21. package/__cjs/core/ObservableQuery.cjs +56 -14
  22. package/__cjs/core/ObservableQuery.cjs.map +1 -1
  23. package/__cjs/core/ObservableQuery.d.cts +13 -2
  24. package/__cjs/core/QueryInfo.cjs +175 -161
  25. package/__cjs/core/QueryInfo.cjs.map +1 -1
  26. package/__cjs/core/QueryInfo.d.cts +15 -5
  27. package/__cjs/core/QueryManager.cjs +63 -38
  28. package/__cjs/core/QueryManager.cjs.map +1 -1
  29. package/__cjs/core/RefetchEventManager.cjs +3 -3
  30. package/__cjs/core/dataStateErrorCache.cjs +12 -0
  31. package/__cjs/core/dataStateErrorCache.cjs.map +1 -0
  32. package/__cjs/core/dataStateErrorCache.d.cts +3 -0
  33. package/__cjs/core/types.d.cts +2 -0
  34. package/__cjs/incremental/handlers/graphql17Alpha9.cjs +34 -11
  35. package/__cjs/incremental/handlers/graphql17Alpha9.cjs.map +1 -1
  36. package/__cjs/incremental/handlers/graphql17Alpha9.d.cts +26 -3
  37. package/__cjs/incremental/types.d.cts +41 -3
  38. package/__cjs/invariantErrorCodes.cjs +56 -32
  39. package/__cjs/react/hooks/useBackgroundQuery.cjs.map +1 -1
  40. package/__cjs/react/hooks/useBackgroundQuery.d.cts +100 -47
  41. package/__cjs/react/hooks/useLazyQuery.cjs.map +1 -1
  42. package/__cjs/react/hooks/useLazyQuery.d.cts +26 -20
  43. package/__cjs/react/hooks/useLoadableQuery.cjs.map +1 -1
  44. package/__cjs/react/hooks/useLoadableQuery.d.cts +23 -15
  45. package/__cjs/react/hooks/useMutation.cjs.map +1 -1
  46. package/__cjs/react/hooks/useMutation.d.cts +10 -7
  47. package/__cjs/react/hooks/useQuery.cjs.map +1 -1
  48. package/__cjs/react/hooks/useQuery.d.cts +74 -32
  49. package/__cjs/react/hooks/useQueryRefHandlers.cjs.map +1 -1
  50. package/__cjs/react/hooks/useSuspenseQuery.cjs.map +1 -1
  51. package/__cjs/react/hooks/useSuspenseQuery.d.cts +83 -34
  52. package/__cjs/react/internal/cache/QueryReference.cjs.map +1 -1
  53. package/__cjs/react/internal/types.d.cts +14 -3
  54. package/__cjs/react/query-preloader/createQueryPreloader.cjs.map +1 -1
  55. package/__cjs/react/query-preloader/createQueryPreloader.d.cts +20 -5
  56. package/__cjs/testing/core/mocking/mockLink.cjs +21 -1
  57. package/__cjs/testing/core/mocking/mockLink.cjs.map +1 -1
  58. package/__cjs/testing/core/mocking/mockLink.d.cts +1 -2
  59. package/__cjs/utilities/internal/addDeferFragmentLabels.cjs +33 -0
  60. package/__cjs/utilities/internal/addDeferFragmentLabels.cjs.map +1 -0
  61. package/__cjs/utilities/internal/addDeferFragmentLabels.d.cts +3 -0
  62. package/__cjs/utilities/internal/getDirectiveArgValue.cjs +19 -0
  63. package/__cjs/utilities/internal/getDirectiveArgValue.cjs.map +1 -0
  64. package/__cjs/utilities/internal/getDirectiveArgValue.d.cts +9 -0
  65. package/__cjs/utilities/internal/index.cjs +8 -2
  66. package/__cjs/utilities/internal/index.cjs.map +1 -1
  67. package/__cjs/utilities/internal/index.d.cts +3 -0
  68. package/__cjs/utilities/internal/toDiffWithDataState.cjs +20 -0
  69. package/__cjs/utilities/internal/toDiffWithDataState.cjs.map +1 -0
  70. package/__cjs/utilities/internal/toDiffWithDataState.d.cts +8 -0
  71. package/__cjs/version.cjs +1 -1
  72. package/cache/core/cache.d.ts +5 -1
  73. package/cache/core/cache.js +1 -1
  74. package/cache/core/cache.js.map +1 -1
  75. package/cache/inmemory/entityStore.js +3 -3
  76. package/cache/inmemory/inMemoryCache.d.ts +3 -4
  77. package/cache/inmemory/inMemoryCache.js +1 -5
  78. package/cache/inmemory/inMemoryCache.js.map +1 -1
  79. package/cache/inmemory/key-extractor.js +1 -1
  80. package/cache/inmemory/policies.js +28 -6
  81. package/cache/inmemory/policies.js.map +1 -1
  82. package/cache/inmemory/readFromStore.d.ts +1 -1
  83. package/cache/inmemory/readFromStore.js +72 -55
  84. package/cache/inmemory/readFromStore.js.map +1 -1
  85. package/cache/inmemory/types.d.ts +1 -2
  86. package/cache/inmemory/types.js.map +1 -1
  87. package/cache/inmemory/writeToStore.js +4 -4
  88. package/core/ApolloClient.d.ts +44 -10
  89. package/core/ApolloClient.js +21 -22
  90. package/core/ApolloClient.js.map +1 -1
  91. package/core/ObservableQuery.d.ts +13 -2
  92. package/core/ObservableQuery.js +57 -15
  93. package/core/ObservableQuery.js.map +1 -1
  94. package/core/QueryInfo.d.ts +15 -5
  95. package/core/QueryInfo.js +171 -161
  96. package/core/QueryInfo.js.map +1 -1
  97. package/core/QueryManager.js +63 -38
  98. package/core/QueryManager.js.map +1 -1
  99. package/core/RefetchEventManager.js +3 -3
  100. package/core/dataStateErrorCache.d.ts +3 -0
  101. package/core/dataStateErrorCache.js +9 -0
  102. package/core/dataStateErrorCache.js.map +1 -0
  103. package/core/types.d.ts +2 -0
  104. package/core/types.js.map +1 -1
  105. package/incremental/handlers/graphql17Alpha9.d.ts +26 -3
  106. package/incremental/handlers/graphql17Alpha9.js +35 -12
  107. package/incremental/handlers/graphql17Alpha9.js.map +1 -1
  108. package/incremental/types.d.ts +41 -3
  109. package/incremental/types.js.map +1 -1
  110. package/invariantErrorCodes.js +56 -32
  111. package/package.json +1 -1
  112. package/react/hooks/useBackgroundQuery.d.ts +100 -47
  113. package/react/hooks/useBackgroundQuery.js.map +1 -1
  114. package/react/hooks/useLazyQuery.d.ts +26 -20
  115. package/react/hooks/useLazyQuery.js.map +1 -1
  116. package/react/hooks/useLoadableQuery.d.ts +23 -15
  117. package/react/hooks/useLoadableQuery.js.map +1 -1
  118. package/react/hooks/useMutation.d.ts +10 -7
  119. package/react/hooks/useMutation.js.map +1 -1
  120. package/react/hooks/useQuery.d.ts +74 -32
  121. package/react/hooks/useQuery.js.map +1 -1
  122. package/react/hooks/useQueryRefHandlers.js.map +1 -1
  123. package/react/hooks/useSuspenseQuery.d.ts +83 -34
  124. package/react/hooks/useSuspenseQuery.js.map +1 -1
  125. package/react/hooks-compiled/useBackgroundQuery.d.ts +100 -47
  126. package/react/hooks-compiled/useBackgroundQuery.js.map +1 -1
  127. package/react/hooks-compiled/useLazyQuery.d.ts +26 -20
  128. package/react/hooks-compiled/useLazyQuery.js.map +1 -1
  129. package/react/hooks-compiled/useLoadableQuery.d.ts +23 -15
  130. package/react/hooks-compiled/useLoadableQuery.js.map +1 -1
  131. package/react/hooks-compiled/useMutation.d.ts +10 -7
  132. package/react/hooks-compiled/useMutation.js.map +1 -1
  133. package/react/hooks-compiled/useQuery.d.ts +74 -32
  134. package/react/hooks-compiled/useQuery.js.map +1 -1
  135. package/react/hooks-compiled/useQueryRefHandlers.js.map +1 -1
  136. package/react/hooks-compiled/useSuspenseQuery.d.ts +83 -34
  137. package/react/hooks-compiled/useSuspenseQuery.js.map +1 -1
  138. package/react/internal/cache/QueryReference.js.map +1 -1
  139. package/react/internal/types.d.ts +15 -4
  140. package/react/internal/types.js.map +1 -1
  141. package/react/query-preloader/createQueryPreloader.d.ts +20 -5
  142. package/react/query-preloader/createQueryPreloader.js.map +1 -1
  143. package/testing/core/mocking/mockLink.d.ts +1 -2
  144. package/testing/core/mocking/mockLink.js +21 -1
  145. package/testing/core/mocking/mockLink.js.map +1 -1
  146. package/utilities/internal/addDeferFragmentLabels.d.ts +3 -0
  147. package/utilities/internal/addDeferFragmentLabels.js +30 -0
  148. package/utilities/internal/addDeferFragmentLabels.js.map +1 -0
  149. package/utilities/internal/getDirectiveArgValue.d.ts +9 -0
  150. package/utilities/internal/getDirectiveArgValue.js +16 -0
  151. package/utilities/internal/getDirectiveArgValue.js.map +1 -0
  152. package/utilities/internal/index.d.ts +3 -0
  153. package/utilities/internal/index.js +3 -0
  154. package/utilities/internal/index.js.map +1 -1
  155. package/utilities/internal/toDiffWithDataState.d.ts +8 -0
  156. package/utilities/internal/toDiffWithDataState.js +17 -0
  157. package/utilities/internal/toDiffWithDataState.js.map +1 -0
  158. package/version.js +1 -1
@@ -1,7 +1,7 @@
1
1
  import type { DocumentNode, FieldNode } from "graphql";
2
2
  import type { OperationVariables } from "@apollo/client";
3
3
  import type { Reference, StoreObject, StoreValue } from "@apollo/client/utilities";
4
- import type { DeferInfoTrie, ExtensionsWithStreamInfo, handleIncrementalSymbol, RemoveIndexSignature, StreamInfoTrie } from "@apollo/client/utilities/internal";
4
+ import type { DeferInfoTrie, ExtensionsWithStreamInfo, RemoveIndexSignature, StreamInfoTrie } from "@apollo/client/utilities/internal";
5
5
  import type { ApolloCache, Transaction } from "../core/cache.js";
6
6
  import type { AllFieldsModifier, CanReadFunction, Modifiers, ToReferenceFunction } from "../core/types/common.js";
7
7
  import type { FieldValueGetter } from "./entityStore.js";
@@ -90,7 +90,6 @@ export interface DiffIncrementalInfo {
90
90
  }
91
91
  export type DiffQueryAgainstStoreOptions = ReadQueryOptions & {
92
92
  returnPartialData?: boolean;
93
- [handleIncrementalSymbol]?: true | DiffIncrementalInfo;
94
93
  };
95
94
  export type ApolloReducerConfig = {
96
95
  dataIdFromObject?: KeyFieldsFunction;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cache/inmemory/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { DocumentNode, FieldNode } from \"graphql\";\n\nimport type { OperationVariables } from \"@apollo/client\";\nimport type {\n Reference,\n StoreObject,\n StoreValue,\n} from \"@apollo/client/utilities\";\nimport type {\n DeferInfoTrie,\n ExtensionsWithStreamInfo,\n handleIncrementalSymbol,\n RemoveIndexSignature,\n StreamInfoTrie,\n} from \"@apollo/client/utilities/internal\";\n\nimport type { ApolloCache, Transaction } from \"../core/cache.js\";\nimport type {\n AllFieldsModifier,\n CanReadFunction,\n Modifiers,\n ToReferenceFunction,\n} from \"../core/types/common.js\";\n\nimport type { FieldValueGetter } from \"./entityStore.js\";\nimport type { FragmentRegistryAPI } from \"./fragmentRegistry.js\";\nimport type { InMemoryCache } from \"./inMemoryCache.js\";\nimport type {\n FieldMergeFunction,\n KeyFieldsFunction,\n PossibleTypesMap,\n StorageType,\n TypePolicies,\n} from \"./policies.js\";\n\nexport type { Reference, StoreObject, StoreValue };\n\nexport interface IdGetterObj extends Object {\n __typename?: string;\n id?: string;\n _id?: string;\n}\n\nexport declare type IdGetter = (value: IdGetterObj) => string | undefined;\n\n/**\n * This is an interface used to access, set and remove\n * StoreObjects from the cache\n */\nexport interface NormalizedCache {\n has(dataId: string): boolean;\n get(dataId: string, fieldName: string): StoreValue;\n\n // The store.merge method allows either argument to be a string ID, but\n // the other argument has to be a StoreObject. Either way, newer fields\n // always take precedence over older fields.\n merge(olderId: string, newerObject: StoreObject): void;\n merge(olderObject: StoreObject, newerId: string): void;\n\n modify<Entity extends Record<string, any>>(\n dataId: string,\n fields: Modifiers<Entity> | AllFieldsModifier<Entity>,\n exact: boolean\n ): boolean;\n delete(dataId: string, fieldName?: string): boolean;\n clear(): void;\n\n // non-Map elements:\n /**\n * returns an Object with key-value pairs matching the contents of the store\n */\n toObject(): NormalizedCacheObject;\n /**\n * replace the state of the store\n */\n replace(newData: NormalizedCacheObject): void;\n\n /**\n * Retain (or release) a given root ID to protect (or expose) it and its\n * transitive child entities from (or to) garbage collection. The current\n * retainment count is returned by both methods. Note that releasing a root\n * ID does not cause that entity to be garbage collected, but merely removes\n * it from the set of root IDs that will be considered during the next\n * mark-and-sweep collection.\n */\n retain(rootId: string): number;\n release(rootId: string): number;\n\n getFieldValue: FieldValueGetter;\n toReference: ToReferenceFunction;\n canRead: CanReadFunction;\n\n getStorage(\n idOrObj: string | StoreObject,\n ...storeFieldNames: (string | number)[]\n ): StorageType;\n}\n\n/**\n * This is a normalized representation of the Apollo query result cache. It consists of\n * a flattened representation of query result trees.\n */\nexport interface NormalizedCacheObject {\n __META?: {\n // Well-known singleton IDs like ROOT_QUERY and ROOT_MUTATION are\n // always considered to be root IDs during cache.gc garbage\n // collection, but other IDs can become roots if they are written\n // directly with cache.writeFragment or retained explicitly with\n // cache.retain. When such IDs exist, we include them in the __META\n // section so that they can survive cache.{extract,restore}.\n extraRootIds: string[];\n };\n [dataId: string]: StoreObject | undefined;\n}\n\nexport type OptimisticStoreItem = {\n id: string;\n data: NormalizedCacheObject;\n transaction: Transaction;\n};\n\nexport type ReadQueryOptions = {\n /**\n * The Apollo Client store object.\n */\n store: NormalizedCache;\n /**\n * A parsed GraphQL query document.\n */\n query: DocumentNode;\n variables?: Object;\n previousResult?: any;\n rootId?: string;\n config?: ApolloReducerConfig;\n};\n\n/** @internal */\nexport interface DiffIncrementalInfo {\n streamInfo?: StreamInfoTrie;\n deferInfo?: DeferInfoTrie;\n}\n\nexport type DiffQueryAgainstStoreOptions = ReadQueryOptions & {\n returnPartialData?: boolean;\n [handleIncrementalSymbol]?: true | DiffIncrementalInfo;\n};\n\nexport type ApolloReducerConfig = {\n dataIdFromObject?: KeyFieldsFunction;\n};\n\nexport interface InputObjectConfig {\n fields: Record<string, string>;\n}\n\nexport interface InputObjectsOption {\n [inputObjectName: string]: InputObjectConfig;\n}\n\nexport type InMemoryCacheConfig = ApolloReducerConfig & {\n resultCaching?: boolean;\n possibleTypes?: PossibleTypesMap;\n typePolicies?: TypePolicies;\n fragments?: FragmentRegistryAPI;\n inputObjects?: InputObjectsOption;\n} & ({} extends InMemoryCache.ScalarsOption ?\n InMemoryCache.ScalarsOption extends Record<string, never> ?\n {\n scalars?: Record<\n string,\n `Scalar types must be declared in ApolloCache.Scalars before usage. See https://www.apollographql.com/docs/react/data/typescript#declaring-scalar-types.`\n >;\n }\n : { scalars?: InMemoryCache.ScalarsOption }\n : { scalars: InMemoryCache.ScalarsOption });\n\nexport interface MergeInfo {\n field: FieldNode;\n typename: string | undefined;\n merge: FieldMergeFunction;\n path: Array<string | number>;\n}\n\nexport interface MergeTree {\n info?: MergeInfo;\n map: Map<string | number, MergeTree>;\n}\n\nexport interface ReadMergeModifyContext {\n store: NormalizedCache;\n variables?: OperationVariables;\n // A JSON.stringify-serialized version of context.variables.\n varString?: string;\n extensions?: ExtensionsWithStreamInfo;\n}\n\nexport type KnownScalars = RemoveIndexSignature<ApolloCache.Scalars>;\nexport type ScalarNames =\n | keyof KnownScalars\n | (string extends keyof ApolloCache.Scalars ? string & {} : never);\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cache/inmemory/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { DocumentNode, FieldNode } from \"graphql\";\n\nimport type { OperationVariables } from \"@apollo/client\";\nimport type {\n Reference,\n StoreObject,\n StoreValue,\n} from \"@apollo/client/utilities\";\nimport type {\n DeferInfoTrie,\n ExtensionsWithStreamInfo,\n RemoveIndexSignature,\n StreamInfoTrie,\n} from \"@apollo/client/utilities/internal\";\n\nimport type { ApolloCache, Transaction } from \"../core/cache.js\";\nimport type {\n AllFieldsModifier,\n CanReadFunction,\n Modifiers,\n ToReferenceFunction,\n} from \"../core/types/common.js\";\n\nimport type { FieldValueGetter } from \"./entityStore.js\";\nimport type { FragmentRegistryAPI } from \"./fragmentRegistry.js\";\nimport type { InMemoryCache } from \"./inMemoryCache.js\";\nimport type {\n FieldMergeFunction,\n KeyFieldsFunction,\n PossibleTypesMap,\n StorageType,\n TypePolicies,\n} from \"./policies.js\";\n\nexport type { Reference, StoreObject, StoreValue };\n\nexport interface IdGetterObj extends Object {\n __typename?: string;\n id?: string;\n _id?: string;\n}\n\nexport declare type IdGetter = (value: IdGetterObj) => string | undefined;\n\n/**\n * This is an interface used to access, set and remove\n * StoreObjects from the cache\n */\nexport interface NormalizedCache {\n has(dataId: string): boolean;\n get(dataId: string, fieldName: string): StoreValue;\n\n // The store.merge method allows either argument to be a string ID, but\n // the other argument has to be a StoreObject. Either way, newer fields\n // always take precedence over older fields.\n merge(olderId: string, newerObject: StoreObject): void;\n merge(olderObject: StoreObject, newerId: string): void;\n\n modify<Entity extends Record<string, any>>(\n dataId: string,\n fields: Modifiers<Entity> | AllFieldsModifier<Entity>,\n exact: boolean\n ): boolean;\n delete(dataId: string, fieldName?: string): boolean;\n clear(): void;\n\n // non-Map elements:\n /**\n * returns an Object with key-value pairs matching the contents of the store\n */\n toObject(): NormalizedCacheObject;\n /**\n * replace the state of the store\n */\n replace(newData: NormalizedCacheObject): void;\n\n /**\n * Retain (or release) a given root ID to protect (or expose) it and its\n * transitive child entities from (or to) garbage collection. The current\n * retainment count is returned by both methods. Note that releasing a root\n * ID does not cause that entity to be garbage collected, but merely removes\n * it from the set of root IDs that will be considered during the next\n * mark-and-sweep collection.\n */\n retain(rootId: string): number;\n release(rootId: string): number;\n\n getFieldValue: FieldValueGetter;\n toReference: ToReferenceFunction;\n canRead: CanReadFunction;\n\n getStorage(\n idOrObj: string | StoreObject,\n ...storeFieldNames: (string | number)[]\n ): StorageType;\n}\n\n/**\n * This is a normalized representation of the Apollo query result cache. It consists of\n * a flattened representation of query result trees.\n */\nexport interface NormalizedCacheObject {\n __META?: {\n // Well-known singleton IDs like ROOT_QUERY and ROOT_MUTATION are\n // always considered to be root IDs during cache.gc garbage\n // collection, but other IDs can become roots if they are written\n // directly with cache.writeFragment or retained explicitly with\n // cache.retain. When such IDs exist, we include them in the __META\n // section so that they can survive cache.{extract,restore}.\n extraRootIds: string[];\n };\n [dataId: string]: StoreObject | undefined;\n}\n\nexport type OptimisticStoreItem = {\n id: string;\n data: NormalizedCacheObject;\n transaction: Transaction;\n};\n\nexport type ReadQueryOptions = {\n /**\n * The Apollo Client store object.\n */\n store: NormalizedCache;\n /**\n * A parsed GraphQL query document.\n */\n query: DocumentNode;\n variables?: Object;\n previousResult?: any;\n rootId?: string;\n config?: ApolloReducerConfig;\n};\n\n/** @internal */\nexport interface DiffIncrementalInfo {\n streamInfo?: StreamInfoTrie;\n deferInfo?: DeferInfoTrie;\n}\n\nexport type DiffQueryAgainstStoreOptions = ReadQueryOptions & {\n returnPartialData?: boolean;\n};\n\nexport type ApolloReducerConfig = {\n dataIdFromObject?: KeyFieldsFunction;\n};\n\nexport interface InputObjectConfig {\n fields: Record<string, string>;\n}\n\nexport interface InputObjectsOption {\n [inputObjectName: string]: InputObjectConfig;\n}\n\nexport type InMemoryCacheConfig = ApolloReducerConfig & {\n resultCaching?: boolean;\n possibleTypes?: PossibleTypesMap;\n typePolicies?: TypePolicies;\n fragments?: FragmentRegistryAPI;\n inputObjects?: InputObjectsOption;\n} & ({} extends InMemoryCache.ScalarsOption ?\n InMemoryCache.ScalarsOption extends Record<string, never> ?\n {\n scalars?: Record<\n string,\n `Scalar types must be declared in ApolloCache.Scalars before usage. See https://www.apollographql.com/docs/react/data/typescript#declaring-scalar-types.`\n >;\n }\n : { scalars?: InMemoryCache.ScalarsOption }\n : { scalars: InMemoryCache.ScalarsOption });\n\nexport interface MergeInfo {\n field: FieldNode;\n typename: string | undefined;\n merge: FieldMergeFunction;\n path: Array<string | number>;\n}\n\nexport interface MergeTree {\n info?: MergeInfo;\n map: Map<string | number, MergeTree>;\n}\n\nexport interface ReadMergeModifyContext {\n store: NormalizedCache;\n variables?: OperationVariables;\n // A JSON.stringify-serialized version of context.variables.\n varString?: string;\n extensions?: ExtensionsWithStreamInfo;\n}\n\nexport type KnownScalars = RemoveIndexSignature<ApolloCache.Scalars>;\nexport type ScalarNames =\n | keyof KnownScalars\n | (string extends keyof ApolloCache.Scalars ? string & {} : never);\n"]}
@@ -68,7 +68,7 @@ export class StoreWriter {
68
68
  path: [],
69
69
  });
70
70
  if (!isReference(ref)) {
71
- throw newInvariantError(115, result);
71
+ throw newInvariantError(117, result);
72
72
  }
73
73
  // So far, the store has not been modified, so now it's time to process
74
74
  // context.incomingById and merge those incoming fields into context.store.
@@ -230,7 +230,7 @@ export class StoreWriter {
230
230
  // provide a default value, so its absence from the written data should
231
231
  // not be cause for alarm.
232
232
  !policies.getReadFunction(typename, field.name.value)) {
233
- invariant.error(116, resultKeyNameFromField(field), result);
233
+ invariant.error(118, resultKeyNameFromField(field), result);
234
234
  }
235
235
  });
236
236
  // Identify the result object, even if dataId was already provided,
@@ -378,7 +378,7 @@ export class StoreWriter {
378
378
  else {
379
379
  const fragment = getFragmentFromSelection(selection, context.lookupFragment);
380
380
  if (!fragment && selection.kind === Kind.FRAGMENT_SPREAD) {
381
- throw newInvariantError(117, selection.name.value);
381
+ throw newInvariantError(119, selection.name.value);
382
382
  }
383
383
  if (fragment &&
384
384
  policies.fragmentMatches(fragment, typename, result, context.variables)) {
@@ -550,7 +550,7 @@ function warnAboutDataLoss(existingRef, incomingObj, storeFieldName, store) {
550
550
  }
551
551
  });
552
552
  }
553
- __DEV__ && invariant.warn(118, fieldName, parentType, childTypenames.length ?
553
+ __DEV__ && invariant.warn(120, fieldName, parentType, childTypenames.length ?
554
554
  "either ensure all objects of type " +
555
555
  childTypenames.join(" and ") +
556
556
  " have an ID or a custom merge function, or "
@@ -8,7 +8,7 @@ import type { ClientAwarenessLink } from "@apollo/client/link/client-awareness";
8
8
  import type { LocalState } from "@apollo/client/local-state";
9
9
  import type { MaybeMasked, Unmasked } from "@apollo/client/masking";
10
10
  import { DocumentTransform } from "@apollo/client/utilities";
11
- import type { LazyType, OptionWithFallback, SignatureStyle, VariablesOption, variablesUnknownSymbol } from "@apollo/client/utilities/internal";
11
+ import type { LazyType, OptionWithFallback, Prettify, SignatureStyle, VariablesOption, variablesUnknownSymbol } from "@apollo/client/utilities/internal";
12
12
  import { getApolloClientMemoryInternals } from "@apollo/client/utilities/internal";
13
13
  import type { DeclareDefaultOptions, DefaultOptions } from "./defaultOptions.js";
14
14
  import type { ObservableQuery } from "./ObservableQuery.js";
@@ -232,7 +232,20 @@ export declare namespace ApolloClient {
232
232
  export namespace mutate {
233
233
  interface DefaultOptions extends ApolloClient.DefaultOptions.Mutate.Calculated {
234
234
  }
235
- type ResultForOptions<TData, TVariables extends OperationVariables, TCache extends Cache.Implementation, TOptions extends Record<string, unknown> | MutateOptions<any, TVariables, TCache>> = LazyType<MutateResult<MaybeMasked<TData>, OptionWithFallback<TOptions, DefaultOptions, "errorPolicy"> & ErrorPolicy>>;
235
+ type OptionsFor<TData, TVariables extends OperationVariables, TCache extends Cache.Implementation, TOptions extends {
236
+ variables?: unknown;
237
+ }> = MutateOptions<NoInfer<TData>, NoInfer<TVariables>, TCache> & {
238
+ variables?: Prettify<TVariables & {
239
+ [K in keyof TOptions["variables"]]: K extends keyof TVariables ? TVariables[K] : never;
240
+ }>;
241
+ } & (Exclude<keyof TOptions, keyof MutateOptions<any, any, any>> extends (infer InvalidOptionNames extends string) ? [
242
+ InvalidOptionNames
243
+ ] extends [never] ? unknown : {
244
+ [K in InvalidOptionNames]: never;
245
+ } : never);
246
+ type ResultForOptions<TData, TErrorPolicy extends ErrorPolicy | undefined = undefined> = LazyType<MutateResult<MaybeMasked<TData>, OptionWithFallback<{
247
+ errorPolicy: TErrorPolicy;
248
+ }, DefaultOptions, "errorPolicy"> & ErrorPolicy>>;
236
249
  namespace Signatures {
237
250
  interface Classic {
238
251
  /**
@@ -271,11 +284,21 @@ export declare namespace ApolloClient {
271
284
  *
272
285
  * It takes options as an object with the following keys and values:
273
286
  */
274
- <TData, TVariables extends OperationVariables, TOptions extends ApolloClient.MutateOptions<NoInfer<TData>, NoInfer<TVariables>, Cache.Implementation> & VariablesOption<TVariables & {
275
- [K in Exclude<keyof TOptions["variables"], keyof TVariables>]?: never;
276
- }>>(options: TOptions & {
287
+ <TData, TVariables extends OperationVariables, TOptions extends Omit<ApolloClient.MutateOptions<NoInfer<TData>, any, Cache.Implementation>, "variables"> & {
288
+ variables?: unknown;
289
+ }, TErrorPolicy extends ErrorPolicy | undefined = undefined>(options: TOptions & ApolloClient.mutate.OptionsFor<TData, TVariables, Cache.Implementation, TOptions> & {
277
290
  mutation: TypedDocumentNode<TData, TVariables>;
278
- }): Promise<ApolloClient.mutate.ResultForOptions<TData, TVariables, Cache.Implementation, TOptions>>;
291
+ /**
292
+ * Specifies how the mutation handles a response that returns both GraphQL errors and partial results.
293
+ *
294
+ * For details, see [GraphQL error policies](https://www.apollographql.com/docs/react/data/error-handling/#graphql-error-policies).
295
+ *
296
+ * The default value is `none`, meaning that the mutation result includes error details but _not_ partial results.
297
+ *
298
+ * @docGroup 1. Operation options
299
+ */
300
+ errorPolicy?: TErrorPolicy;
301
+ }): Promise<ApolloClient.mutate.ResultForOptions<TData, TErrorPolicy>>;
279
302
  }
280
303
  type Evaluated = SignatureStyle extends "classic" ? Classic : Modern;
281
304
  }
@@ -473,7 +496,18 @@ export declare namespace ApolloClient {
473
496
  export namespace query {
474
497
  interface DefaultOptions extends ApolloClient.DefaultOptions.Query.Calculated {
475
498
  }
476
- type ResultForOptions<TData, TVariables extends OperationVariables, TOptions extends Record<string, unknown> | QueryOptions<any, TVariables>> = LazyType<QueryResult<MaybeMasked<TData>, OptionWithFallback<TOptions, DefaultOptions, "errorPolicy"> & ErrorPolicy>>;
499
+ type OptionsFor<TData, TVariables extends OperationVariables, TOptions extends {
500
+ variables?: unknown;
501
+ }> = QueryOptions<NoInfer<TData>, NoInfer<TVariables>> & {
502
+ variables?: Prettify<TVariables & {
503
+ [K in keyof TOptions["variables"]]: K extends keyof TVariables ? TVariables[K] : never;
504
+ }>;
505
+ } & (Exclude<keyof TOptions, keyof QueryOptions<any, any>> extends (infer InvalidOptionNames extends string) ? [
506
+ InvalidOptionNames
507
+ ] extends [never] ? unknown : {
508
+ [K in InvalidOptionNames]: never;
509
+ } : never);
510
+ type ResultForOptions<TData, TVariables extends OperationVariables, TOptions extends Record<string, unknown> | Omit<QueryOptions<any, any>, "variables">> = LazyType<QueryResult<MaybeMasked<TData>, OptionWithFallback<TOptions, DefaultOptions, "errorPolicy"> & ErrorPolicy>>;
477
511
  namespace Signatures {
478
512
  interface Classic {
479
513
  /**
@@ -515,9 +549,9 @@ export declare namespace ApolloClient {
515
549
  * describe how this query should be treated e.g. whether it should hit the
516
550
  * server at all or just resolve from the cache, etc.
517
551
  */
518
- <TData, TVariables extends OperationVariables, TOptions extends ApolloClient.QueryOptions<NoInfer<TData>, NoInfer<TVariables>> & VariablesOption<TVariables & {
519
- [K in Exclude<keyof TOptions["variables"], keyof TVariables>]?: never;
520
- }>>(options: TOptions & {
552
+ <TData, TVariables extends OperationVariables, TOptions extends Omit<ApolloClient.QueryOptions<NoInfer<TData>, any>, "variables"> & {
553
+ variables?: unknown;
554
+ }>(options: TOptions & ApolloClient.query.OptionsFor<TData, TVariables, TOptions> & {
521
555
  query: TypedDocumentNode<TData, TVariables>;
522
556
  }): Promise<ApolloClient.query.ResultForOptions<TData, TVariables, TOptions>>;
523
557
  }
@@ -141,29 +141,28 @@ export class ApolloClient {
141
141
  */
142
142
  if (!hasSuggestedDevtools && __DEV__) {
143
143
  hasSuggestedDevtools = true;
144
- if (window.document &&
145
- window.top === window.self &&
146
- /^(https?|file):$/.test(window.location.protocol)) {
144
+ const win = window;
145
+ const ua = win.navigator.userAgent;
146
+ let url;
147
+ if (typeof ua === "string") {
148
+ if (ua.indexOf("Chrome/") > -1) {
149
+ url =
150
+ "https://chrome.google.com/webstore/detail/" +
151
+ "apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm";
152
+ }
153
+ else if (ua.indexOf("Firefox/") > -1) {
154
+ url =
155
+ "https://addons.mozilla.org/en-US/firefox/addon/apollo-developer-tools/";
156
+ }
157
+ }
158
+ if (win.document &&
159
+ win.top === win.self &&
160
+ /^(https?|file):$/.test(win.location.protocol) &&
161
+ url) {
147
162
  setTimeout(() => {
148
- if (!window.__APOLLO_DEVTOOLS_GLOBAL_HOOK__) {
149
- const nav = window.navigator;
150
- const ua = nav && nav.userAgent;
151
- let url;
152
- if (typeof ua === "string") {
153
- if (ua.indexOf("Chrome/") > -1) {
154
- url =
155
- "https://chrome.google.com/webstore/detail/" +
156
- "apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm";
157
- }
158
- else if (ua.indexOf("Firefox/") > -1) {
159
- url =
160
- "https://addons.mozilla.org/en-US/firefox/addon/apollo-developer-tools/";
161
- }
162
- }
163
- if (url) {
164
- __DEV__ && invariant.log("Download the Apollo DevTools for a better development " +
165
- "experience: %s", url);
166
- }
163
+ if (!win.__APOLLO_DEVTOOLS_GLOBAL_HOOK__) {
164
+ __DEV__ && invariant.log("Download the Apollo DevTools for a better development " +
165
+ "experience: %s", url);
167
166
  }
168
167
  }, 10000);
169
168
  }