@graphql-box/cache-manager 2.4.0 → 2.5.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 (64) hide show
  1. package/lib/browser/index.js +1 -1
  2. package/lib/browser/index.js.map +1 -1
  3. package/lib/browser/production.analysis.txt +63 -27
  4. package/lib/main/helpers/isFirstResponseChunk.js +11 -0
  5. package/lib/main/helpers/isFirstResponseChunk.js.map +1 -0
  6. package/lib/main/helpers/isLastResponseChunk.js +11 -0
  7. package/lib/main/helpers/isLastResponseChunk.js.map +1 -0
  8. package/lib/main/helpers/isNotLastResponseChunk.js +11 -0
  9. package/lib/main/helpers/isNotLastResponseChunk.js.map +1 -0
  10. package/lib/main/helpers/isNotResponseChunk.js +11 -0
  11. package/lib/main/helpers/isNotResponseChunk.js.map +1 -0
  12. package/lib/main/helpers/mergeResponseDataSets.js +53 -0
  13. package/lib/main/helpers/mergeResponseDataSets.js.map +1 -0
  14. package/lib/main/helpers/{normalizeResponseData.js → normalizePatchResponseData.js} +13 -8
  15. package/lib/main/helpers/normalizePatchResponseData.js.map +1 -0
  16. package/lib/main/main/index.js +125 -90
  17. package/lib/main/main/index.js.map +1 -1
  18. package/lib/module/helpers/isFirstResponseChunk.js +2 -0
  19. package/lib/module/helpers/isFirstResponseChunk.js.map +1 -0
  20. package/lib/module/helpers/isLastResponseChunk.js +2 -0
  21. package/lib/module/helpers/isLastResponseChunk.js.map +1 -0
  22. package/lib/module/helpers/isNotLastResponseChunk.js +2 -0
  23. package/lib/module/helpers/isNotLastResponseChunk.js.map +1 -0
  24. package/lib/module/helpers/isNotResponseChunk.js +2 -0
  25. package/lib/module/helpers/isNotResponseChunk.js.map +1 -0
  26. package/lib/module/helpers/mergeResponseDataSets.js +41 -0
  27. package/lib/module/helpers/mergeResponseDataSets.js.map +1 -0
  28. package/lib/module/helpers/normalizePatchResponseData.js +17 -0
  29. package/lib/module/helpers/normalizePatchResponseData.js.map +1 -0
  30. package/lib/module/main/index.js +122 -90
  31. package/lib/module/main/index.js.map +1 -1
  32. package/lib/types/defs/index.d.ts +2 -2
  33. package/lib/types/defs/index.d.ts.map +1 -1
  34. package/lib/types/helpers/isFirstResponseChunk.d.ts +5 -0
  35. package/lib/types/helpers/isFirstResponseChunk.d.ts.map +1 -0
  36. package/lib/types/helpers/isLastResponseChunk.d.ts +5 -0
  37. package/lib/types/helpers/isLastResponseChunk.d.ts.map +1 -0
  38. package/lib/types/helpers/isNotLastResponseChunk.d.ts +5 -0
  39. package/lib/types/helpers/isNotLastResponseChunk.d.ts.map +1 -0
  40. package/lib/types/helpers/isNotResponseChunk.d.ts +5 -0
  41. package/lib/types/helpers/isNotResponseChunk.d.ts.map +1 -0
  42. package/lib/types/helpers/mergeResponseDataSets.d.ts +4 -0
  43. package/lib/types/helpers/mergeResponseDataSets.d.ts.map +1 -0
  44. package/lib/types/helpers/normalizePatchResponseData.d.ts +5 -0
  45. package/lib/types/helpers/normalizePatchResponseData.d.ts.map +1 -0
  46. package/lib/types/main/index.d.ts +6 -3
  47. package/lib/types/main/index.d.ts.map +1 -1
  48. package/package.json +1 -1
  49. package/src/__snapshots__/index.test.ts.snap +12483 -11883
  50. package/src/defs/index.ts +13 -13
  51. package/src/helpers/isFirstResponseChunk.ts +5 -0
  52. package/src/helpers/isLastResponseChunk.ts +5 -0
  53. package/src/helpers/isNotLastResponseChunk.ts +5 -0
  54. package/src/helpers/isNotResponseChunk.ts +5 -0
  55. package/src/helpers/mergeResponseDataSets.ts +35 -0
  56. package/src/helpers/normalizePatchResponseData.ts +17 -0
  57. package/src/index.test.ts +162 -86
  58. package/src/main/index.ts +151 -107
  59. package/lib/main/helpers/normalizeResponseData.js.map +0 -1
  60. package/lib/module/helpers/normalizeResponseData.js +0 -12
  61. package/lib/module/helpers/normalizeResponseData.js.map +0 -1
  62. package/lib/types/helpers/normalizeResponseData.d.ts +0 -11
  63. package/lib/types/helpers/normalizeResponseData.d.ts.map +0 -1
  64. package/src/helpers/normalizeResponseData.ts +0 -10
package/src/defs/index.ts CHANGED
@@ -189,6 +189,19 @@ export interface CachemapOptions {
189
189
  export interface CacheManagerDef {
190
190
  cache: Cachemap;
191
191
  analyzeQuery(requestData: RequestData, options: RequestOptions, context: RequestContext): Promise<AnalyzeQueryResult>;
192
+ cacheQuery(
193
+ requestData: RequestData,
194
+ updatedRequestData: RequestData,
195
+ responseData: RawResponseDataWithMaybeCacheMetadata,
196
+ options: RequestOptions,
197
+ context: RequestContext,
198
+ ): Promise<ResponseData>;
199
+ cacheResponse(
200
+ requestData: RequestData,
201
+ responseData: RawResponseDataWithMaybeCacheMetadata,
202
+ options: RequestOptions,
203
+ context: RequestContext,
204
+ ): Promise<ResponseData>;
192
205
  checkCacheEntry(
193
206
  cacheType: CacheTypes,
194
207
  hash: string,
@@ -201,19 +214,6 @@ export interface CacheManagerDef {
201
214
  context: RequestContext,
202
215
  ): Promise<ResponseData | false>;
203
216
  deletePartialQueryResponse(hash: string): void;
204
- resolveQuery(
205
- requestData: RequestData,
206
- updatedRequestData: RequestData,
207
- responseData: RawResponseDataWithMaybeCacheMetadata,
208
- options: RequestOptions,
209
- context: RequestContext,
210
- ): Promise<ResponseData>;
211
- resolveRequest(
212
- requestData: RequestData,
213
- responseData: RawResponseDataWithMaybeCacheMetadata,
214
- options: RequestOptions,
215
- context: RequestContext,
216
- ): Promise<ResponseData>;
217
217
  }
218
218
 
219
219
  export type CacheManagerInit = (options: ClientOptions) => Promise<CacheManagerDef>;
@@ -0,0 +1,5 @@
1
+ import { RawResponseDataWithMaybeCacheMetadata } from "@graphql-box/core";
2
+ import { CacheManagerContext } from "..";
3
+
4
+ export default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) =>
5
+ context.hasDeferOrStream && rawResponseData.hasNext && !rawResponseData.paths;
@@ -0,0 +1,5 @@
1
+ import { RawResponseDataWithMaybeCacheMetadata } from "@graphql-box/core";
2
+ import { CacheManagerContext } from "..";
3
+
4
+ export default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) =>
5
+ context.hasDeferOrStream && !rawResponseData.hasNext && rawResponseData.paths;
@@ -0,0 +1,5 @@
1
+ import { RawResponseDataWithMaybeCacheMetadata } from "@graphql-box/core";
2
+ import { CacheManagerContext } from "..";
3
+
4
+ export default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) =>
5
+ context.hasDeferOrStream && rawResponseData.hasNext;
@@ -0,0 +1,5 @@
1
+ import { RawResponseDataWithMaybeCacheMetadata } from "@graphql-box/core";
2
+ import { CacheManagerContext } from "..";
3
+
4
+ export default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) =>
5
+ !context.hasDeferOrStream && !rawResponseData.hasNext && !rawResponseData.paths;
@@ -0,0 +1,35 @@
1
+ import { RawResponseDataWithMaybeCacheMetadata } from "@graphql-box/core";
2
+ import { merge } from "lodash";
3
+
4
+ export default (responseDataSets: RawResponseDataWithMaybeCacheMetadata[]) => {
5
+ return responseDataSets.reduce(
6
+ (acc: RawResponseDataWithMaybeCacheMetadata, dataSet, index) => {
7
+ const { _cacheMetadata, data, hasNext, headers, paths } = dataSet;
8
+
9
+ if (_cacheMetadata) {
10
+ acc._cacheMetadata = acc._cacheMetadata ? { ...acc._cacheMetadata, ..._cacheMetadata } : _cacheMetadata;
11
+ }
12
+
13
+ acc.data = acc.data ? merge(acc.data, data) : data;
14
+
15
+ if (index === 0) {
16
+ acc.headers = headers;
17
+ }
18
+
19
+ if (index === responseDataSets.length - 1) {
20
+ acc.hasNext = hasNext;
21
+ }
22
+
23
+ if (paths) {
24
+ if (!acc.paths) {
25
+ acc.paths = [];
26
+ }
27
+
28
+ acc.paths.push(paths[0]);
29
+ }
30
+
31
+ return acc;
32
+ },
33
+ { data: {} },
34
+ );
35
+ };
@@ -0,0 +1,17 @@
1
+ import { RawResponseDataWithMaybeCacheMetadata } from "@graphql-box/core";
2
+ import { set } from "lodash";
3
+ import { CacheManagerContext } from "..";
4
+
5
+ export default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) => {
6
+ if (!context.normalizePatchResponseData) {
7
+ return rawResponseData;
8
+ }
9
+
10
+ const { data, paths, ...rest } = rawResponseData;
11
+
12
+ return {
13
+ ...rest,
14
+ data: set({}, (paths as string[])[0], data),
15
+ paths,
16
+ };
17
+ };