@graphql-box/cache-manager 2.1.1 → 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.
Files changed (116) 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 +139 -17
  4. package/lib/main/debug/log-cache-entry/index.js.map +1 -1
  5. package/lib/main/debug/log-partial-compiled/index.js.map +1 -1
  6. package/lib/main/helpers/buildKeysAndPaths.js +73 -0
  7. package/lib/main/helpers/buildKeysAndPaths.js.map +1 -0
  8. package/lib/main/helpers/checkFieldPathChecklist.js +40 -0
  9. package/lib/main/helpers/checkFieldPathChecklist.js.map +1 -0
  10. package/lib/main/helpers/createFragmentSpreadChecklist.js +28 -0
  11. package/lib/main/helpers/createFragmentSpreadChecklist.js.map +1 -0
  12. package/lib/main/helpers/deriveOpCacheability.js +46 -0
  13. package/lib/main/helpers/deriveOpCacheability.js.map +1 -0
  14. package/lib/main/helpers/filterField.js +97 -0
  15. package/lib/main/helpers/filterField.js.map +1 -0
  16. package/lib/main/helpers/filterFragmentDefinitions.js +50 -0
  17. package/lib/main/helpers/filterFragmentDefinitions.js.map +1 -0
  18. package/lib/main/helpers/filterFragmentSpreads.js +37 -0
  19. package/lib/main/helpers/filterFragmentSpreads.js.map +1 -0
  20. package/lib/main/helpers/filterIDsAndTypeNames.js +47 -0
  21. package/lib/main/helpers/filterIDsAndTypeNames.js.map +1 -0
  22. package/lib/main/helpers/filterInlineFragments.js +42 -0
  23. package/lib/main/helpers/filterInlineFragments.js.map +1 -0
  24. package/lib/main/helpers/filterOutPropsWithArgsOrDirectives.js +39 -0
  25. package/lib/main/helpers/filterOutPropsWithArgsOrDirectives.js.map +1 -0
  26. package/lib/main/helpers/filterQuery.js +59 -0
  27. package/lib/main/helpers/filterQuery.js.map +1 -0
  28. package/lib/main/helpers/normalizeResponseData.js +23 -0
  29. package/lib/main/helpers/normalizeResponseData.js.map +1 -0
  30. package/lib/main/helpers/validTypeIDValue.js +20 -0
  31. package/lib/main/helpers/validTypeIDValue.js.map +1 -0
  32. package/lib/main/main/index.js +477 -476
  33. package/lib/main/main/index.js.map +1 -1
  34. package/lib/module/debug/log-cache-entry/index.js.map +1 -1
  35. package/lib/module/debug/log-partial-compiled/index.js.map +1 -1
  36. package/lib/module/helpers/buildKeysAndPaths.js +54 -0
  37. package/lib/module/helpers/buildKeysAndPaths.js.map +1 -0
  38. package/lib/module/helpers/checkFieldPathChecklist.js +31 -0
  39. package/lib/module/helpers/checkFieldPathChecklist.js.map +1 -0
  40. package/lib/module/helpers/createFragmentSpreadChecklist.js +15 -0
  41. package/lib/module/helpers/createFragmentSpreadChecklist.js.map +1 -0
  42. package/lib/module/helpers/deriveOpCacheability.js +32 -0
  43. package/lib/module/helpers/deriveOpCacheability.js.map +1 -0
  44. package/lib/module/helpers/filterField.js +81 -0
  45. package/lib/module/helpers/filterField.js.map +1 -0
  46. package/lib/module/helpers/filterFragmentDefinitions.js +39 -0
  47. package/lib/module/helpers/filterFragmentDefinitions.js.map +1 -0
  48. package/lib/module/helpers/filterFragmentSpreads.js +23 -0
  49. package/lib/module/helpers/filterFragmentSpreads.js.map +1 -0
  50. package/lib/module/helpers/filterIDsAndTypeNames.js +36 -0
  51. package/lib/module/helpers/filterIDsAndTypeNames.js.map +1 -0
  52. package/lib/module/helpers/filterInlineFragments.js +32 -0
  53. package/lib/module/helpers/filterInlineFragments.js.map +1 -0
  54. package/lib/module/helpers/filterOutPropsWithArgsOrDirectives.js +25 -0
  55. package/lib/module/helpers/filterOutPropsWithArgsOrDirectives.js.map +1 -0
  56. package/lib/module/helpers/filterQuery.js +43 -0
  57. package/lib/module/helpers/filterQuery.js.map +1 -0
  58. package/lib/module/helpers/normalizeResponseData.js +11 -0
  59. package/lib/module/helpers/normalizeResponseData.js.map +1 -0
  60. package/lib/module/helpers/validTypeIDValue.js +8 -0
  61. package/lib/module/helpers/validTypeIDValue.js.map +1 -0
  62. package/lib/module/main/index.js +474 -475
  63. package/lib/module/main/index.js.map +1 -1
  64. package/lib/types/debug/log-cache-entry/index.d.ts.map +1 -1
  65. package/lib/types/debug/log-cache-query/index.d.ts.map +1 -1
  66. package/lib/types/debug/log-partial-compiled/index.d.ts.map +1 -1
  67. package/lib/types/defs/index.d.ts +19 -9
  68. package/lib/types/defs/index.d.ts.map +1 -1
  69. package/lib/types/helpers/buildKeysAndPaths.d.ts +10 -0
  70. package/lib/types/helpers/buildKeysAndPaths.d.ts.map +1 -0
  71. package/lib/types/helpers/checkFieldPathChecklist.d.ts +4 -0
  72. package/lib/types/helpers/checkFieldPathChecklist.d.ts.map +1 -0
  73. package/lib/types/helpers/createFragmentSpreadChecklist.d.ts +11 -0
  74. package/lib/types/helpers/createFragmentSpreadChecklist.d.ts.map +1 -0
  75. package/lib/types/helpers/deriveOpCacheability.d.ts +10 -0
  76. package/lib/types/helpers/deriveOpCacheability.d.ts.map +1 -0
  77. package/lib/types/helpers/filterField.d.ts +6 -0
  78. package/lib/types/helpers/filterField.d.ts.map +1 -0
  79. package/lib/types/helpers/filterFragmentDefinitions.d.ts +10 -0
  80. package/lib/types/helpers/filterFragmentDefinitions.d.ts.map +1 -0
  81. package/lib/types/helpers/filterFragmentSpreads.d.ts +6 -0
  82. package/lib/types/helpers/filterFragmentSpreads.d.ts.map +1 -0
  83. package/lib/types/helpers/filterIDsAndTypeNames.d.ts +5 -0
  84. package/lib/types/helpers/filterIDsAndTypeNames.d.ts.map +1 -0
  85. package/lib/types/helpers/filterInlineFragments.d.ts +5 -0
  86. package/lib/types/helpers/filterInlineFragments.d.ts.map +1 -0
  87. package/lib/types/helpers/filterOutPropsWithArgsOrDirectives.d.ts +6 -0
  88. package/lib/types/helpers/filterOutPropsWithArgsOrDirectives.d.ts.map +1 -0
  89. package/lib/types/helpers/filterQuery.d.ts +5 -0
  90. package/lib/types/helpers/filterQuery.d.ts.map +1 -0
  91. package/lib/types/helpers/normalizeResponseData.d.ts +10 -0
  92. package/lib/types/helpers/normalizeResponseData.d.ts.map +1 -0
  93. package/lib/types/helpers/validTypeIDValue.d.ts +3 -0
  94. package/lib/types/helpers/validTypeIDValue.d.ts.map +1 -0
  95. package/lib/types/main/index.d.ts +13 -20
  96. package/lib/types/main/index.d.ts.map +1 -1
  97. package/package.json +2 -2
  98. package/src/__snapshots__/index.test.ts.snap +17449 -7185
  99. package/src/debug/log-cache-entry/index.ts +1 -1
  100. package/src/debug/log-partial-compiled/index.ts +1 -1
  101. package/src/defs/index.ts +18 -10
  102. package/src/helpers/buildKeysAndPaths.ts +71 -0
  103. package/src/helpers/checkFieldPathChecklist.ts +21 -0
  104. package/src/helpers/createFragmentSpreadChecklist.ts +17 -0
  105. package/src/helpers/deriveOpCacheability.ts +32 -0
  106. package/src/helpers/filterField.ts +73 -0
  107. package/src/helpers/filterFragmentDefinitions.ts +40 -0
  108. package/src/helpers/filterFragmentSpreads.ts +28 -0
  109. package/src/helpers/filterIDsAndTypeNames.ts +31 -0
  110. package/src/helpers/filterInlineFragments.ts +29 -0
  111. package/src/helpers/filterOutPropsWithArgsOrDirectives.ts +30 -0
  112. package/src/helpers/filterQuery.ts +38 -0
  113. package/src/helpers/normalizeResponseData.ts +9 -0
  114. package/src/helpers/validTypeIDValue.ts +11 -0
  115. package/src/index.test.ts +179 -3
  116. package/src/main/index.ts +516 -499
@@ -0,0 +1,81 @@
1
+ import { TYPE_NAME_KEY } from "@graphql-box/core";
2
+ import { FRAGMENT_SPREAD, deleteChildFields, getChildFields, getName, hasChildFields } from "@graphql-box/helpers";
3
+ import { buildFieldKeysAndPaths } from "./buildKeysAndPaths";
4
+ import checkFieldPathChecklist from "./checkFieldPathChecklist";
5
+ import filterFragmentSpreads from "./filterFragmentSpreads";
6
+ import filterIDsAndTypeNames from "./filterIDsAndTypeNames";
7
+ import filterInlineFragments from "./filterInlineFragments";
8
+
9
+ const filterField = (field, fieldPathChecklist, fragmentSpreadChecklist, ancestorRequestFieldPath, context) => {
10
+ const {
11
+ fragmentDefinitions,
12
+ typeIDKey
13
+ } = context;
14
+ const fieldsAndTypeNames = getChildFields(field, {
15
+ fragmentDefinitions
16
+ });
17
+
18
+ if (!fieldsAndTypeNames) {
19
+ return false;
20
+ }
21
+
22
+ const fragmentSpreadFieldCounter = {};
23
+
24
+ for (let i = fieldsAndTypeNames.length - 1; i >= 0; i -= 1) {
25
+ const {
26
+ fieldNode: childField,
27
+ fragmentKind,
28
+ fragmentName,
29
+ typeName: childTypeName
30
+ } = fieldsAndTypeNames[i];
31
+
32
+ if (fragmentKind === FRAGMENT_SPREAD && fragmentName && !fragmentSpreadFieldCounter[fragmentName]) {
33
+ var _getChildFields$lengt, _getChildFields;
34
+
35
+ fragmentSpreadFieldCounter[fragmentName] = {
36
+ hasData: 0,
37
+ total: fragmentDefinitions !== null && fragmentDefinitions !== void 0 && fragmentDefinitions[fragmentName] ? (_getChildFields$lengt = (_getChildFields = getChildFields(fragmentDefinitions === null || fragmentDefinitions === void 0 ? void 0 : fragmentDefinitions[fragmentName], {
38
+ fragmentDefinitions
39
+ })) === null || _getChildFields === void 0 ? void 0 : _getChildFields.length) !== null && _getChildFields$lengt !== void 0 ? _getChildFields$lengt : 0 : 0
40
+ };
41
+ }
42
+
43
+ const childFieldName = getName(childField);
44
+
45
+ if (childFieldName === typeIDKey || childFieldName === TYPE_NAME_KEY) {
46
+ continue;
47
+ }
48
+
49
+ const {
50
+ requestFieldPath
51
+ } = buildFieldKeysAndPaths(childField, {
52
+ requestFieldPath: ancestorRequestFieldPath
53
+ }, context);
54
+ const {
55
+ hasData,
56
+ typeUnused
57
+ } = checkFieldPathChecklist(fieldPathChecklist.get(requestFieldPath), childTypeName);
58
+
59
+ if (hasData || typeUnused) {
60
+ if (fragmentKind === FRAGMENT_SPREAD) {
61
+ fragmentSpreadFieldCounter[fragmentName].hasData += 1;
62
+ } else if (!hasChildFields(childField, {
63
+ fragmentDefinitions
64
+ })) {
65
+ deleteChildFields(field, childField);
66
+ } else if (filterField(childField, fieldPathChecklist, fragmentSpreadChecklist, requestFieldPath, context)) {
67
+ deleteChildFields(field, childField);
68
+ }
69
+ }
70
+ }
71
+
72
+ filterFragmentSpreads(field, fragmentSpreadFieldCounter, fragmentSpreadChecklist, ancestorRequestFieldPath);
73
+ filterInlineFragments(field, context);
74
+ filterIDsAndTypeNames(field, context);
75
+ return !hasChildFields(field, {
76
+ fragmentDefinitions
77
+ });
78
+ };
79
+
80
+ export default filterField;
81
+ //# sourceMappingURL=filterField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/helpers/filterField.ts"],"names":["TYPE_NAME_KEY","FRAGMENT_SPREAD","deleteChildFields","getChildFields","getName","hasChildFields","buildFieldKeysAndPaths","checkFieldPathChecklist","filterFragmentSpreads","filterIDsAndTypeNames","filterInlineFragments","filterField","field","fieldPathChecklist","fragmentSpreadChecklist","ancestorRequestFieldPath","context","fragmentDefinitions","typeIDKey","fieldsAndTypeNames","fragmentSpreadFieldCounter","i","length","fieldNode","childField","fragmentKind","fragmentName","typeName","childTypeName","hasData","total","childFieldName","requestFieldPath","typeUnused","get"],"mappings":"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","sourcesContent":["import { TYPE_NAME_KEY } from \"@graphql-box/core\";\nimport { FRAGMENT_SPREAD, deleteChildFields, getChildFields, getName, hasChildFields } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode } from \"graphql\";\nimport { CacheManagerContext, FieldPathChecklist, FragmentSpreadFieldCounter } from \"../defs\";\nimport { buildFieldKeysAndPaths } from \"./buildKeysAndPaths\";\nimport checkFieldPathChecklist from \"./checkFieldPathChecklist\";\nimport { FragmentSpreadCheckist } from \"./createFragmentSpreadChecklist\";\nimport filterFragmentSpreads from \"./filterFragmentSpreads\";\nimport filterIDsAndTypeNames from \"./filterIDsAndTypeNames\";\nimport filterInlineFragments from \"./filterInlineFragments\";\n\nconst filterField = (\n field: FieldNode | FragmentDefinitionNode,\n fieldPathChecklist: FieldPathChecklist,\n fragmentSpreadChecklist: FragmentSpreadCheckist,\n ancestorRequestFieldPath: string,\n context: CacheManagerContext,\n): boolean => {\n const { fragmentDefinitions, typeIDKey } = context;\n const fieldsAndTypeNames = getChildFields(field, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames) {\n return false;\n }\n\n const fragmentSpreadFieldCounter: FragmentSpreadFieldCounter = {};\n\n for (let i = fieldsAndTypeNames.length - 1; i >= 0; i -= 1) {\n const { fieldNode: childField, fragmentKind, fragmentName, typeName: childTypeName } = fieldsAndTypeNames[i];\n\n if (fragmentKind === FRAGMENT_SPREAD && fragmentName && !fragmentSpreadFieldCounter[fragmentName]) {\n fragmentSpreadFieldCounter[fragmentName] = {\n hasData: 0,\n total: fragmentDefinitions?.[fragmentName]\n ? getChildFields(fragmentDefinitions?.[fragmentName], { fragmentDefinitions })?.length ?? 0\n : 0,\n };\n }\n\n const childFieldName = getName(childField);\n\n if (childFieldName === typeIDKey || childFieldName === TYPE_NAME_KEY) {\n continue;\n }\n\n const { requestFieldPath } = buildFieldKeysAndPaths(\n childField,\n {\n requestFieldPath: ancestorRequestFieldPath,\n },\n context,\n );\n\n const { hasData, typeUnused } = checkFieldPathChecklist(fieldPathChecklist.get(requestFieldPath), childTypeName);\n\n if (hasData || typeUnused) {\n if (fragmentKind === FRAGMENT_SPREAD) {\n fragmentSpreadFieldCounter[fragmentName as string].hasData += 1;\n } else if (!hasChildFields(childField, { fragmentDefinitions })) {\n deleteChildFields(field, childField);\n } else if (filterField(childField, fieldPathChecklist, fragmentSpreadChecklist, requestFieldPath, context)) {\n deleteChildFields(field, childField);\n }\n }\n }\n\n filterFragmentSpreads(field, fragmentSpreadFieldCounter, fragmentSpreadChecklist, ancestorRequestFieldPath);\n filterInlineFragments(field, context);\n filterIDsAndTypeNames(field, context);\n return !hasChildFields(field, { fragmentDefinitions });\n};\n\nexport default filterField;\n"],"file":"filterField.js"}
@@ -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,11 @@
1
+ import _set from "lodash/set";
2
+ export default (({
3
+ data,
4
+ path,
5
+ ...rest
6
+ }) => {
7
+ return { ...rest,
8
+ data: _set({}, path, data)
9
+ };
10
+ });
11
+ //# sourceMappingURL=normalizeResponseData.js.map
@@ -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"}