@graphql-box/cache-manager 2.1.4 → 2.2.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.
- package/lib/browser/index.js +1 -1
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/production.analysis.txt +129 -17
- package/lib/main/debug/log-cache-entry/index.js.map +1 -1
- package/lib/main/debug/log-partial-compiled/index.js.map +1 -1
- package/lib/main/helpers/buildKeysAndPaths.js +73 -0
- package/lib/main/helpers/buildKeysAndPaths.js.map +1 -0
- package/lib/main/helpers/checkFieldPathChecklist.js +40 -0
- package/lib/main/helpers/checkFieldPathChecklist.js.map +1 -0
- package/lib/main/helpers/createFragmentSpreadChecklist.js +28 -0
- package/lib/main/helpers/createFragmentSpreadChecklist.js.map +1 -0
- package/lib/main/helpers/filterField.js +97 -0
- package/lib/main/helpers/filterField.js.map +1 -0
- package/lib/main/helpers/filterFragmentDefinitions.js +50 -0
- package/lib/main/helpers/filterFragmentDefinitions.js.map +1 -0
- package/lib/main/helpers/filterFragmentSpreads.js +37 -0
- package/lib/main/helpers/filterFragmentSpreads.js.map +1 -0
- package/lib/main/helpers/filterIDsAndTypeNames.js +47 -0
- package/lib/main/helpers/filterIDsAndTypeNames.js.map +1 -0
- package/lib/main/helpers/filterInlineFragments.js +42 -0
- package/lib/main/helpers/filterInlineFragments.js.map +1 -0
- package/lib/main/helpers/filterOutPropsWithArgsOrDirectives.js +39 -0
- package/lib/main/helpers/filterOutPropsWithArgsOrDirectives.js.map +1 -0
- package/lib/main/helpers/filterQuery.js +59 -0
- package/lib/main/helpers/filterQuery.js.map +1 -0
- package/lib/main/helpers/normalizeResponseData.js +23 -0
- package/lib/main/helpers/normalizeResponseData.js.map +1 -0
- package/lib/main/helpers/validTypeIDValue.js +20 -0
- package/lib/main/helpers/validTypeIDValue.js.map +1 -0
- package/lib/main/main/index.js +468 -472
- package/lib/main/main/index.js.map +1 -1
- package/lib/module/debug/log-cache-entry/index.js.map +1 -1
- package/lib/module/debug/log-partial-compiled/index.js.map +1 -1
- package/lib/module/helpers/buildKeysAndPaths.js +54 -0
- package/lib/module/helpers/buildKeysAndPaths.js.map +1 -0
- package/lib/module/helpers/checkFieldPathChecklist.js +31 -0
- package/lib/module/helpers/checkFieldPathChecklist.js.map +1 -0
- package/lib/module/helpers/createFragmentSpreadChecklist.js +15 -0
- package/lib/module/helpers/createFragmentSpreadChecklist.js.map +1 -0
- package/lib/module/helpers/filterField.js +81 -0
- package/lib/module/helpers/filterField.js.map +1 -0
- package/lib/module/helpers/filterFragmentDefinitions.js +39 -0
- package/lib/module/helpers/filterFragmentDefinitions.js.map +1 -0
- package/lib/module/helpers/filterFragmentSpreads.js +23 -0
- package/lib/module/helpers/filterFragmentSpreads.js.map +1 -0
- package/lib/module/helpers/filterIDsAndTypeNames.js +36 -0
- package/lib/module/helpers/filterIDsAndTypeNames.js.map +1 -0
- package/lib/module/helpers/filterInlineFragments.js +32 -0
- package/lib/module/helpers/filterInlineFragments.js.map +1 -0
- package/lib/module/helpers/filterOutPropsWithArgsOrDirectives.js +25 -0
- package/lib/module/helpers/filterOutPropsWithArgsOrDirectives.js.map +1 -0
- package/lib/module/helpers/filterQuery.js +43 -0
- package/lib/module/helpers/filterQuery.js.map +1 -0
- package/lib/module/helpers/normalizeResponseData.js +11 -0
- package/lib/module/helpers/normalizeResponseData.js.map +1 -0
- package/lib/module/helpers/validTypeIDValue.js +8 -0
- package/lib/module/helpers/validTypeIDValue.js.map +1 -0
- package/lib/module/main/index.js +465 -470
- package/lib/module/main/index.js.map +1 -1
- package/lib/types/debug/log-cache-entry/index.d.ts.map +1 -1
- package/lib/types/debug/log-cache-query/index.d.ts.map +1 -1
- package/lib/types/debug/log-partial-compiled/index.d.ts.map +1 -1
- package/lib/types/defs/index.d.ts +19 -9
- package/lib/types/defs/index.d.ts.map +1 -1
- package/lib/types/helpers/buildKeysAndPaths.d.ts +10 -0
- package/lib/types/helpers/buildKeysAndPaths.d.ts.map +1 -0
- package/lib/types/helpers/checkFieldPathChecklist.d.ts +4 -0
- package/lib/types/helpers/checkFieldPathChecklist.d.ts.map +1 -0
- package/lib/types/helpers/createFragmentSpreadChecklist.d.ts +11 -0
- package/lib/types/helpers/createFragmentSpreadChecklist.d.ts.map +1 -0
- package/lib/types/helpers/filterField.d.ts +6 -0
- package/lib/types/helpers/filterField.d.ts.map +1 -0
- package/lib/types/helpers/filterFragmentDefinitions.d.ts +10 -0
- package/lib/types/helpers/filterFragmentDefinitions.d.ts.map +1 -0
- package/lib/types/helpers/filterFragmentSpreads.d.ts +6 -0
- package/lib/types/helpers/filterFragmentSpreads.d.ts.map +1 -0
- package/lib/types/helpers/filterIDsAndTypeNames.d.ts +5 -0
- package/lib/types/helpers/filterIDsAndTypeNames.d.ts.map +1 -0
- package/lib/types/helpers/filterInlineFragments.d.ts +5 -0
- package/lib/types/helpers/filterInlineFragments.d.ts.map +1 -0
- package/lib/types/helpers/filterOutPropsWithArgsOrDirectives.d.ts +6 -0
- package/lib/types/helpers/filterOutPropsWithArgsOrDirectives.d.ts.map +1 -0
- package/lib/types/helpers/filterQuery.d.ts +5 -0
- package/lib/types/helpers/filterQuery.d.ts.map +1 -0
- package/lib/types/helpers/normalizeResponseData.d.ts +10 -0
- package/lib/types/helpers/normalizeResponseData.d.ts.map +1 -0
- package/lib/types/helpers/validTypeIDValue.d.ts +3 -0
- package/lib/types/helpers/validTypeIDValue.d.ts.map +1 -0
- package/lib/types/main/index.d.ts +13 -20
- package/lib/types/main/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/__snapshots__/index.test.ts.snap +17449 -7185
- package/src/debug/log-cache-entry/index.ts +1 -1
- package/src/debug/log-partial-compiled/index.ts +1 -1
- package/src/defs/index.ts +18 -10
- package/src/helpers/buildKeysAndPaths.ts +71 -0
- package/src/helpers/checkFieldPathChecklist.ts +21 -0
- package/src/helpers/createFragmentSpreadChecklist.ts +17 -0
- package/src/helpers/filterField.ts +73 -0
- package/src/helpers/filterFragmentDefinitions.ts +40 -0
- package/src/helpers/filterFragmentSpreads.ts +28 -0
- package/src/helpers/filterIDsAndTypeNames.ts +31 -0
- package/src/helpers/filterInlineFragments.ts +29 -0
- package/src/helpers/filterOutPropsWithArgsOrDirectives.ts +30 -0
- package/src/helpers/filterQuery.ts +38 -0
- package/src/helpers/normalizeResponseData.ts +9 -0
- package/src/helpers/validTypeIDValue.ts +11 -0
- package/src/index.test.ts +179 -3
- package/src/main/index.ts +506 -499
package/src/index.test.ts
CHANGED
|
@@ -16,8 +16,7 @@ import {
|
|
|
16
16
|
requestFieldTypeMaps,
|
|
17
17
|
responses,
|
|
18
18
|
} from "@graphql-box/test-utils";
|
|
19
|
-
import { CacheManager, CacheManagerDef } from ".";
|
|
20
|
-
import { AnalyzeQueryResult } from "./defs";
|
|
19
|
+
import { AnalyzeQueryResult, CacheManager, CacheManagerDef } from ".";
|
|
21
20
|
|
|
22
21
|
describe("@graphql-box/cache-manager >>", () => {
|
|
23
22
|
const realDateNow = Date.now.bind(global.Date);
|
|
@@ -31,7 +30,7 @@ describe("@graphql-box/cache-manager >>", () => {
|
|
|
31
30
|
global.Date.now = realDateNow;
|
|
32
31
|
});
|
|
33
32
|
|
|
34
|
-
describe("
|
|
33
|
+
describe("resolveRequest >>", () => {
|
|
35
34
|
let responseData: ResponseData;
|
|
36
35
|
let requestData: RequestData;
|
|
37
36
|
|
|
@@ -709,6 +708,59 @@ describe("@graphql-box/cache-manager >>", () => {
|
|
|
709
708
|
});
|
|
710
709
|
});
|
|
711
710
|
});
|
|
711
|
+
|
|
712
|
+
describe("defer >>", () => {
|
|
713
|
+
describe("cascading cache control >>", () => {
|
|
714
|
+
beforeAll(async () => {
|
|
715
|
+
// @ts-ignore
|
|
716
|
+
jest.spyOn(CacheManager, "_isValid").mockReturnValue(true);
|
|
717
|
+
|
|
718
|
+
cacheManager = await CacheManager.init({
|
|
719
|
+
cache: new Cachemap({
|
|
720
|
+
name: "cachemap",
|
|
721
|
+
store: map(),
|
|
722
|
+
type: "someType",
|
|
723
|
+
}),
|
|
724
|
+
cascadeCacheControl: true,
|
|
725
|
+
typeIDKey: DEFAULT_TYPE_ID_KEY,
|
|
726
|
+
});
|
|
727
|
+
|
|
728
|
+
requestData = getRequestData(parsedRequests.deferQuerySet.initial);
|
|
729
|
+
|
|
730
|
+
responseData = await cacheManager.resolveQuery(
|
|
731
|
+
requestData,
|
|
732
|
+
requestData,
|
|
733
|
+
responses.deferQuerySet.initial,
|
|
734
|
+
{ awaitDataCaching: true },
|
|
735
|
+
getRequestContext({ fieldTypeMap: requestFieldTypeMaps.deferQuery }),
|
|
736
|
+
);
|
|
737
|
+
|
|
738
|
+
const { cacheMetadata, data } = responses.deferQuerySet.partial;
|
|
739
|
+
|
|
740
|
+
// @ts-ignore
|
|
741
|
+
jest.spyOn(cacheManager._partialQueryResponses, "get").mockReturnValue({
|
|
742
|
+
cacheMetadata: rehydrateCacheMetadata(cacheMetadata as DehydratedCacheMetadata),
|
|
743
|
+
data,
|
|
744
|
+
});
|
|
745
|
+
|
|
746
|
+
responseData = await cacheManager.resolveQuery(
|
|
747
|
+
getRequestData(parsedRequests.deferQuerySet.full),
|
|
748
|
+
getRequestData(parsedRequests.deferQuerySet.updated),
|
|
749
|
+
responses.deferQuerySet.updated,
|
|
750
|
+
{ awaitDataCaching: true },
|
|
751
|
+
getRequestContext({ fieldTypeMap: requestFieldTypeMaps.deferQuery, queryFiltered: true }),
|
|
752
|
+
);
|
|
753
|
+
});
|
|
754
|
+
|
|
755
|
+
it("correct response data", () => {
|
|
756
|
+
expect(responseData).toMatchSnapshot();
|
|
757
|
+
});
|
|
758
|
+
|
|
759
|
+
it("correct cache data", async () => {
|
|
760
|
+
expect(await cacheManager.cache.export()).toMatchSnapshot();
|
|
761
|
+
});
|
|
762
|
+
});
|
|
763
|
+
});
|
|
712
764
|
});
|
|
713
765
|
});
|
|
714
766
|
|
|
@@ -799,6 +851,34 @@ describe("@graphql-box/cache-manager >>", () => {
|
|
|
799
851
|
expect(analyzeQueryResult.response).toBeUndefined();
|
|
800
852
|
});
|
|
801
853
|
});
|
|
854
|
+
|
|
855
|
+
describe("defer >>", () => {
|
|
856
|
+
beforeAll(async () => {
|
|
857
|
+
cacheManager = await CacheManager.init({
|
|
858
|
+
cache: new Cachemap({
|
|
859
|
+
name: "cachemap",
|
|
860
|
+
store: map(),
|
|
861
|
+
type: "someType",
|
|
862
|
+
}),
|
|
863
|
+
typeIDKey: DEFAULT_TYPE_ID_KEY,
|
|
864
|
+
});
|
|
865
|
+
|
|
866
|
+
analyzeQueryResult = await cacheManager.analyzeQuery(
|
|
867
|
+
getRequestData(parsedRequests.deferQuery),
|
|
868
|
+
{ awaitDataCaching: true },
|
|
869
|
+
getRequestContext({ fieldTypeMap: requestFieldTypeMaps.deferQuery }),
|
|
870
|
+
);
|
|
871
|
+
});
|
|
872
|
+
|
|
873
|
+
it("correct request data", () => {
|
|
874
|
+
const { ast, ...otherProps } = analyzeQueryResult.updated as RequestData;
|
|
875
|
+
expect(otherProps).toMatchSnapshot();
|
|
876
|
+
});
|
|
877
|
+
|
|
878
|
+
it("no response data", () => {
|
|
879
|
+
expect(analyzeQueryResult.response).toBeUndefined();
|
|
880
|
+
});
|
|
881
|
+
});
|
|
802
882
|
});
|
|
803
883
|
|
|
804
884
|
describe("entire matching data >>", () => {
|
|
@@ -946,6 +1026,51 @@ describe("@graphql-box/cache-manager >>", () => {
|
|
|
946
1026
|
expect(await cacheManager.cache.export()).toMatchSnapshot();
|
|
947
1027
|
});
|
|
948
1028
|
});
|
|
1029
|
+
|
|
1030
|
+
describe("defer >>", () => {
|
|
1031
|
+
beforeAll(async () => {
|
|
1032
|
+
// @ts-ignore
|
|
1033
|
+
jest.spyOn(CacheManager, "_isValid").mockReturnValue(true);
|
|
1034
|
+
|
|
1035
|
+
cacheManager = await CacheManager.init({
|
|
1036
|
+
cache: new Cachemap({
|
|
1037
|
+
name: "cachemap",
|
|
1038
|
+
store: map(),
|
|
1039
|
+
type: "someType",
|
|
1040
|
+
}),
|
|
1041
|
+
cascadeCacheControl: true,
|
|
1042
|
+
typeIDKey: DEFAULT_TYPE_ID_KEY,
|
|
1043
|
+
});
|
|
1044
|
+
|
|
1045
|
+
const requestData = getRequestData(parsedRequests.deferQuery);
|
|
1046
|
+
|
|
1047
|
+
await cacheManager.resolveQuery(
|
|
1048
|
+
requestData,
|
|
1049
|
+
requestData,
|
|
1050
|
+
responses.deferQuery,
|
|
1051
|
+
{ awaitDataCaching: true },
|
|
1052
|
+
getRequestContext({ fieldTypeMap: requestFieldTypeMaps.deferQuery }),
|
|
1053
|
+
);
|
|
1054
|
+
|
|
1055
|
+
analyzeQueryResult = await cacheManager.analyzeQuery(
|
|
1056
|
+
getRequestData(parsedRequests.deferQuery),
|
|
1057
|
+
{ awaitDataCaching: true },
|
|
1058
|
+
getRequestContext({ fieldTypeMap: requestFieldTypeMaps.deferQuery }),
|
|
1059
|
+
);
|
|
1060
|
+
});
|
|
1061
|
+
|
|
1062
|
+
it("no request data", () => {
|
|
1063
|
+
expect(analyzeQueryResult.updated).toBeUndefined();
|
|
1064
|
+
});
|
|
1065
|
+
|
|
1066
|
+
it("correct response data", () => {
|
|
1067
|
+
expect(analyzeQueryResult.response).toMatchSnapshot();
|
|
1068
|
+
});
|
|
1069
|
+
|
|
1070
|
+
it("correct cache data", async () => {
|
|
1071
|
+
expect(await cacheManager.cache.export()).toMatchSnapshot();
|
|
1072
|
+
});
|
|
1073
|
+
});
|
|
949
1074
|
});
|
|
950
1075
|
|
|
951
1076
|
describe("some matching data >>", () => {
|
|
@@ -1111,6 +1236,57 @@ describe("@graphql-box/cache-manager >>", () => {
|
|
|
1111
1236
|
expect(cacheManager._partialQueryResponses).toMatchSnapshot();
|
|
1112
1237
|
});
|
|
1113
1238
|
});
|
|
1239
|
+
|
|
1240
|
+
describe("defer >>", () => {
|
|
1241
|
+
beforeAll(async () => {
|
|
1242
|
+
// @ts-ignore
|
|
1243
|
+
jest.spyOn(CacheManager, "_isValid").mockReturnValue(true);
|
|
1244
|
+
|
|
1245
|
+
cacheManager = await CacheManager.init({
|
|
1246
|
+
cache: new Cachemap({
|
|
1247
|
+
name: "cachemap",
|
|
1248
|
+
store: map(),
|
|
1249
|
+
type: "someType",
|
|
1250
|
+
}),
|
|
1251
|
+
cascadeCacheControl: true,
|
|
1252
|
+
typeIDKey: DEFAULT_TYPE_ID_KEY,
|
|
1253
|
+
});
|
|
1254
|
+
|
|
1255
|
+
const requestData = getRequestData(parsedRequests.deferQuerySet.initial);
|
|
1256
|
+
|
|
1257
|
+
await cacheManager.resolveQuery(
|
|
1258
|
+
requestData,
|
|
1259
|
+
requestData,
|
|
1260
|
+
responses.deferQuerySet.initial,
|
|
1261
|
+
{ awaitDataCaching: true },
|
|
1262
|
+
getRequestContext({ fieldTypeMap: requestFieldTypeMaps.deferQuery }),
|
|
1263
|
+
);
|
|
1264
|
+
|
|
1265
|
+
analyzeQueryResult = await cacheManager.analyzeQuery(
|
|
1266
|
+
getRequestData(parsedRequests.deferQuery),
|
|
1267
|
+
{ awaitDataCaching: true },
|
|
1268
|
+
getRequestContext({ fieldTypeMap: requestFieldTypeMaps.deferQuery }),
|
|
1269
|
+
);
|
|
1270
|
+
});
|
|
1271
|
+
|
|
1272
|
+
it("correct request data", () => {
|
|
1273
|
+
const { ast, ...otherProps } = analyzeQueryResult.updated as RequestData;
|
|
1274
|
+
expect(otherProps).toMatchSnapshot();
|
|
1275
|
+
});
|
|
1276
|
+
|
|
1277
|
+
it("no response data", () => {
|
|
1278
|
+
expect(analyzeQueryResult.response).toBeUndefined();
|
|
1279
|
+
});
|
|
1280
|
+
|
|
1281
|
+
it("correct cache data", async () => {
|
|
1282
|
+
expect(await cacheManager.cache.export()).toMatchSnapshot();
|
|
1283
|
+
});
|
|
1284
|
+
|
|
1285
|
+
it("correct partial data", () => {
|
|
1286
|
+
// @ts-ignore
|
|
1287
|
+
expect(cacheManager._partialQueryResponses).toMatchSnapshot();
|
|
1288
|
+
});
|
|
1289
|
+
});
|
|
1114
1290
|
});
|
|
1115
1291
|
});
|
|
1116
1292
|
});
|