@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
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import _keys from "lodash/keys";
|
|
2
|
+
import { deleteFragmentDefinitions, getFragmentDefinitions } from "@graphql-box/helpers";
|
|
3
|
+
import filterField from "./filterField";
|
|
4
|
+
export default ((ast, fieldPathChecklist, fragmentSpreadChecklist, context) => {
|
|
5
|
+
var _getFragmentDefinitio;
|
|
6
|
+
|
|
7
|
+
const definitionsToFilter = _keys(fragmentSpreadChecklist).reduce((namesAndPaths, key) => {
|
|
8
|
+
const {
|
|
9
|
+
deleted,
|
|
10
|
+
total
|
|
11
|
+
} = fragmentSpreadChecklist[key];
|
|
12
|
+
return deleted === 0 && total === 1 ? [...namesAndPaths, {
|
|
13
|
+
name: key,
|
|
14
|
+
path: fragmentSpreadChecklist[key].paths[0]
|
|
15
|
+
}] : namesAndPaths;
|
|
16
|
+
}, []);
|
|
17
|
+
|
|
18
|
+
const fragmentDefinitions = (_getFragmentDefinitio = getFragmentDefinitions(ast)) !== null && _getFragmentDefinitio !== void 0 ? _getFragmentDefinitio : {};
|
|
19
|
+
definitionsToFilter.forEach(({
|
|
20
|
+
name,
|
|
21
|
+
path
|
|
22
|
+
}) => {
|
|
23
|
+
const fragmentDefinition = fragmentDefinitions[name];
|
|
24
|
+
filterField(fragmentDefinition, fieldPathChecklist, fragmentSpreadChecklist, path, context);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
const definitionsToDelete = _keys(fragmentSpreadChecklist).reduce((names, key) => {
|
|
28
|
+
const {
|
|
29
|
+
deleted,
|
|
30
|
+
total
|
|
31
|
+
} = fragmentSpreadChecklist[key];
|
|
32
|
+
return deleted > 0 && deleted === total ? [...names, key] : names;
|
|
33
|
+
}, []);
|
|
34
|
+
|
|
35
|
+
return deleteFragmentDefinitions(ast, {
|
|
36
|
+
include: definitionsToDelete
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=filterFragmentDefinitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/helpers/filterFragmentDefinitions.ts"],"names":["deleteFragmentDefinitions","getFragmentDefinitions","filterField","ast","fieldPathChecklist","fragmentSpreadChecklist","context","definitionsToFilter","reduce","namesAndPaths","key","deleted","total","name","path","paths","fragmentDefinitions","forEach","fragmentDefinition","definitionsToDelete","names","include"],"mappings":";AAAA,SAASA,yBAAT,EAAoCC,sBAApC,QAAkE,sBAAlE;AAKA,OAAOC,WAAP,MAAwB,eAAxB;AAEA,gBAAe,CACbC,GADa,EAEbC,kBAFa,EAGbC,uBAHa,EAIbC,OAJa,KAKV;AAAA;;AACH,QAAMC,mBAAmB,GAAG,MAAKF,uBAAL,EAA8BG,MAA9B,CAC1B,CAACC,aAAD,EAAkDC,GAAlD,KAA0D;AACxD,UAAM;AAAEC,MAAAA,OAAF;AAAWC,MAAAA;AAAX,QAAqBP,uBAAuB,CAACK,GAAD,CAAlD;AAEA,WAAOC,OAAO,KAAK,CAAZ,IAAiBC,KAAK,KAAK,CAA3B,GACH,CAAC,GAAGH,aAAJ,EAAmB;AAAEI,MAAAA,IAAI,EAAEH,GAAR;AAAaI,MAAAA,IAAI,EAAET,uBAAuB,CAACK,GAAD,CAAvB,CAA6BK,KAA7B,CAAmC,CAAnC;AAAnB,KAAnB,CADG,GAEHN,aAFJ;AAGD,GAPyB,EAQ1B,EAR0B,CAA5B;;AAWA,QAAMO,mBAAmB,4BAAGf,sBAAsB,CAACE,GAAD,CAAzB,yEAAkC,EAA3D;AAEAI,EAAAA,mBAAmB,CAACU,OAApB,CAA4B,CAAC;AAAEJ,IAAAA,IAAF;AAAQC,IAAAA;AAAR,GAAD,KAAoB;AAC9C,UAAMI,kBAAkB,GAAGF,mBAAmB,CAACH,IAAD,CAA9C;AACAX,IAAAA,WAAW,CAACgB,kBAAD,EAAqBd,kBAArB,EAAyCC,uBAAzC,EAAkES,IAAlE,EAAwER,OAAxE,CAAX;AACD,GAHD;;AAKA,QAAMa,mBAAmB,GAAG,MAAKd,uBAAL,EAA8BG,MAA9B,CAAqC,CAACY,KAAD,EAAkBV,GAAlB,KAA0B;AACzF,UAAM;AAAEC,MAAAA,OAAF;AAAWC,MAAAA;AAAX,QAAqBP,uBAAuB,CAACK,GAAD,CAAlD;AACA,WAAOC,OAAO,GAAG,CAAV,IAAeA,OAAO,KAAKC,KAA3B,GAAmC,CAAC,GAAGQ,KAAJ,EAAWV,GAAX,CAAnC,GAAqDU,KAA5D;AACD,GAH2B,EAGzB,EAHyB,CAA5B;;AAKA,SAAOpB,yBAAyB,CAACG,GAAD,EAAM;AACpCkB,IAAAA,OAAO,EAAEF;AAD2B,GAAN,CAAhC;AAGD,CAhCD","sourcesContent":["import { deleteFragmentDefinitions, getFragmentDefinitions } from \"@graphql-box/helpers\";\nimport { DocumentNode } from \"graphql\";\nimport { keys } from \"lodash\";\nimport { CacheManagerContext, FieldPathChecklist } from \"../defs\";\nimport { FragmentSpreadCheckist } from \"./createFragmentSpreadChecklist\";\nimport filterField from \"./filterField\";\n\nexport default (\n ast: DocumentNode,\n fieldPathChecklist: FieldPathChecklist,\n fragmentSpreadChecklist: FragmentSpreadCheckist,\n context: CacheManagerContext,\n) => {\n const definitionsToFilter = keys(fragmentSpreadChecklist).reduce(\n (namesAndPaths: { name: string; path: string }[], key) => {\n const { deleted, total } = fragmentSpreadChecklist[key];\n\n return deleted === 0 && total === 1\n ? [...namesAndPaths, { name: key, path: fragmentSpreadChecklist[key].paths[0] as string }]\n : namesAndPaths;\n },\n [],\n );\n\n const fragmentDefinitions = getFragmentDefinitions(ast) ?? {};\n\n definitionsToFilter.forEach(({ name, path }) => {\n const fragmentDefinition = fragmentDefinitions[name];\n filterField(fragmentDefinition, fieldPathChecklist, fragmentSpreadChecklist, path, context);\n });\n\n const definitionsToDelete = keys(fragmentSpreadChecklist).reduce((names: string[], key) => {\n const { deleted, total } = fragmentSpreadChecklist[key];\n return deleted > 0 && deleted === total ? [...names, key] : names;\n }, []);\n\n return deleteFragmentDefinitions(ast, {\n include: definitionsToDelete,\n });\n};\n"],"file":"filterFragmentDefinitions.js"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import _keys from "lodash/keys";
|
|
2
|
+
import _isEmpty from "lodash/isEmpty";
|
|
3
|
+
import { deleteFragmentSpreads } from "@graphql-box/helpers";
|
|
4
|
+
export default ((field, fragmentSpreadFieldCounter, fragmentSpreadChecklist, ancestorRequestFieldPath) => {
|
|
5
|
+
if (_isEmpty(fragmentSpreadFieldCounter)) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
_keys(fragmentSpreadFieldCounter).forEach(key => {
|
|
10
|
+
fragmentSpreadChecklist[key].total += 1;
|
|
11
|
+
fragmentSpreadChecklist[key].paths.push(ancestorRequestFieldPath);
|
|
12
|
+
const {
|
|
13
|
+
hasData,
|
|
14
|
+
total
|
|
15
|
+
} = fragmentSpreadFieldCounter[key];
|
|
16
|
+
|
|
17
|
+
if (hasData === total) {
|
|
18
|
+
deleteFragmentSpreads(field, key);
|
|
19
|
+
fragmentSpreadChecklist[key].deleted += 1;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=filterFragmentSpreads.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/helpers/filterFragmentSpreads.ts"],"names":["deleteFragmentSpreads","field","fragmentSpreadFieldCounter","fragmentSpreadChecklist","ancestorRequestFieldPath","forEach","key","total","paths","push","hasData","deleted"],"mappings":";;AAAA,SAASA,qBAAT,QAAsC,sBAAtC;AAMA,gBAAe,CACbC,KADa,EAEbC,0BAFa,EAGbC,uBAHa,EAIbC,wBAJa,KAKV;AACH,MAAI,SAAQF,0BAAR,CAAJ,EAAyC;AACvC;AACD;;AAED,QAAKA,0BAAL,EAAiCG,OAAjC,CAAyCC,GAAG,IAAI;AAC9CH,IAAAA,uBAAuB,CAACG,GAAD,CAAvB,CAA6BC,KAA7B,IAAsC,CAAtC;AACAJ,IAAAA,uBAAuB,CAACG,GAAD,CAAvB,CAA6BE,KAA7B,CAAmCC,IAAnC,CAAwCL,wBAAxC;AAEA,UAAM;AAAEM,MAAAA,OAAF;AAAWH,MAAAA;AAAX,QAAqBL,0BAA0B,CAACI,GAAD,CAArD;;AAEA,QAAII,OAAO,KAAKH,KAAhB,EAAuB;AACrBP,MAAAA,qBAAqB,CAACC,KAAD,EAAQK,GAAR,CAArB;AACAH,MAAAA,uBAAuB,CAACG,GAAD,CAAvB,CAA6BK,OAA7B,IAAwC,CAAxC;AACD;AACF,GAVD;AAWD,CArBD","sourcesContent":["import { deleteFragmentSpreads } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode } from \"graphql\";\nimport { isEmpty, keys } from \"lodash\";\nimport { FragmentSpreadFieldCounter } from \"../defs\";\nimport { FragmentSpreadCheckist } from \"./createFragmentSpreadChecklist\";\n\nexport default (\n field: FieldNode | FragmentDefinitionNode,\n fragmentSpreadFieldCounter: FragmentSpreadFieldCounter,\n fragmentSpreadChecklist: FragmentSpreadCheckist,\n ancestorRequestFieldPath: string,\n) => {\n if (isEmpty(fragmentSpreadFieldCounter)) {\n return;\n }\n\n keys(fragmentSpreadFieldCounter).forEach(key => {\n fragmentSpreadChecklist[key].total += 1;\n fragmentSpreadChecklist[key].paths.push(ancestorRequestFieldPath);\n\n const { hasData, total } = fragmentSpreadFieldCounter[key];\n\n if (hasData === total) {\n deleteFragmentSpreads(field, key);\n fragmentSpreadChecklist[key].deleted += 1;\n }\n });\n};\n"],"file":"filterFragmentSpreads.js"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { TYPE_NAME_KEY } from "@graphql-box/core";
|
|
2
|
+
import { deleteChildFields, getChildFields, getName } from "@graphql-box/helpers";
|
|
3
|
+
export default ((field, {
|
|
4
|
+
fragmentDefinitions,
|
|
5
|
+
typeIDKey
|
|
6
|
+
}) => {
|
|
7
|
+
const fieldsAndTypeNames = getChildFields(field, {
|
|
8
|
+
fragmentDefinitions
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
if (!fieldsAndTypeNames || fieldsAndTypeNames.length > 3) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const fieldNames = fieldsAndTypeNames.map(({
|
|
16
|
+
fieldNode
|
|
17
|
+
}) => getName(fieldNode));
|
|
18
|
+
|
|
19
|
+
if (fieldNames.length === 2 && fieldNames.every(name => name === typeIDKey || name === TYPE_NAME_KEY)) {
|
|
20
|
+
deleteChildFields(field, fieldsAndTypeNames.map(({
|
|
21
|
+
fieldNode
|
|
22
|
+
}) => fieldNode));
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (fieldNames.length === 1 && fieldNames[0] === typeIDKey || fieldNames[0] === TYPE_NAME_KEY) {
|
|
27
|
+
const {
|
|
28
|
+
fieldNode
|
|
29
|
+
} = fieldsAndTypeNames[0];
|
|
30
|
+
deleteChildFields(field, fieldNode);
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return false;
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=filterIDsAndTypeNames.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/helpers/filterIDsAndTypeNames.ts"],"names":["TYPE_NAME_KEY","deleteChildFields","getChildFields","getName","field","fragmentDefinitions","typeIDKey","fieldsAndTypeNames","length","fieldNames","map","fieldNode","every","name"],"mappings":"AAAA,SAASA,aAAT,QAA8B,mBAA9B;AACA,SAASC,iBAAT,EAA4BC,cAA5B,EAA4CC,OAA5C,QAA2D,sBAA3D;AAIA,gBAAe,CAACC,KAAD,EAA4C;AAAEC,EAAAA,mBAAF;AAAuBC,EAAAA;AAAvB,CAA5C,KAAwG;AACrH,QAAMC,kBAAkB,GAAGL,cAAc,CAACE,KAAD,EAAQ;AAAEC,IAAAA;AAAF,GAAR,CAAzC;;AAEA,MAAI,CAACE,kBAAD,IAAuBA,kBAAkB,CAACC,MAAnB,GAA4B,CAAvD,EAA0D;AACxD,WAAO,KAAP;AACD;;AAED,QAAMC,UAAU,GAAGF,kBAAkB,CAACG,GAAnB,CAAuB,CAAC;AAAEC,IAAAA;AAAF,GAAD,KAAmBR,OAAO,CAACQ,SAAD,CAAjD,CAAnB;;AAEA,MAAIF,UAAU,CAACD,MAAX,KAAsB,CAAtB,IAA2BC,UAAU,CAACG,KAAX,CAAiBC,IAAI,IAAIA,IAAI,KAAKP,SAAT,IAAsBO,IAAI,KAAKb,aAAxD,CAA/B,EAAuG;AACrGC,IAAAA,iBAAiB,CACfG,KADe,EAEfG,kBAAkB,CAACG,GAAnB,CAAuB,CAAC;AAAEC,MAAAA;AAAF,KAAD,KAAmBA,SAA1C,CAFe,CAAjB;AAKA,WAAO,IAAP;AACD;;AAED,MAAKF,UAAU,CAACD,MAAX,KAAsB,CAAtB,IAA2BC,UAAU,CAAC,CAAD,CAAV,KAAkBH,SAA9C,IAA4DG,UAAU,CAAC,CAAD,CAAV,KAAkBT,aAAlF,EAAiG;AAC/F,UAAM;AAAEW,MAAAA;AAAF,QAAgBJ,kBAAkB,CAAC,CAAD,CAAxC;AACAN,IAAAA,iBAAiB,CAACG,KAAD,EAAQO,SAAR,CAAjB;AACA,WAAO,IAAP;AACD;;AAED,SAAO,KAAP;AACD,CAzBD","sourcesContent":["import { TYPE_NAME_KEY } from \"@graphql-box/core\";\nimport { deleteChildFields, getChildFields, getName } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode } from \"graphql\";\nimport { CacheManagerContext } from \"../defs\";\n\nexport default (field: FieldNode | FragmentDefinitionNode, { fragmentDefinitions, typeIDKey }: CacheManagerContext) => {\n const fieldsAndTypeNames = getChildFields(field, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames || fieldsAndTypeNames.length > 3) {\n return false;\n }\n\n const fieldNames = fieldsAndTypeNames.map(({ fieldNode }) => getName(fieldNode) as FieldNode[\"name\"][\"value\"]);\n\n if (fieldNames.length === 2 && fieldNames.every(name => name === typeIDKey || name === TYPE_NAME_KEY)) {\n deleteChildFields(\n field,\n fieldsAndTypeNames.map(({ fieldNode }) => fieldNode),\n );\n\n return true;\n }\n\n if ((fieldNames.length === 1 && fieldNames[0] === typeIDKey) || fieldNames[0] === TYPE_NAME_KEY) {\n const { fieldNode } = fieldsAndTypeNames[0];\n deleteChildFields(field, fieldNode);\n return true;\n }\n\n return false;\n};\n"],"file":"filterIDsAndTypeNames.js"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { deleteInlineFragments, getChildFields, getInlineFragments, getName } from "@graphql-box/helpers";
|
|
2
|
+
export default ((field, {
|
|
3
|
+
fragmentDefinitions,
|
|
4
|
+
typeIDKey
|
|
5
|
+
}) => {
|
|
6
|
+
const inlineFragments = getInlineFragments(field);
|
|
7
|
+
let filtered = false;
|
|
8
|
+
inlineFragments.forEach(fragment => {
|
|
9
|
+
const fieldsAndTypeNames = getChildFields(fragment, {
|
|
10
|
+
fragmentDefinitions
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
if (!fieldsAndTypeNames || !fieldsAndTypeNames.length) {
|
|
14
|
+
deleteInlineFragments(field, fragment);
|
|
15
|
+
filtered = true;
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
if (fieldsAndTypeNames.length === 1) {
|
|
20
|
+
const {
|
|
21
|
+
fieldNode
|
|
22
|
+
} = fieldsAndTypeNames[0];
|
|
23
|
+
|
|
24
|
+
if (getName(fieldNode) === typeIDKey) {
|
|
25
|
+
deleteInlineFragments(field, fragment);
|
|
26
|
+
filtered = true;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
return filtered;
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=filterInlineFragments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/helpers/filterInlineFragments.ts"],"names":["deleteInlineFragments","getChildFields","getInlineFragments","getName","field","fragmentDefinitions","typeIDKey","inlineFragments","filtered","forEach","fragment","fieldsAndTypeNames","length","fieldNode"],"mappings":"AAAA,SAASA,qBAAT,EAAgCC,cAAhC,EAAgDC,kBAAhD,EAAoEC,OAApE,QAAmF,sBAAnF;AAIA,gBAAe,CAACC,KAAD,EAA4C;AAAEC,EAAAA,mBAAF;AAAuBC,EAAAA;AAAvB,CAA5C,KAAwG;AACrH,QAAMC,eAAe,GAAGL,kBAAkB,CAACE,KAAD,CAA1C;AACA,MAAII,QAAQ,GAAG,KAAf;AAEAD,EAAAA,eAAe,CAACE,OAAhB,CAAwBC,QAAQ,IAAI;AAClC,UAAMC,kBAAkB,GAAGV,cAAc,CAACS,QAAD,EAAW;AAAEL,MAAAA;AAAF,KAAX,CAAzC;;AAEA,QAAI,CAACM,kBAAD,IAAuB,CAACA,kBAAkB,CAACC,MAA/C,EAAuD;AACrDZ,MAAAA,qBAAqB,CAACI,KAAD,EAAQM,QAAR,CAArB;AACAF,MAAAA,QAAQ,GAAG,IAAX;AACA;AACD;;AAED,QAAIG,kBAAkB,CAACC,MAAnB,KAA8B,CAAlC,EAAqC;AACnC,YAAM;AAAEC,QAAAA;AAAF,UAAgBF,kBAAkB,CAAC,CAAD,CAAxC;;AAEA,UAAIR,OAAO,CAACU,SAAD,CAAP,KAAuBP,SAA3B,EAAsC;AACpCN,QAAAA,qBAAqB,CAACI,KAAD,EAAQM,QAAR,CAArB;AACAF,QAAAA,QAAQ,GAAG,IAAX;AACD;AACF;AACF,GAjBD;AAmBA,SAAOA,QAAP;AACD,CAxBD","sourcesContent":["import { deleteInlineFragments, getChildFields, getInlineFragments, getName } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode } from \"graphql\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (field: FieldNode | FragmentDefinitionNode, { fragmentDefinitions, typeIDKey }: CacheManagerContext) => {\n const inlineFragments = getInlineFragments(field);\n let filtered = false;\n\n inlineFragments.forEach(fragment => {\n const fieldsAndTypeNames = getChildFields(fragment, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames || !fieldsAndTypeNames.length) {\n deleteInlineFragments(field, fragment);\n filtered = true;\n return;\n }\n\n if (fieldsAndTypeNames.length === 1) {\n const { fieldNode } = fieldsAndTypeNames[0];\n\n if (getName(fieldNode) === typeIDKey) {\n deleteInlineFragments(field, fragment);\n filtered = true;\n }\n }\n });\n\n return filtered;\n};\n"],"file":"filterInlineFragments.js"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import _keys from "lodash/keys";
|
|
2
|
+
import { getName, resolveFragments } from "@graphql-box/helpers";
|
|
3
|
+
import { buildFieldKeysAndPaths } from "./buildKeysAndPaths";
|
|
4
|
+
export default ((fieldData, selectionNodes, ancestorKeysAndPaths, context) => {
|
|
5
|
+
const fieldAndTypeName = resolveFragments(selectionNodes, context.fragmentDefinitions);
|
|
6
|
+
return _keys(fieldData).reduce((acc, key) => {
|
|
7
|
+
const match = fieldAndTypeName.find(({
|
|
8
|
+
fieldNode
|
|
9
|
+
}) => getName(fieldNode) === key);
|
|
10
|
+
|
|
11
|
+
if (match) {
|
|
12
|
+
const {
|
|
13
|
+
requestFieldPath
|
|
14
|
+
} = buildFieldKeysAndPaths(match.fieldNode, ancestorKeysAndPaths, context);
|
|
15
|
+
const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);
|
|
16
|
+
|
|
17
|
+
if (!(fieldTypeInfo !== null && fieldTypeInfo !== void 0 && fieldTypeInfo.hasArguments) && !(fieldTypeInfo !== null && fieldTypeInfo !== void 0 && fieldTypeInfo.hasDirectives)) {
|
|
18
|
+
acc[key] = fieldData[key];
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return acc;
|
|
23
|
+
}, {});
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=filterOutPropsWithArgsOrDirectives.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/helpers/filterOutPropsWithArgsOrDirectives.ts"],"names":["getName","resolveFragments","buildFieldKeysAndPaths","fieldData","selectionNodes","ancestorKeysAndPaths","context","fieldAndTypeName","fragmentDefinitions","reduce","acc","key","match","find","fieldNode","requestFieldPath","fieldTypeInfo","fieldTypeMap","get","hasArguments","hasDirectives"],"mappings":";AACA,SAASA,OAAT,EAAkBC,gBAAlB,QAA0C,sBAA1C;AAIA,SAASC,sBAAT,QAAuC,qBAAvC;AAEA,gBAAe,CACbC,SADa,EAEbC,cAFa,EAGbC,oBAHa,EAIbC,OAJa,KAKV;AACH,QAAMC,gBAAgB,GAAGN,gBAAgB,CAACG,cAAD,EAAiBE,OAAO,CAACE,mBAAzB,CAAzC;AAEA,SAAO,MAAKL,SAAL,EAAgBM,MAAhB,CAAuB,CAACC,GAAD,EAAsBC,GAAtB,KAA8B;AAC1D,UAAMC,KAAK,GAAGL,gBAAgB,CAACM,IAAjB,CAAsB,CAAC;AAAEC,MAAAA;AAAF,KAAD,KAAoBd,OAAO,CAACc,SAAD,CAAR,KAAuDH,GAAhG,CAAd;;AAEA,QAAIC,KAAJ,EAAW;AACT,YAAM;AAAEG,QAAAA;AAAF,UAAuBb,sBAAsB,CAACU,KAAK,CAACE,SAAP,EAAkBT,oBAAlB,EAAwCC,OAAxC,CAAnD;AACA,YAAMU,aAAa,GAAGV,OAAO,CAACW,YAAR,CAAqBC,GAArB,CAAyBH,gBAAzB,CAAtB;;AAEA,UAAI,EAACC,aAAD,aAACA,aAAD,eAACA,aAAa,CAAEG,YAAhB,KAAgC,EAACH,aAAD,aAACA,aAAD,eAACA,aAAa,CAAEI,aAAhB,CAApC,EAAmE;AACjEV,QAAAA,GAAG,CAACC,GAAD,CAAH,GAAWR,SAAS,CAACQ,GAAD,CAApB;AACD;AACF;;AAED,WAAOD,GAAP;AACD,GAbM,EAaJ,EAbI,CAAP;AAcD,CAtBD","sourcesContent":["import { PlainObjectMap } from \"@graphql-box/core\";\nimport { getName, resolveFragments } from \"@graphql-box/helpers\";\nimport { FieldNode, SelectionNode } from \"graphql\";\nimport { keys } from \"lodash\";\nimport { CacheManagerContext, KeysAndPaths } from \"../defs\";\nimport { buildFieldKeysAndPaths } from \"./buildKeysAndPaths\";\n\nexport default (\n fieldData: PlainObjectMap,\n selectionNodes: readonly SelectionNode[],\n ancestorKeysAndPaths: KeysAndPaths,\n context: CacheManagerContext,\n) => {\n const fieldAndTypeName = resolveFragments(selectionNodes, context.fragmentDefinitions);\n\n return keys(fieldData).reduce((acc: PlainObjectMap, key) => {\n const match = fieldAndTypeName.find(({ fieldNode }) => (getName(fieldNode) as FieldNode[\"name\"][\"value\"]) === key);\n\n if (match) {\n const { requestFieldPath } = buildFieldKeysAndPaths(match.fieldNode, ancestorKeysAndPaths, context);\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n\n if (!fieldTypeInfo?.hasArguments && !fieldTypeInfo?.hasDirectives) {\n acc[key] = fieldData[key];\n }\n }\n\n return acc;\n }, {});\n};\n"],"file":"filterOutPropsWithArgsOrDirectives.js"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { deleteChildFields, getChildFields, getOperationDefinitions } from "@graphql-box/helpers";
|
|
2
|
+
import { buildFieldKeysAndPaths } from "./buildKeysAndPaths";
|
|
3
|
+
import createFragmentSpreadChecklist from "./createFragmentSpreadChecklist";
|
|
4
|
+
import filterField from "./filterField";
|
|
5
|
+
import filterFragmentDefinitions from "./filterFragmentDefinitions";
|
|
6
|
+
export default (({
|
|
7
|
+
ast
|
|
8
|
+
}, {
|
|
9
|
+
fieldPathChecklist
|
|
10
|
+
}, context) => {
|
|
11
|
+
const queryNode = getOperationDefinitions(ast, context.operation)[0];
|
|
12
|
+
const {
|
|
13
|
+
fragmentDefinitions
|
|
14
|
+
} = context;
|
|
15
|
+
const fieldsAndTypeNames = getChildFields(queryNode, {
|
|
16
|
+
fragmentDefinitions
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
if (!fieldsAndTypeNames) {
|
|
20
|
+
return ast;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const fragmentSpreadChecklist = createFragmentSpreadChecklist(ast);
|
|
24
|
+
|
|
25
|
+
for (let i = fieldsAndTypeNames.length - 1; i >= 0; i -= 1) {
|
|
26
|
+
const {
|
|
27
|
+
fieldNode
|
|
28
|
+
} = fieldsAndTypeNames[i];
|
|
29
|
+
const {
|
|
30
|
+
requestFieldPath
|
|
31
|
+
} = buildFieldKeysAndPaths(fieldNode, {
|
|
32
|
+
requestFieldPath: context.operation
|
|
33
|
+
}, context);
|
|
34
|
+
|
|
35
|
+
if (filterField(fieldNode, fieldPathChecklist, fragmentSpreadChecklist, requestFieldPath, context)) {
|
|
36
|
+
deleteChildFields(queryNode, fieldNode);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
context.queryFiltered = true;
|
|
41
|
+
return filterFragmentDefinitions(ast, fieldPathChecklist, fragmentSpreadChecklist, context);
|
|
42
|
+
});
|
|
43
|
+
//# sourceMappingURL=filterQuery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/helpers/filterQuery.ts"],"names":["deleteChildFields","getChildFields","getOperationDefinitions","buildFieldKeysAndPaths","createFragmentSpreadChecklist","filterField","filterFragmentDefinitions","ast","fieldPathChecklist","context","queryNode","operation","fragmentDefinitions","fieldsAndTypeNames","fragmentSpreadChecklist","i","length","fieldNode","requestFieldPath","queryFiltered"],"mappings":"AACA,SAASA,iBAAT,EAA4BC,cAA5B,EAA4CC,uBAA5C,QAA2E,sBAA3E;AAEA,SAASC,sBAAT,QAAuC,qBAAvC;AACA,OAAOC,6BAAP,MAA0C,iCAA1C;AACA,OAAOC,WAAP,MAAwB,eAAxB;AACA,OAAOC,yBAAP,MAAsC,6BAAtC;AAEA,gBAAe,CAAC;AAAEC,EAAAA;AAAF,CAAD,EAAuB;AAAEC,EAAAA;AAAF,CAAvB,EAAmEC,OAAnE,KAAoG;AACjH,QAAMC,SAAS,GAAGR,uBAAuB,CAACK,GAAD,EAAME,OAAO,CAACE,SAAd,CAAvB,CAAgD,CAAhD,CAAlB;AACA,QAAM;AAAEC,IAAAA;AAAF,MAA0BH,OAAhC;AACA,QAAMI,kBAAkB,GAAGZ,cAAc,CAACS,SAAD,EAAY;AAAEE,IAAAA;AAAF,GAAZ,CAAzC;;AAEA,MAAI,CAACC,kBAAL,EAAyB;AACvB,WAAON,GAAP;AACD;;AAED,QAAMO,uBAAuB,GAAGV,6BAA6B,CAACG,GAAD,CAA7D;;AAEA,OAAK,IAAIQ,CAAC,GAAGF,kBAAkB,CAACG,MAAnB,GAA4B,CAAzC,EAA4CD,CAAC,IAAI,CAAjD,EAAoDA,CAAC,IAAI,CAAzD,EAA4D;AAC1D,UAAM;AAAEE,MAAAA;AAAF,QAAgBJ,kBAAkB,CAACE,CAAD,CAAxC;AAEA,UAAM;AAAEG,MAAAA;AAAF,QAAuBf,sBAAsB,CACjDc,SADiD,EAEjD;AACEC,MAAAA,gBAAgB,EAAET,OAAO,CAACE;AAD5B,KAFiD,EAKjDF,OALiD,CAAnD;;AAQA,QAAIJ,WAAW,CAACY,SAAD,EAAYT,kBAAZ,EAAgCM,uBAAhC,EAAyDI,gBAAzD,EAA2ET,OAA3E,CAAf,EAAoG;AAClGT,MAAAA,iBAAiB,CAACU,SAAD,EAAYO,SAAZ,CAAjB;AACD;AACF;;AAEDR,EAAAA,OAAO,CAACU,aAAR,GAAwB,IAAxB;AACA,SAAOb,yBAAyB,CAACC,GAAD,EAAMC,kBAAN,EAA0BM,uBAA1B,EAAmDL,OAAnD,CAAhC;AACD,CA7BD","sourcesContent":["import { RequestData } from \"@graphql-box/core\";\nimport { deleteChildFields, getChildFields, getOperationDefinitions } from \"@graphql-box/helpers\";\nimport { CacheManagerContext, CachedResponseData } from \"../defs\";\nimport { buildFieldKeysAndPaths } from \"./buildKeysAndPaths\";\nimport createFragmentSpreadChecklist from \"./createFragmentSpreadChecklist\";\nimport filterField from \"./filterField\";\nimport filterFragmentDefinitions from \"./filterFragmentDefinitions\";\n\nexport default ({ ast }: RequestData, { fieldPathChecklist }: CachedResponseData, context: CacheManagerContext) => {\n const queryNode = getOperationDefinitions(ast, context.operation)[0];\n const { fragmentDefinitions } = context;\n const fieldsAndTypeNames = getChildFields(queryNode, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames) {\n return ast;\n }\n\n const fragmentSpreadChecklist = createFragmentSpreadChecklist(ast);\n\n for (let i = fieldsAndTypeNames.length - 1; i >= 0; i -= 1) {\n const { fieldNode } = fieldsAndTypeNames[i];\n\n const { requestFieldPath } = buildFieldKeysAndPaths(\n fieldNode,\n {\n requestFieldPath: context.operation,\n },\n context,\n );\n\n if (filterField(fieldNode, fieldPathChecklist, fragmentSpreadChecklist, requestFieldPath, context)) {\n deleteChildFields(queryNode, fieldNode);\n }\n }\n\n context.queryFiltered = true;\n return filterFragmentDefinitions(ast, fieldPathChecklist, fragmentSpreadChecklist, context);\n};\n"],"file":"filterQuery.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/helpers/normalizeResponseData.ts"],"names":["data","path","rest"],"mappings":";AAGA,gBAAe,CAAC;AAAEA,EAAAA,IAAF;AAAQC,EAAAA,IAAR;AAAc,KAAGC;AAAjB,CAAD,KAAoE;AACjF,SAAO,EACL,GAAGA,IADE;AAELF,IAAAA,IAAI,EAAE,KAAI,EAAJ,EAAQC,IAAR,EAAqCD,IAArC;AAFD,GAAP;AAID,CALD","sourcesContent":["import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { set } from \"lodash\";\n\nexport default ({ data, path, ...rest }: RawResponseDataWithMaybeCacheMetadata) => {\n return {\n ...rest,\n data: set({}, path as (string | number)[], data),\n };\n};\n"],"file":"normalizeResponseData.js"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import _isPlainObject from "lodash/isPlainObject";
|
|
2
|
+
export const getValidTypeIDValue = (requestFieldPathData, {
|
|
3
|
+
typeIDValue
|
|
4
|
+
}, typeIDKey) => {
|
|
5
|
+
const requestFieldPathDataIDValue = _isPlainObject(requestFieldPathData) ? requestFieldPathData[typeIDKey] : undefined;
|
|
6
|
+
return typeIDValue || requestFieldPathDataIDValue;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=validTypeIDValue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/helpers/validTypeIDValue.ts"],"names":["getValidTypeIDValue","requestFieldPathData","typeIDValue","typeIDKey","requestFieldPathDataIDValue","undefined"],"mappings":";AAGA,OAAO,MAAMA,mBAAmB,GAAG,CACjCC,oBADiC,EAEjC;AAAEC,EAAAA;AAAF,CAFiC,EAGjCC,SAHiC,KAID;AAChC,QAAMC,2BAA2B,GAAG,eAAcH,oBAAd,IAAsCA,oBAAoB,CAACE,SAAD,CAA1D,GAAwEE,SAA5G;AACA,SAAOH,WAAW,IAAIE,2BAAtB;AACD,CAPM","sourcesContent":["import { FieldTypeInfo } from \"@graphql-box/core\";\nimport { isPlainObject } from \"lodash\";\n\nexport const getValidTypeIDValue = (\n requestFieldPathData: any,\n { typeIDValue }: FieldTypeInfo,\n typeIDKey: string,\n): string | number | undefined => {\n const requestFieldPathDataIDValue = isPlainObject(requestFieldPathData) ? requestFieldPathData[typeIDKey] : undefined;\n return typeIDValue || requestFieldPathDataIDValue;\n};\n"],"file":"validTypeIDValue.js"}
|