@graphql-box/cache-manager 4.1.3 → 4.1.5

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 (56) hide show
  1. package/lib/module/consts/{index.js → index.mjs} +1 -1
  2. package/lib/module/consts/{index.js.map → index.mjs.map} +1 -1
  3. package/lib/module/debug/{index.js → index.mjs} +1 -1
  4. package/lib/module/debug/{index.js.map → index.mjs.map} +1 -1
  5. package/lib/module/debug/log-cache-entry/{index.js → index.mjs} +1 -1
  6. package/lib/module/debug/log-cache-entry/{index.js.map → index.mjs.map} +1 -1
  7. package/lib/module/debug/log-cache-query/{index.js → index.mjs} +1 -1
  8. package/lib/module/debug/log-cache-query/{index.js.map → index.mjs.map} +1 -1
  9. package/lib/module/debug/log-partial-compiled/{index.js → index.mjs} +1 -1
  10. package/lib/module/debug/log-partial-compiled/{index.js.map → index.mjs.map} +1 -1
  11. package/lib/module/defs/index.mjs +2 -0
  12. package/lib/module/defs/{index.js.map → index.mjs.map} +1 -1
  13. package/lib/module/helpers/{areOnlyPopulatedFieldsTypeIdKeys.js → areOnlyPopulatedFieldsTypeIdKeys.mjs} +1 -1
  14. package/lib/module/helpers/{areOnlyPopulatedFieldsTypeIdKeys.js.map → areOnlyPopulatedFieldsTypeIdKeys.mjs.map} +1 -1
  15. package/lib/module/helpers/{checkFieldPathChecklist.js → checkFieldPathChecklist.mjs} +1 -1
  16. package/lib/module/helpers/{checkFieldPathChecklist.js.map → checkFieldPathChecklist.mjs.map} +1 -1
  17. package/lib/module/helpers/{createFragmentSpreadChecklist.js → createFragmentSpreadChecklist.mjs} +1 -1
  18. package/lib/module/helpers/{createFragmentSpreadChecklist.js.map → createFragmentSpreadChecklist.mjs.map} +1 -1
  19. package/lib/module/helpers/{deriveOpCacheability.js → deriveOpCacheability.mjs} +1 -1
  20. package/lib/module/helpers/{deriveOpCacheability.js.map → deriveOpCacheability.mjs.map} +1 -1
  21. package/lib/module/helpers/{filterField.js → filterField.mjs} +1 -1
  22. package/lib/module/helpers/{filterField.js.map → filterField.mjs.map} +1 -1
  23. package/lib/module/helpers/{filterFragmentDefinitions.js → filterFragmentDefinitions.mjs} +1 -1
  24. package/lib/module/helpers/{filterFragmentDefinitions.js.map → filterFragmentDefinitions.mjs.map} +1 -1
  25. package/lib/module/helpers/{filterFragmentSpreads.js → filterFragmentSpreads.mjs} +1 -1
  26. package/lib/module/helpers/{filterFragmentSpreads.js.map → filterFragmentSpreads.mjs.map} +1 -1
  27. package/lib/module/helpers/{filterIDsAndTypeNames.js → filterIDsAndTypeNames.mjs} +1 -1
  28. package/lib/module/helpers/{filterIDsAndTypeNames.js.map → filterIDsAndTypeNames.mjs.map} +1 -1
  29. package/lib/module/helpers/{filterInlineFragments.js → filterInlineFragments.mjs} +1 -1
  30. package/lib/module/helpers/{filterInlineFragments.js.map → filterInlineFragments.mjs.map} +1 -1
  31. package/lib/module/helpers/{filterOperationAndFragmentDefinitions.js → filterOperationAndFragmentDefinitions.mjs} +1 -1
  32. package/lib/module/helpers/{filterOperationAndFragmentDefinitions.js.map → filterOperationAndFragmentDefinitions.mjs.map} +1 -1
  33. package/lib/module/helpers/{filterOutPropsWithArgsOrDirectives.js → filterOutPropsWithArgsOrDirectives.mjs} +1 -1
  34. package/lib/module/helpers/{filterOutPropsWithArgsOrDirectives.js.map → filterOutPropsWithArgsOrDirectives.mjs.map} +1 -1
  35. package/lib/module/helpers/{filterQuery.js → filterQuery.mjs} +1 -1
  36. package/lib/module/helpers/{filterQuery.js.map → filterQuery.mjs.map} +1 -1
  37. package/lib/module/helpers/{isFirstResponseChunk.js → isFirstResponseChunk.mjs} +1 -1
  38. package/lib/module/helpers/{isFirstResponseChunk.js.map → isFirstResponseChunk.mjs.map} +1 -1
  39. package/lib/module/helpers/{isLastResponseChunk.js → isLastResponseChunk.mjs} +1 -1
  40. package/lib/module/helpers/{isLastResponseChunk.js.map → isLastResponseChunk.mjs.map} +1 -1
  41. package/lib/module/helpers/{isNotLastResponseChunk.js → isNotLastResponseChunk.mjs} +1 -1
  42. package/lib/module/helpers/{isNotLastResponseChunk.js.map → isNotLastResponseChunk.mjs.map} +1 -1
  43. package/lib/module/helpers/{isNotResponseChunk.js → isNotResponseChunk.mjs} +1 -1
  44. package/lib/module/helpers/{isNotResponseChunk.js.map → isNotResponseChunk.mjs.map} +1 -1
  45. package/lib/module/helpers/{mergeResponseDataSets.js → mergeResponseDataSets.mjs} +1 -1
  46. package/lib/module/helpers/{mergeResponseDataSets.js.map → mergeResponseDataSets.mjs.map} +1 -1
  47. package/lib/module/helpers/{normalizePatchResponseData.js → normalizePatchResponseData.mjs} +1 -1
  48. package/lib/module/helpers/{normalizePatchResponseData.js.map → normalizePatchResponseData.mjs.map} +1 -1
  49. package/lib/module/helpers/{validTypeIDValue.js → validTypeIDValue.mjs} +1 -1
  50. package/lib/module/helpers/{validTypeIDValue.js.map → validTypeIDValue.mjs.map} +1 -1
  51. package/lib/module/{index.js → index.mjs} +1 -1
  52. package/lib/module/{index.js.map → index.mjs.map} +1 -1
  53. package/lib/module/main/{index.js → index.mjs} +1 -1
  54. package/lib/module/main/{index.js.map → index.mjs.map} +1 -1
  55. package/package.json +4 -4
  56. package/lib/module/defs/index.js +0 -2
@@ -3,4 +3,4 @@ export const CACHE_CONTROL = "cacheControl";
3
3
  export const NO_CACHE = "noCache";
4
4
  export const HEADER_CACHE_CONTROL = "cache-control";
5
5
  export const HEADER_NO_CACHE = "no-cache";
6
- //# sourceMappingURL=index.js.map
6
+ //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/consts/index.ts"],"names":["METADATA","CACHE_CONTROL","NO_CACHE","HEADER_CACHE_CONTROL","HEADER_NO_CACHE"],"mappings":"AAAA,OAAO,MAAMA,QAAQ,GAAG,UAAjB;AACP,OAAO,MAAMC,aAAa,GAAG,cAAtB;AACP,OAAO,MAAMC,QAAQ,GAAG,SAAjB;AAEP,OAAO,MAAMC,oBAAoB,GAAG,eAA7B;AACP,OAAO,MAAMC,eAAe,GAAG,UAAxB","sourcesContent":["export const METADATA = \"metadata\";\nexport const CACHE_CONTROL = \"cacheControl\";\nexport const NO_CACHE = \"noCache\";\n\nexport const HEADER_CACHE_CONTROL = \"cache-control\";\nexport const HEADER_NO_CACHE = \"no-cache\";\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/consts/index.ts"],"names":["METADATA","CACHE_CONTROL","NO_CACHE","HEADER_CACHE_CONTROL","HEADER_NO_CACHE"],"mappings":"AAAA,OAAO,MAAMA,QAAQ,GAAG,UAAjB;AACP,OAAO,MAAMC,aAAa,GAAG,cAAtB;AACP,OAAO,MAAMC,QAAQ,GAAG,SAAjB;AAEP,OAAO,MAAMC,oBAAoB,GAAG,eAA7B;AACP,OAAO,MAAMC,eAAe,GAAG,UAAxB","sourcesContent":["export const METADATA = \"metadata\";\nexport const CACHE_CONTROL = \"cacheControl\";\nexport const NO_CACHE = \"noCache\";\n\nexport const HEADER_CACHE_CONTROL = \"cache-control\";\nexport const HEADER_NO_CACHE = \"no-cache\";\n"],"file":"index.mjs"}
@@ -1,4 +1,4 @@
1
1
  export { default as logCacheEntry } from "../debug/log-cache-entry";
2
2
  export { default as logCacheQuery } from "../debug/log-cache-query";
3
3
  export { default as logPartialCompiled } from "../debug/log-partial-compiled";
4
- //# sourceMappingURL=index.js.map
4
+ //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/debug/index.ts"],"names":["default","logCacheEntry","logCacheQuery","logPartialCompiled"],"mappings":"AAAA,SAASA,OAAO,IAAIC,aAApB,QAAyC,0BAAzC;AACA,SAASD,OAAO,IAAIE,aAApB,QAAyC,0BAAzC;AACA,SAASF,OAAO,IAAIG,kBAApB,QAA8C,+BAA9C","sourcesContent":["export { default as logCacheEntry } from \"../debug/log-cache-entry\";\nexport { default as logCacheQuery } from \"../debug/log-cache-query\";\nexport { default as logPartialCompiled } from \"../debug/log-partial-compiled\";\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/debug/index.ts"],"names":["default","logCacheEntry","logCacheQuery","logPartialCompiled"],"mappings":"AAAA,SAASA,OAAO,IAAIC,aAApB,QAAyC,0BAAzC;AACA,SAASD,OAAO,IAAIE,aAApB,QAAyC,0BAAzC;AACA,SAASF,OAAO,IAAIG,kBAApB,QAA8C,+BAA9C","sourcesContent":["export { default as logCacheEntry } from \"../debug/log-cache-entry\";\nexport { default as logCacheQuery } from \"../debug/log-cache-query\";\nexport { default as logPartialCompiled } from \"../debug/log-partial-compiled\";\n"],"file":"index.mjs"}
@@ -45,4 +45,4 @@ export default function logCacheEntry() {
45
45
  };
46
46
  };
47
47
  }
48
- //# sourceMappingURL=index.js.map
48
+ //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/debug/log-cache-entry/index.ts"],"names":["CACHE_ENTRY_ADDED","logCacheEntry","_target","_propertyName","descriptor","method","value","descriptorValue","args","Promise","resolve","debugManager","requestFieldCacheKey","otherContext","apply","startTime","now","endTime","duration","payload","cachemapOptions","cacheType","context","options","requestHash","stats","decryptedCacheKey","log"],"mappings":";AAAA,SAASA,iBAAT,QAAkD,mBAAlD;AAEA,eAAe,SAASC,aAAT,GAAyB;AACtC,SAAO,CACLC,OADK,EAELC,aAFK,EAGLC,UAHK,KAII;AACT,UAAMC,MAAM,GAAGD,UAAU,CAACE,KAA1B;AACA,QAAI,CAACD,MAAL,EAAa;;AAEbD,IAAAA,UAAU,CAACE,KAAX,GAAmB,eAAeC,eAAf,CAA+B,GAAGC,IAAlC,EAA6D;AAC9E,aAAO,IAAIC,OAAJ,CAAkB,MAAMC,OAAN,IAAiB;AACxC,cAAM;AAAEC,UAAAA,YAAF;AAAgBC,UAAAA,oBAAhB;AAAsC,aAAGC;AAAzC,YAA0DL,IAAI,CAAC,CAAD,CAApE;;AAIA,YAAI,CAACG,YAAL,EAAmB;AACjB,gBAAMN,MAAM,CAACS,KAAP,CAAa,IAAb,EAAmBN,IAAnB,CAAN;AACAE,UAAAA,OAAO;AACP;AACD;;AAED,cAAMK,SAAS,GAAGJ,YAAY,CAACK,GAAb,EAAlB;AACA,cAAMX,MAAM,CAACS,KAAP,CAAa,IAAb,EAAmBN,IAAnB,CAAN;AACA,cAAMS,OAAO,GAAGN,YAAY,CAACK,GAAb,EAAhB;AACA,cAAME,QAAQ,GAAGD,OAAO,GAAGF,SAA3B;AACAL,QAAAA,OAAO;AAEP,cAAMS,OAAO,GAAG;AACdC,UAAAA,eAAe,EAAEZ,IAAI,CAAC,CAAD,CADP;AAEda,UAAAA,SAAS,EAAEb,IAAI,CAAC,CAAD,CAFD;AAGdc,UAAAA,OAAO,EAAET,YAHK;AAIdU,UAAAA,OAAO,EAAEf,IAAI,CAAC,CAAD,CAJC;AAKdgB,UAAAA,WAAW,EAAEhB,IAAI,CAAC,CAAD,CALH;AAMdiB,UAAAA,KAAK,EAAE;AAAEP,YAAAA,QAAF;AAAYD,YAAAA,OAAZ;AAAqBF,YAAAA;AAArB,WANO;AAOdT,UAAAA,KAAK,EAAEE,IAAI,CAAC,CAAD,CAPG;AAQd,cAAII,oBAAoB,GAAG;AAAEc,YAAAA,iBAAiB,EAAEd;AAArB,WAAH,GAAiD,EAAzE;AARc,SAAhB;AAWAD,QAAAA,YAAY,CAACgB,GAAb,CAAiB3B,iBAAjB,EAAoCmB,OAApC;AACD,OA7BM,CAAP;AA8BD,KA/BD;AAgCD,GAxCD;AAyCD","sourcesContent":["import { CACHE_ENTRY_ADDED, RequestContext } from \"@graphql-box/core\";\n\nexport default function logCacheEntry() {\n return (\n _target: any,\n _propertyName: string,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise<any>>,\n ): void => {\n const method = descriptor.value;\n if (!method) return;\n\n descriptor.value = async function descriptorValue(...args: any[]): Promise<any> {\n return new Promise<void>(async resolve => {\n const { debugManager, requestFieldCacheKey, ...otherContext } = args[5] as RequestContext & {\n requestFieldCacheKey?: string;\n };\n\n if (!debugManager) {\n await method.apply(this, args);\n resolve();\n return;\n }\n\n const startTime = debugManager.now();\n await method.apply(this, args);\n const endTime = debugManager.now();\n const duration = endTime - startTime;\n resolve();\n\n const payload = {\n cachemapOptions: args[3],\n cacheType: args[0],\n context: otherContext,\n options: args[4],\n requestHash: args[1],\n stats: { duration, endTime, startTime },\n value: args[2],\n ...(requestFieldCacheKey ? { decryptedCacheKey: requestFieldCacheKey } : {}),\n };\n\n debugManager.log(CACHE_ENTRY_ADDED, payload);\n });\n };\n };\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/debug/log-cache-entry/index.ts"],"names":["CACHE_ENTRY_ADDED","logCacheEntry","_target","_propertyName","descriptor","method","value","descriptorValue","args","Promise","resolve","debugManager","requestFieldCacheKey","otherContext","apply","startTime","now","endTime","duration","payload","cachemapOptions","cacheType","context","options","requestHash","stats","decryptedCacheKey","log"],"mappings":";AAAA,SAASA,iBAAT,QAAkD,mBAAlD;AAEA,eAAe,SAASC,aAAT,GAAyB;AACtC,SAAO,CACLC,OADK,EAELC,aAFK,EAGLC,UAHK,KAII;AACT,UAAMC,MAAM,GAAGD,UAAU,CAACE,KAA1B;AACA,QAAI,CAACD,MAAL,EAAa;;AAEbD,IAAAA,UAAU,CAACE,KAAX,GAAmB,eAAeC,eAAf,CAA+B,GAAGC,IAAlC,EAA6D;AAC9E,aAAO,IAAIC,OAAJ,CAAkB,MAAMC,OAAN,IAAiB;AACxC,cAAM;AAAEC,UAAAA,YAAF;AAAgBC,UAAAA,oBAAhB;AAAsC,aAAGC;AAAzC,YAA0DL,IAAI,CAAC,CAAD,CAApE;;AAIA,YAAI,CAACG,YAAL,EAAmB;AACjB,gBAAMN,MAAM,CAACS,KAAP,CAAa,IAAb,EAAmBN,IAAnB,CAAN;AACAE,UAAAA,OAAO;AACP;AACD;;AAED,cAAMK,SAAS,GAAGJ,YAAY,CAACK,GAAb,EAAlB;AACA,cAAMX,MAAM,CAACS,KAAP,CAAa,IAAb,EAAmBN,IAAnB,CAAN;AACA,cAAMS,OAAO,GAAGN,YAAY,CAACK,GAAb,EAAhB;AACA,cAAME,QAAQ,GAAGD,OAAO,GAAGF,SAA3B;AACAL,QAAAA,OAAO;AAEP,cAAMS,OAAO,GAAG;AACdC,UAAAA,eAAe,EAAEZ,IAAI,CAAC,CAAD,CADP;AAEda,UAAAA,SAAS,EAAEb,IAAI,CAAC,CAAD,CAFD;AAGdc,UAAAA,OAAO,EAAET,YAHK;AAIdU,UAAAA,OAAO,EAAEf,IAAI,CAAC,CAAD,CAJC;AAKdgB,UAAAA,WAAW,EAAEhB,IAAI,CAAC,CAAD,CALH;AAMdiB,UAAAA,KAAK,EAAE;AAAEP,YAAAA,QAAF;AAAYD,YAAAA,OAAZ;AAAqBF,YAAAA;AAArB,WANO;AAOdT,UAAAA,KAAK,EAAEE,IAAI,CAAC,CAAD,CAPG;AAQd,cAAII,oBAAoB,GAAG;AAAEc,YAAAA,iBAAiB,EAAEd;AAArB,WAAH,GAAiD,EAAzE;AARc,SAAhB;AAWAD,QAAAA,YAAY,CAACgB,GAAb,CAAiB3B,iBAAjB,EAAoCmB,OAApC;AACD,OA7BM,CAAP;AA8BD,KA/BD;AAgCD,GAxCD;AAyCD","sourcesContent":["import { CACHE_ENTRY_ADDED, RequestContext } from \"@graphql-box/core\";\n\nexport default function logCacheEntry() {\n return (\n _target: any,\n _propertyName: string,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise<any>>,\n ): void => {\n const method = descriptor.value;\n if (!method) return;\n\n descriptor.value = async function descriptorValue(...args: any[]): Promise<any> {\n return new Promise<void>(async resolve => {\n const { debugManager, requestFieldCacheKey, ...otherContext } = args[5] as RequestContext & {\n requestFieldCacheKey?: string;\n };\n\n if (!debugManager) {\n await method.apply(this, args);\n resolve();\n return;\n }\n\n const startTime = debugManager.now();\n await method.apply(this, args);\n const endTime = debugManager.now();\n const duration = endTime - startTime;\n resolve();\n\n const payload = {\n cachemapOptions: args[3],\n cacheType: args[0],\n context: otherContext,\n options: args[4],\n requestHash: args[1],\n stats: { duration, endTime, startTime },\n value: args[2],\n ...(requestFieldCacheKey ? { decryptedCacheKey: requestFieldCacheKey } : {}),\n };\n\n debugManager.log(CACHE_ENTRY_ADDED, payload);\n });\n };\n };\n}\n"],"file":"index.mjs"}
@@ -47,4 +47,4 @@ export default function logCacheQuery() {
47
47
  };
48
48
  };
49
49
  }
50
- //# sourceMappingURL=index.js.map
50
+ //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/debug/log-cache-query/index.ts"],"names":["CACHE_ENTRY_QUERIED","logCacheQuery","_target","_propertyName","descriptor","method","value","descriptorValue","args","Promise","resolve","debugManager","requestFieldCacheKey","otherContext","apply","startTime","now","result","endTime","duration","payload","cacheType","context","options","requestHash","stats","decryptedCacheKey","log","error","reject"],"mappings":";AAAA,SAASA,mBAAT,QAAoD,mBAApD;AAEA,eAAe,SAASC,aAAT,GAAyB;AACtC,SAAO,CACLC,OADK,EAELC,aAFK,EAGLC,UAHK,KAII;AACT,UAAMC,MAAM,GAAGD,UAAU,CAACE,KAA1B;AACA,QAAI,CAACD,MAAL,EAAa;;AAEbD,IAAAA,UAAU,CAACE,KAAX,GAAmB,eAAeC,eAAf,CAA+B,GAAGC,IAAlC,EAA6D;AAC9E,UAAI;AACF,eAAO,IAAIC,OAAJ,CAAY,MAAMC,OAAN,IAAiB;AAClC,gBAAM;AAAEC,YAAAA,YAAF;AAAgBC,YAAAA,oBAAhB;AAAsC,eAAGC;AAAzC,cAA0DL,IAAI,CAAC,CAAD,CAApE;;AAIA,cAAI,CAACG,YAAL,EAAmB;AACjBD,YAAAA,OAAO,CAAC,MAAML,MAAM,CAACS,KAAP,CAAa,IAAb,EAAmBN,IAAnB,CAAP,CAAP;AACA;AACD;;AAED,gBAAMO,SAAS,GAAGJ,YAAY,CAACK,GAAb,EAAlB;AACA,gBAAMC,MAAM,GAAG,MAAMZ,MAAM,CAACS,KAAP,CAAa,IAAb,EAAmBN,IAAnB,CAArB;AACA,gBAAMU,OAAO,GAAGP,YAAY,CAACK,GAAb,EAAhB;AACA,gBAAMG,QAAQ,GAAGD,OAAO,GAAGH,SAA3B;AACAL,UAAAA,OAAO,CAACO,MAAD,CAAP;AAEA,gBAAMG,OAAO,GAAG;AACdC,YAAAA,SAAS,EAAEb,IAAI,CAAC,CAAD,CADD;AAEdc,YAAAA,OAAO,EAAET,YAFK;AAGdU,YAAAA,OAAO,EAAEf,IAAI,CAAC,CAAD,CAHC;AAIdgB,YAAAA,WAAW,EAAEhB,IAAI,CAAC,CAAD,CAJH;AAKdS,YAAAA,MALc;AAMdQ,YAAAA,KAAK,EAAE;AAAEN,cAAAA,QAAF;AAAYD,cAAAA,OAAZ;AAAqBH,cAAAA;AAArB,aANO;AAOd,gBAAIH,oBAAoB,GAAG;AAAEc,cAAAA,iBAAiB,EAAEd;AAArB,aAAH,GAAiD,EAAzE;AAPc,WAAhB;AAUAD,UAAAA,YAAY,CAACgB,GAAb,CAAiB3B,mBAAjB,EAAsCoB,OAAtC;AACD,SA3BM,CAAP;AA4BD,OA7BD,CA6BE,OAAOQ,KAAP,EAAc;AACd,eAAOnB,OAAO,CAACoB,MAAR,CAAeD,KAAf,CAAP;AACD;AACF,KAjCD;AAkCD,GA1CD;AA2CD","sourcesContent":["import { CACHE_ENTRY_QUERIED, RequestContext } from \"@graphql-box/core\";\n\nexport default function logCacheQuery() {\n return (\n _target: any,\n _propertyName: string,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise<any>>,\n ): void => {\n const method = descriptor.value;\n if (!method) return;\n\n descriptor.value = async function descriptorValue(...args: any[]): Promise<any> {\n try {\n return new Promise(async resolve => {\n const { debugManager, requestFieldCacheKey, ...otherContext } = args[3] as RequestContext & {\n requestFieldCacheKey?: string;\n };\n\n if (!debugManager) {\n resolve(await method.apply(this, args));\n return;\n }\n\n const startTime = debugManager.now();\n const result = await method.apply(this, args);\n const endTime = debugManager.now();\n const duration = endTime - startTime;\n resolve(result);\n\n const payload = {\n cacheType: args[0],\n context: otherContext,\n options: args[2],\n requestHash: args[1],\n result,\n stats: { duration, endTime, startTime },\n ...(requestFieldCacheKey ? { decryptedCacheKey: requestFieldCacheKey } : {}),\n };\n\n debugManager.log(CACHE_ENTRY_QUERIED, payload);\n });\n } catch (error) {\n return Promise.reject(error);\n }\n };\n };\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/debug/log-cache-query/index.ts"],"names":["CACHE_ENTRY_QUERIED","logCacheQuery","_target","_propertyName","descriptor","method","value","descriptorValue","args","Promise","resolve","debugManager","requestFieldCacheKey","otherContext","apply","startTime","now","result","endTime","duration","payload","cacheType","context","options","requestHash","stats","decryptedCacheKey","log","error","reject"],"mappings":";AAAA,SAASA,mBAAT,QAAoD,mBAApD;AAEA,eAAe,SAASC,aAAT,GAAyB;AACtC,SAAO,CACLC,OADK,EAELC,aAFK,EAGLC,UAHK,KAII;AACT,UAAMC,MAAM,GAAGD,UAAU,CAACE,KAA1B;AACA,QAAI,CAACD,MAAL,EAAa;;AAEbD,IAAAA,UAAU,CAACE,KAAX,GAAmB,eAAeC,eAAf,CAA+B,GAAGC,IAAlC,EAA6D;AAC9E,UAAI;AACF,eAAO,IAAIC,OAAJ,CAAY,MAAMC,OAAN,IAAiB;AAClC,gBAAM;AAAEC,YAAAA,YAAF;AAAgBC,YAAAA,oBAAhB;AAAsC,eAAGC;AAAzC,cAA0DL,IAAI,CAAC,CAAD,CAApE;;AAIA,cAAI,CAACG,YAAL,EAAmB;AACjBD,YAAAA,OAAO,CAAC,MAAML,MAAM,CAACS,KAAP,CAAa,IAAb,EAAmBN,IAAnB,CAAP,CAAP;AACA;AACD;;AAED,gBAAMO,SAAS,GAAGJ,YAAY,CAACK,GAAb,EAAlB;AACA,gBAAMC,MAAM,GAAG,MAAMZ,MAAM,CAACS,KAAP,CAAa,IAAb,EAAmBN,IAAnB,CAArB;AACA,gBAAMU,OAAO,GAAGP,YAAY,CAACK,GAAb,EAAhB;AACA,gBAAMG,QAAQ,GAAGD,OAAO,GAAGH,SAA3B;AACAL,UAAAA,OAAO,CAACO,MAAD,CAAP;AAEA,gBAAMG,OAAO,GAAG;AACdC,YAAAA,SAAS,EAAEb,IAAI,CAAC,CAAD,CADD;AAEdc,YAAAA,OAAO,EAAET,YAFK;AAGdU,YAAAA,OAAO,EAAEf,IAAI,CAAC,CAAD,CAHC;AAIdgB,YAAAA,WAAW,EAAEhB,IAAI,CAAC,CAAD,CAJH;AAKdS,YAAAA,MALc;AAMdQ,YAAAA,KAAK,EAAE;AAAEN,cAAAA,QAAF;AAAYD,cAAAA,OAAZ;AAAqBH,cAAAA;AAArB,aANO;AAOd,gBAAIH,oBAAoB,GAAG;AAAEc,cAAAA,iBAAiB,EAAEd;AAArB,aAAH,GAAiD,EAAzE;AAPc,WAAhB;AAUAD,UAAAA,YAAY,CAACgB,GAAb,CAAiB3B,mBAAjB,EAAsCoB,OAAtC;AACD,SA3BM,CAAP;AA4BD,OA7BD,CA6BE,OAAOQ,KAAP,EAAc;AACd,eAAOnB,OAAO,CAACoB,MAAR,CAAeD,KAAf,CAAP;AACD;AACF,KAjCD;AAkCD,GA1CD;AA2CD","sourcesContent":["import { CACHE_ENTRY_QUERIED, RequestContext } from \"@graphql-box/core\";\n\nexport default function logCacheQuery() {\n return (\n _target: any,\n _propertyName: string,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise<any>>,\n ): void => {\n const method = descriptor.value;\n if (!method) return;\n\n descriptor.value = async function descriptorValue(...args: any[]): Promise<any> {\n try {\n return new Promise(async resolve => {\n const { debugManager, requestFieldCacheKey, ...otherContext } = args[3] as RequestContext & {\n requestFieldCacheKey?: string;\n };\n\n if (!debugManager) {\n resolve(await method.apply(this, args));\n return;\n }\n\n const startTime = debugManager.now();\n const result = await method.apply(this, args);\n const endTime = debugManager.now();\n const duration = endTime - startTime;\n resolve(result);\n\n const payload = {\n cacheType: args[0],\n context: otherContext,\n options: args[2],\n requestHash: args[1],\n result,\n stats: { duration, endTime, startTime },\n ...(requestFieldCacheKey ? { decryptedCacheKey: requestFieldCacheKey } : {}),\n };\n\n debugManager.log(CACHE_ENTRY_QUERIED, payload);\n });\n } catch (error) {\n return Promise.reject(error);\n }\n };\n };\n}\n"],"file":"index.mjs"}
@@ -38,4 +38,4 @@ export default function logPartialCompiled() {
38
38
  };
39
39
  };
40
40
  }
41
- //# sourceMappingURL=index.js.map
41
+ //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/debug/log-partial-compiled/index.ts"],"names":["PARTIAL_QUERY_COMPILED","logPartialCompiled","_target","_propertyName","descriptor","method","value","descriptorValue","args","Promise","resolve","debugManager","otherContext","apply","startTime","now","endTime","duration","log","context","options","requestHash","result","stats"],"mappings":";AAAA,SAASA,sBAAT,QAAuD,mBAAvD;AAEA,eAAe,SAASC,kBAAT,GAA8B;AAC3C,SAAO,CACLC,OADK,EAELC,aAFK,EAGLC,UAHK,KAII;AACT,UAAMC,MAAM,GAAGD,UAAU,CAACE,KAA1B;AACA,QAAI,CAACD,MAAL,EAAa;;AAEbD,IAAAA,UAAU,CAACE,KAAX,GAAmB,eAAeC,eAAf,CAA+B,GAAGC,IAAlC,EAA6D;AAC9E,aAAO,IAAIC,OAAJ,CAAkB,MAAMC,OAAN,IAAiB;AACxC,cAAM;AAAEC,UAAAA,YAAF;AAAgB,aAAGC;AAAnB,YAAoCJ,IAAI,CAAC,CAAD,CAA9C;;AAEA,YAAI,CAACG,YAAL,EAAmB;AACjB,gBAAMN,MAAM,CAACQ,KAAP,CAAa,IAAb,EAAmBL,IAAnB,CAAN;AACAE,UAAAA,OAAO;AACP;AACD;;AAED,cAAMI,SAAS,GAAGH,YAAY,CAACI,GAAb,EAAlB;AACA,cAAMV,MAAM,CAACQ,KAAP,CAAa,IAAb,EAAmBL,IAAnB,CAAN;AACA,cAAMQ,OAAO,GAAGL,YAAY,CAACI,GAAb,EAAhB;AACA,cAAME,QAAQ,GAAGD,OAAO,GAAGF,SAA3B;AACAJ,QAAAA,OAAO;AAEPC,QAAAA,YAAY,CAACO,GAAb,CAAiBlB,sBAAjB,EAAyC;AACvCmB,UAAAA,OAAO,EAAEP,YAD8B;AAEvCQ,UAAAA,OAAO,EAAEZ,IAAI,CAAC,CAAD,CAF0B;AAGvCa,UAAAA,WAAW,EAAEb,IAAI,CAAC,CAAD,CAHsB;AAIvCc,UAAAA,MAAM,EAAEd,IAAI,CAAC,CAAD,CAJ2B;AAKvCe,UAAAA,KAAK,EAAE;AAAEN,YAAAA,QAAF;AAAYD,YAAAA,OAAZ;AAAqBF,YAAAA;AAArB;AALgC,SAAzC;AAOD,OAtBM,CAAP;AAuBD,KAxBD;AAyBD,GAjCD;AAkCD","sourcesContent":["import { PARTIAL_QUERY_COMPILED, RequestContext } from \"@graphql-box/core\";\n\nexport default function logPartialCompiled() {\n return (\n _target: any,\n _propertyName: string,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise<any>>,\n ): void => {\n const method = descriptor.value;\n if (!method) return;\n\n descriptor.value = async function descriptorValue(...args: any[]): Promise<any> {\n return new Promise<void>(async resolve => {\n const { debugManager, ...otherContext } = args[3] as RequestContext;\n\n if (!debugManager) {\n await method.apply(this, args);\n resolve();\n return;\n }\n\n const startTime = debugManager.now();\n await method.apply(this, args);\n const endTime = debugManager.now();\n const duration = endTime - startTime;\n resolve();\n\n debugManager.log(PARTIAL_QUERY_COMPILED, {\n context: otherContext,\n options: args[2],\n requestHash: args[0],\n result: args[1],\n stats: { duration, endTime, startTime },\n });\n });\n };\n };\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/debug/log-partial-compiled/index.ts"],"names":["PARTIAL_QUERY_COMPILED","logPartialCompiled","_target","_propertyName","descriptor","method","value","descriptorValue","args","Promise","resolve","debugManager","otherContext","apply","startTime","now","endTime","duration","log","context","options","requestHash","result","stats"],"mappings":";AAAA,SAASA,sBAAT,QAAuD,mBAAvD;AAEA,eAAe,SAASC,kBAAT,GAA8B;AAC3C,SAAO,CACLC,OADK,EAELC,aAFK,EAGLC,UAHK,KAII;AACT,UAAMC,MAAM,GAAGD,UAAU,CAACE,KAA1B;AACA,QAAI,CAACD,MAAL,EAAa;;AAEbD,IAAAA,UAAU,CAACE,KAAX,GAAmB,eAAeC,eAAf,CAA+B,GAAGC,IAAlC,EAA6D;AAC9E,aAAO,IAAIC,OAAJ,CAAkB,MAAMC,OAAN,IAAiB;AACxC,cAAM;AAAEC,UAAAA,YAAF;AAAgB,aAAGC;AAAnB,YAAoCJ,IAAI,CAAC,CAAD,CAA9C;;AAEA,YAAI,CAACG,YAAL,EAAmB;AACjB,gBAAMN,MAAM,CAACQ,KAAP,CAAa,IAAb,EAAmBL,IAAnB,CAAN;AACAE,UAAAA,OAAO;AACP;AACD;;AAED,cAAMI,SAAS,GAAGH,YAAY,CAACI,GAAb,EAAlB;AACA,cAAMV,MAAM,CAACQ,KAAP,CAAa,IAAb,EAAmBL,IAAnB,CAAN;AACA,cAAMQ,OAAO,GAAGL,YAAY,CAACI,GAAb,EAAhB;AACA,cAAME,QAAQ,GAAGD,OAAO,GAAGF,SAA3B;AACAJ,QAAAA,OAAO;AAEPC,QAAAA,YAAY,CAACO,GAAb,CAAiBlB,sBAAjB,EAAyC;AACvCmB,UAAAA,OAAO,EAAEP,YAD8B;AAEvCQ,UAAAA,OAAO,EAAEZ,IAAI,CAAC,CAAD,CAF0B;AAGvCa,UAAAA,WAAW,EAAEb,IAAI,CAAC,CAAD,CAHsB;AAIvCc,UAAAA,MAAM,EAAEd,IAAI,CAAC,CAAD,CAJ2B;AAKvCe,UAAAA,KAAK,EAAE;AAAEN,YAAAA,QAAF;AAAYD,YAAAA,OAAZ;AAAqBF,YAAAA;AAArB;AALgC,SAAzC;AAOD,OAtBM,CAAP;AAuBD,KAxBD;AAyBD,GAjCD;AAkCD","sourcesContent":["import { PARTIAL_QUERY_COMPILED, RequestContext } from \"@graphql-box/core\";\n\nexport default function logPartialCompiled() {\n return (\n _target: any,\n _propertyName: string,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise<any>>,\n ): void => {\n const method = descriptor.value;\n if (!method) return;\n\n descriptor.value = async function descriptorValue(...args: any[]): Promise<any> {\n return new Promise<void>(async resolve => {\n const { debugManager, ...otherContext } = args[3] as RequestContext;\n\n if (!debugManager) {\n await method.apply(this, args);\n resolve();\n return;\n }\n\n const startTime = debugManager.now();\n await method.apply(this, args);\n const endTime = debugManager.now();\n const duration = endTime - startTime;\n resolve();\n\n debugManager.log(PARTIAL_QUERY_COMPILED, {\n context: otherContext,\n options: args[2],\n requestHash: args[0],\n result: args[1],\n stats: { duration, endTime, startTime },\n });\n });\n };\n };\n}\n"],"file":"index.mjs"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"index.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"index.mjs"}
@@ -38,4 +38,4 @@ const recursivelyCheckProps = (data, typeIDKey) => {
38
38
  export default ((data, typeIDKey) => {
39
39
  return recursivelyCheckProps(data, typeIDKey);
40
40
  });
41
- //# sourceMappingURL=areOnlyPopulatedFieldsTypeIdKeys.js.map
41
+ //# sourceMappingURL=areOnlyPopulatedFieldsTypeIdKeys.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/helpers/areOnlyPopulatedFieldsTypeIdKeys.ts"],"names":["checkValue","value","typeIDKey","reduce","accB","entry","recursivelyCheckProps","data","keys","Object","length","accA","key"],"mappings":";;;AAGA,MAAMA,UAAU,GAAG,CAACC,KAAD,EAAaC,SAAb,KAA4C;AAC7D,MAAI,SAAQD,KAAR,CAAJ,EAAoB;AAClB,WAAOA,KAAK,CAACE,MAAN,CAAa,CAACC,IAAD,EAAgBC,KAAhB,KAA0B;AAC5C,UAAI,CAACD,IAAL,EAAW;AACT,eAAO,KAAP;AACD;;AAED,aAAOJ,UAAU,CAACK,KAAD,EAAQH,SAAR,CAAjB;AACD,KANM,EAMJ,IANI,CAAP;AAOD;;AAED,MAAI,eAAcD,KAAd,CAAJ,EAA0B;AACxB,WAAOK,qBAAqB,CAACL,KAAD,EAAQC,SAAR,CAA5B;AACD;;AAED,SAAO,KAAP;AACD,CAhBD;;AAkBA,MAAMI,qBAAqB,GAAG,CAACC,IAAD,EAAuBL,SAAvB,KAAsD;AAClF,QAAMM,IAAI,GAAGC,MAAM,CAACD,IAAP,CAAYD,IAAZ,CAAb;;AAEA,MAAIC,IAAI,CAACE,MAAL,KAAgB,CAAhB,IAAqB,CAAC,CAACH,IAAI,CAACL,SAAD,CAA/B,EAA4C;AAC1C,WAAO,IAAP;AACD;;AAED,SAAOM,IAAI,CAACL,MAAL,CAAY,CAACQ,IAAD,EAAgBC,GAAhB,KAAwB;AACzC,QAAI,CAACD,IAAL,EAAW;AACT,aAAO,KAAP;AACD;;AAED,WAAOX,UAAU,CAACO,IAAI,CAACK,GAAD,CAAL,EAAYV,SAAZ,CAAjB;AACD,GANM,EAMJ,IANI,CAAP;AAOD,CAdD;;AAgBA,gBAAe,CAACK,IAAD,EAAuBL,SAAvB,KAA6C;AAC1D,SAAOI,qBAAqB,CAACC,IAAD,EAAOL,SAAP,CAA5B;AACD,CAFD","sourcesContent":["import { PlainObjectMap } from \"@graphql-box/core\";\nimport { isArray, isPlainObject } from \"lodash\";\n\nconst checkValue = (value: any, typeIDKey: string): boolean => {\n if (isArray(value)) {\n return value.reduce((accB: boolean, entry) => {\n if (!accB) {\n return false;\n }\n\n return checkValue(entry, typeIDKey);\n }, true);\n }\n\n if (isPlainObject(value)) {\n return recursivelyCheckProps(value, typeIDKey);\n }\n\n return false;\n};\n\nconst recursivelyCheckProps = (data: PlainObjectMap, typeIDKey: string): boolean => {\n const keys = Object.keys(data);\n\n if (keys.length === 1 && !!data[typeIDKey]) {\n return true;\n }\n\n return keys.reduce((accA: boolean, key) => {\n if (!accA) {\n return false;\n }\n\n return checkValue(data[key], typeIDKey);\n }, true);\n};\n\nexport default (data: PlainObjectMap, typeIDKey: string) => {\n return recursivelyCheckProps(data, typeIDKey);\n};\n"],"file":"areOnlyPopulatedFieldsTypeIdKeys.js"}
1
+ {"version":3,"sources":["../../../src/helpers/areOnlyPopulatedFieldsTypeIdKeys.ts"],"names":["checkValue","value","typeIDKey","reduce","accB","entry","recursivelyCheckProps","data","keys","Object","length","accA","key"],"mappings":";;;AAGA,MAAMA,UAAU,GAAG,CAACC,KAAD,EAAaC,SAAb,KAA4C;AAC7D,MAAI,SAAQD,KAAR,CAAJ,EAAoB;AAClB,WAAOA,KAAK,CAACE,MAAN,CAAa,CAACC,IAAD,EAAgBC,KAAhB,KAA0B;AAC5C,UAAI,CAACD,IAAL,EAAW;AACT,eAAO,KAAP;AACD;;AAED,aAAOJ,UAAU,CAACK,KAAD,EAAQH,SAAR,CAAjB;AACD,KANM,EAMJ,IANI,CAAP;AAOD;;AAED,MAAI,eAAcD,KAAd,CAAJ,EAA0B;AACxB,WAAOK,qBAAqB,CAACL,KAAD,EAAQC,SAAR,CAA5B;AACD;;AAED,SAAO,KAAP;AACD,CAhBD;;AAkBA,MAAMI,qBAAqB,GAAG,CAACC,IAAD,EAAuBL,SAAvB,KAAsD;AAClF,QAAMM,IAAI,GAAGC,MAAM,CAACD,IAAP,CAAYD,IAAZ,CAAb;;AAEA,MAAIC,IAAI,CAACE,MAAL,KAAgB,CAAhB,IAAqB,CAAC,CAACH,IAAI,CAACL,SAAD,CAA/B,EAA4C;AAC1C,WAAO,IAAP;AACD;;AAED,SAAOM,IAAI,CAACL,MAAL,CAAY,CAACQ,IAAD,EAAgBC,GAAhB,KAAwB;AACzC,QAAI,CAACD,IAAL,EAAW;AACT,aAAO,KAAP;AACD;;AAED,WAAOX,UAAU,CAACO,IAAI,CAACK,GAAD,CAAL,EAAYV,SAAZ,CAAjB;AACD,GANM,EAMJ,IANI,CAAP;AAOD,CAdD;;AAgBA,gBAAe,CAACK,IAAD,EAAuBL,SAAvB,KAA6C;AAC1D,SAAOI,qBAAqB,CAACC,IAAD,EAAOL,SAAP,CAA5B;AACD,CAFD","sourcesContent":["import { PlainObjectMap } from \"@graphql-box/core\";\nimport { isArray, isPlainObject } from \"lodash\";\n\nconst checkValue = (value: any, typeIDKey: string): boolean => {\n if (isArray(value)) {\n return value.reduce((accB: boolean, entry) => {\n if (!accB) {\n return false;\n }\n\n return checkValue(entry, typeIDKey);\n }, true);\n }\n\n if (isPlainObject(value)) {\n return recursivelyCheckProps(value, typeIDKey);\n }\n\n return false;\n};\n\nconst recursivelyCheckProps = (data: PlainObjectMap, typeIDKey: string): boolean => {\n const keys = Object.keys(data);\n\n if (keys.length === 1 && !!data[typeIDKey]) {\n return true;\n }\n\n return keys.reduce((accA: boolean, key) => {\n if (!accA) {\n return false;\n }\n\n return checkValue(data[key], typeIDKey);\n }, true);\n};\n\nexport default (data: PlainObjectMap, typeIDKey: string) => {\n return recursivelyCheckProps(data, typeIDKey);\n};\n"],"file":"areOnlyPopulatedFieldsTypeIdKeys.mjs"}
@@ -28,4 +28,4 @@ export default ((fieldPathChecklistValues, fieldTypeName) => {
28
28
  }) => typeName === fieldTypeName)
29
29
  };
30
30
  });
31
- //# sourceMappingURL=checkFieldPathChecklist.js.map
31
+ //# sourceMappingURL=checkFieldPathChecklist.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/helpers/checkFieldPathChecklist.ts"],"names":["fieldPathChecklistValues","fieldTypeName","length","hasData","typeUnused","typeName","undefined","some","every"],"mappings":"AAEA,gBAAe,CACbA,wBADa,EAEbC,aAFa,KAGqB;AAClC,MAAI,CAACD,wBAAD,IAA6B,CAACA,wBAAwB,CAACE,MAA3D,EAAmE;AACjE,WAAO;AAAEC,MAAAA,OAAO,EAAE,KAAX;AAAkBC,MAAAA,UAAU,EAAE,CAAC,CAACH;AAAhC,KAAP;AACD;;AAED,MAAID,wBAAwB,CAACE,MAAzB,KAAoC,CAAxC,EAA2C;AACzC,UAAM;AAAEC,MAAAA,OAAF;AAAWE,MAAAA;AAAX,QAAwBL,wBAAwB,CAAC,CAAD,CAAtD;AACA,UAAMI,UAAU,GAAG,CAACC,QAAD,GAAYC,SAAZ,GAAwBD,QAAQ,KAAKJ,aAAxD;AACA,WAAO;AAAEE,MAAAA,OAAF;AAAWC,MAAAA;AAAX,KAAP;AACD;;AAED,SAAO;AACLD,IAAAA,OAAO,EAAEH,wBAAwB,CAACO,IAAzB,CAA8B,CAAC;AAAEJ,MAAAA,OAAF;AAAWE,MAAAA;AAAX,KAAD,KAA2BA,QAAQ,KAAKJ,aAAb,IAA8BE,OAAvF,CADJ;AAELC,IAAAA,UAAU,EAAE,CAACJ,wBAAwB,CAACQ,KAAzB,CAA+B,CAAC;AAAEH,MAAAA;AAAF,KAAD,KAAkBA,QAAQ,KAAKJ,aAA9D;AAFR,GAAP;AAID,CAlBD","sourcesContent":["import { CheckFieldPathChecklistResult, FieldPathChecklistValue } from \"../defs\";\n\nexport default (\n fieldPathChecklistValues: FieldPathChecklistValue[] | undefined,\n fieldTypeName: string | undefined,\n): CheckFieldPathChecklistResult => {\n if (!fieldPathChecklistValues || !fieldPathChecklistValues.length) {\n return { hasData: false, typeUnused: !!fieldTypeName };\n }\n\n if (fieldPathChecklistValues.length === 1) {\n const { hasData, typeName } = fieldPathChecklistValues[0];\n const typeUnused = !typeName ? undefined : typeName !== fieldTypeName;\n return { hasData, typeUnused };\n }\n\n return {\n hasData: fieldPathChecklistValues.some(({ hasData, typeName }) => typeName === fieldTypeName && hasData),\n typeUnused: !fieldPathChecklistValues.every(({ typeName }) => typeName === fieldTypeName),\n };\n};\n"],"file":"checkFieldPathChecklist.js"}
1
+ {"version":3,"sources":["../../../src/helpers/checkFieldPathChecklist.ts"],"names":["fieldPathChecklistValues","fieldTypeName","length","hasData","typeUnused","typeName","undefined","some","every"],"mappings":"AAEA,gBAAe,CACbA,wBADa,EAEbC,aAFa,KAGqB;AAClC,MAAI,CAACD,wBAAD,IAA6B,CAACA,wBAAwB,CAACE,MAA3D,EAAmE;AACjE,WAAO;AAAEC,MAAAA,OAAO,EAAE,KAAX;AAAkBC,MAAAA,UAAU,EAAE,CAAC,CAACH;AAAhC,KAAP;AACD;;AAED,MAAID,wBAAwB,CAACE,MAAzB,KAAoC,CAAxC,EAA2C;AACzC,UAAM;AAAEC,MAAAA,OAAF;AAAWE,MAAAA;AAAX,QAAwBL,wBAAwB,CAAC,CAAD,CAAtD;AACA,UAAMI,UAAU,GAAG,CAACC,QAAD,GAAYC,SAAZ,GAAwBD,QAAQ,KAAKJ,aAAxD;AACA,WAAO;AAAEE,MAAAA,OAAF;AAAWC,MAAAA;AAAX,KAAP;AACD;;AAED,SAAO;AACLD,IAAAA,OAAO,EAAEH,wBAAwB,CAACO,IAAzB,CAA8B,CAAC;AAAEJ,MAAAA,OAAF;AAAWE,MAAAA;AAAX,KAAD,KAA2BA,QAAQ,KAAKJ,aAAb,IAA8BE,OAAvF,CADJ;AAELC,IAAAA,UAAU,EAAE,CAACJ,wBAAwB,CAACQ,KAAzB,CAA+B,CAAC;AAAEH,MAAAA;AAAF,KAAD,KAAkBA,QAAQ,KAAKJ,aAA9D;AAFR,GAAP;AAID,CAlBD","sourcesContent":["import { CheckFieldPathChecklistResult, FieldPathChecklistValue } from \"../defs\";\n\nexport default (\n fieldPathChecklistValues: FieldPathChecklistValue[] | undefined,\n fieldTypeName: string | undefined,\n): CheckFieldPathChecklistResult => {\n if (!fieldPathChecklistValues || !fieldPathChecklistValues.length) {\n return { hasData: false, typeUnused: !!fieldTypeName };\n }\n\n if (fieldPathChecklistValues.length === 1) {\n const { hasData, typeName } = fieldPathChecklistValues[0];\n const typeUnused = !typeName ? undefined : typeName !== fieldTypeName;\n return { hasData, typeUnused };\n }\n\n return {\n hasData: fieldPathChecklistValues.some(({ hasData, typeName }) => typeName === fieldTypeName && hasData),\n typeUnused: !fieldPathChecklistValues.every(({ typeName }) => typeName === fieldTypeName),\n };\n};\n"],"file":"checkFieldPathChecklist.mjs"}
@@ -11,4 +11,4 @@ export default (({
11
11
  };
12
12
  return acc;
13
13
  }, {}));
14
- //# sourceMappingURL=createFragmentSpreadChecklist.js.map
14
+ //# sourceMappingURL=createFragmentSpreadChecklist.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/helpers/createFragmentSpreadChecklist.ts"],"names":["request","fragmentDefinitions","reduce","acc","name","deleted","paths","total","match","RegExp","length"],"mappings":";AAYA,gBAAe,CAAC;AAAEA,EAAAA;AAAF,CAAD,EAA2B;AAAEC,EAAAA;AAAF,CAA3B,KACb,MAAKA,mBAAL,aAAKA,mBAAL,cAAKA,mBAAL,GAA4B,EAA5B,EAAgCC,MAAhC,CAAuC,CAACC,GAAD,EAA8BC,IAA9B,KAAuC;AAC5ED,EAAAA,GAAG,CAACC,IAAD,CAAH,GAAY;AAAEC,IAAAA,OAAO,EAAE,CAAX;AAAcC,IAAAA,KAAK,EAAE,EAArB;AAAyBC,IAAAA,KAAK,EAAE,CAACP,OAAO,CAACQ,KAAR,CAAc,IAAIC,MAAJ,CAAY,YAAWL,IAAK,EAA5B,EAA+B,GAA/B,CAAd,KAAsD,EAAvD,EAA2DM;AAA3F,GAAZ;AACA,SAAOP,GAAP;AACD,CAHD,EAGG,EAHH,CADF","sourcesContent":["import { RequestData } from \"@graphql-box/core\";\nimport { keys } from \"lodash\";\nimport { CacheManagerContext } from \"../defs\";\n\nexport type FragmentSpreadCheckist = {\n [key: string]: {\n deleted: number;\n paths: string[];\n total: number;\n };\n};\n\nexport default ({ request }: RequestData, { fragmentDefinitions }: CacheManagerContext) =>\n keys(fragmentDefinitions ?? {}).reduce((acc: FragmentSpreadCheckist, name) => {\n acc[name] = { deleted: 0, paths: [], total: (request.match(new RegExp(`\\\\.\\\\.\\\\.${name}`, \"g\")) || []).length };\n return acc;\n }, {});\n"],"file":"createFragmentSpreadChecklist.js"}
1
+ {"version":3,"sources":["../../../src/helpers/createFragmentSpreadChecklist.ts"],"names":["request","fragmentDefinitions","reduce","acc","name","deleted","paths","total","match","RegExp","length"],"mappings":";AAYA,gBAAe,CAAC;AAAEA,EAAAA;AAAF,CAAD,EAA2B;AAAEC,EAAAA;AAAF,CAA3B,KACb,MAAKA,mBAAL,aAAKA,mBAAL,cAAKA,mBAAL,GAA4B,EAA5B,EAAgCC,MAAhC,CAAuC,CAACC,GAAD,EAA8BC,IAA9B,KAAuC;AAC5ED,EAAAA,GAAG,CAACC,IAAD,CAAH,GAAY;AAAEC,IAAAA,OAAO,EAAE,CAAX;AAAcC,IAAAA,KAAK,EAAE,EAArB;AAAyBC,IAAAA,KAAK,EAAE,CAACP,OAAO,CAACQ,KAAR,CAAc,IAAIC,MAAJ,CAAY,YAAWL,IAAK,EAA5B,EAA+B,GAA/B,CAAd,KAAsD,EAAvD,EAA2DM;AAA3F,GAAZ;AACA,SAAOP,GAAP;AACD,CAHD,EAGG,EAHH,CADF","sourcesContent":["import { RequestData } from \"@graphql-box/core\";\nimport { keys } from \"lodash\";\nimport { CacheManagerContext } from \"../defs\";\n\nexport type FragmentSpreadCheckist = {\n [key: string]: {\n deleted: number;\n paths: string[];\n total: number;\n };\n};\n\nexport default ({ request }: RequestData, { fragmentDefinitions }: CacheManagerContext) =>\n keys(fragmentDefinitions ?? {}).reduce((acc: FragmentSpreadCheckist, name) => {\n acc[name] = { deleted: 0, paths: [], total: (request.match(new RegExp(`\\\\.\\\\.\\\\.${name}`, \"g\")) || []).length };\n return acc;\n }, {});\n"],"file":"createFragmentSpreadChecklist.mjs"}
@@ -29,4 +29,4 @@ export default (({
29
29
  cacheControl: fallback
30
30
  });
31
31
  });
32
- //# sourceMappingURL=deriveOpCacheability.js.map
32
+ //# sourceMappingURL=deriveOpCacheability.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/helpers/deriveOpCacheability.ts"],"names":["Cacheability","HEADER_CACHE_CONTROL","_cacheMetadata","fallback","headers","first","rest","Object","values","metadata","reduce","acc","ttl","has","cacheControl"],"mappings":";AACA,OAAOA,YAAP,MAAyB,cAAzB;AAEA,SAASC,oBAAT,QAAqC,WAArC;AAQA,gBAAe,CAAC;AAAEC,EAAAA,cAAF;AAAkBC,EAAAA,QAAlB;AAA4BC,EAAAA;AAA5B,CAAD,KAAiE;AAC9E,MAAIF,cAAc,IAAI,CAAC,SAAQA,cAAR,CAAvB,EAAgD;AAC9C,UAAM,CAACG,KAAD,EAAQ,GAAGC,IAAX,IAAmBC,MAAM,CAACC,MAAP,CAAcN,cAAd,CAAzB;AAEA,WAAO,IAAIF,YAAJ,CAAiB;AACtBS,MAAAA,QAAQ,EAAEH,IAAI,CAACI,MAAL,CAAY,CAACC,GAAD,EAAMF,QAAN,KAAmB;AACvC,YAAIA,QAAQ,CAACG,GAAT,GAAeD,GAAG,CAACC,GAAvB,EAA4B;AAC1B,iBAAOH,QAAP;AACD;;AAED,eAAOE,GAAP;AACD,OANS,EAMPN,KANO;AADY,KAAjB,CAAP;AASD;;AAED,MAAID,OAAO,IAAIA,OAAO,CAACS,GAAR,CAAYZ,oBAAZ,CAAf,EAAkD;AAChD,WAAO,IAAID,YAAJ,CAAiB;AAAEI,MAAAA;AAAF,KAAjB,CAAP;AACD;;AAED,SAAO,IAAIJ,YAAJ,CAAiB;AAAEc,IAAAA,YAAY,EAAEX;AAAhB,GAAjB,CAAP;AACD,CApBD","sourcesContent":["import { DehydratedCacheMetadata } from \"@graphql-box/core\";\nimport Cacheability from \"cacheability\";\nimport { isEmpty } from \"lodash\";\nimport { HEADER_CACHE_CONTROL } from \"../consts\";\n\nexport type Params = {\n _cacheMetadata?: DehydratedCacheMetadata;\n fallback: string;\n headers?: Headers;\n};\n\nexport default ({ _cacheMetadata, fallback, headers }: Params): Cacheability => {\n if (_cacheMetadata && !isEmpty(_cacheMetadata)) {\n const [first, ...rest] = Object.values(_cacheMetadata);\n\n return new Cacheability({\n metadata: rest.reduce((acc, metadata) => {\n if (metadata.ttl < acc.ttl) {\n return metadata;\n }\n\n return acc;\n }, first),\n });\n }\n\n if (headers && headers.has(HEADER_CACHE_CONTROL)) {\n return new Cacheability({ headers });\n }\n\n return new Cacheability({ cacheControl: fallback });\n};\n"],"file":"deriveOpCacheability.js"}
1
+ {"version":3,"sources":["../../../src/helpers/deriveOpCacheability.ts"],"names":["Cacheability","HEADER_CACHE_CONTROL","_cacheMetadata","fallback","headers","first","rest","Object","values","metadata","reduce","acc","ttl","has","cacheControl"],"mappings":";AACA,OAAOA,YAAP,MAAyB,cAAzB;AAEA,SAASC,oBAAT,QAAqC,WAArC;AAQA,gBAAe,CAAC;AAAEC,EAAAA,cAAF;AAAkBC,EAAAA,QAAlB;AAA4BC,EAAAA;AAA5B,CAAD,KAAiE;AAC9E,MAAIF,cAAc,IAAI,CAAC,SAAQA,cAAR,CAAvB,EAAgD;AAC9C,UAAM,CAACG,KAAD,EAAQ,GAAGC,IAAX,IAAmBC,MAAM,CAACC,MAAP,CAAcN,cAAd,CAAzB;AAEA,WAAO,IAAIF,YAAJ,CAAiB;AACtBS,MAAAA,QAAQ,EAAEH,IAAI,CAACI,MAAL,CAAY,CAACC,GAAD,EAAMF,QAAN,KAAmB;AACvC,YAAIA,QAAQ,CAACG,GAAT,GAAeD,GAAG,CAACC,GAAvB,EAA4B;AAC1B,iBAAOH,QAAP;AACD;;AAED,eAAOE,GAAP;AACD,OANS,EAMPN,KANO;AADY,KAAjB,CAAP;AASD;;AAED,MAAID,OAAO,IAAIA,OAAO,CAACS,GAAR,CAAYZ,oBAAZ,CAAf,EAAkD;AAChD,WAAO,IAAID,YAAJ,CAAiB;AAAEI,MAAAA;AAAF,KAAjB,CAAP;AACD;;AAED,SAAO,IAAIJ,YAAJ,CAAiB;AAAEc,IAAAA,YAAY,EAAEX;AAAhB,GAAjB,CAAP;AACD,CApBD","sourcesContent":["import { DehydratedCacheMetadata } from \"@graphql-box/core\";\nimport Cacheability from \"cacheability\";\nimport { isEmpty } from \"lodash\";\nimport { HEADER_CACHE_CONTROL } from \"../consts\";\n\nexport type Params = {\n _cacheMetadata?: DehydratedCacheMetadata;\n fallback: string;\n headers?: Headers;\n};\n\nexport default ({ _cacheMetadata, fallback, headers }: Params): Cacheability => {\n if (_cacheMetadata && !isEmpty(_cacheMetadata)) {\n const [first, ...rest] = Object.values(_cacheMetadata);\n\n return new Cacheability({\n metadata: rest.reduce((acc, metadata) => {\n if (metadata.ttl < acc.ttl) {\n return metadata;\n }\n\n return acc;\n }, first),\n });\n }\n\n if (headers && headers.has(HEADER_CACHE_CONTROL)) {\n return new Cacheability({ headers });\n }\n\n return new Cacheability({ cacheControl: fallback });\n};\n"],"file":"deriveOpCacheability.mjs"}
@@ -77,4 +77,4 @@ const filterField = (field, fieldPathChecklist, fragmentSpreadChecklist, ancesto
77
77
  };
78
78
 
79
79
  export default filterField;
80
- //# sourceMappingURL=filterField.js.map
80
+ //# sourceMappingURL=filterField.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/helpers/filterField.ts"],"names":["TYPE_NAME_KEY","FRAGMENT_SPREAD","buildFieldKeysAndPaths","deleteChildFields","getChildFields","getName","hasChildFields","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 {\n FRAGMENT_SPREAD,\n buildFieldKeysAndPaths,\n deleteChildFields,\n getChildFields,\n getName,\n hasChildFields,\n} from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from \"graphql\";\nimport { CacheManagerContext, FieldPathChecklist, FragmentSpreadFieldCounter } from \"../defs\";\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 | OperationDefinitionNode,\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"}
1
+ {"version":3,"sources":["../../../src/helpers/filterField.ts"],"names":["TYPE_NAME_KEY","FRAGMENT_SPREAD","buildFieldKeysAndPaths","deleteChildFields","getChildFields","getName","hasChildFields","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 {\n FRAGMENT_SPREAD,\n buildFieldKeysAndPaths,\n deleteChildFields,\n getChildFields,\n getName,\n hasChildFields,\n} from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from \"graphql\";\nimport { CacheManagerContext, FieldPathChecklist, FragmentSpreadFieldCounter } from \"../defs\";\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 | OperationDefinitionNode,\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.mjs"}
@@ -40,4 +40,4 @@ export default ((ast, fieldPathChecklist, fragmentSpreadChecklist, context) => {
40
40
  include: definitionsToDelete
41
41
  });
42
42
  });
43
- //# sourceMappingURL=filterFragmentDefinitions.js.map
43
+ //# sourceMappingURL=filterFragmentDefinitions.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/helpers/filterFragmentDefinitions.ts"],"names":["deleteFragmentDefinitions","filterField","ast","fieldPathChecklist","fragmentSpreadChecklist","context","definitionsToFilter","reduce","namesAndPaths","key","deleted","total","name","path","paths","fragmentDefinitions","forEach","fragmentDefinition","definitionsToDelete","names","length","include"],"mappings":";AAAA,SAASA,yBAAT,QAA0C,sBAA1C;AAKA,OAAOC,WAAP,MAAwB,eAAxB;AAEA,gBAAe,CACbC,GADa,EAEbC,kBAFa,EAGbC,uBAHa,EAIbC,OAJa,KAKV;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,QAAM;AAAEO,IAAAA,mBAAmB,GAAG;AAAxB,MAA+BV,OAArC;AAEAC,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,MAAI,CAACD,mBAAmB,CAACE,MAAzB,EAAiC;AAC/B,WAAOlB,GAAP;AACD;;AAED,SAAOF,yBAAyB,CAACE,GAAD,EAAM;AACpCmB,IAAAA,OAAO,EAAEH;AAD2B,GAAN,CAAhC;AAGD,CApCD","sourcesContent":["import { deleteFragmentDefinitions } 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 = {} } = context;\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 if (!definitionsToDelete.length) {\n return ast;\n }\n\n return deleteFragmentDefinitions(ast, {\n include: definitionsToDelete,\n });\n};\n"],"file":"filterFragmentDefinitions.js"}
1
+ {"version":3,"sources":["../../../src/helpers/filterFragmentDefinitions.ts"],"names":["deleteFragmentDefinitions","filterField","ast","fieldPathChecklist","fragmentSpreadChecklist","context","definitionsToFilter","reduce","namesAndPaths","key","deleted","total","name","path","paths","fragmentDefinitions","forEach","fragmentDefinition","definitionsToDelete","names","length","include"],"mappings":";AAAA,SAASA,yBAAT,QAA0C,sBAA1C;AAKA,OAAOC,WAAP,MAAwB,eAAxB;AAEA,gBAAe,CACbC,GADa,EAEbC,kBAFa,EAGbC,uBAHa,EAIbC,OAJa,KAKV;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,QAAM;AAAEO,IAAAA,mBAAmB,GAAG;AAAxB,MAA+BV,OAArC;AAEAC,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,MAAI,CAACD,mBAAmB,CAACE,MAAzB,EAAiC;AAC/B,WAAOlB,GAAP;AACD;;AAED,SAAOF,yBAAyB,CAACE,GAAD,EAAM;AACpCmB,IAAAA,OAAO,EAAEH;AAD2B,GAAN,CAAhC;AAGD,CApCD","sourcesContent":["import { deleteFragmentDefinitions } 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 = {} } = context;\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 if (!definitionsToDelete.length) {\n return ast;\n }\n\n return deleteFragmentDefinitions(ast, {\n include: definitionsToDelete,\n });\n};\n"],"file":"filterFragmentDefinitions.mjs"}
@@ -19,4 +19,4 @@ export default ((field, fragmentSpreadFieldCounter, fragmentSpreadChecklist, anc
19
19
  }
20
20
  });
21
21
  });
22
- //# sourceMappingURL=filterFragmentSpreads.js.map
22
+ //# sourceMappingURL=filterFragmentSpreads.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/helpers/filterFragmentSpreads.ts"],"names":["deleteFragmentSpreads","field","fragmentSpreadFieldCounter","fragmentSpreadChecklist","ancestorRequestFieldPath","forEach","key","paths","push","hasData","total","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,CAAmCC,IAAnC,CAAwCJ,wBAAxC;AAEA,UAAM;AAAEK,MAAAA,OAAF;AAAWC,MAAAA;AAAX,QAAqBR,0BAA0B,CAACI,GAAD,CAArD;;AAEA,QAAIG,OAAO,KAAKC,KAAhB,EAAuB;AACrBV,MAAAA,qBAAqB,CAACC,KAAD,EAAQK,GAAR,CAArB;AACAH,MAAAA,uBAAuB,CAACG,GAAD,CAAvB,CAA6BK,OAA7B,IAAwC,CAAxC;AACD;AACF,GATD;AAUD,CApBD","sourcesContent":["import { deleteFragmentSpreads } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from \"graphql\";\nimport { isEmpty, keys } from \"lodash\";\nimport { FragmentSpreadFieldCounter } from \"../defs\";\nimport { FragmentSpreadCheckist } from \"./createFragmentSpreadChecklist\";\n\nexport default (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\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].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"}
1
+ {"version":3,"sources":["../../../src/helpers/filterFragmentSpreads.ts"],"names":["deleteFragmentSpreads","field","fragmentSpreadFieldCounter","fragmentSpreadChecklist","ancestorRequestFieldPath","forEach","key","paths","push","hasData","total","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,CAAmCC,IAAnC,CAAwCJ,wBAAxC;AAEA,UAAM;AAAEK,MAAAA,OAAF;AAAWC,MAAAA;AAAX,QAAqBR,0BAA0B,CAACI,GAAD,CAArD;;AAEA,QAAIG,OAAO,KAAKC,KAAhB,EAAuB;AACrBV,MAAAA,qBAAqB,CAACC,KAAD,EAAQK,GAAR,CAArB;AACAH,MAAAA,uBAAuB,CAACG,GAAD,CAAvB,CAA6BK,OAA7B,IAAwC,CAAxC;AACD;AACF,GATD;AAUD,CApBD","sourcesContent":["import { deleteFragmentSpreads } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from \"graphql\";\nimport { isEmpty, keys } from \"lodash\";\nimport { FragmentSpreadFieldCounter } from \"../defs\";\nimport { FragmentSpreadCheckist } from \"./createFragmentSpreadChecklist\";\n\nexport default (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\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].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.mjs"}
@@ -33,4 +33,4 @@ export default ((field, {
33
33
 
34
34
  return false;
35
35
  });
36
- //# sourceMappingURL=filterIDsAndTypeNames.js.map
36
+ //# sourceMappingURL=filterIDsAndTypeNames.mjs.map
@@ -1 +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,CACbC,KADa,EAEb;AAAEC,EAAAA,mBAAF;AAAuBC,EAAAA;AAAvB,CAFa,KAGV;AACH,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,CA5BD","sourcesContent":["import { TYPE_NAME_KEY } from \"@graphql-box/core\";\nimport { deleteChildFields, getChildFields, getName } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from \"graphql\";\nimport { CacheManagerContext } from \"../defs\";\n\nexport default (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\n { fragmentDefinitions, typeIDKey }: CacheManagerContext,\n) => {\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"}
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,CACbC,KADa,EAEb;AAAEC,EAAAA,mBAAF;AAAuBC,EAAAA;AAAvB,CAFa,KAGV;AACH,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,CA5BD","sourcesContent":["import { TYPE_NAME_KEY } from \"@graphql-box/core\";\nimport { deleteChildFields, getChildFields, getName } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from \"graphql\";\nimport { CacheManagerContext } from \"../defs\";\n\nexport default (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\n { fragmentDefinitions, typeIDKey }: CacheManagerContext,\n) => {\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.mjs"}
@@ -29,4 +29,4 @@ export default ((field, {
29
29
  });
30
30
  return filtered;
31
31
  });
32
- //# sourceMappingURL=filterInlineFragments.js.map
32
+ //# sourceMappingURL=filterInlineFragments.mjs.map
@@ -1 +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,CACbC,KADa,EAEb;AAAEC,EAAAA,mBAAF;AAAuBC,EAAAA;AAAvB,CAFa,KAGV;AACH,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,CA3BD","sourcesContent":["import { deleteInlineFragments, getChildFields, getInlineFragments, getName } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from \"graphql\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\n { fragmentDefinitions, typeIDKey }: CacheManagerContext,\n) => {\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"}
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,CACbC,KADa,EAEb;AAAEC,EAAAA,mBAAF;AAAuBC,EAAAA;AAAvB,CAFa,KAGV;AACH,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,CA3BD","sourcesContent":["import { deleteInlineFragments, getChildFields, getInlineFragments, getName } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from \"graphql\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\n { fragmentDefinitions, typeIDKey }: CacheManagerContext,\n) => {\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.mjs"}
@@ -2,4 +2,4 @@ import { FRAGMENT_DEFINITION, OPERATION_DEFINITION, isKind } from "@graphql-box/
2
2
  export default (ast => {
3
3
  return ast.definitions.filter(definition => isKind(definition, OPERATION_DEFINITION) || isKind(definition, FRAGMENT_DEFINITION));
4
4
  });
5
- //# sourceMappingURL=filterOperationAndFragmentDefinitions.js.map
5
+ //# sourceMappingURL=filterOperationAndFragmentDefinitions.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/helpers/filterOperationAndFragmentDefinitions.ts"],"names":["FRAGMENT_DEFINITION","OPERATION_DEFINITION","isKind","ast","definitions","filter","definition"],"mappings":"AAAA,SAASA,mBAAT,EAA8BC,oBAA9B,EAAoDC,MAApD,QAAkE,sBAAlE;AAGA,gBAAgBC,GAAD,IAAuB;AACpC,SAAOA,GAAG,CAACC,WAAJ,CAAgBC,MAAhB,CACLC,UAAU,IACRJ,MAAM,CAA0BI,UAA1B,EAAsCL,oBAAtC,CAAN,IACAC,MAAM,CAAyBI,UAAzB,EAAqCN,mBAArC,CAHH,CAAP;AAKD,CAND","sourcesContent":["import { FRAGMENT_DEFINITION, OPERATION_DEFINITION, isKind } from \"@graphql-box/helpers\";\nimport { DocumentNode, FragmentDefinitionNode, OperationDefinitionNode } from \"graphql\";\n\nexport default (ast: DocumentNode) => {\n return ast.definitions.filter(\n definition =>\n isKind<OperationDefinitionNode>(definition, OPERATION_DEFINITION) ||\n isKind<FragmentDefinitionNode>(definition, FRAGMENT_DEFINITION),\n ) as (OperationDefinitionNode | FragmentDefinitionNode)[];\n};\n"],"file":"filterOperationAndFragmentDefinitions.js"}
1
+ {"version":3,"sources":["../../../src/helpers/filterOperationAndFragmentDefinitions.ts"],"names":["FRAGMENT_DEFINITION","OPERATION_DEFINITION","isKind","ast","definitions","filter","definition"],"mappings":"AAAA,SAASA,mBAAT,EAA8BC,oBAA9B,EAAoDC,MAApD,QAAkE,sBAAlE;AAGA,gBAAgBC,GAAD,IAAuB;AACpC,SAAOA,GAAG,CAACC,WAAJ,CAAgBC,MAAhB,CACLC,UAAU,IACRJ,MAAM,CAA0BI,UAA1B,EAAsCL,oBAAtC,CAAN,IACAC,MAAM,CAAyBI,UAAzB,EAAqCN,mBAArC,CAHH,CAAP;AAKD,CAND","sourcesContent":["import { FRAGMENT_DEFINITION, OPERATION_DEFINITION, isKind } from \"@graphql-box/helpers\";\nimport { DocumentNode, FragmentDefinitionNode, OperationDefinitionNode } from \"graphql\";\n\nexport default (ast: DocumentNode) => {\n return ast.definitions.filter(\n definition =>\n isKind<OperationDefinitionNode>(definition, OPERATION_DEFINITION) ||\n isKind<FragmentDefinitionNode>(definition, FRAGMENT_DEFINITION),\n ) as (OperationDefinitionNode | FragmentDefinitionNode)[];\n};\n"],"file":"filterOperationAndFragmentDefinitions.mjs"}
@@ -21,4 +21,4 @@ export default ((fieldData, selectionNodes, ancestorKeysAndPaths, context) => {
21
21
  return acc;
22
22
  }, {});
23
23
  });
24
- //# sourceMappingURL=filterOutPropsWithArgsOrDirectives.js.map
24
+ //# sourceMappingURL=filterOutPropsWithArgsOrDirectives.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/helpers/filterOutPropsWithArgsOrDirectives.ts"],"names":["buildFieldKeysAndPaths","getName","resolveFragments","fieldData","selectionNodes","ancestorKeysAndPaths","context","fieldAndTypeName","fragmentDefinitions","reduce","acc","key","match","find","fieldNode","requestFieldPath","fieldTypeInfo","fieldTypeMap","get","hasArguments","hasDirectives"],"mappings":";AACA,SAAuBA,sBAAvB,EAA+CC,OAA/C,EAAwDC,gBAAxD,QAAgF,sBAAhF;AAKA,gBAAe,CACbC,SADa,EAEbC,cAFa,EAGbC,oBAHa,EAIbC,OAJa,KAKV;AACH,QAAMC,gBAAgB,GAAGL,gBAAgB,CAACE,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,KAAoBb,OAAO,CAACa,SAAD,CAAR,KAAuDH,GAAhG,CAAd;;AAEA,QAAIC,KAAJ,EAAW;AACT,YAAM;AAAEG,QAAAA;AAAF,UAAuBf,sBAAsB,CAACY,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 { KeysAndPaths, buildFieldKeysAndPaths, getName, resolveFragments } from \"@graphql-box/helpers\";\nimport { FieldNode, SelectionNode } from \"graphql\";\nimport { keys } from \"lodash\";\nimport { CacheManagerContext } from \"../defs\";\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"}
1
+ {"version":3,"sources":["../../../src/helpers/filterOutPropsWithArgsOrDirectives.ts"],"names":["buildFieldKeysAndPaths","getName","resolveFragments","fieldData","selectionNodes","ancestorKeysAndPaths","context","fieldAndTypeName","fragmentDefinitions","reduce","acc","key","match","find","fieldNode","requestFieldPath","fieldTypeInfo","fieldTypeMap","get","hasArguments","hasDirectives"],"mappings":";AACA,SAAuBA,sBAAvB,EAA+CC,OAA/C,EAAwDC,gBAAxD,QAAgF,sBAAhF;AAKA,gBAAe,CACbC,SADa,EAEbC,cAFa,EAGbC,oBAHa,EAIbC,OAJa,KAKV;AACH,QAAMC,gBAAgB,GAAGL,gBAAgB,CAACE,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,KAAoBb,OAAO,CAACa,SAAD,CAAR,KAAuDH,GAAhG,CAAd;;AAEA,QAAIC,KAAJ,EAAW;AACT,YAAM;AAAEG,QAAAA;AAAF,UAAuBf,sBAAsB,CAACY,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 { KeysAndPaths, buildFieldKeysAndPaths, getName, resolveFragments } from \"@graphql-box/helpers\";\nimport { FieldNode, SelectionNode } from \"graphql\";\nimport { keys } from \"lodash\";\nimport { CacheManagerContext } from \"../defs\";\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.mjs"}
@@ -40,4 +40,4 @@ export default ((requestData, {
40
40
  context.queryFiltered = true;
41
41
  return filterFragmentDefinitions(ast, fieldPathChecklist, fragmentSpreadChecklist, context);
42
42
  });
43
- //# sourceMappingURL=filterQuery.js.map
43
+ //# sourceMappingURL=filterQuery.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/helpers/filterQuery.ts"],"names":["buildFieldKeysAndPaths","deleteChildFields","getChildFields","getOperationDefinitions","createFragmentSpreadChecklist","filterField","filterFragmentDefinitions","requestData","fieldPathChecklist","context","ast","queryNode","operation","fragmentDefinitions","fieldsAndTypeNames","fragmentSpreadChecklist","i","length","fieldNode","requestFieldPath","queryFiltered"],"mappings":"AACA,SACEA,sBADF,EAEEC,iBAFF,EAGEC,cAHF,EAIEC,uBAJF,QAKO,sBALP;AAOA,OAAOC,6BAAP,MAA0C,iCAA1C;AACA,OAAOC,WAAP,MAAwB,eAAxB;AACA,OAAOC,yBAAP,MAAsC,6BAAtC;AAEA,gBAAe,CAACC,WAAD,EAA2B;AAAEC,EAAAA;AAAF,CAA3B,EAAuEC,OAAvE,KAAwG;AACrH,QAAM;AAAEC,IAAAA;AAAF,MAAUH,WAAhB;AACA,QAAMI,SAAS,GAAGR,uBAAuB,CAACO,GAAD,EAAMD,OAAO,CAACG,SAAd,CAAvB,CAAgD,CAAhD,CAAlB;AACA,QAAM;AAAEC,IAAAA;AAAF,MAA0BJ,OAAhC;AACA,QAAMK,kBAAkB,GAAGZ,cAAc,CAACS,SAAD,EAAY;AAAEE,IAAAA;AAAF,GAAZ,CAAzC;;AAEA,MAAI,CAACC,kBAAL,EAAyB;AACvB,WAAOJ,GAAP;AACD;;AAED,QAAMK,uBAAuB,GAAGX,6BAA6B,CAACG,WAAD,EAAcE,OAAd,CAA7D;;AAEA,OAAK,IAAIO,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,QAAuBnB,sBAAsB,CACjDkB,SADiD,EAEjD;AACEC,MAAAA,gBAAgB,EAAEV,OAAO,CAACG;AAD5B,KAFiD,EAKjDH,OALiD,CAAnD;;AAQA,QAAIJ,WAAW,CAACa,SAAD,EAAYV,kBAAZ,EAAgCO,uBAAhC,EAAyDI,gBAAzD,EAA2EV,OAA3E,CAAf,EAAoG;AAClGR,MAAAA,iBAAiB,CAACU,SAAD,EAAYO,SAAZ,CAAjB;AACD;AACF;;AAEDT,EAAAA,OAAO,CAACW,aAAR,GAAwB,IAAxB;AACA,SAAOd,yBAAyB,CAACI,GAAD,EAAMF,kBAAN,EAA0BO,uBAA1B,EAAmDN,OAAnD,CAAhC;AACD,CA9BD","sourcesContent":["import { RequestData } from \"@graphql-box/core\";\nimport {\n buildFieldKeysAndPaths,\n deleteChildFields,\n getChildFields,\n getOperationDefinitions,\n} from \"@graphql-box/helpers\";\nimport { CacheManagerContext, CachedResponseData } from \"../defs\";\nimport createFragmentSpreadChecklist from \"./createFragmentSpreadChecklist\";\nimport filterField from \"./filterField\";\nimport filterFragmentDefinitions from \"./filterFragmentDefinitions\";\n\nexport default (requestData: RequestData, { fieldPathChecklist }: CachedResponseData, context: CacheManagerContext) => {\n const { ast } = requestData;\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(requestData, context);\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"}
1
+ {"version":3,"sources":["../../../src/helpers/filterQuery.ts"],"names":["buildFieldKeysAndPaths","deleteChildFields","getChildFields","getOperationDefinitions","createFragmentSpreadChecklist","filterField","filterFragmentDefinitions","requestData","fieldPathChecklist","context","ast","queryNode","operation","fragmentDefinitions","fieldsAndTypeNames","fragmentSpreadChecklist","i","length","fieldNode","requestFieldPath","queryFiltered"],"mappings":"AACA,SACEA,sBADF,EAEEC,iBAFF,EAGEC,cAHF,EAIEC,uBAJF,QAKO,sBALP;AAOA,OAAOC,6BAAP,MAA0C,iCAA1C;AACA,OAAOC,WAAP,MAAwB,eAAxB;AACA,OAAOC,yBAAP,MAAsC,6BAAtC;AAEA,gBAAe,CAACC,WAAD,EAA2B;AAAEC,EAAAA;AAAF,CAA3B,EAAuEC,OAAvE,KAAwG;AACrH,QAAM;AAAEC,IAAAA;AAAF,MAAUH,WAAhB;AACA,QAAMI,SAAS,GAAGR,uBAAuB,CAACO,GAAD,EAAMD,OAAO,CAACG,SAAd,CAAvB,CAAgD,CAAhD,CAAlB;AACA,QAAM;AAAEC,IAAAA;AAAF,MAA0BJ,OAAhC;AACA,QAAMK,kBAAkB,GAAGZ,cAAc,CAACS,SAAD,EAAY;AAAEE,IAAAA;AAAF,GAAZ,CAAzC;;AAEA,MAAI,CAACC,kBAAL,EAAyB;AACvB,WAAOJ,GAAP;AACD;;AAED,QAAMK,uBAAuB,GAAGX,6BAA6B,CAACG,WAAD,EAAcE,OAAd,CAA7D;;AAEA,OAAK,IAAIO,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,QAAuBnB,sBAAsB,CACjDkB,SADiD,EAEjD;AACEC,MAAAA,gBAAgB,EAAEV,OAAO,CAACG;AAD5B,KAFiD,EAKjDH,OALiD,CAAnD;;AAQA,QAAIJ,WAAW,CAACa,SAAD,EAAYV,kBAAZ,EAAgCO,uBAAhC,EAAyDI,gBAAzD,EAA2EV,OAA3E,CAAf,EAAoG;AAClGR,MAAAA,iBAAiB,CAACU,SAAD,EAAYO,SAAZ,CAAjB;AACD;AACF;;AAEDT,EAAAA,OAAO,CAACW,aAAR,GAAwB,IAAxB;AACA,SAAOd,yBAAyB,CAACI,GAAD,EAAMF,kBAAN,EAA0BO,uBAA1B,EAAmDN,OAAnD,CAAhC;AACD,CA9BD","sourcesContent":["import { RequestData } from \"@graphql-box/core\";\nimport {\n buildFieldKeysAndPaths,\n deleteChildFields,\n getChildFields,\n getOperationDefinitions,\n} from \"@graphql-box/helpers\";\nimport { CacheManagerContext, CachedResponseData } from \"../defs\";\nimport createFragmentSpreadChecklist from \"./createFragmentSpreadChecklist\";\nimport filterField from \"./filterField\";\nimport filterFragmentDefinitions from \"./filterFragmentDefinitions\";\n\nexport default (requestData: RequestData, { fieldPathChecklist }: CachedResponseData, context: CacheManagerContext) => {\n const { ast } = requestData;\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(requestData, context);\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.mjs"}
@@ -1,2 +1,2 @@
1
1
  export default ((rawResponseData, context) => context.hasDeferOrStream && rawResponseData.hasNext && !rawResponseData.paths);
2
- //# sourceMappingURL=isFirstResponseChunk.js.map
2
+ //# sourceMappingURL=isFirstResponseChunk.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/helpers/isFirstResponseChunk.ts"],"names":["rawResponseData","context","hasDeferOrStream","hasNext","paths"],"mappings":"AAGA,gBAAe,CAACA,eAAD,EAAyDC,OAAzD,KACbA,OAAO,CAACC,gBAAR,IAA4BF,eAAe,CAACG,OAA5C,IAAuD,CAACH,eAAe,CAACI,KAD1E","sourcesContent":["import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) =>\n context.hasDeferOrStream && rawResponseData.hasNext && !rawResponseData.paths;\n"],"file":"isFirstResponseChunk.js"}
1
+ {"version":3,"sources":["../../../src/helpers/isFirstResponseChunk.ts"],"names":["rawResponseData","context","hasDeferOrStream","hasNext","paths"],"mappings":"AAGA,gBAAe,CAACA,eAAD,EAAyDC,OAAzD,KACbA,OAAO,CAACC,gBAAR,IAA4BF,eAAe,CAACG,OAA5C,IAAuD,CAACH,eAAe,CAACI,KAD1E","sourcesContent":["import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) =>\n context.hasDeferOrStream && rawResponseData.hasNext && !rawResponseData.paths;\n"],"file":"isFirstResponseChunk.mjs"}
@@ -1,2 +1,2 @@
1
1
  export default ((rawResponseData, context) => context.hasDeferOrStream && !rawResponseData.hasNext && rawResponseData.paths);
2
- //# sourceMappingURL=isLastResponseChunk.js.map
2
+ //# sourceMappingURL=isLastResponseChunk.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/helpers/isLastResponseChunk.ts"],"names":["rawResponseData","context","hasDeferOrStream","hasNext","paths"],"mappings":"AAGA,gBAAe,CAACA,eAAD,EAAyDC,OAAzD,KACbA,OAAO,CAACC,gBAAR,IAA4B,CAACF,eAAe,CAACG,OAA7C,IAAwDH,eAAe,CAACI,KAD1E","sourcesContent":["import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) =>\n context.hasDeferOrStream && !rawResponseData.hasNext && rawResponseData.paths;\n"],"file":"isLastResponseChunk.js"}
1
+ {"version":3,"sources":["../../../src/helpers/isLastResponseChunk.ts"],"names":["rawResponseData","context","hasDeferOrStream","hasNext","paths"],"mappings":"AAGA,gBAAe,CAACA,eAAD,EAAyDC,OAAzD,KACbA,OAAO,CAACC,gBAAR,IAA4B,CAACF,eAAe,CAACG,OAA7C,IAAwDH,eAAe,CAACI,KAD1E","sourcesContent":["import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) =>\n context.hasDeferOrStream && !rawResponseData.hasNext && rawResponseData.paths;\n"],"file":"isLastResponseChunk.mjs"}
@@ -1,2 +1,2 @@
1
1
  export default ((rawResponseData, context) => context.hasDeferOrStream && rawResponseData.hasNext);
2
- //# sourceMappingURL=isNotLastResponseChunk.js.map
2
+ //# sourceMappingURL=isNotLastResponseChunk.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/helpers/isNotLastResponseChunk.ts"],"names":["rawResponseData","context","hasDeferOrStream","hasNext"],"mappings":"AAGA,gBAAe,CAACA,eAAD,EAAyDC,OAAzD,KACbA,OAAO,CAACC,gBAAR,IAA4BF,eAAe,CAACG,OAD9C","sourcesContent":["import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) =>\n context.hasDeferOrStream && rawResponseData.hasNext;\n"],"file":"isNotLastResponseChunk.js"}
1
+ {"version":3,"sources":["../../../src/helpers/isNotLastResponseChunk.ts"],"names":["rawResponseData","context","hasDeferOrStream","hasNext"],"mappings":"AAGA,gBAAe,CAACA,eAAD,EAAyDC,OAAzD,KACbA,OAAO,CAACC,gBAAR,IAA4BF,eAAe,CAACG,OAD9C","sourcesContent":["import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) =>\n context.hasDeferOrStream && rawResponseData.hasNext;\n"],"file":"isNotLastResponseChunk.mjs"}
@@ -1,2 +1,2 @@
1
1
  export default ((rawResponseData, context) => !context.hasDeferOrStream && !rawResponseData.hasNext && !rawResponseData.paths);
2
- //# sourceMappingURL=isNotResponseChunk.js.map
2
+ //# sourceMappingURL=isNotResponseChunk.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/helpers/isNotResponseChunk.ts"],"names":["rawResponseData","context","hasDeferOrStream","hasNext","paths"],"mappings":"AAGA,gBAAe,CAACA,eAAD,EAAyDC,OAAzD,KACb,CAACA,OAAO,CAACC,gBAAT,IAA6B,CAACF,eAAe,CAACG,OAA9C,IAAyD,CAACH,eAAe,CAACI,KAD5E","sourcesContent":["import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) =>\n !context.hasDeferOrStream && !rawResponseData.hasNext && !rawResponseData.paths;\n"],"file":"isNotResponseChunk.js"}
1
+ {"version":3,"sources":["../../../src/helpers/isNotResponseChunk.ts"],"names":["rawResponseData","context","hasDeferOrStream","hasNext","paths"],"mappings":"AAGA,gBAAe,CAACA,eAAD,EAAyDC,OAAzD,KACb,CAACA,OAAO,CAACC,gBAAT,IAA6B,CAACF,eAAe,CAACG,OAA9C,IAAyD,CAACH,eAAe,CAACI,KAD5E","sourcesContent":["import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) =>\n !context.hasDeferOrStream && !rawResponseData.hasNext && !rawResponseData.paths;\n"],"file":"isNotResponseChunk.mjs"}
@@ -38,4 +38,4 @@ export default (responseDataSets => {
38
38
  data: {}
39
39
  });
40
40
  });
41
- //# sourceMappingURL=mergeResponseDataSets.js.map
41
+ //# sourceMappingURL=mergeResponseDataSets.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/helpers/mergeResponseDataSets.ts"],"names":["responseDataSets","reduce","acc","dataSet","index","_cacheMetadata","data","hasNext","headers","paths","length","push"],"mappings":";AAGA,gBAAgBA,gBAAD,IAA+D;AAC5E,SAAOA,gBAAgB,CAACC,MAAjB,CACL,CAACC,GAAD,EAA6CC,OAA7C,EAAsDC,KAAtD,KAAgE;AAC9D,UAAM;AAAEC,MAAAA,cAAF;AAAkBC,MAAAA,IAAlB;AAAwBC,MAAAA,OAAxB;AAAiCC,MAAAA,OAAjC;AAA0CC,MAAAA;AAA1C,QAAoDN,OAA1D;;AAEA,QAAIE,cAAJ,EAAoB;AAClBH,MAAAA,GAAG,CAACG,cAAJ,GAAqBH,GAAG,CAACG,cAAJ,GAAqB,EAAE,GAAGH,GAAG,CAACG,cAAT;AAAyB,WAAGA;AAA5B,OAArB,GAAoEA,cAAzF;AACD;;AAEDH,IAAAA,GAAG,CAACI,IAAJ,GAAWJ,GAAG,CAACI,IAAJ,GAAW,OAAMJ,GAAG,CAACI,IAAV,EAAgBA,IAAhB,CAAX,GAAmCA,IAA9C;;AAEA,QAAIF,KAAK,KAAK,CAAd,EAAiB;AACfF,MAAAA,GAAG,CAACM,OAAJ,GAAcA,OAAd;AACD;;AAED,QAAIJ,KAAK,KAAKJ,gBAAgB,CAACU,MAAjB,GAA0B,CAAxC,EAA2C;AACzCR,MAAAA,GAAG,CAACK,OAAJ,GAAcA,OAAd;AACD;;AAED,QAAIE,KAAJ,EAAW;AACT,UAAI,CAACP,GAAG,CAACO,KAAT,EAAgB;AACdP,QAAAA,GAAG,CAACO,KAAJ,GAAY,EAAZ;AACD;;AAEDP,MAAAA,GAAG,CAACO,KAAJ,CAAUE,IAAV,CAAeF,KAAK,CAAC,CAAD,CAApB;AACD;;AAED,WAAOP,GAAP;AACD,GA3BI,EA4BL;AAAEI,IAAAA,IAAI,EAAE;AAAR,GA5BK,CAAP;AA8BD,CA/BD","sourcesContent":["import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { merge } from \"lodash\";\n\nexport default (responseDataSets: RawResponseDataWithMaybeCacheMetadata[]) => {\n return responseDataSets.reduce(\n (acc: RawResponseDataWithMaybeCacheMetadata, dataSet, index) => {\n const { _cacheMetadata, data, hasNext, headers, paths } = dataSet;\n\n if (_cacheMetadata) {\n acc._cacheMetadata = acc._cacheMetadata ? { ...acc._cacheMetadata, ..._cacheMetadata } : _cacheMetadata;\n }\n\n acc.data = acc.data ? merge(acc.data, data) : data;\n\n if (index === 0) {\n acc.headers = headers;\n }\n\n if (index === responseDataSets.length - 1) {\n acc.hasNext = hasNext;\n }\n\n if (paths) {\n if (!acc.paths) {\n acc.paths = [];\n }\n\n acc.paths.push(paths[0]);\n }\n\n return acc;\n },\n { data: {} },\n );\n};\n"],"file":"mergeResponseDataSets.js"}
1
+ {"version":3,"sources":["../../../src/helpers/mergeResponseDataSets.ts"],"names":["responseDataSets","reduce","acc","dataSet","index","_cacheMetadata","data","hasNext","headers","paths","length","push"],"mappings":";AAGA,gBAAgBA,gBAAD,IAA+D;AAC5E,SAAOA,gBAAgB,CAACC,MAAjB,CACL,CAACC,GAAD,EAA6CC,OAA7C,EAAsDC,KAAtD,KAAgE;AAC9D,UAAM;AAAEC,MAAAA,cAAF;AAAkBC,MAAAA,IAAlB;AAAwBC,MAAAA,OAAxB;AAAiCC,MAAAA,OAAjC;AAA0CC,MAAAA;AAA1C,QAAoDN,OAA1D;;AAEA,QAAIE,cAAJ,EAAoB;AAClBH,MAAAA,GAAG,CAACG,cAAJ,GAAqBH,GAAG,CAACG,cAAJ,GAAqB,EAAE,GAAGH,GAAG,CAACG,cAAT;AAAyB,WAAGA;AAA5B,OAArB,GAAoEA,cAAzF;AACD;;AAEDH,IAAAA,GAAG,CAACI,IAAJ,GAAWJ,GAAG,CAACI,IAAJ,GAAW,OAAMJ,GAAG,CAACI,IAAV,EAAgBA,IAAhB,CAAX,GAAmCA,IAA9C;;AAEA,QAAIF,KAAK,KAAK,CAAd,EAAiB;AACfF,MAAAA,GAAG,CAACM,OAAJ,GAAcA,OAAd;AACD;;AAED,QAAIJ,KAAK,KAAKJ,gBAAgB,CAACU,MAAjB,GAA0B,CAAxC,EAA2C;AACzCR,MAAAA,GAAG,CAACK,OAAJ,GAAcA,OAAd;AACD;;AAED,QAAIE,KAAJ,EAAW;AACT,UAAI,CAACP,GAAG,CAACO,KAAT,EAAgB;AACdP,QAAAA,GAAG,CAACO,KAAJ,GAAY,EAAZ;AACD;;AAEDP,MAAAA,GAAG,CAACO,KAAJ,CAAUE,IAAV,CAAeF,KAAK,CAAC,CAAD,CAApB;AACD;;AAED,WAAOP,GAAP;AACD,GA3BI,EA4BL;AAAEI,IAAAA,IAAI,EAAE;AAAR,GA5BK,CAAP;AA8BD,CA/BD","sourcesContent":["import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { merge } from \"lodash\";\n\nexport default (responseDataSets: RawResponseDataWithMaybeCacheMetadata[]) => {\n return responseDataSets.reduce(\n (acc: RawResponseDataWithMaybeCacheMetadata, dataSet, index) => {\n const { _cacheMetadata, data, hasNext, headers, paths } = dataSet;\n\n if (_cacheMetadata) {\n acc._cacheMetadata = acc._cacheMetadata ? { ...acc._cacheMetadata, ..._cacheMetadata } : _cacheMetadata;\n }\n\n acc.data = acc.data ? merge(acc.data, data) : data;\n\n if (index === 0) {\n acc.headers = headers;\n }\n\n if (index === responseDataSets.length - 1) {\n acc.hasNext = hasNext;\n }\n\n if (paths) {\n if (!acc.paths) {\n acc.paths = [];\n }\n\n acc.paths.push(paths[0]);\n }\n\n return acc;\n },\n { data: {} },\n );\n};\n"],"file":"mergeResponseDataSets.mjs"}
@@ -14,4 +14,4 @@ export default ((rawResponseData, context) => {
14
14
  paths
15
15
  };
16
16
  });
17
- //# sourceMappingURL=normalizePatchResponseData.js.map
17
+ //# sourceMappingURL=normalizePatchResponseData.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/helpers/normalizePatchResponseData.ts"],"names":["rawResponseData","context","normalizePatchResponseData","data","paths","rest"],"mappings":";AAIA,gBAAe,CAACA,eAAD,EAAyDC,OAAzD,KAA0F;AACvG,MAAI,CAACA,OAAO,CAACC,0BAAb,EAAyC;AACvC,WAAOF,eAAP;AACD;;AAED,QAAM;AAAEG,IAAAA,IAAF;AAAQC,IAAAA,KAAR;AAAe,OAAGC;AAAlB,MAA2BL,eAAjC;AAEA,SAAO,EACL,GAAGK,IADE;AAELF,IAAAA,IAAI,EAAE,KAAI,EAAJ,EAASC,KAAD,CAAoB,CAApB,CAAR,EAAgCD,IAAhC,CAFD;AAGLC,IAAAA;AAHK,GAAP;AAKD,CAZD","sourcesContent":["import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { set } from \"lodash\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) => {\n if (!context.normalizePatchResponseData) {\n return rawResponseData;\n }\n\n const { data, paths, ...rest } = rawResponseData;\n\n return {\n ...rest,\n data: set({}, (paths as string[])[0], data),\n paths,\n };\n};\n"],"file":"normalizePatchResponseData.js"}
1
+ {"version":3,"sources":["../../../src/helpers/normalizePatchResponseData.ts"],"names":["rawResponseData","context","normalizePatchResponseData","data","paths","rest"],"mappings":";AAIA,gBAAe,CAACA,eAAD,EAAyDC,OAAzD,KAA0F;AACvG,MAAI,CAACA,OAAO,CAACC,0BAAb,EAAyC;AACvC,WAAOF,eAAP;AACD;;AAED,QAAM;AAAEG,IAAAA,IAAF;AAAQC,IAAAA,KAAR;AAAe,OAAGC;AAAlB,MAA2BL,eAAjC;AAEA,SAAO,EACL,GAAGK,IADE;AAELF,IAAAA,IAAI,EAAE,KAAI,EAAJ,EAASC,KAAD,CAAoB,CAApB,CAAR,EAAgCD,IAAhC,CAFD;AAGLC,IAAAA;AAHK,GAAP;AAKD,CAZD","sourcesContent":["import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { set } from \"lodash\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) => {\n if (!context.normalizePatchResponseData) {\n return rawResponseData;\n }\n\n const { data, paths, ...rest } = rawResponseData;\n\n return {\n ...rest,\n data: set({}, (paths as string[])[0], data),\n paths,\n };\n};\n"],"file":"normalizePatchResponseData.mjs"}
@@ -5,4 +5,4 @@ export const getValidTypeIDValue = (requestFieldPathData, {
5
5
  const requestFieldPathDataIDValue = _isPlainObject(requestFieldPathData) ? requestFieldPathData[typeIDKey] : undefined;
6
6
  return typeIDValue || requestFieldPathDataIDValue;
7
7
  };
8
- //# sourceMappingURL=validTypeIDValue.js.map
8
+ //# sourceMappingURL=validTypeIDValue.mjs.map
@@ -1 +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"}
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.mjs"}
@@ -1,3 +1,3 @@
1
1
  export * from "./defs";
2
2
  export { default } from "./main";
3
- //# sourceMappingURL=index.js.map
3
+ //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":["default"],"mappings":"AAAA,cAAc,QAAd;AACA,SAASA,OAAT,QAAwB,QAAxB","sourcesContent":["export * from \"./defs\";\nexport { default } from \"./main\";\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/index.ts"],"names":["default"],"mappings":"AAAA,cAAc,QAAd;AACA,SAASA,OAAT,QAAwB,QAAxB","sourcesContent":["export * from \"./defs\";\nexport { default } from \"./main\";\n"],"file":"index.mjs"}
@@ -1069,4 +1069,4 @@ let CacheManager = (_dec = logCacheQuery(), _dec2 = logCacheEntry(), _dec3 = log
1069
1069
 
1070
1070
  }, (_applyDecoratedDescriptor(_class.prototype, "_getCacheEntry", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "_getCacheEntry"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "_setCacheEntry", [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, "_setCacheEntry"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "_setPartialQueryResponse", [_dec3], Object.getOwnPropertyDescriptor(_class.prototype, "_setPartialQueryResponse"), _class.prototype)), _class));
1071
1071
  export { CacheManager as default };
1072
- //# sourceMappingURL=index.js.map
1072
+ //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/main/index.ts"],"names":["DATA_ENTITIES","DEFAULT_TYPE_ID_KEY","QUERY","QUERY_RESPONSES","REQUEST_FIELD_PATHS","TYPE_NAME_KEY","FRAGMENT_SPREAD","buildFieldKeysAndPaths","dehydrateCacheMetadata","getChildFields","getFragmentDefinitions","getOperationDefinitions","hasChildFields","hashRequest","iterateChildFields","mergeObjects","rehydrateCacheMetadata","Cacheability","print","CACHE_CONTROL","HEADER_NO_CACHE","METADATA","NO_CACHE","logCacheEntry","logCacheQuery","logPartialCompiled","areOnlyPopulatedFieldsTypeIdKeys","deriveOpCacheability","filterOutPropsWithArgsOrDirectives","filterQuery","isLastResponseChunk","isNotLastResponseChunk","isNotResponseChunk","mergeResponseDataSets","normalizePatchResponseData","getValidTypeIDValue","CacheManager","_countFieldPathChecklist","fieldPathChecklist","fieldCount","missing","total","forEach","checklistValues","length","filter","hasData","_getFieldDataFromAncestor","ancestorFieldData","propNameOrIndex","undefined","_getOperationCacheControl","cacheMetadata","operation","defaultCacheControl","cacheability","get","printCacheControl","_isNodeEntity","fieldTypeInfo","isEntity","possibleTypes","some","type","_isNodeRequestFieldPath","hasArguments","hasDirectives","_isValid","noCache","checkTTL","_mergeResponseCacheMetadata","partialQueryResponse","Map","_setCachedData","requestData","data","objectLikeData","_setCachedResponseData","cachedFieldData","requestFieldPath","typeNamesAndKind","_options","_setCacheMetadata","_setFieldPathChecklist","set","operationCacheability","metadata","ttl","dataTypeName","fieldTypeName","fragmentKind","fragmentName","has","entry","typeName","constructor","options","errors","cache","push","TypeError","typeCacheDirectives","message","_cache","_cascadeCacheControl","cascadeCacheControl","_fallbackOperationCacheability","fallbackOperationCacheability","_typeCacheDirectives","_typeIDKey","typeIDKey","analyzeQuery","context","ast","hash","Promise","reject","cacheManagerContext","fragmentDefinitions","cachedResponseData","_retrieveCachedResponseData","updated","dataCaching","_setQueryResponseCacheEntry","awaitDataCaching","response","filteredAST","filteredRequest","rest","_setPartialQueryResponse","request","cacheQuery","updatedRequestData","rawResponseData","_cacheResponse","cacheResponse","checkCacheEntry","cacheType","_checkCacheEntry","checkQueryResponseCacheEntry","result","deletePartialQueryResponse","_partialQueryResponses","delete","setQueryResponseCacheEntry","responseData","_analyzeFieldNode","fieldNode","cachedAncestorFieldData","_analyzeParentFieldNode","_analyzeLeafFieldNode","keysAndPaths","hashedRequestFieldCacheKey","requestFieldCacheKey","fieldTypeMap","entityData","requestFieldPathData","__typename","_retrieveCachedRequestFieldPathData","_retrieveCachedParentNodeData","promises","childField","childTypeName","childFragmentKind","childFragmentName","childIndex","index","all","_buildCacheMetadata","otherProps","_createCacheMetadata","queryNode","fieldsAndTypeNames","_setFieldCacheability","normalizedResponseData","responseDataForCaching","_setResponseChunksAwaitingCaching","_retrieveResponseDataForCaching","_setEntityAndRequestFieldPathCacheEntries","queryCacheMetadata","queryData","queryFiltered","_getPartialQueryResponse","_mergeResponseData","hasNext","paths","_hasCacheEntry","_getCacheEntry","error","_cacheMetadata","headers","fallback","_context","_isFieldEntity","fieldData","_mergeObjects","obj","src","_key","val","_parseEntityAndRequestFieldPathCacheEntryData","field","ancestorKeysAndPaths","responseDataPath","_typeName","_fragmentKind","_fragmentName","_setEntityAndRequestFieldPathCacheEntry","_retrieveCachedEntityData","validTypeIDValue","typeNames","map","checkResults","name","validResults","validResult","sort","a","b","reduce","ancestorEntityData","ancestorRequestFieldPathData","entryCacheability","responseChunks","_responseChunksAwaitingCaching","requestID","_setCacheEntry","value","cachemapOptions","operationNode","_setRequestFieldPathCacheEntry","_setEntityCacheEntry","entityDataKey","cacheHeaders","cacheControl","tag","__cacheKey","ancestorRequestFieldPath","_setFieldTypeCacheDirective","dehydratedCacheMetadata","hasArgsOrDirectives","selectionSet","selections"],"mappings":"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","sourcesContent":["import Cachemap from \"@cachemap/core\";\nimport {\n CacheMetadata,\n CacheTypes,\n CachemapOptions,\n DATA_ENTITIES,\n DEFAULT_TYPE_ID_KEY,\n FieldTypeInfo,\n PlainObjectMap,\n PlainObjectStringMap,\n QUERY,\n QUERY_RESPONSES,\n REQUEST_FIELD_PATHS,\n RawResponseDataWithMaybeCacheMetadata,\n RequestContext,\n RequestData,\n RequestOptions,\n ResponseData,\n TYPE_NAME_KEY,\n} from \"@graphql-box/core\";\nimport {\n FRAGMENT_SPREAD,\n KeysAndPaths,\n buildFieldKeysAndPaths,\n dehydrateCacheMetadata,\n getChildFields,\n getFragmentDefinitions,\n getOperationDefinitions,\n hasChildFields,\n hashRequest,\n iterateChildFields,\n mergeObjects,\n rehydrateCacheMetadata,\n} from \"@graphql-box/helpers\";\nimport Cacheability from \"cacheability\";\nimport { FieldNode, print } from \"graphql\";\nimport { assign, cloneDeep, get, isArray, isObjectLike, isPlainObject, isUndefined, set, unset } from \"lodash\";\nimport { CACHE_CONTROL, HEADER_NO_CACHE, METADATA, NO_CACHE } from \"../consts\";\nimport { logCacheEntry, logCacheQuery, logPartialCompiled } from \"../debug\";\nimport {\n AnalyzeQueryResult,\n AncestorKeysAndPaths,\n CacheManagerContext,\n CacheManagerDef,\n CachedAncestorFieldData,\n CachedResponseData,\n CheckCacheEntryResult,\n DataForCachingEntry,\n FieldCount,\n FieldPathChecklist,\n FieldPathChecklistValue,\n MergedCachedFieldData,\n PartialQueryResponse,\n PartialQueryResponses,\n QueryResponseCacheEntry,\n ResponseDataForCaching,\n TypeNamesAndKind,\n UserOptions,\n} from \"../defs\";\nimport areOnlyPopulatedFieldsTypeIdKeys from \"../helpers/areOnlyPopulatedFieldsTypeIdKeys\";\nimport deriveOpCacheability from \"../helpers/deriveOpCacheability\";\nimport filterOutPropsWithArgsOrDirectives from \"../helpers/filterOutPropsWithArgsOrDirectives\";\nimport filterQuery from \"../helpers/filterQuery\";\nimport isLastResponseChunk from \"../helpers/isLastResponseChunk\";\nimport isNotLastResponseChunk from \"../helpers/isNotLastResponseChunk\";\nimport isNotResponseChunk from \"../helpers/isNotResponseChunk\";\nimport mergeResponseDataSets from \"../helpers/mergeResponseDataSets\";\nimport normalizePatchResponseData from \"../helpers/normalizePatchResponseData\";\nimport { getValidTypeIDValue } from \"../helpers/validTypeIDValue\";\n\nexport default class CacheManager implements CacheManagerDef {\n private static _countFieldPathChecklist(fieldPathChecklist: FieldPathChecklist): FieldCount {\n const fieldCount: FieldCount = { missing: 0, total: 0 };\n\n fieldPathChecklist.forEach(checklistValues => {\n fieldCount.total += checklistValues.length;\n const missing = checklistValues.filter(({ hasData }) => !hasData);\n fieldCount.missing += missing.length;\n });\n\n return fieldCount;\n }\n\n private static _getFieldDataFromAncestor(ancestorFieldData: any, propNameOrIndex: string | number): any {\n return isObjectLike(ancestorFieldData) ? cloneDeep(ancestorFieldData[propNameOrIndex]) : undefined;\n }\n\n private static _getOperationCacheControl(cacheMetadata: CacheMetadata | undefined, operation: string): string {\n const defaultCacheControl = HEADER_NO_CACHE;\n\n if (!cacheMetadata) {\n return defaultCacheControl;\n }\n\n const cacheability = cacheMetadata.get(operation);\n return cacheability ? cacheability.printCacheControl() : defaultCacheControl;\n }\n\n private static _isNodeEntity(fieldTypeInfo?: FieldTypeInfo): boolean {\n if (!fieldTypeInfo) {\n return false;\n }\n\n const { isEntity, possibleTypes } = fieldTypeInfo;\n return isEntity || possibleTypes.some(type => !!type.isEntity);\n }\n\n private static _isNodeRequestFieldPath(fieldTypeInfo?: FieldTypeInfo): boolean {\n return (\n !!fieldTypeInfo &&\n (this._isNodeEntity(fieldTypeInfo) || fieldTypeInfo.hasArguments || fieldTypeInfo.hasDirectives)\n );\n }\n\n private static _isValid(cacheability: Cacheability): boolean {\n const noCache = get(cacheability, [METADATA, CACHE_CONTROL, NO_CACHE], false);\n return !noCache && cacheability.checkTTL();\n }\n\n private static _mergeResponseCacheMetadata(\n cacheMetadata: CacheMetadata,\n partialQueryResponse?: PartialQueryResponse,\n ): CacheMetadata {\n if (!partialQueryResponse) {\n return cacheMetadata;\n }\n\n return new Map([...partialQueryResponse.cacheMetadata, ...cacheMetadata]);\n }\n\n private static _setCachedData(\n requestData: PlainObjectMap,\n { data }: MergedCachedFieldData,\n propNameOrIndex: string | number,\n ): void {\n if (!isObjectLike(data) && !isUndefined(data)) {\n requestData[propNameOrIndex] = data as string | number | boolean | null;\n } else if (isObjectLike(data)) {\n const objectLikeData = data as PlainObjectMap | any[];\n requestData[propNameOrIndex] = isArray(objectLikeData) ? [] : {};\n }\n }\n\n private static _setCachedResponseData(\n cachedFieldData: MergedCachedFieldData,\n { cacheMetadata, data, fieldPathChecklist }: CachedResponseData,\n { propNameOrIndex, requestFieldPath }: KeysAndPaths,\n typeNamesAndKind: TypeNamesAndKind,\n _options: RequestOptions,\n { operation }: CacheManagerContext,\n ) {\n CacheManager._setCacheMetadata(cacheMetadata, cachedFieldData.cacheability, requestFieldPath, operation);\n CacheManager._setFieldPathChecklist(fieldPathChecklist, cachedFieldData, requestFieldPath, typeNamesAndKind);\n CacheManager._setCachedData(data, cachedFieldData, propNameOrIndex);\n }\n\n private static _setCacheMetadata(\n cacheMetadata: CacheMetadata,\n cacheability: Cacheability | undefined,\n requestFieldPath: string,\n operation: string,\n ): void {\n if (!cacheability) {\n return;\n }\n\n cacheMetadata.set(requestFieldPath, cacheability);\n const operationCacheability = cacheMetadata.get(operation);\n\n if (!operationCacheability || operationCacheability.metadata.ttl > cacheability.metadata.ttl) {\n cacheMetadata.set(operation, cacheability);\n }\n }\n\n private static _setFieldPathChecklist(\n fieldPathChecklist: FieldPathChecklist,\n { data }: MergedCachedFieldData,\n requestFieldPath: string,\n { dataTypeName, fieldTypeName, fragmentKind, fragmentName }: TypeNamesAndKind,\n ): void {\n if (isUndefined(fieldTypeName) || fragmentKind === FRAGMENT_SPREAD) {\n if (fieldPathChecklist.has(requestFieldPath)) {\n return;\n }\n\n fieldPathChecklist.set(requestFieldPath, [{ fragmentKind, fragmentName, hasData: !isUndefined(data) }]);\n return;\n }\n\n if (dataTypeName !== fieldTypeName) {\n return;\n }\n\n const entry = fieldPathChecklist.get(requestFieldPath);\n const checklistValues = entry ? (entry as FieldPathChecklistValue[]) : [];\n\n if (checklistValues.some(({ typeName }) => typeName === dataTypeName)) {\n return;\n }\n\n fieldPathChecklist.set(requestFieldPath, [\n ...checklistValues,\n { fragmentKind, fragmentName, hasData: !isUndefined(data), typeName: dataTypeName as string },\n ]);\n }\n\n private _cache: Cachemap;\n private _cascadeCacheControl: boolean;\n private _fallbackOperationCacheability: string;\n private _partialQueryResponses: PartialQueryResponses = new Map();\n private _responseChunksAwaitingCaching: Map<string, RawResponseDataWithMaybeCacheMetadata[]> = new Map();\n private _typeCacheDirectives: PlainObjectStringMap;\n private _typeIDKey: string;\n\n constructor(options: UserOptions) {\n const errors: TypeError[] = [];\n\n if (!options.cache) {\n errors.push(new TypeError(\"@graphql-box/cache-manager expected options.cache.\"));\n }\n\n if (!!options.typeCacheDirectives && !isPlainObject(options.typeCacheDirectives)) {\n const message = \"@graphql-box/cache-manager expected options.typeCacheDirectives to be a plain object.\";\n errors.push(new TypeError(message));\n }\n\n if (errors.length) {\n throw errors;\n }\n\n this._cache = options.cache;\n this._cascadeCacheControl = options.cascadeCacheControl || false;\n this._fallbackOperationCacheability = options.fallbackOperationCacheability || NO_CACHE;\n this._typeCacheDirectives = options.typeCacheDirectives || {};\n this._typeIDKey = options.typeIDKey ?? DEFAULT_TYPE_ID_KEY;\n }\n\n get cache(): Cachemap {\n return this._cache;\n }\n\n public async analyzeQuery(\n requestData: RequestData,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<AnalyzeQueryResult> {\n const { ast, hash } = requestData;\n\n if (!ast) {\n return Promise.reject(new TypeError(\"@graphql-box/cache-manager expected an AST.\"));\n }\n\n const cacheManagerContext: CacheManagerContext = {\n ...context,\n fragmentDefinitions: getFragmentDefinitions(ast),\n typeIDKey: this._typeIDKey,\n };\n\n const cachedResponseData = await this._retrieveCachedResponseData(requestData, options, cacheManagerContext);\n const { cacheMetadata, data, fieldCount } = cachedResponseData;\n\n // Second half of check is required for the scenario where the only matching data is\n // the typeIDKey field, i.e. \"id\", in which case there is no point settings a partial\n // query reponse because we request the typeIDKey field with every request.\n if (fieldCount.missing === fieldCount.total || areOnlyPopulatedFieldsTypeIdKeys(data, this._typeIDKey)) {\n return { updated: requestData };\n }\n\n if (!fieldCount.missing) {\n const dataCaching = this._setQueryResponseCacheEntry(hash, { cacheMetadata, data }, options, cacheManagerContext);\n\n if (options.awaitDataCaching) {\n await dataCaching;\n }\n\n return { response: { cacheMetadata, data } };\n }\n\n const filteredAST = filterQuery(requestData, cachedResponseData, cacheManagerContext);\n const filteredRequest = print(filteredAST);\n const { fragmentDefinitions, typeIDKey, ...rest } = cacheManagerContext;\n assign(context, { ...rest, filteredRequest });\n this._setPartialQueryResponse(hash, { cacheMetadata, data }, options, context);\n return { updated: { ast: filteredAST, hash: hashRequest(filteredRequest), request: filteredRequest } };\n }\n\n public async cacheQuery(\n requestData: RequestData,\n updatedRequestData: RequestData | undefined,\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<ResponseData> {\n const cacheManagerContext: CacheManagerContext = {\n ...context,\n fragmentDefinitions: getFragmentDefinitions((updatedRequestData ?? requestData).ast),\n typeIDKey: this._typeIDKey,\n };\n\n return this._cacheResponse(requestData, updatedRequestData, rawResponseData, options, cacheManagerContext);\n }\n\n public async cacheResponse(\n requestData: RequestData,\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<ResponseData> {\n const cacheManagerContext: CacheManagerContext = {\n ...context,\n fragmentDefinitions: getFragmentDefinitions(requestData.ast),\n typeIDKey: this._typeIDKey,\n };\n\n return this._cacheResponse(requestData, undefined, rawResponseData, options, cacheManagerContext);\n }\n\n public async checkCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n options: RequestOptions,\n context: RequestContext & { requestFieldCacheKey?: string },\n ): Promise<CheckCacheEntryResult | false> {\n return this._checkCacheEntry(cacheType, hash, options, context);\n }\n\n public async checkQueryResponseCacheEntry(\n hash: string,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<ResponseData | false> {\n const result = await this._checkCacheEntry(QUERY_RESPONSES, hash, options, context);\n\n if (!result) {\n return false;\n }\n\n const { cacheMetadata, data } = result.entry as QueryResponseCacheEntry;\n\n return {\n cacheMetadata: rehydrateCacheMetadata(cacheMetadata),\n data,\n };\n }\n\n public deletePartialQueryResponse(hash: string): void {\n this._partialQueryResponses.delete(hash);\n }\n\n public async setQueryResponseCacheEntry(\n requestData: RequestData,\n responseData: ResponseData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n return this._setQueryResponseCacheEntry(requestData.hash, responseData, options, context);\n }\n\n private async _analyzeFieldNode(\n fieldNode: FieldNode,\n cachedAncestorFieldData: CachedAncestorFieldData,\n cachedResponseData: CachedResponseData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n if (hasChildFields(fieldNode, { fragmentDefinitions: context.fragmentDefinitions })) {\n await this._analyzeParentFieldNode(fieldNode, cachedAncestorFieldData, cachedResponseData, options, context);\n } else {\n await this._analyzeLeafFieldNode(fieldNode, cachedAncestorFieldData, cachedResponseData, options, context);\n }\n }\n\n private async _analyzeLeafFieldNode(\n fieldNode: FieldNode,\n cachedAncestorFieldData: CachedAncestorFieldData,\n cachedResponseData: CachedResponseData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n const keysAndPaths = buildFieldKeysAndPaths(fieldNode, cachedAncestorFieldData, context);\n const { hashedRequestFieldCacheKey, propNameOrIndex, requestFieldCacheKey, requestFieldPath } = keysAndPaths;\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n const { entityData, fragmentKind, fragmentName, requestFieldPathData, typeName } = cachedAncestorFieldData;\n\n const typeNamesAndKind = {\n dataTypeName: entityData?.__typename || requestFieldPathData?.__typename,\n fieldTypeName: typeName,\n fragmentKind,\n fragmentName,\n };\n\n if (CacheManager._isNodeRequestFieldPath(fieldTypeInfo)) {\n const { cacheability, entry } = await this._retrieveCachedRequestFieldPathData(\n hashedRequestFieldCacheKey,\n requestFieldCacheKey,\n options,\n context,\n );\n\n CacheManager._setCachedResponseData(\n { cacheability, data: entry },\n cachedResponseData,\n keysAndPaths,\n typeNamesAndKind,\n options,\n context,\n );\n } else {\n const cachedFieldData =\n CacheManager._getFieldDataFromAncestor(entityData, propNameOrIndex) ||\n CacheManager._getFieldDataFromAncestor(requestFieldPathData, propNameOrIndex);\n\n CacheManager._setFieldPathChecklist(\n cachedResponseData.fieldPathChecklist,\n { data: cachedFieldData },\n requestFieldPath,\n typeNamesAndKind,\n );\n\n CacheManager._setCachedData(cachedResponseData.data, { data: cachedFieldData }, propNameOrIndex);\n }\n }\n\n private async _analyzeParentFieldNode(\n fieldNode: FieldNode,\n cachedAncestorFieldData: CachedAncestorFieldData,\n cachedResponseData: CachedResponseData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n const keysAndPaths = buildFieldKeysAndPaths(fieldNode, cachedAncestorFieldData, context);\n const { propNameOrIndex, requestFieldCacheKey, requestFieldPath } = keysAndPaths;\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath) as FieldTypeInfo;\n\n const { cacheability, data, entityData, requestFieldPathData } = await this._retrieveCachedParentNodeData(\n cachedAncestorFieldData,\n keysAndPaths,\n fieldTypeInfo,\n options,\n context,\n );\n\n const { fragmentKind, fragmentName, typeName } = cachedAncestorFieldData;\n\n CacheManager._setCachedResponseData(\n { cacheability, data },\n cachedResponseData,\n keysAndPaths,\n { dataTypeName: get(data, TYPE_NAME_KEY), fieldTypeName: typeName, fragmentKind, fragmentName },\n options,\n context,\n );\n\n if (!isObjectLike(data)) {\n return;\n }\n\n const objectLikeData = data as PlainObjectMap | any[];\n const promises: Promise<void>[] = [];\n\n iterateChildFields(\n fieldNode,\n objectLikeData,\n context.fragmentDefinitions,\n (\n childField: FieldNode,\n childTypeName: string | undefined,\n childFragmentKind: string | undefined,\n childFragmentName: string | undefined,\n childIndex?: number,\n ) => {\n promises.push(\n this._analyzeFieldNode(\n childField,\n {\n cacheability,\n entityData,\n fragmentKind: childFragmentKind,\n fragmentName: childFragmentName,\n index: childIndex,\n requestFieldCacheKey,\n requestFieldPath,\n requestFieldPathData,\n typeName: childTypeName,\n },\n { ...cachedResponseData, data: cachedResponseData.data[propNameOrIndex] },\n options,\n context,\n ),\n );\n },\n );\n\n await Promise.all(promises);\n }\n\n private _buildCacheMetadata(\n { ast }: RequestData,\n { data, ...otherProps }: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: CacheManagerContext,\n ): CacheMetadata {\n const cacheMetadata = this._createCacheMetadata({ data, ...otherProps }, context);\n const queryNode = getOperationDefinitions(ast, context.operation)[0];\n const fieldsAndTypeNames = getChildFields(queryNode);\n\n if (!fieldsAndTypeNames) {\n return cacheMetadata;\n }\n\n fieldsAndTypeNames.forEach(({ fieldNode }) =>\n this._setFieldCacheability(\n fieldNode,\n { requestFieldPath: context.operation },\n { cacheMetadata, data },\n options,\n context,\n ),\n );\n\n return cacheMetadata;\n }\n\n private async _cacheResponse(\n requestData: RequestData,\n updatedRequestData: RequestData | undefined,\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<ResponseData> {\n const normalizedResponseData = normalizePatchResponseData(rawResponseData, context);\n let responseDataForCaching: RawResponseDataWithMaybeCacheMetadata | undefined = normalizedResponseData;\n\n if (isNotLastResponseChunk(rawResponseData, context)) {\n this._setResponseChunksAwaitingCaching(normalizedResponseData, context);\n responseDataForCaching = undefined;\n }\n\n if (isLastResponseChunk(rawResponseData, context)) {\n responseDataForCaching = this._retrieveResponseDataForCaching(normalizedResponseData, context);\n }\n\n const dataCaching: Promise<void>[] = [];\n\n if (responseDataForCaching) {\n const { data } = responseDataForCaching;\n const cacheMetadata = this._buildCacheMetadata(requestData, responseDataForCaching, options, context);\n\n dataCaching.push(\n this._setEntityAndRequestFieldPathCacheEntries(\n requestData,\n {\n cacheMetadata,\n entityData: cloneDeep(data),\n requestFieldPathData: cloneDeep(data),\n },\n options,\n context,\n ),\n );\n\n let queryCacheMetadata: CacheMetadata | undefined;\n let queryData: PlainObjectMap | undefined;\n\n if (context.operation === QUERY) {\n let partialQueryResponse: PartialQueryResponse | undefined;\n\n if (context.queryFiltered && updatedRequestData) {\n dataCaching.push(\n this._setQueryResponseCacheEntry(updatedRequestData.hash, { cacheMetadata, data }, options, context),\n );\n\n partialQueryResponse = this._getPartialQueryResponse(requestData.hash);\n }\n\n queryCacheMetadata = CacheManager._mergeResponseCacheMetadata(cacheMetadata, partialQueryResponse);\n queryData = this._mergeResponseData(data, partialQueryResponse);\n\n dataCaching.push(\n this._setQueryResponseCacheEntry(\n requestData.hash,\n { cacheMetadata: queryCacheMetadata, data: queryData },\n options,\n context,\n ),\n );\n }\n\n if (options.awaitDataCaching) {\n await Promise.all(dataCaching);\n }\n\n if (isNotResponseChunk(normalizedResponseData, context) && queryCacheMetadata && queryData) {\n return {\n cacheMetadata: queryCacheMetadata,\n data: queryData,\n };\n }\n }\n\n const { data, hasNext, paths } = normalizedResponseData;\n\n return {\n cacheMetadata: this._buildCacheMetadata(requestData, normalizedResponseData, options, context),\n data,\n hasNext,\n paths,\n };\n }\n\n private async _checkCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n options: RequestOptions,\n context: CacheManagerContext & { requestFieldCacheKey?: string },\n ): Promise<CheckCacheEntryResult | false> {\n try {\n const cacheability = await this._hasCacheEntry(cacheType, hash);\n\n if (!cacheability || !CacheManager._isValid(cacheability)) {\n return false;\n }\n\n const entry = await this._getCacheEntry(cacheType, hash, options, context);\n\n if (isUndefined(entry)) {\n return false;\n }\n\n return { cacheability, entry };\n } catch (error) {\n return false;\n }\n }\n\n private _createCacheMetadata(\n { _cacheMetadata, headers }: RawResponseDataWithMaybeCacheMetadata,\n { operation }: CacheManagerContext,\n ): CacheMetadata {\n const cacheMetadata = new Map();\n\n const cacheability = deriveOpCacheability({\n _cacheMetadata,\n fallback: this._fallbackOperationCacheability,\n headers,\n });\n\n cacheMetadata.set(operation, cacheability);\n\n if (_cacheMetadata) {\n rehydrateCacheMetadata(_cacheMetadata, cacheMetadata);\n }\n\n return cacheMetadata;\n }\n\n @logCacheQuery()\n private async _getCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n _options: RequestOptions,\n _context: CacheManagerContext & { requestFieldCacheKey?: string },\n ): Promise<any> {\n try {\n return await this._cache.get(`${cacheType}::${hash}`);\n } catch (errors) {\n return Promise.reject(errors);\n }\n }\n\n private _getPartialQueryResponse(hash: string): PartialQueryResponse | undefined {\n const partialQueryResponse = this._partialQueryResponses.get(hash);\n this._partialQueryResponses.delete(hash);\n return partialQueryResponse;\n }\n\n private async _hasCacheEntry(cacheType: CacheTypes, hash: string): Promise<Cacheability | false> {\n try {\n return await this._cache.has(`${cacheType}::${hash}`);\n } catch (error) {\n return false;\n }\n }\n\n private _isFieldEntity(fieldData: any, { isEntity, possibleTypes }: FieldTypeInfo): boolean {\n if (!get(fieldData, this._typeIDKey, null)) {\n return false;\n }\n\n if (isEntity) {\n return true;\n }\n\n if (!possibleTypes.length) {\n return false;\n }\n\n return possibleTypes.some(type => type.typeName === fieldData.__typename);\n }\n\n private _mergeObjects<T>(obj: T, src: T): T {\n return mergeObjects(obj, src, (_key: string, val: any): string | number | undefined => {\n return isPlainObject(val) && val[this._typeIDKey] ? val[this._typeIDKey] : undefined;\n });\n }\n\n private _mergeResponseData(\n responseData: PlainObjectMap,\n partialQueryResponse?: PartialQueryResponse,\n ): PlainObjectMap {\n if (!partialQueryResponse) {\n return responseData;\n }\n\n return this._mergeObjects(partialQueryResponse.data, responseData);\n }\n\n private async _parseEntityAndRequestFieldPathCacheEntryData(\n field: FieldNode,\n ancestorKeysAndPaths: AncestorKeysAndPaths,\n { cacheMetadata, entityData, requestFieldPathData }: ResponseDataForCaching,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n const keysAndPaths = buildFieldKeysAndPaths(field, ancestorKeysAndPaths, context);\n const { requestFieldCacheKey, requestFieldPath, responseDataPath } = keysAndPaths;\n const fieldData = get(requestFieldPathData, responseDataPath);\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n\n if (!isObjectLike(fieldData) && !fieldTypeInfo?.hasDirectives) {\n return;\n }\n\n if (isObjectLike(fieldData)) {\n const promises: Promise<void>[] = [];\n\n iterateChildFields(\n field,\n fieldData as PlainObjectMap | any[],\n context.fragmentDefinitions,\n (\n childField: FieldNode,\n _typeName: string | undefined,\n _fragmentKind: string | undefined,\n _fragmentName: string | undefined,\n childIndex?: number,\n ) => {\n promises.push(\n this._parseEntityAndRequestFieldPathCacheEntryData(\n childField,\n { index: childIndex, requestFieldCacheKey, requestFieldPath, responseDataPath },\n { cacheMetadata, entityData, requestFieldPathData },\n options,\n context,\n ),\n );\n },\n );\n\n await Promise.all(promises);\n }\n\n await this._setEntityAndRequestFieldPathCacheEntry(\n field,\n keysAndPaths,\n { cacheMetadata, entityData, requestFieldPathData },\n options,\n context,\n );\n }\n\n private async _retrieveCachedEntityData(\n validTypeIDValue: string | number,\n { possibleTypes, typeName }: FieldTypeInfo,\n options: RequestOptions,\n context: CacheManagerContext,\n ) {\n const typeNames = [...possibleTypes.map(type => type.typeName), typeName];\n\n const checkResults = await Promise.all(\n typeNames.map(name => this._checkCacheEntry(DATA_ENTITIES, `${name}::${validTypeIDValue}`, options, context)),\n );\n\n const validResults = checkResults.filter(result => !!result) as CheckCacheEntryResult[];\n let validResult: CheckCacheEntryResult | undefined;\n\n if (validResults.length === 1) {\n validResult = validResults[0];\n } else if (validResults.length > 1) {\n validResults.sort(({ cacheability: a }, { cacheability: b }) => a.metadata.ttl - b.metadata.ttl);\n\n validResult = {\n cacheability: validResults[0].cacheability,\n entry: validResults.reduce((obj, { entry }) => this._mergeObjects(obj, entry), {}),\n };\n }\n\n return (validResult || {}) as Partial<CheckCacheEntryResult>;\n }\n\n private async _retrieveCachedParentNodeData(\n { entityData: ancestorEntityData, requestFieldPathData: ancestorRequestFieldPathData }: CachedAncestorFieldData,\n { hashedRequestFieldCacheKey, propNameOrIndex, requestFieldCacheKey }: KeysAndPaths,\n fieldTypeInfo: FieldTypeInfo,\n options: RequestOptions,\n context: CacheManagerContext,\n ) {\n let entityData = CacheManager._getFieldDataFromAncestor(ancestorEntityData, propNameOrIndex);\n let requestFieldPathData = CacheManager._getFieldDataFromAncestor(ancestorRequestFieldPathData, propNameOrIndex);\n let cacheability: Cacheability | undefined;\n\n if (CacheManager._isNodeRequestFieldPath(fieldTypeInfo)) {\n const { cacheability: entryCacheability, entry } = await this._retrieveCachedRequestFieldPathData(\n hashedRequestFieldCacheKey,\n requestFieldCacheKey,\n options,\n context,\n );\n\n if (entry) {\n requestFieldPathData = this._mergeObjects(requestFieldPathData, entry);\n }\n\n if (entryCacheability) {\n cacheability = entryCacheability;\n }\n }\n\n const validTypeIDValue = getValidTypeIDValue(requestFieldPathData, fieldTypeInfo, this._typeIDKey);\n\n if (CacheManager._isNodeEntity(fieldTypeInfo) && validTypeIDValue) {\n const { cacheability: entryCacheability, entry } = await this._retrieveCachedEntityData(\n validTypeIDValue,\n fieldTypeInfo,\n options,\n context,\n );\n\n if (entry) {\n entityData = this._mergeObjects(entityData, entry);\n }\n\n if (entryCacheability && (!cacheability || entryCacheability.metadata.ttl > cacheability?.metadata.ttl)) {\n cacheability = entryCacheability;\n }\n }\n\n const data =\n !isUndefined(requestFieldPathData) || !isUndefined(entityData)\n ? this._mergeObjects(requestFieldPathData, entityData)\n : entityData ?? requestFieldPathData;\n\n return {\n cacheability,\n data,\n entityData,\n requestFieldPathData,\n };\n }\n\n private async _retrieveCachedRequestFieldPathData(\n hash: string,\n requestFieldCacheKey: string,\n options: RequestOptions,\n context: CacheManagerContext,\n ) {\n return (this._checkCacheEntry(REQUEST_FIELD_PATHS, hash, options, { ...context, requestFieldCacheKey }) ||\n {}) as Partial<CheckCacheEntryResult>;\n }\n\n private async _retrieveCachedResponseData(\n { ast }: RequestData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<CachedResponseData> {\n const cachedResponseData: CachedResponseData = {\n cacheMetadata: new Map(),\n data: {},\n fieldCount: { missing: 0, total: 0 },\n fieldPathChecklist: new Map(),\n };\n\n const queryNode = getOperationDefinitions(ast, context.operation)[0];\n const fieldsAndTypeNames = getChildFields(queryNode);\n\n if (!fieldsAndTypeNames) {\n return cachedResponseData;\n }\n\n await Promise.all(\n fieldsAndTypeNames.map(({ fieldNode }) =>\n this._analyzeFieldNode(\n fieldNode,\n { requestFieldPath: context.operation },\n cachedResponseData,\n options,\n context,\n ),\n ),\n );\n\n cachedResponseData.fieldCount = CacheManager._countFieldPathChecklist(cachedResponseData.fieldPathChecklist);\n return cachedResponseData;\n }\n\n private _retrieveResponseDataForCaching(\n normalizedResponseData: RawResponseDataWithMaybeCacheMetadata,\n context: CacheManagerContext,\n ) {\n const responseChunks = this._responseChunksAwaitingCaching.get(\n context.requestID,\n ) as RawResponseDataWithMaybeCacheMetadata[];\n\n this._responseChunksAwaitingCaching.delete(context.requestID);\n return mergeResponseDataSets([...responseChunks, normalizedResponseData]);\n }\n\n @logCacheEntry()\n private async _setCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n value: any,\n cachemapOptions: CachemapOptions,\n _options: RequestOptions,\n _context: CacheManagerContext & { requestFieldCacheKey?: string },\n ): Promise<void> {\n try {\n await this._cache.set(`${cacheType}::${hash}`, cloneDeep(value), cachemapOptions);\n } catch (error) {\n // no catch\n }\n }\n\n private async _setEntityAndRequestFieldPathCacheEntries(\n requestData: RequestData,\n responseData: ResponseDataForCaching,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n const operationNode = getOperationDefinitions(requestData.ast, context.operation)[0];\n const fieldsAndTypeNames = getChildFields(operationNode);\n\n if (!fieldsAndTypeNames) {\n return;\n }\n\n await Promise.all(\n fieldsAndTypeNames.map(({ fieldNode }) => {\n return this._parseEntityAndRequestFieldPathCacheEntryData(\n fieldNode,\n { requestFieldPath: context.operation },\n responseData,\n options,\n context,\n );\n }),\n );\n }\n\n private async _setEntityAndRequestFieldPathCacheEntry(\n field: FieldNode,\n keysAndPaths: KeysAndPaths,\n { cacheMetadata, entityData, requestFieldPathData }: ResponseDataForCaching,\n options: RequestOptions,\n context: CacheManagerContext,\n ) {\n const { requestFieldPath, responseDataPath } = keysAndPaths;\n const fieldData = get(entityData, responseDataPath);\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n const cacheability = cacheMetadata.get(requestFieldPath);\n\n if (isUndefined(fieldData) || !fieldTypeInfo || !cacheability) {\n return;\n }\n\n const promises: Promise<void>[] = [];\n\n promises.push(\n this._setRequestFieldPathCacheEntry(\n field,\n keysAndPaths,\n { cacheability, data: requestFieldPathData, fieldTypeInfo },\n options,\n context,\n ),\n );\n\n const isEntity = this._isFieldEntity(fieldData, fieldTypeInfo);\n\n if (!isEntity && fieldTypeInfo.hasArguments) {\n unset(entityData, responseDataPath);\n }\n\n if (isEntity) {\n promises.push(\n this._setEntityCacheEntry(keysAndPaths, { cacheability, data: entityData, fieldTypeInfo }, options, context),\n );\n }\n\n await Promise.all(promises);\n }\n\n private async _setEntityCacheEntry(\n { responseDataPath }: KeysAndPaths,\n { cacheability, data, fieldTypeInfo }: DataForCachingEntry,\n options: RequestOptions,\n context: CacheManagerContext,\n ) {\n let fieldData = get(data, responseDataPath);\n const fieldTypeName = fieldTypeInfo.isEntity ? fieldTypeInfo.typeName : fieldData.__typename;\n const entityDataKey = `${fieldTypeName}::${fieldData[this._typeIDKey]}`;\n const result = await this._checkCacheEntry(DATA_ENTITIES, entityDataKey, options, context);\n\n if (result) {\n fieldData = this._mergeObjects(result.entry, fieldData);\n }\n\n await this._setCacheEntry(\n DATA_ENTITIES,\n entityDataKey,\n fieldData,\n { cacheHeaders: { cacheControl: cacheability.printCacheControl() }, tag: options.tag },\n options,\n context,\n );\n\n set(data, responseDataPath, { __cacheKey: `${DATA_ENTITIES}::${entityDataKey}` });\n }\n\n private _setFieldCacheability(\n field: FieldNode,\n ancestorKeysAndPaths: AncestorKeysAndPaths,\n { cacheMetadata, data }: ResponseData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): void {\n const { requestFieldPath: ancestorRequestFieldPath } = ancestorKeysAndPaths;\n const keysAndPaths = buildFieldKeysAndPaths(field, ancestorKeysAndPaths, context);\n const { requestFieldPath, responseDataPath } = keysAndPaths;\n const fieldData = get(data, responseDataPath);\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n\n if (!isObjectLike(fieldData) && !fieldTypeInfo?.hasDirectives) {\n return;\n }\n\n this._setFieldTypeCacheDirective(cacheMetadata, { ancestorRequestFieldPath, requestFieldPath }, context);\n\n if (isObjectLike(fieldData)) {\n iterateChildFields(\n field,\n fieldData as PlainObjectMap | any[],\n context.fragmentDefinitions,\n (\n childField: FieldNode,\n _typeName: string | undefined,\n _fragmentKind: string | undefined,\n _fragmentName: string | undefined,\n childIndex?: number,\n ) => {\n this._setFieldCacheability(\n childField,\n { index: childIndex, requestFieldPath, responseDataPath },\n { cacheMetadata, data },\n options,\n context,\n );\n },\n );\n }\n }\n\n private _setFieldTypeCacheDirective(\n cacheMetadata: CacheMetadata,\n { ancestorRequestFieldPath, requestFieldPath }: { ancestorRequestFieldPath?: string; requestFieldPath: string },\n { fieldTypeMap, operation }: CacheManagerContext,\n ): void {\n if (cacheMetadata.has(requestFieldPath)) {\n return;\n }\n\n const fieldTypeInfo = fieldTypeMap.get(requestFieldPath);\n\n if (fieldTypeInfo && this._typeCacheDirectives[fieldTypeInfo.typeName]) {\n const cacheability = new Cacheability({ cacheControl: this._typeCacheDirectives[fieldTypeInfo.typeName] });\n CacheManager._setCacheMetadata(cacheMetadata, cacheability, requestFieldPath, operation);\n } else if (this._cascadeCacheControl && ancestorRequestFieldPath) {\n CacheManager._setCacheMetadata(\n cacheMetadata,\n cacheMetadata.get(ancestorRequestFieldPath),\n requestFieldPath,\n operation,\n );\n }\n }\n\n @logPartialCompiled()\n private async _setPartialQueryResponse(\n hash: string,\n partialQueryResponse: PartialQueryResponse,\n _options: RequestOptions,\n _context: CacheManagerContext,\n ): Promise<void> {\n this._partialQueryResponses.set(hash, partialQueryResponse);\n }\n\n private async _setQueryResponseCacheEntry(\n hash: string,\n { cacheMetadata, data }: ResponseData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n const dehydratedCacheMetadata = dehydrateCacheMetadata(cacheMetadata);\n const cacheControl = CacheManager._getOperationCacheControl(cacheMetadata, context.operation);\n\n await this._setCacheEntry(\n QUERY_RESPONSES,\n hash,\n { cacheMetadata: dehydratedCacheMetadata, data },\n { cacheHeaders: { cacheControl }, tag: options.tag },\n options,\n context,\n );\n }\n\n private async _setRequestFieldPathCacheEntry(\n field: FieldNode,\n keysAndPaths: KeysAndPaths,\n { cacheability, data, fieldTypeInfo }: DataForCachingEntry,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n const { hashedRequestFieldCacheKey, requestFieldCacheKey, responseDataPath } = keysAndPaths;\n let fieldData = get(data, responseDataPath);\n const isEntity = this._isFieldEntity(fieldData, fieldTypeInfo);\n const hasArgsOrDirectives = fieldTypeInfo.hasArguments || fieldTypeInfo.hasDirectives;\n\n if (context.operation === QUERY && (isEntity || hasArgsOrDirectives)) {\n if (isPlainObject(fieldData) && field.selectionSet?.selections) {\n fieldData = filterOutPropsWithArgsOrDirectives(fieldData, field.selectionSet.selections, keysAndPaths, context);\n }\n\n const result = await this._checkCacheEntry(REQUEST_FIELD_PATHS, hashedRequestFieldCacheKey, options, {\n ...context,\n requestFieldCacheKey,\n });\n\n if (result && isObjectLike(fieldData)) {\n fieldData = this._mergeObjects(result.entry, fieldData);\n }\n\n await this._setCacheEntry(\n REQUEST_FIELD_PATHS,\n hashedRequestFieldCacheKey,\n fieldData,\n { cacheHeaders: { cacheControl: cacheability.printCacheControl() }, tag: options.tag },\n options,\n { ...context, requestFieldCacheKey },\n );\n\n if (hasChildFields(field, { fragmentDefinitions: context.fragmentDefinitions })) {\n if (isEntity) {\n set(data, responseDataPath, { __cacheKey: `${REQUEST_FIELD_PATHS}::${hashedRequestFieldCacheKey}` });\n } else {\n unset(data, responseDataPath);\n }\n }\n }\n }\n\n private _setResponseChunksAwaitingCaching(\n normalizedResponseData: RawResponseDataWithMaybeCacheMetadata,\n context: CacheManagerContext,\n ) {\n const responseChunks = this._responseChunksAwaitingCaching.get(context.requestID);\n\n if (responseChunks) {\n this._responseChunksAwaitingCaching.set(context.requestID, [...responseChunks, normalizedResponseData]);\n } else {\n this._responseChunksAwaitingCaching.set(context.requestID, [normalizedResponseData]);\n }\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/main/index.ts"],"names":["DATA_ENTITIES","DEFAULT_TYPE_ID_KEY","QUERY","QUERY_RESPONSES","REQUEST_FIELD_PATHS","TYPE_NAME_KEY","FRAGMENT_SPREAD","buildFieldKeysAndPaths","dehydrateCacheMetadata","getChildFields","getFragmentDefinitions","getOperationDefinitions","hasChildFields","hashRequest","iterateChildFields","mergeObjects","rehydrateCacheMetadata","Cacheability","print","CACHE_CONTROL","HEADER_NO_CACHE","METADATA","NO_CACHE","logCacheEntry","logCacheQuery","logPartialCompiled","areOnlyPopulatedFieldsTypeIdKeys","deriveOpCacheability","filterOutPropsWithArgsOrDirectives","filterQuery","isLastResponseChunk","isNotLastResponseChunk","isNotResponseChunk","mergeResponseDataSets","normalizePatchResponseData","getValidTypeIDValue","CacheManager","_countFieldPathChecklist","fieldPathChecklist","fieldCount","missing","total","forEach","checklistValues","length","filter","hasData","_getFieldDataFromAncestor","ancestorFieldData","propNameOrIndex","undefined","_getOperationCacheControl","cacheMetadata","operation","defaultCacheControl","cacheability","get","printCacheControl","_isNodeEntity","fieldTypeInfo","isEntity","possibleTypes","some","type","_isNodeRequestFieldPath","hasArguments","hasDirectives","_isValid","noCache","checkTTL","_mergeResponseCacheMetadata","partialQueryResponse","Map","_setCachedData","requestData","data","objectLikeData","_setCachedResponseData","cachedFieldData","requestFieldPath","typeNamesAndKind","_options","_setCacheMetadata","_setFieldPathChecklist","set","operationCacheability","metadata","ttl","dataTypeName","fieldTypeName","fragmentKind","fragmentName","has","entry","typeName","constructor","options","errors","cache","push","TypeError","typeCacheDirectives","message","_cache","_cascadeCacheControl","cascadeCacheControl","_fallbackOperationCacheability","fallbackOperationCacheability","_typeCacheDirectives","_typeIDKey","typeIDKey","analyzeQuery","context","ast","hash","Promise","reject","cacheManagerContext","fragmentDefinitions","cachedResponseData","_retrieveCachedResponseData","updated","dataCaching","_setQueryResponseCacheEntry","awaitDataCaching","response","filteredAST","filteredRequest","rest","_setPartialQueryResponse","request","cacheQuery","updatedRequestData","rawResponseData","_cacheResponse","cacheResponse","checkCacheEntry","cacheType","_checkCacheEntry","checkQueryResponseCacheEntry","result","deletePartialQueryResponse","_partialQueryResponses","delete","setQueryResponseCacheEntry","responseData","_analyzeFieldNode","fieldNode","cachedAncestorFieldData","_analyzeParentFieldNode","_analyzeLeafFieldNode","keysAndPaths","hashedRequestFieldCacheKey","requestFieldCacheKey","fieldTypeMap","entityData","requestFieldPathData","__typename","_retrieveCachedRequestFieldPathData","_retrieveCachedParentNodeData","promises","childField","childTypeName","childFragmentKind","childFragmentName","childIndex","index","all","_buildCacheMetadata","otherProps","_createCacheMetadata","queryNode","fieldsAndTypeNames","_setFieldCacheability","normalizedResponseData","responseDataForCaching","_setResponseChunksAwaitingCaching","_retrieveResponseDataForCaching","_setEntityAndRequestFieldPathCacheEntries","queryCacheMetadata","queryData","queryFiltered","_getPartialQueryResponse","_mergeResponseData","hasNext","paths","_hasCacheEntry","_getCacheEntry","error","_cacheMetadata","headers","fallback","_context","_isFieldEntity","fieldData","_mergeObjects","obj","src","_key","val","_parseEntityAndRequestFieldPathCacheEntryData","field","ancestorKeysAndPaths","responseDataPath","_typeName","_fragmentKind","_fragmentName","_setEntityAndRequestFieldPathCacheEntry","_retrieveCachedEntityData","validTypeIDValue","typeNames","map","checkResults","name","validResults","validResult","sort","a","b","reduce","ancestorEntityData","ancestorRequestFieldPathData","entryCacheability","responseChunks","_responseChunksAwaitingCaching","requestID","_setCacheEntry","value","cachemapOptions","operationNode","_setRequestFieldPathCacheEntry","_setEntityCacheEntry","entityDataKey","cacheHeaders","cacheControl","tag","__cacheKey","ancestorRequestFieldPath","_setFieldTypeCacheDirective","dehydratedCacheMetadata","hasArgsOrDirectives","selectionSet","selections"],"mappings":"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","sourcesContent":["import Cachemap from \"@cachemap/core\";\nimport {\n CacheMetadata,\n CacheTypes,\n CachemapOptions,\n DATA_ENTITIES,\n DEFAULT_TYPE_ID_KEY,\n FieldTypeInfo,\n PlainObjectMap,\n PlainObjectStringMap,\n QUERY,\n QUERY_RESPONSES,\n REQUEST_FIELD_PATHS,\n RawResponseDataWithMaybeCacheMetadata,\n RequestContext,\n RequestData,\n RequestOptions,\n ResponseData,\n TYPE_NAME_KEY,\n} from \"@graphql-box/core\";\nimport {\n FRAGMENT_SPREAD,\n KeysAndPaths,\n buildFieldKeysAndPaths,\n dehydrateCacheMetadata,\n getChildFields,\n getFragmentDefinitions,\n getOperationDefinitions,\n hasChildFields,\n hashRequest,\n iterateChildFields,\n mergeObjects,\n rehydrateCacheMetadata,\n} from \"@graphql-box/helpers\";\nimport Cacheability from \"cacheability\";\nimport { FieldNode, print } from \"graphql\";\nimport { assign, cloneDeep, get, isArray, isObjectLike, isPlainObject, isUndefined, set, unset } from \"lodash\";\nimport { CACHE_CONTROL, HEADER_NO_CACHE, METADATA, NO_CACHE } from \"../consts\";\nimport { logCacheEntry, logCacheQuery, logPartialCompiled } from \"../debug\";\nimport {\n AnalyzeQueryResult,\n AncestorKeysAndPaths,\n CacheManagerContext,\n CacheManagerDef,\n CachedAncestorFieldData,\n CachedResponseData,\n CheckCacheEntryResult,\n DataForCachingEntry,\n FieldCount,\n FieldPathChecklist,\n FieldPathChecklistValue,\n MergedCachedFieldData,\n PartialQueryResponse,\n PartialQueryResponses,\n QueryResponseCacheEntry,\n ResponseDataForCaching,\n TypeNamesAndKind,\n UserOptions,\n} from \"../defs\";\nimport areOnlyPopulatedFieldsTypeIdKeys from \"../helpers/areOnlyPopulatedFieldsTypeIdKeys\";\nimport deriveOpCacheability from \"../helpers/deriveOpCacheability\";\nimport filterOutPropsWithArgsOrDirectives from \"../helpers/filterOutPropsWithArgsOrDirectives\";\nimport filterQuery from \"../helpers/filterQuery\";\nimport isLastResponseChunk from \"../helpers/isLastResponseChunk\";\nimport isNotLastResponseChunk from \"../helpers/isNotLastResponseChunk\";\nimport isNotResponseChunk from \"../helpers/isNotResponseChunk\";\nimport mergeResponseDataSets from \"../helpers/mergeResponseDataSets\";\nimport normalizePatchResponseData from \"../helpers/normalizePatchResponseData\";\nimport { getValidTypeIDValue } from \"../helpers/validTypeIDValue\";\n\nexport default class CacheManager implements CacheManagerDef {\n private static _countFieldPathChecklist(fieldPathChecklist: FieldPathChecklist): FieldCount {\n const fieldCount: FieldCount = { missing: 0, total: 0 };\n\n fieldPathChecklist.forEach(checklistValues => {\n fieldCount.total += checklistValues.length;\n const missing = checklistValues.filter(({ hasData }) => !hasData);\n fieldCount.missing += missing.length;\n });\n\n return fieldCount;\n }\n\n private static _getFieldDataFromAncestor(ancestorFieldData: any, propNameOrIndex: string | number): any {\n return isObjectLike(ancestorFieldData) ? cloneDeep(ancestorFieldData[propNameOrIndex]) : undefined;\n }\n\n private static _getOperationCacheControl(cacheMetadata: CacheMetadata | undefined, operation: string): string {\n const defaultCacheControl = HEADER_NO_CACHE;\n\n if (!cacheMetadata) {\n return defaultCacheControl;\n }\n\n const cacheability = cacheMetadata.get(operation);\n return cacheability ? cacheability.printCacheControl() : defaultCacheControl;\n }\n\n private static _isNodeEntity(fieldTypeInfo?: FieldTypeInfo): boolean {\n if (!fieldTypeInfo) {\n return false;\n }\n\n const { isEntity, possibleTypes } = fieldTypeInfo;\n return isEntity || possibleTypes.some(type => !!type.isEntity);\n }\n\n private static _isNodeRequestFieldPath(fieldTypeInfo?: FieldTypeInfo): boolean {\n return (\n !!fieldTypeInfo &&\n (this._isNodeEntity(fieldTypeInfo) || fieldTypeInfo.hasArguments || fieldTypeInfo.hasDirectives)\n );\n }\n\n private static _isValid(cacheability: Cacheability): boolean {\n const noCache = get(cacheability, [METADATA, CACHE_CONTROL, NO_CACHE], false);\n return !noCache && cacheability.checkTTL();\n }\n\n private static _mergeResponseCacheMetadata(\n cacheMetadata: CacheMetadata,\n partialQueryResponse?: PartialQueryResponse,\n ): CacheMetadata {\n if (!partialQueryResponse) {\n return cacheMetadata;\n }\n\n return new Map([...partialQueryResponse.cacheMetadata, ...cacheMetadata]);\n }\n\n private static _setCachedData(\n requestData: PlainObjectMap,\n { data }: MergedCachedFieldData,\n propNameOrIndex: string | number,\n ): void {\n if (!isObjectLike(data) && !isUndefined(data)) {\n requestData[propNameOrIndex] = data as string | number | boolean | null;\n } else if (isObjectLike(data)) {\n const objectLikeData = data as PlainObjectMap | any[];\n requestData[propNameOrIndex] = isArray(objectLikeData) ? [] : {};\n }\n }\n\n private static _setCachedResponseData(\n cachedFieldData: MergedCachedFieldData,\n { cacheMetadata, data, fieldPathChecklist }: CachedResponseData,\n { propNameOrIndex, requestFieldPath }: KeysAndPaths,\n typeNamesAndKind: TypeNamesAndKind,\n _options: RequestOptions,\n { operation }: CacheManagerContext,\n ) {\n CacheManager._setCacheMetadata(cacheMetadata, cachedFieldData.cacheability, requestFieldPath, operation);\n CacheManager._setFieldPathChecklist(fieldPathChecklist, cachedFieldData, requestFieldPath, typeNamesAndKind);\n CacheManager._setCachedData(data, cachedFieldData, propNameOrIndex);\n }\n\n private static _setCacheMetadata(\n cacheMetadata: CacheMetadata,\n cacheability: Cacheability | undefined,\n requestFieldPath: string,\n operation: string,\n ): void {\n if (!cacheability) {\n return;\n }\n\n cacheMetadata.set(requestFieldPath, cacheability);\n const operationCacheability = cacheMetadata.get(operation);\n\n if (!operationCacheability || operationCacheability.metadata.ttl > cacheability.metadata.ttl) {\n cacheMetadata.set(operation, cacheability);\n }\n }\n\n private static _setFieldPathChecklist(\n fieldPathChecklist: FieldPathChecklist,\n { data }: MergedCachedFieldData,\n requestFieldPath: string,\n { dataTypeName, fieldTypeName, fragmentKind, fragmentName }: TypeNamesAndKind,\n ): void {\n if (isUndefined(fieldTypeName) || fragmentKind === FRAGMENT_SPREAD) {\n if (fieldPathChecklist.has(requestFieldPath)) {\n return;\n }\n\n fieldPathChecklist.set(requestFieldPath, [{ fragmentKind, fragmentName, hasData: !isUndefined(data) }]);\n return;\n }\n\n if (dataTypeName !== fieldTypeName) {\n return;\n }\n\n const entry = fieldPathChecklist.get(requestFieldPath);\n const checklistValues = entry ? (entry as FieldPathChecklistValue[]) : [];\n\n if (checklistValues.some(({ typeName }) => typeName === dataTypeName)) {\n return;\n }\n\n fieldPathChecklist.set(requestFieldPath, [\n ...checklistValues,\n { fragmentKind, fragmentName, hasData: !isUndefined(data), typeName: dataTypeName as string },\n ]);\n }\n\n private _cache: Cachemap;\n private _cascadeCacheControl: boolean;\n private _fallbackOperationCacheability: string;\n private _partialQueryResponses: PartialQueryResponses = new Map();\n private _responseChunksAwaitingCaching: Map<string, RawResponseDataWithMaybeCacheMetadata[]> = new Map();\n private _typeCacheDirectives: PlainObjectStringMap;\n private _typeIDKey: string;\n\n constructor(options: UserOptions) {\n const errors: TypeError[] = [];\n\n if (!options.cache) {\n errors.push(new TypeError(\"@graphql-box/cache-manager expected options.cache.\"));\n }\n\n if (!!options.typeCacheDirectives && !isPlainObject(options.typeCacheDirectives)) {\n const message = \"@graphql-box/cache-manager expected options.typeCacheDirectives to be a plain object.\";\n errors.push(new TypeError(message));\n }\n\n if (errors.length) {\n throw errors;\n }\n\n this._cache = options.cache;\n this._cascadeCacheControl = options.cascadeCacheControl || false;\n this._fallbackOperationCacheability = options.fallbackOperationCacheability || NO_CACHE;\n this._typeCacheDirectives = options.typeCacheDirectives || {};\n this._typeIDKey = options.typeIDKey ?? DEFAULT_TYPE_ID_KEY;\n }\n\n get cache(): Cachemap {\n return this._cache;\n }\n\n public async analyzeQuery(\n requestData: RequestData,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<AnalyzeQueryResult> {\n const { ast, hash } = requestData;\n\n if (!ast) {\n return Promise.reject(new TypeError(\"@graphql-box/cache-manager expected an AST.\"));\n }\n\n const cacheManagerContext: CacheManagerContext = {\n ...context,\n fragmentDefinitions: getFragmentDefinitions(ast),\n typeIDKey: this._typeIDKey,\n };\n\n const cachedResponseData = await this._retrieveCachedResponseData(requestData, options, cacheManagerContext);\n const { cacheMetadata, data, fieldCount } = cachedResponseData;\n\n // Second half of check is required for the scenario where the only matching data is\n // the typeIDKey field, i.e. \"id\", in which case there is no point settings a partial\n // query reponse because we request the typeIDKey field with every request.\n if (fieldCount.missing === fieldCount.total || areOnlyPopulatedFieldsTypeIdKeys(data, this._typeIDKey)) {\n return { updated: requestData };\n }\n\n if (!fieldCount.missing) {\n const dataCaching = this._setQueryResponseCacheEntry(hash, { cacheMetadata, data }, options, cacheManagerContext);\n\n if (options.awaitDataCaching) {\n await dataCaching;\n }\n\n return { response: { cacheMetadata, data } };\n }\n\n const filteredAST = filterQuery(requestData, cachedResponseData, cacheManagerContext);\n const filteredRequest = print(filteredAST);\n const { fragmentDefinitions, typeIDKey, ...rest } = cacheManagerContext;\n assign(context, { ...rest, filteredRequest });\n this._setPartialQueryResponse(hash, { cacheMetadata, data }, options, context);\n return { updated: { ast: filteredAST, hash: hashRequest(filteredRequest), request: filteredRequest } };\n }\n\n public async cacheQuery(\n requestData: RequestData,\n updatedRequestData: RequestData | undefined,\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<ResponseData> {\n const cacheManagerContext: CacheManagerContext = {\n ...context,\n fragmentDefinitions: getFragmentDefinitions((updatedRequestData ?? requestData).ast),\n typeIDKey: this._typeIDKey,\n };\n\n return this._cacheResponse(requestData, updatedRequestData, rawResponseData, options, cacheManagerContext);\n }\n\n public async cacheResponse(\n requestData: RequestData,\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<ResponseData> {\n const cacheManagerContext: CacheManagerContext = {\n ...context,\n fragmentDefinitions: getFragmentDefinitions(requestData.ast),\n typeIDKey: this._typeIDKey,\n };\n\n return this._cacheResponse(requestData, undefined, rawResponseData, options, cacheManagerContext);\n }\n\n public async checkCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n options: RequestOptions,\n context: RequestContext & { requestFieldCacheKey?: string },\n ): Promise<CheckCacheEntryResult | false> {\n return this._checkCacheEntry(cacheType, hash, options, context);\n }\n\n public async checkQueryResponseCacheEntry(\n hash: string,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<ResponseData | false> {\n const result = await this._checkCacheEntry(QUERY_RESPONSES, hash, options, context);\n\n if (!result) {\n return false;\n }\n\n const { cacheMetadata, data } = result.entry as QueryResponseCacheEntry;\n\n return {\n cacheMetadata: rehydrateCacheMetadata(cacheMetadata),\n data,\n };\n }\n\n public deletePartialQueryResponse(hash: string): void {\n this._partialQueryResponses.delete(hash);\n }\n\n public async setQueryResponseCacheEntry(\n requestData: RequestData,\n responseData: ResponseData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n return this._setQueryResponseCacheEntry(requestData.hash, responseData, options, context);\n }\n\n private async _analyzeFieldNode(\n fieldNode: FieldNode,\n cachedAncestorFieldData: CachedAncestorFieldData,\n cachedResponseData: CachedResponseData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n if (hasChildFields(fieldNode, { fragmentDefinitions: context.fragmentDefinitions })) {\n await this._analyzeParentFieldNode(fieldNode, cachedAncestorFieldData, cachedResponseData, options, context);\n } else {\n await this._analyzeLeafFieldNode(fieldNode, cachedAncestorFieldData, cachedResponseData, options, context);\n }\n }\n\n private async _analyzeLeafFieldNode(\n fieldNode: FieldNode,\n cachedAncestorFieldData: CachedAncestorFieldData,\n cachedResponseData: CachedResponseData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n const keysAndPaths = buildFieldKeysAndPaths(fieldNode, cachedAncestorFieldData, context);\n const { hashedRequestFieldCacheKey, propNameOrIndex, requestFieldCacheKey, requestFieldPath } = keysAndPaths;\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n const { entityData, fragmentKind, fragmentName, requestFieldPathData, typeName } = cachedAncestorFieldData;\n\n const typeNamesAndKind = {\n dataTypeName: entityData?.__typename || requestFieldPathData?.__typename,\n fieldTypeName: typeName,\n fragmentKind,\n fragmentName,\n };\n\n if (CacheManager._isNodeRequestFieldPath(fieldTypeInfo)) {\n const { cacheability, entry } = await this._retrieveCachedRequestFieldPathData(\n hashedRequestFieldCacheKey,\n requestFieldCacheKey,\n options,\n context,\n );\n\n CacheManager._setCachedResponseData(\n { cacheability, data: entry },\n cachedResponseData,\n keysAndPaths,\n typeNamesAndKind,\n options,\n context,\n );\n } else {\n const cachedFieldData =\n CacheManager._getFieldDataFromAncestor(entityData, propNameOrIndex) ||\n CacheManager._getFieldDataFromAncestor(requestFieldPathData, propNameOrIndex);\n\n CacheManager._setFieldPathChecklist(\n cachedResponseData.fieldPathChecklist,\n { data: cachedFieldData },\n requestFieldPath,\n typeNamesAndKind,\n );\n\n CacheManager._setCachedData(cachedResponseData.data, { data: cachedFieldData }, propNameOrIndex);\n }\n }\n\n private async _analyzeParentFieldNode(\n fieldNode: FieldNode,\n cachedAncestorFieldData: CachedAncestorFieldData,\n cachedResponseData: CachedResponseData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n const keysAndPaths = buildFieldKeysAndPaths(fieldNode, cachedAncestorFieldData, context);\n const { propNameOrIndex, requestFieldCacheKey, requestFieldPath } = keysAndPaths;\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath) as FieldTypeInfo;\n\n const { cacheability, data, entityData, requestFieldPathData } = await this._retrieveCachedParentNodeData(\n cachedAncestorFieldData,\n keysAndPaths,\n fieldTypeInfo,\n options,\n context,\n );\n\n const { fragmentKind, fragmentName, typeName } = cachedAncestorFieldData;\n\n CacheManager._setCachedResponseData(\n { cacheability, data },\n cachedResponseData,\n keysAndPaths,\n { dataTypeName: get(data, TYPE_NAME_KEY), fieldTypeName: typeName, fragmentKind, fragmentName },\n options,\n context,\n );\n\n if (!isObjectLike(data)) {\n return;\n }\n\n const objectLikeData = data as PlainObjectMap | any[];\n const promises: Promise<void>[] = [];\n\n iterateChildFields(\n fieldNode,\n objectLikeData,\n context.fragmentDefinitions,\n (\n childField: FieldNode,\n childTypeName: string | undefined,\n childFragmentKind: string | undefined,\n childFragmentName: string | undefined,\n childIndex?: number,\n ) => {\n promises.push(\n this._analyzeFieldNode(\n childField,\n {\n cacheability,\n entityData,\n fragmentKind: childFragmentKind,\n fragmentName: childFragmentName,\n index: childIndex,\n requestFieldCacheKey,\n requestFieldPath,\n requestFieldPathData,\n typeName: childTypeName,\n },\n { ...cachedResponseData, data: cachedResponseData.data[propNameOrIndex] },\n options,\n context,\n ),\n );\n },\n );\n\n await Promise.all(promises);\n }\n\n private _buildCacheMetadata(\n { ast }: RequestData,\n { data, ...otherProps }: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: CacheManagerContext,\n ): CacheMetadata {\n const cacheMetadata = this._createCacheMetadata({ data, ...otherProps }, context);\n const queryNode = getOperationDefinitions(ast, context.operation)[0];\n const fieldsAndTypeNames = getChildFields(queryNode);\n\n if (!fieldsAndTypeNames) {\n return cacheMetadata;\n }\n\n fieldsAndTypeNames.forEach(({ fieldNode }) =>\n this._setFieldCacheability(\n fieldNode,\n { requestFieldPath: context.operation },\n { cacheMetadata, data },\n options,\n context,\n ),\n );\n\n return cacheMetadata;\n }\n\n private async _cacheResponse(\n requestData: RequestData,\n updatedRequestData: RequestData | undefined,\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<ResponseData> {\n const normalizedResponseData = normalizePatchResponseData(rawResponseData, context);\n let responseDataForCaching: RawResponseDataWithMaybeCacheMetadata | undefined = normalizedResponseData;\n\n if (isNotLastResponseChunk(rawResponseData, context)) {\n this._setResponseChunksAwaitingCaching(normalizedResponseData, context);\n responseDataForCaching = undefined;\n }\n\n if (isLastResponseChunk(rawResponseData, context)) {\n responseDataForCaching = this._retrieveResponseDataForCaching(normalizedResponseData, context);\n }\n\n const dataCaching: Promise<void>[] = [];\n\n if (responseDataForCaching) {\n const { data } = responseDataForCaching;\n const cacheMetadata = this._buildCacheMetadata(requestData, responseDataForCaching, options, context);\n\n dataCaching.push(\n this._setEntityAndRequestFieldPathCacheEntries(\n requestData,\n {\n cacheMetadata,\n entityData: cloneDeep(data),\n requestFieldPathData: cloneDeep(data),\n },\n options,\n context,\n ),\n );\n\n let queryCacheMetadata: CacheMetadata | undefined;\n let queryData: PlainObjectMap | undefined;\n\n if (context.operation === QUERY) {\n let partialQueryResponse: PartialQueryResponse | undefined;\n\n if (context.queryFiltered && updatedRequestData) {\n dataCaching.push(\n this._setQueryResponseCacheEntry(updatedRequestData.hash, { cacheMetadata, data }, options, context),\n );\n\n partialQueryResponse = this._getPartialQueryResponse(requestData.hash);\n }\n\n queryCacheMetadata = CacheManager._mergeResponseCacheMetadata(cacheMetadata, partialQueryResponse);\n queryData = this._mergeResponseData(data, partialQueryResponse);\n\n dataCaching.push(\n this._setQueryResponseCacheEntry(\n requestData.hash,\n { cacheMetadata: queryCacheMetadata, data: queryData },\n options,\n context,\n ),\n );\n }\n\n if (options.awaitDataCaching) {\n await Promise.all(dataCaching);\n }\n\n if (isNotResponseChunk(normalizedResponseData, context) && queryCacheMetadata && queryData) {\n return {\n cacheMetadata: queryCacheMetadata,\n data: queryData,\n };\n }\n }\n\n const { data, hasNext, paths } = normalizedResponseData;\n\n return {\n cacheMetadata: this._buildCacheMetadata(requestData, normalizedResponseData, options, context),\n data,\n hasNext,\n paths,\n };\n }\n\n private async _checkCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n options: RequestOptions,\n context: CacheManagerContext & { requestFieldCacheKey?: string },\n ): Promise<CheckCacheEntryResult | false> {\n try {\n const cacheability = await this._hasCacheEntry(cacheType, hash);\n\n if (!cacheability || !CacheManager._isValid(cacheability)) {\n return false;\n }\n\n const entry = await this._getCacheEntry(cacheType, hash, options, context);\n\n if (isUndefined(entry)) {\n return false;\n }\n\n return { cacheability, entry };\n } catch (error) {\n return false;\n }\n }\n\n private _createCacheMetadata(\n { _cacheMetadata, headers }: RawResponseDataWithMaybeCacheMetadata,\n { operation }: CacheManagerContext,\n ): CacheMetadata {\n const cacheMetadata = new Map();\n\n const cacheability = deriveOpCacheability({\n _cacheMetadata,\n fallback: this._fallbackOperationCacheability,\n headers,\n });\n\n cacheMetadata.set(operation, cacheability);\n\n if (_cacheMetadata) {\n rehydrateCacheMetadata(_cacheMetadata, cacheMetadata);\n }\n\n return cacheMetadata;\n }\n\n @logCacheQuery()\n private async _getCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n _options: RequestOptions,\n _context: CacheManagerContext & { requestFieldCacheKey?: string },\n ): Promise<any> {\n try {\n return await this._cache.get(`${cacheType}::${hash}`);\n } catch (errors) {\n return Promise.reject(errors);\n }\n }\n\n private _getPartialQueryResponse(hash: string): PartialQueryResponse | undefined {\n const partialQueryResponse = this._partialQueryResponses.get(hash);\n this._partialQueryResponses.delete(hash);\n return partialQueryResponse;\n }\n\n private async _hasCacheEntry(cacheType: CacheTypes, hash: string): Promise<Cacheability | false> {\n try {\n return await this._cache.has(`${cacheType}::${hash}`);\n } catch (error) {\n return false;\n }\n }\n\n private _isFieldEntity(fieldData: any, { isEntity, possibleTypes }: FieldTypeInfo): boolean {\n if (!get(fieldData, this._typeIDKey, null)) {\n return false;\n }\n\n if (isEntity) {\n return true;\n }\n\n if (!possibleTypes.length) {\n return false;\n }\n\n return possibleTypes.some(type => type.typeName === fieldData.__typename);\n }\n\n private _mergeObjects<T>(obj: T, src: T): T {\n return mergeObjects(obj, src, (_key: string, val: any): string | number | undefined => {\n return isPlainObject(val) && val[this._typeIDKey] ? val[this._typeIDKey] : undefined;\n });\n }\n\n private _mergeResponseData(\n responseData: PlainObjectMap,\n partialQueryResponse?: PartialQueryResponse,\n ): PlainObjectMap {\n if (!partialQueryResponse) {\n return responseData;\n }\n\n return this._mergeObjects(partialQueryResponse.data, responseData);\n }\n\n private async _parseEntityAndRequestFieldPathCacheEntryData(\n field: FieldNode,\n ancestorKeysAndPaths: AncestorKeysAndPaths,\n { cacheMetadata, entityData, requestFieldPathData }: ResponseDataForCaching,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n const keysAndPaths = buildFieldKeysAndPaths(field, ancestorKeysAndPaths, context);\n const { requestFieldCacheKey, requestFieldPath, responseDataPath } = keysAndPaths;\n const fieldData = get(requestFieldPathData, responseDataPath);\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n\n if (!isObjectLike(fieldData) && !fieldTypeInfo?.hasDirectives) {\n return;\n }\n\n if (isObjectLike(fieldData)) {\n const promises: Promise<void>[] = [];\n\n iterateChildFields(\n field,\n fieldData as PlainObjectMap | any[],\n context.fragmentDefinitions,\n (\n childField: FieldNode,\n _typeName: string | undefined,\n _fragmentKind: string | undefined,\n _fragmentName: string | undefined,\n childIndex?: number,\n ) => {\n promises.push(\n this._parseEntityAndRequestFieldPathCacheEntryData(\n childField,\n { index: childIndex, requestFieldCacheKey, requestFieldPath, responseDataPath },\n { cacheMetadata, entityData, requestFieldPathData },\n options,\n context,\n ),\n );\n },\n );\n\n await Promise.all(promises);\n }\n\n await this._setEntityAndRequestFieldPathCacheEntry(\n field,\n keysAndPaths,\n { cacheMetadata, entityData, requestFieldPathData },\n options,\n context,\n );\n }\n\n private async _retrieveCachedEntityData(\n validTypeIDValue: string | number,\n { possibleTypes, typeName }: FieldTypeInfo,\n options: RequestOptions,\n context: CacheManagerContext,\n ) {\n const typeNames = [...possibleTypes.map(type => type.typeName), typeName];\n\n const checkResults = await Promise.all(\n typeNames.map(name => this._checkCacheEntry(DATA_ENTITIES, `${name}::${validTypeIDValue}`, options, context)),\n );\n\n const validResults = checkResults.filter(result => !!result) as CheckCacheEntryResult[];\n let validResult: CheckCacheEntryResult | undefined;\n\n if (validResults.length === 1) {\n validResult = validResults[0];\n } else if (validResults.length > 1) {\n validResults.sort(({ cacheability: a }, { cacheability: b }) => a.metadata.ttl - b.metadata.ttl);\n\n validResult = {\n cacheability: validResults[0].cacheability,\n entry: validResults.reduce((obj, { entry }) => this._mergeObjects(obj, entry), {}),\n };\n }\n\n return (validResult || {}) as Partial<CheckCacheEntryResult>;\n }\n\n private async _retrieveCachedParentNodeData(\n { entityData: ancestorEntityData, requestFieldPathData: ancestorRequestFieldPathData }: CachedAncestorFieldData,\n { hashedRequestFieldCacheKey, propNameOrIndex, requestFieldCacheKey }: KeysAndPaths,\n fieldTypeInfo: FieldTypeInfo,\n options: RequestOptions,\n context: CacheManagerContext,\n ) {\n let entityData = CacheManager._getFieldDataFromAncestor(ancestorEntityData, propNameOrIndex);\n let requestFieldPathData = CacheManager._getFieldDataFromAncestor(ancestorRequestFieldPathData, propNameOrIndex);\n let cacheability: Cacheability | undefined;\n\n if (CacheManager._isNodeRequestFieldPath(fieldTypeInfo)) {\n const { cacheability: entryCacheability, entry } = await this._retrieveCachedRequestFieldPathData(\n hashedRequestFieldCacheKey,\n requestFieldCacheKey,\n options,\n context,\n );\n\n if (entry) {\n requestFieldPathData = this._mergeObjects(requestFieldPathData, entry);\n }\n\n if (entryCacheability) {\n cacheability = entryCacheability;\n }\n }\n\n const validTypeIDValue = getValidTypeIDValue(requestFieldPathData, fieldTypeInfo, this._typeIDKey);\n\n if (CacheManager._isNodeEntity(fieldTypeInfo) && validTypeIDValue) {\n const { cacheability: entryCacheability, entry } = await this._retrieveCachedEntityData(\n validTypeIDValue,\n fieldTypeInfo,\n options,\n context,\n );\n\n if (entry) {\n entityData = this._mergeObjects(entityData, entry);\n }\n\n if (entryCacheability && (!cacheability || entryCacheability.metadata.ttl > cacheability?.metadata.ttl)) {\n cacheability = entryCacheability;\n }\n }\n\n const data =\n !isUndefined(requestFieldPathData) || !isUndefined(entityData)\n ? this._mergeObjects(requestFieldPathData, entityData)\n : entityData ?? requestFieldPathData;\n\n return {\n cacheability,\n data,\n entityData,\n requestFieldPathData,\n };\n }\n\n private async _retrieveCachedRequestFieldPathData(\n hash: string,\n requestFieldCacheKey: string,\n options: RequestOptions,\n context: CacheManagerContext,\n ) {\n return (this._checkCacheEntry(REQUEST_FIELD_PATHS, hash, options, { ...context, requestFieldCacheKey }) ||\n {}) as Partial<CheckCacheEntryResult>;\n }\n\n private async _retrieveCachedResponseData(\n { ast }: RequestData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<CachedResponseData> {\n const cachedResponseData: CachedResponseData = {\n cacheMetadata: new Map(),\n data: {},\n fieldCount: { missing: 0, total: 0 },\n fieldPathChecklist: new Map(),\n };\n\n const queryNode = getOperationDefinitions(ast, context.operation)[0];\n const fieldsAndTypeNames = getChildFields(queryNode);\n\n if (!fieldsAndTypeNames) {\n return cachedResponseData;\n }\n\n await Promise.all(\n fieldsAndTypeNames.map(({ fieldNode }) =>\n this._analyzeFieldNode(\n fieldNode,\n { requestFieldPath: context.operation },\n cachedResponseData,\n options,\n context,\n ),\n ),\n );\n\n cachedResponseData.fieldCount = CacheManager._countFieldPathChecklist(cachedResponseData.fieldPathChecklist);\n return cachedResponseData;\n }\n\n private _retrieveResponseDataForCaching(\n normalizedResponseData: RawResponseDataWithMaybeCacheMetadata,\n context: CacheManagerContext,\n ) {\n const responseChunks = this._responseChunksAwaitingCaching.get(\n context.requestID,\n ) as RawResponseDataWithMaybeCacheMetadata[];\n\n this._responseChunksAwaitingCaching.delete(context.requestID);\n return mergeResponseDataSets([...responseChunks, normalizedResponseData]);\n }\n\n @logCacheEntry()\n private async _setCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n value: any,\n cachemapOptions: CachemapOptions,\n _options: RequestOptions,\n _context: CacheManagerContext & { requestFieldCacheKey?: string },\n ): Promise<void> {\n try {\n await this._cache.set(`${cacheType}::${hash}`, cloneDeep(value), cachemapOptions);\n } catch (error) {\n // no catch\n }\n }\n\n private async _setEntityAndRequestFieldPathCacheEntries(\n requestData: RequestData,\n responseData: ResponseDataForCaching,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n const operationNode = getOperationDefinitions(requestData.ast, context.operation)[0];\n const fieldsAndTypeNames = getChildFields(operationNode);\n\n if (!fieldsAndTypeNames) {\n return;\n }\n\n await Promise.all(\n fieldsAndTypeNames.map(({ fieldNode }) => {\n return this._parseEntityAndRequestFieldPathCacheEntryData(\n fieldNode,\n { requestFieldPath: context.operation },\n responseData,\n options,\n context,\n );\n }),\n );\n }\n\n private async _setEntityAndRequestFieldPathCacheEntry(\n field: FieldNode,\n keysAndPaths: KeysAndPaths,\n { cacheMetadata, entityData, requestFieldPathData }: ResponseDataForCaching,\n options: RequestOptions,\n context: CacheManagerContext,\n ) {\n const { requestFieldPath, responseDataPath } = keysAndPaths;\n const fieldData = get(entityData, responseDataPath);\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n const cacheability = cacheMetadata.get(requestFieldPath);\n\n if (isUndefined(fieldData) || !fieldTypeInfo || !cacheability) {\n return;\n }\n\n const promises: Promise<void>[] = [];\n\n promises.push(\n this._setRequestFieldPathCacheEntry(\n field,\n keysAndPaths,\n { cacheability, data: requestFieldPathData, fieldTypeInfo },\n options,\n context,\n ),\n );\n\n const isEntity = this._isFieldEntity(fieldData, fieldTypeInfo);\n\n if (!isEntity && fieldTypeInfo.hasArguments) {\n unset(entityData, responseDataPath);\n }\n\n if (isEntity) {\n promises.push(\n this._setEntityCacheEntry(keysAndPaths, { cacheability, data: entityData, fieldTypeInfo }, options, context),\n );\n }\n\n await Promise.all(promises);\n }\n\n private async _setEntityCacheEntry(\n { responseDataPath }: KeysAndPaths,\n { cacheability, data, fieldTypeInfo }: DataForCachingEntry,\n options: RequestOptions,\n context: CacheManagerContext,\n ) {\n let fieldData = get(data, responseDataPath);\n const fieldTypeName = fieldTypeInfo.isEntity ? fieldTypeInfo.typeName : fieldData.__typename;\n const entityDataKey = `${fieldTypeName}::${fieldData[this._typeIDKey]}`;\n const result = await this._checkCacheEntry(DATA_ENTITIES, entityDataKey, options, context);\n\n if (result) {\n fieldData = this._mergeObjects(result.entry, fieldData);\n }\n\n await this._setCacheEntry(\n DATA_ENTITIES,\n entityDataKey,\n fieldData,\n { cacheHeaders: { cacheControl: cacheability.printCacheControl() }, tag: options.tag },\n options,\n context,\n );\n\n set(data, responseDataPath, { __cacheKey: `${DATA_ENTITIES}::${entityDataKey}` });\n }\n\n private _setFieldCacheability(\n field: FieldNode,\n ancestorKeysAndPaths: AncestorKeysAndPaths,\n { cacheMetadata, data }: ResponseData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): void {\n const { requestFieldPath: ancestorRequestFieldPath } = ancestorKeysAndPaths;\n const keysAndPaths = buildFieldKeysAndPaths(field, ancestorKeysAndPaths, context);\n const { requestFieldPath, responseDataPath } = keysAndPaths;\n const fieldData = get(data, responseDataPath);\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n\n if (!isObjectLike(fieldData) && !fieldTypeInfo?.hasDirectives) {\n return;\n }\n\n this._setFieldTypeCacheDirective(cacheMetadata, { ancestorRequestFieldPath, requestFieldPath }, context);\n\n if (isObjectLike(fieldData)) {\n iterateChildFields(\n field,\n fieldData as PlainObjectMap | any[],\n context.fragmentDefinitions,\n (\n childField: FieldNode,\n _typeName: string | undefined,\n _fragmentKind: string | undefined,\n _fragmentName: string | undefined,\n childIndex?: number,\n ) => {\n this._setFieldCacheability(\n childField,\n { index: childIndex, requestFieldPath, responseDataPath },\n { cacheMetadata, data },\n options,\n context,\n );\n },\n );\n }\n }\n\n private _setFieldTypeCacheDirective(\n cacheMetadata: CacheMetadata,\n { ancestorRequestFieldPath, requestFieldPath }: { ancestorRequestFieldPath?: string; requestFieldPath: string },\n { fieldTypeMap, operation }: CacheManagerContext,\n ): void {\n if (cacheMetadata.has(requestFieldPath)) {\n return;\n }\n\n const fieldTypeInfo = fieldTypeMap.get(requestFieldPath);\n\n if (fieldTypeInfo && this._typeCacheDirectives[fieldTypeInfo.typeName]) {\n const cacheability = new Cacheability({ cacheControl: this._typeCacheDirectives[fieldTypeInfo.typeName] });\n CacheManager._setCacheMetadata(cacheMetadata, cacheability, requestFieldPath, operation);\n } else if (this._cascadeCacheControl && ancestorRequestFieldPath) {\n CacheManager._setCacheMetadata(\n cacheMetadata,\n cacheMetadata.get(ancestorRequestFieldPath),\n requestFieldPath,\n operation,\n );\n }\n }\n\n @logPartialCompiled()\n private async _setPartialQueryResponse(\n hash: string,\n partialQueryResponse: PartialQueryResponse,\n _options: RequestOptions,\n _context: CacheManagerContext,\n ): Promise<void> {\n this._partialQueryResponses.set(hash, partialQueryResponse);\n }\n\n private async _setQueryResponseCacheEntry(\n hash: string,\n { cacheMetadata, data }: ResponseData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n const dehydratedCacheMetadata = dehydrateCacheMetadata(cacheMetadata);\n const cacheControl = CacheManager._getOperationCacheControl(cacheMetadata, context.operation);\n\n await this._setCacheEntry(\n QUERY_RESPONSES,\n hash,\n { cacheMetadata: dehydratedCacheMetadata, data },\n { cacheHeaders: { cacheControl }, tag: options.tag },\n options,\n context,\n );\n }\n\n private async _setRequestFieldPathCacheEntry(\n field: FieldNode,\n keysAndPaths: KeysAndPaths,\n { cacheability, data, fieldTypeInfo }: DataForCachingEntry,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n const { hashedRequestFieldCacheKey, requestFieldCacheKey, responseDataPath } = keysAndPaths;\n let fieldData = get(data, responseDataPath);\n const isEntity = this._isFieldEntity(fieldData, fieldTypeInfo);\n const hasArgsOrDirectives = fieldTypeInfo.hasArguments || fieldTypeInfo.hasDirectives;\n\n if (context.operation === QUERY && (isEntity || hasArgsOrDirectives)) {\n if (isPlainObject(fieldData) && field.selectionSet?.selections) {\n fieldData = filterOutPropsWithArgsOrDirectives(fieldData, field.selectionSet.selections, keysAndPaths, context);\n }\n\n const result = await this._checkCacheEntry(REQUEST_FIELD_PATHS, hashedRequestFieldCacheKey, options, {\n ...context,\n requestFieldCacheKey,\n });\n\n if (result && isObjectLike(fieldData)) {\n fieldData = this._mergeObjects(result.entry, fieldData);\n }\n\n await this._setCacheEntry(\n REQUEST_FIELD_PATHS,\n hashedRequestFieldCacheKey,\n fieldData,\n { cacheHeaders: { cacheControl: cacheability.printCacheControl() }, tag: options.tag },\n options,\n { ...context, requestFieldCacheKey },\n );\n\n if (hasChildFields(field, { fragmentDefinitions: context.fragmentDefinitions })) {\n if (isEntity) {\n set(data, responseDataPath, { __cacheKey: `${REQUEST_FIELD_PATHS}::${hashedRequestFieldCacheKey}` });\n } else {\n unset(data, responseDataPath);\n }\n }\n }\n }\n\n private _setResponseChunksAwaitingCaching(\n normalizedResponseData: RawResponseDataWithMaybeCacheMetadata,\n context: CacheManagerContext,\n ) {\n const responseChunks = this._responseChunksAwaitingCaching.get(context.requestID);\n\n if (responseChunks) {\n this._responseChunksAwaitingCaching.set(context.requestID, [...responseChunks, normalizedResponseData]);\n } else {\n this._responseChunksAwaitingCaching.set(context.requestID, [normalizedResponseData]);\n }\n }\n}\n"],"file":"index.mjs"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@graphql-box/cache-manager",
3
- "version": "4.1.3",
3
+ "version": "4.1.5",
4
4
  "description": "The GraphQL Box cache manager module.",
5
5
  "author": "Dylan Aubrey <dylanaubrey@gmail.com>",
6
6
  "license": "MIT",
@@ -17,7 +17,7 @@
17
17
  "access": "public"
18
18
  },
19
19
  "main": "lib/main/index.js",
20
- "module": "lib/module/index.js",
20
+ "module": "lib/module/index.mjs",
21
21
  "browser": "lib/browser/index.js",
22
22
  "types": "lib/types/index.d.ts",
23
23
  "keywords": [
@@ -34,7 +34,7 @@
34
34
  "compile-watch:types": "yarn run compile:types --watch",
35
35
  "compile:browser": "cross-env BABEL_ENV=browser rollup -c ../../rollup.config.js",
36
36
  "compile:main": "cross-env BABEL_ENV=main babel ./src --out-dir ./lib/main --extensions \".ts\" --source-maps --config-file ../../babel.config.js",
37
- "compile:module": "cross-env BABEL_ENV=module babel ./src --out-dir ./lib/module --extensions \".ts\" --source-maps --config-file ../../babel.config.js",
37
+ "compile:module": "cross-env BABEL_ENV=module babel ./src --out-dir ./lib/module --extensions \".ts\" --out-file-extension \".mjs\" --source-maps --config-file ../../babel.config.js",
38
38
  "compile:types": "tsc --build",
39
39
  "docs": "typedoc --includes ./src/main --out ./docs --options ../../typedoc.js",
40
40
  "watch": "cross-env BABEL_ENV=browser rollup -c ../../rollup.config.js -w"
@@ -48,7 +48,7 @@
48
48
  "lodash": "< 5"
49
49
  },
50
50
  "dependencies": {
51
- "cacheability": "^3.0.1"
51
+ "cacheability": "^3.0.2"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@graphql-box/test-utils": "^4.0.0"
@@ -1,2 +0,0 @@
1
-
2
- //# sourceMappingURL=index.js.map