@graphql-box/cache-manager 2.3.1 → 2.4.2

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.
@@ -1,2 +1,2 @@
1
- import"core-js/modules/es.object.keys.js";import"core-js/modules/es.symbol.js";import"core-js/modules/es.object.get-own-property-descriptors.js";import e from"@babel/runtime/helpers/toConsumableArray";import t from"@babel/runtime/helpers/objectWithoutProperties";import a from"@babel/runtime/helpers/asyncToGenerator";import r from"@babel/runtime/helpers/classCallCheck";import n from"@babel/runtime/helpers/createClass";import i from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/applyDecoratedDescriptor";import c from"lodash/unset";import o from"lodash/set";import u from"lodash/isUndefined";import h from"lodash/isPlainObject";import p from"lodash/isObjectLike";import l from"lodash/isArray";import d from"lodash/get";import f from"lodash/cloneDeep";import y from"lodash/assign";import m from"@babel/runtime/regenerator";import"core-js/modules/es.array.iterator.js";import"core-js/modules/es.map.js";import"core-js/modules/es.object.to-string.js";import"core-js/modules/es.string.iterator.js";import"core-js/modules/web.dom-collections.iterator.js";import"core-js/modules/es.promise.js";import"core-js/modules/web.dom-collections.for-each.js";import"core-js/modules/es.array.concat.js";import"core-js/modules/es.array.map.js";import"core-js/modules/es.array.filter.js";import"core-js/modules/es.object.get-own-property-descriptor.js";import{TYPE_NAME_KEY as v,QUERY_RESPONSES as b,DATA_ENTITIES as _,REQUEST_FIELD_PATHS as g,QUERY as D}from"@graphql-box/core";import{hashRequest as k,getName as C,getAlias as x,getArguments as P,resolveFragments as w,getFragmentDefinitions as F,deleteFragmentSpreads as j,getChildFields as q,deleteChildFields as E,getInlineFragments as N,deleteInlineFragments as O,FRAGMENT_SPREAD as M,hasChildFields as R,deleteFragmentDefinitions as K,getOperationDefinitions as T,rehydrateCacheMetadata as I,iterateChildFields as A,mergeObjects as Q,dehydrateCacheMetadata as z}from"@graphql-box/helpers";import S from"cacheability";import{print as U}from"graphql";import L from"lodash/isNumber";import"core-js/modules/es.array.join.js";import H from"@babel/runtime/helpers/toArray";import V from"lodash/isEmpty";import"core-js/modules/es.object.values.js";import"core-js/modules/es.array.slice.js";import G from"lodash/keys";import"core-js/modules/es.array.find.js";import"core-js/modules/es.function.name.js";var J="cache_entry_added",W="cache_entry_queried",B="partial_query_compiled";var X=function(e,t){var a=[];return e.length&&a.push(e),a.push(t),a.join(".")},Y=function(e,t,a){var r=C(e),n=t.index,i=t.requestFieldCacheKey,s=void 0===i?"":i,c=t.requestFieldPath,o=void 0===c?"":c,u=t.responseDataPath,h=void 0===u?"":u,p=x(e)||r,l=L(n)?o:X(o,p),d=a.fieldTypeMap.get(l),f=function(e,t,a,r,n){var i,s,c="".concat(L(n)?n:e);return a&&(c="".concat(c,"(").concat(JSON.stringify(a),")")),null!=r&&null!==(i=r.inherited)&&void 0!==i&&i.length&&(c="".concat(r.inherited.join(" ")," ").concat(c)),null!=r&&null!==(s=r.own)&&void 0!==s&&s.length&&(c="".concat(c," ").concat(r.own.join(" "))),X(t,c)}(r,s,P(e),null==d?void 0:d.directives,n),y=L(n)?n:p,m=X(h,y);return{hashedRequestFieldCacheKey:k(f),propNameOrIndex:y,requestFieldCacheKey:f,requestFieldPath:l,responseDataPath:m}},Z=function(e,t,a,r){var n=w(t,r.fragmentDefinitions);return G(e).reduce((function(t,i){var s=n.find((function(e){var t=e.fieldNode;return C(t)===i}));if(s){var c=Y(s.fieldNode,a,r).requestFieldPath,o=r.fieldTypeMap.get(c);null!=o&&o.hasArguments||null!=o&&o.hasDirectives||(t[i]=e[i])}return t}),{})},$=function(e,t){if(!e||!e.length)return{hasData:!1,typeUnused:!!t};if(1===e.length){var a=e[0],r=a.hasData,n=a.typeName;return{hasData:r,typeUnused:n?n!==t:void 0}}return{hasData:e.some((function(e){var a=e.hasData;return e.typeName===t&&a})),typeUnused:!e.every((function(e){return e.typeName===t}))}},ee=function e(t,a,r,n,i){var s=i.fragmentDefinitions,c=i.typeIDKey,o=q(t,{fragmentDefinitions:s});if(!o)return!1;for(var u={},h=o.length-1;h>=0;h-=1){var p,l,d=o[h],f=d.fieldNode,y=d.fragmentKind,m=d.fragmentName,b=d.typeName;if(y===M&&m&&!u[m])u[m]={hasData:0,total:null!=s&&s[m]&&null!==(p=null===(l=q(null==s?void 0:s[m],{fragmentDefinitions:s}))||void 0===l?void 0:l.length)&&void 0!==p?p:0};var _=C(f);if(_!==c&&_!==v){var g=Y(f,{requestFieldPath:n},i).requestFieldPath,D=$(a.get(g),b),k=D.hasData,x=D.typeUnused;(k||x)&&(y===M?u[m].hasData+=1:R(f,{fragmentDefinitions:s})?e(f,a,r,g,i)&&E(t,f):E(t,f))}}return function(e,t,a,r){V(t)||G(t).forEach((function(n){a[n].total+=1,a[n].paths.push(r);var i=t[n];i.hasData===i.total&&(j(e,n),a[n].deleted+=1)}))}(t,u,r,n),function(e,t){var a=t.fragmentDefinitions,r=t.typeIDKey,n=N(e),i=!1;n.forEach((function(t){var n=q(t,{fragmentDefinitions:a});if(!n||!n.length)return O(e,t),void(i=!0);if(1===n.length){var s=n[0].fieldNode;C(s)===r&&(O(e,t),i=!0)}}))}(t,i),function(e,t){var a=t.fragmentDefinitions,r=t.typeIDKey,n=q(e,{fragmentDefinitions:a});if(!n||n.length>3)return!1;var i=n.map((function(e){var t=e.fieldNode;return C(t)}));if(2===i.length&&i.every((function(e){return e===r||e===v})))return E(e,n.map((function(e){return e.fieldNode}))),!0;if(1===i.length&&i[0]===r||i[0]===v){var s=n[0].fieldNode;return E(e,s),!0}}(t,i),!R(t,{fragmentDefinitions:s})},te=function(t,a,r){var n=t.ast,i=a.fieldPathChecklist,s=T(n,r.operation)[0],c=r.fragmentDefinitions,o=q(s,{fragmentDefinitions:c});if(!o)return n;for(var u=function(e){var t;return G(null!==(t=F(e))&&void 0!==t?t:{}).reduce((function(e,t){return e[t]={deleted:0,paths:[],total:0},e}),{})}(n),h=o.length-1;h>=0;h-=1){var p=o[h].fieldNode,l=Y(p,{requestFieldPath:r.operation},r).requestFieldPath;ee(p,i,u,l,r)&&E(s,p)}return r.queryFiltered=!0,function(t,a,r,n){var i,s=G(r).reduce((function(t,a){var n=r[a],i=n.deleted,s=n.total;return 0===i&&1===s?[].concat(e(t),[{name:a,path:r[a].paths[0]}]):t}),[]),c=null!==(i=F(t))&&void 0!==i?i:{};s.forEach((function(e){var t=e.name,i=e.path,s=c[t];ee(s,a,r,i,n)}));var o=G(r).reduce((function(t,a){var n=r[a],i=n.deleted,s=n.total;return i>0&&i===s?[].concat(e(t),[a]):t}),[]);return K(t,{include:o})}(n,i,u,r)};function ae(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function re(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?ae(Object(a),!0).forEach((function(t){i(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):ae(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}var ne,ie,se,ce,oe=function(e){var a=e.data,r=e.path;return re(re({},t(e,["data","path"])),{},{data:o({},r,a),path:r})},ue=function(e,t,a){var r=t.typeIDValue,n=h(e)?e[a]:void 0;return r||n};function he(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function pe(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?he(Object(a),!0).forEach((function(t){i(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):he(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}var le=(ne=function(e,r,n){var i,s=n.value;s&&(n.value=(i=a(m.mark((function e(){var r,n,i,c=this,o=arguments;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(r=o.length,n=new Array(r),i=0;i<r;i++)n[i]=o[i];return e.prev=1,e.abrupt("return",new Promise(function(){var e=a(m.mark((function e(a){var r,i,o,u,h,p,l;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n[3],i=r.debugManager,o=t(r,["debugManager"]),i){e.next=8;break}return e.t0=a,e.next=5,s.apply(c,n);case 5:return e.t1=e.sent,(0,e.t0)(e.t1),e.abrupt("return");case 8:return u=i.now(),e.next=11,s.apply(c,n);case 11:h=e.sent,p=i.now(),l=p-u,a(h),i.emit("cache_entry_queried",{cacheType:n[0],context:o,hash:n[1],options:n[2],result:h,stats:{duration:l,endTime:p,startTime:u}});case 16:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 5:return e.prev=5,e.t0=e.catch(1),e.abrupt("return",Promise.reject(e.t0));case 8:case"end":return e.stop()}}),e,null,[[1,5]])}))),function(){return i.apply(this,arguments)}))},ie=function(e,r,n){var i,s=n.value;s&&(n.value=(i=a(m.mark((function e(){var r,n,i,c=this,o=arguments;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(r=o.length,n=new Array(r),i=0;i<r;i++)n[i]=o[i];return e.abrupt("return",new Promise(function(){var e=a(m.mark((function e(a){var r,i,o,u,h,p;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n[5],i=r.debugManager,o=t(r,["debugManager"]),i){e.next=6;break}return e.next=4,s.apply(c,n);case 4:return a(),e.abrupt("return");case 6:return u=i.now(),e.next=9,s.apply(c,n);case 9:h=i.now(),p=h-u,a(),i.emit("cache_entry_added",{cachemapOptions:n[3],cacheType:n[0],context:o,hash:n[1],options:n[4],stats:{duration:p,endTime:h,startTime:u},value:n[2]});case 13:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 2:case"end":return e.stop()}}),e)}))),function(){return i.apply(this,arguments)}))},se=function(e,r,n){var i,s=n.value;s&&(n.value=(i=a(m.mark((function e(){var r,n,i,c=this,o=arguments;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(r=o.length,n=new Array(r),i=0;i<r;i++)n[i]=o[i];return e.abrupt("return",new Promise(function(){var e=a(m.mark((function e(a){var r,i,o,u,h,p;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n[3],i=r.debugManager,o=t(r,["debugManager"]),i){e.next=6;break}return e.next=4,s.apply(c,n);case 4:return a(),e.abrupt("return");case 6:return u=i.now(),e.next=9,s.apply(c,n);case 9:h=i.now(),p=h-u,a(),i.emit("partial_query_compiled",{context:o,hash:n[0],options:n[2],partialQueryResponse:n[1],stats:{duration:p,endTime:h,startTime:u}});case 13:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 2:case"end":return e.stop()}}),e)}))),function(){return i.apply(this,arguments)}))},s((ce=function(){function s(e){r(this,s),i(this,"_cache",void 0),i(this,"_cascadeCacheControl",void 0),i(this,"_fallbackOperationCacheability",void 0),i(this,"_partialQueryResponses",new Map),i(this,"_typeCacheDirectives",void 0),i(this,"_typeIDKey",void 0);var t=e.cache,a=e.cascadeCacheControl,n=e.fallbackOperationCacheability,c=e.typeCacheDirectives,o=e.typeIDKey;this._cache=t,this._cascadeCacheControl=a||!1,this._fallbackOperationCacheability=n||"noCache",this._typeCacheDirectives=c||{},this._typeIDKey=o}var C,x,P,w,j,E,N,O,K,L,G,J,W,B,X,$,ee,ae,re,ne,ie,se,ce,he,le;return n(s,[{key:"cache",get:function(){return this._cache}},{key:"analyzeQuery",value:(le=a(m.mark((function e(a,r,n){var i,s,c,o,u,h,p,l,d,f,v;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=a.ast,s=a.hash,i){e.next=3;break}return e.abrupt("return",Promise.reject(new TypeError("@graphql-box/cache-manager expected an AST.")));case 3:return c=pe(pe({},n),{},{fragmentDefinitions:F(i),typeIDKey:this._typeIDKey}),e.next=6,this._retrieveCachedResponseData(a,r,c);case 6:if(o=e.sent,u=o.cacheMetadata,h=o.data,(p=o.fieldCount).missing!==p.total){e.next=10;break}return e.abrupt("return",{updated:a});case 10:if(p.missing){e.next=16;break}if(l=this._setQueryResponseCacheEntry(s,{cacheMetadata:u,data:h},r,c),!r.awaitDataCaching){e.next=15;break}return e.next=15,l;case 15:return e.abrupt("return",{response:{cacheMetadata:u,data:h}});case 16:return this._setPartialQueryResponse(s,{cacheMetadata:u,data:h},r,c),d=te(a,o,c),c.fragmentDefinitions,c.typeIDKey,f=t(c,["fragmentDefinitions","typeIDKey"]),y(n,f),v=U(d),e.abrupt("return",{updated:{ast:d,hash:k(v),request:v}});case 22:case"end":return e.stop()}}),e,this)}))),function(e,t,a){return le.apply(this,arguments)})},{key:"checkCacheEntry",value:(he=a(m.mark((function e(t,a,r,n){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._checkCacheEntry(t,a,r,n));case 1:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r){return he.apply(this,arguments)})},{key:"checkQueryResponseCacheEntry",value:(ce=a(m.mark((function e(t,a,r){var n,i,s,c;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._checkCacheEntry(b,t,a,r);case 2:if(n=e.sent){e.next=5;break}return e.abrupt("return",!1);case 5:return i=n.entry,s=i.cacheMetadata,c=i.data,e.abrupt("return",{cacheMetadata:I(s),data:c});case 7:case"end":return e.stop()}}),e,this)}))),function(e,t,a){return ce.apply(this,arguments)})},{key:"deletePartialQueryResponse",value:function(e){this._partialQueryResponses.delete(e)}},{key:"resolveQuery",value:(se=a(m.mark((function e(t,a,r,n,i){var c,o,u,h,p,l,d,f,y,v;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c=pe(pe({},i),{},{fragmentDefinitions:F(a.ast),typeIDKey:this._typeIDKey}),o=[],e.next=4,this._resolveRequest(a,r,n,c);case 4:if(u=e.sent,h=u.cacheMetadata,p=u.data,l=u.hasNext,d=u.path,c.queryFiltered&&(r.hasNext||r.path||o.push(this._setQueryResponseCacheEntry(a.hash,{cacheMetadata:h,data:p},n,c)),r.path||(f=this._getPartialQueryResponse(t.hash))),y=s._mergeResponseCacheMetadata(h,f),v=this._mergeResponseData(p,f),r.hasNext||r.path||o.push(this._setQueryResponseCacheEntry(t.hash,{cacheMetadata:y,data:v},n,c)),!n.awaitDataCaching){e.next=16;break}return e.next=16,Promise.all(o);case 16:return e.abrupt("return",{cacheMetadata:y,data:v,hasNext:l,path:d});case 17:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r,n){return se.apply(this,arguments)})},{key:"resolveRequest",value:(ie=a(m.mark((function e(t,a,r,n){var i;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=pe(pe({},n),{},{fragmentDefinitions:F(t.ast),typeIDKey:this._typeIDKey}),e.abrupt("return",this._resolveRequest(t,a,r,i));case 2:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r){return ie.apply(this,arguments)})},{key:"_analyzeFieldNode",value:(ne=a(m.mark((function e(t,a,r,n,i){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!R(t)){e.next=5;break}return e.next=3,this._analyzeParentFieldNode(t,a,r,n,i);case 3:e.next=7;break;case 5:return e.next=7,this._analyzeLeafFieldNode(t,a,r,n,i);case 7:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r,n){return ne.apply(this,arguments)})},{key:"_analyzeLeafFieldNode",value:(re=a(m.mark((function e(t,a,r,n,i){var c,o,u,h,p,l,d,f,y,v,b,_,g,D,k;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(c=Y(t,a,i),o=c.hashedRequestFieldCacheKey,u=c.propNameOrIndex,h=c.requestFieldPath,p=i.fieldTypeMap.get(h),l=a.entityData,d=a.fragmentKind,f=a.fragmentName,y=a.requestFieldPathData,v=a.typeName,b={dataTypeName:(null==l?void 0:l.__typename)||(null==y?void 0:y.__typename),fieldTypeName:v,fragmentKind:d,fragmentName:f},!s._isNodeRequestFieldPath(p)){e.next=14;break}return e.next=8,this._retrieveCachedRequestFieldPathData(o,n,i);case 8:_=e.sent,g=_.cacheability,D=_.entry,s._setCachedResponseData({cacheability:g,data:D},r,c,b,n,i),e.next=17;break;case 14:k=s._getFieldDataFromAncestor(l,u)||s._getFieldDataFromAncestor(y,u),s._setFieldPathChecklist(r.fieldPathChecklist,{data:k},h,b),s._setCachedData(r.data,{data:k},u);case 17:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r,n){return re.apply(this,arguments)})},{key:"_analyzeParentFieldNode",value:(ae=a(m.mark((function e(t,a,r,n,i){var c,o,u,h,l,f,y,b,_,g,D,k,C,x,P=this;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c=Y(t,a,i),o=c.propNameOrIndex,u=c.requestFieldCacheKey,h=c.requestFieldPath,l=i.fieldTypeMap.get(h),e.next=5,this._retrieveCachedParentNodeData(a,c,l,n,i);case 5:if(f=e.sent,y=f.cacheability,b=f.data,_=f.entityData,g=f.requestFieldPathData,D=a.fragmentKind,k=a.fragmentName,C=a.typeName,s._setCachedResponseData({cacheability:y,data:b},r,c,{dataTypeName:d(b,v),fieldTypeName:C,fragmentKind:D,fragmentName:k},n,i),p(b)){e.next=14;break}return e.abrupt("return");case 14:return x=[],A(t,b,i.fragmentDefinitions,(function(e,t,a,s,c){x.push(P._analyzeFieldNode(e,{cacheability:y,entityData:_,fragmentKind:a,fragmentName:s,index:c,requestFieldCacheKey:u,requestFieldPath:h,requestFieldPathData:g,typeName:t},pe(pe({},r),{},{data:r.data[o]}),n,i))})),e.next=19,Promise.all(x);case 19:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r,n){return ae.apply(this,arguments)})},{key:"_buildCacheMetadata",value:function(e,a,r,n){var i=this,s=e.ast,c=a.data,o=t(a,["data"]),u=this._createCacheMetadata(pe({data:c},o),n),h=T(s,n.operation)[0],p=q(h);return p?(p.forEach((function(e){var t=e.fieldNode;return i._setFieldCacheability(t,{requestFieldPath:n.operation},{cacheMetadata:u,data:c},r,n)})),u):u}},{key:"_checkCacheEntry",value:(ee=a(m.mark((function e(t,a,r,n){var i,c;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._hasCacheEntry(t,a);case 3:if((i=e.sent)&&s._isValid(i)){e.next=6;break}return e.abrupt("return",!1);case 6:return e.next=8,this._getCacheEntry(t,a,r,n);case 8:if(c=e.sent,!u(c)){e.next=11;break}return e.abrupt("return",!1);case 11:return e.abrupt("return",{cacheability:i,entry:c});case 14:return e.prev=14,e.t0=e.catch(0),e.abrupt("return",!1);case 17:case"end":return e.stop()}}),e,this,[[0,14]])}))),function(e,t,a,r){return ee.apply(this,arguments)})},{key:"_createCacheMetadata",value:function(e,t){var a=e._cacheMetadata,r=e.headers,n=t.operation,i=new Map,s=function(e){var t=e._cacheMetadata,a=e.fallback,r=e.headers;if(t&&!V(t)){var n=Object.values(t),i=H(n),s=i[0],c=i.slice(1);return new S({metadata:c.reduce((function(e,t){return t.ttl<e.ttl?t:e}),s)})}return r&&r.has("cache-control")?new S({headers:r}):new S({cacheControl:a})}({_cacheMetadata:a,fallback:this._fallbackOperationCacheability,headers:r});return i.set(n,s),a&&I(a,i),i}},{key:"_getCacheEntry",value:($=a(m.mark((function e(t,a,r,n){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._cache.get("".concat(t,"::").concat(a));case 3:return e.abrupt("return",e.sent);case 6:return e.prev=6,e.t0=e.catch(0),e.abrupt("return",Promise.reject(e.t0));case 9:case"end":return e.stop()}}),e,this,[[0,6]])}))),function(e,t,a,r){return $.apply(this,arguments)})},{key:"_getPartialQueryResponse",value:function(e){var t=this._partialQueryResponses.get(e);return this._partialQueryResponses.delete(e),t}},{key:"_hasCacheEntry",value:(X=a(m.mark((function e(t,a){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._cache.has("".concat(t,"::").concat(a));case 3:return e.abrupt("return",e.sent);case 6:return e.prev=6,e.t0=e.catch(0),e.abrupt("return",!1);case 9:case"end":return e.stop()}}),e,this,[[0,6]])}))),function(e,t){return X.apply(this,arguments)})},{key:"_isFieldEntity",value:function(e,t){var a=t.isEntity,r=t.possibleTypes;return!!d(e,this._typeIDKey,null)&&(!!a||!!r.length&&r.some((function(t){return t.typeName===e.__typename})))}},{key:"_mergeObjects",value:function(e,t){var a=this;return Q(e,t,(function(e,t){return h(t)&&t[a._typeIDKey]?t[a._typeIDKey]:void 0}))}},{key:"_mergeResponseData",value:function(e,t){return t?this._mergeObjects(t.data,e):e}},{key:"_parseEntityAndRequestFieldPathCacheEntryData",value:(B=a(m.mark((function e(t,a,r,n,i){var s,c,o,u,h,l,f,y,v,b,_=this;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s=r.cacheMetadata,c=r.entityData,o=r.requestFieldPathData,u=Y(t,a,i),h=u.requestFieldCacheKey,l=u.requestFieldPath,f=u.responseDataPath,y=d(o,f),v=i.fieldTypeMap.get(l),p(y)||null!=v&&v.hasDirectives){e.next=7;break}return e.abrupt("return");case 7:if(!p(y)){e.next=12;break}return b=[],A(t,y,i.fragmentDefinitions,(function(e,t,a,r,u){b.push(_._parseEntityAndRequestFieldPathCacheEntryData(e,{index:u,requestFieldCacheKey:h,requestFieldPath:l,responseDataPath:f},{cacheMetadata:s,entityData:c,requestFieldPathData:o},n,i))})),e.next=12,Promise.all(b);case 12:return e.next=14,this._setEntityAndRequestFieldPathCacheEntry(t,u,{cacheMetadata:s,entityData:c,requestFieldPathData:o},n,i);case 14:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r,n){return B.apply(this,arguments)})},{key:"_resolveRequest",value:(W=a(m.mark((function e(t,a,r,n){var i,s,c,o,u,h;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=a.path?oe(a):a,s=[],c=this._buildCacheMetadata(t,i,r,n),o=i.data,u=i.hasNext,h=i.path,s.push(this._setEntityAndRequestFieldPathCacheEntries(t,{cacheMetadata:c,entityData:f(o),requestFieldPathData:f(o)},r,n)),!r.awaitDataCaching){e.next=8;break}return e.next=8,Promise.all(s);case 8:return e.abrupt("return",{cacheMetadata:c,data:o,hasNext:u,path:h});case 9:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r){return W.apply(this,arguments)})},{key:"_retrieveCachedEntityData",value:(J=a(m.mark((function t(a,r,n,i){var s,c,o,u,h,p,l=this;return m.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return s=r.possibleTypes,c=r.typeName,o=[].concat(e(s.map((function(e){return e.typeName}))),[c]),t.next=4,Promise.all(o.map((function(e){return l._checkCacheEntry(_,"".concat(e,"::").concat(a),n,i)})));case 4:return u=t.sent,1===(h=u.filter((function(e){return!!e}))).length?p=h[0]:h.length>1&&(h.sort((function(e,t){var a=e.cacheability,r=t.cacheability;return a.metadata.ttl-r.metadata.ttl})),p={cacheability:h[0].cacheability,entry:h.reduce((function(e,t){var a=t.entry;return l._mergeObjects(e,a)}),{})}),t.abrupt("return",p||{});case 8:case"end":return t.stop()}}),t)}))),function(e,t,a,r){return J.apply(this,arguments)})},{key:"_retrieveCachedParentNodeData",value:(G=a(m.mark((function e(t,a,r,n,i){var c,o,h,p,l,d,f,y,v,b,_,g,D,k,C,x,P;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=t.entityData,h=t.requestFieldPathData,p=a.hashedRequestFieldCacheKey,l=a.propNameOrIndex,d=s._getFieldDataFromAncestor(o,l),f=s._getFieldDataFromAncestor(h,l),!s._isNodeRequestFieldPath(r)){e.next=12;break}return e.next=7,this._retrieveCachedRequestFieldPathData(p,n,i);case 7:v=e.sent,b=v.cacheability,(_=v.entry)&&(f=this._mergeObjects(f,_)),b&&(y=b);case 12:if(g=ue(f,r,this._typeIDKey),!s._isNodeEntity(r)||!g){e.next=21;break}return e.next=16,this._retrieveCachedEntityData(g,r,n,i);case 16:k=e.sent,C=k.cacheability,(x=k.entry)&&(d=this._mergeObjects(d,x)),C&&(!y||C.metadata.ttl>(null===(D=y)||void 0===D?void 0:D.metadata.ttl))&&(y=C);case 21:return P=u(f)&&u(d)?null!==(c=d)&&void 0!==c?c:f:this._mergeObjects(f,d),e.abrupt("return",{cacheability:y,data:P,entityData:d,requestFieldPathData:f});case 23:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r,n){return G.apply(this,arguments)})},{key:"_retrieveCachedRequestFieldPathData",value:(L=a(m.mark((function e(t,a,r){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._checkCacheEntry(g,t,a,r)||{});case 1:case"end":return e.stop()}}),e,this)}))),function(e,t,a){return L.apply(this,arguments)})},{key:"_retrieveCachedResponseData",value:(K=a(m.mark((function e(t,a,r){var n,i,c,o,u=this;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.ast,i={cacheMetadata:new Map,data:{},fieldCount:{missing:0,total:0},fieldPathChecklist:new Map},c=T(n,r.operation)[0],o=q(c)){e.next=6;break}return e.abrupt("return",i);case 6:return e.next=8,Promise.all(o.map((function(e){var t=e.fieldNode;return u._analyzeFieldNode(t,{requestFieldPath:r.operation},i,a,r)})));case 8:return i.fieldCount=s._countFieldPathChecklist(i.fieldPathChecklist),e.abrupt("return",i);case 10:case"end":return e.stop()}}),e)}))),function(e,t,a){return K.apply(this,arguments)})},{key:"_setCacheEntry",value:(O=a(m.mark((function e(t,a,r,n,i,s){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._cache.set("".concat(t,"::").concat(a),f(r),n);case 3:e.next=7;break;case 5:e.prev=5,e.t0=e.catch(0);case 7:case"end":return e.stop()}}),e,this,[[0,5]])}))),function(e,t,a,r,n,i){return O.apply(this,arguments)})},{key:"_setEntityAndRequestFieldPathCacheEntries",value:(N=a(m.mark((function e(t,a,r,n){var i,s,c=this;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=T(t.ast,n.operation)[0],s=q(i)){e.next=4;break}return e.abrupt("return");case 4:return e.next=6,Promise.all(s.map((function(e){var t=e.fieldNode;return c._parseEntityAndRequestFieldPathCacheEntryData(t,{requestFieldPath:n.operation},a,r,n)})));case 6:case"end":return e.stop()}}),e)}))),function(e,t,a,r){return N.apply(this,arguments)})},{key:"_setEntityAndRequestFieldPathCacheEntry",value:(E=a(m.mark((function e(t,a,r,n,i){var s,o,h,p,l,f,y,v,b,_;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s=r.cacheMetadata,o=r.entityData,h=r.requestFieldPathData,p=a.requestFieldPath,l=a.responseDataPath,f=d(o,l),y=i.fieldTypeMap.get(p),v=s.get(p),!u(f)&&y&&v){e.next=7;break}return e.abrupt("return");case 7:return(b=[]).push(this._setRequestFieldPathCacheEntry(t,a,{cacheability:v,data:h,fieldTypeInfo:y},n,i)),!(_=this._isFieldEntity(f,y))&&y.hasArguments&&c(o,l),_&&b.push(this._setEntityCacheEntry(a,{cacheability:v,data:o,fieldTypeInfo:y},n,i)),e.next=14,Promise.all(b);case 14:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r,n){return E.apply(this,arguments)})},{key:"_setEntityCacheEntry",value:(j=a(m.mark((function e(t,a,r,n){var i,s,c,u,h,p,l,f;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=t.responseDataPath,s=a.cacheability,c=a.data,u=a.fieldTypeInfo,h=d(c,i),p=u.isEntity?u.typeName:h.__typename,l="".concat(p,"::").concat(h[this._typeIDKey]),e.next=7,this._checkCacheEntry(_,l,r,n);case 7:return(f=e.sent)&&(h=this._mergeObjects(f.entry,h)),e.next=11,this._setCacheEntry(_,l,h,{cacheHeaders:{cacheControl:s.printCacheControl()},tag:r.tag},r,n);case 11:o(c,i,{__cacheKey:"".concat(_,"::").concat(l)});case 12:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r){return j.apply(this,arguments)})},{key:"_setFieldCacheability",value:function(e,t,a,r,n){var i=this,s=a.cacheMetadata,c=a.data,o=t.requestFieldPath,u=Y(e,t,n),h=u.requestFieldPath,l=u.responseDataPath,f=d(c,l),y=n.fieldTypeMap.get(h);(p(f)||null!=y&&y.hasDirectives)&&(this._setFieldTypeCacheDirective(s,{ancestorRequestFieldPath:o,requestFieldPath:h},n),p(f)&&A(e,f,n.fragmentDefinitions,(function(e,t,a,o,u){i._setFieldCacheability(e,{index:u,requestFieldPath:h,responseDataPath:l},{cacheMetadata:s,data:c},r,n)})))}},{key:"_setFieldTypeCacheDirective",value:function(e,t,a){var r=t.ancestorRequestFieldPath,n=t.requestFieldPath,i=a.fieldTypeMap,c=a.operation;if(!e.has(n)){var o=i.get(n);if(o&&this._typeCacheDirectives[o.typeName]){var u=new S({cacheControl:this._typeCacheDirectives[o.typeName]});s._setCacheMetadata(e,u,n,c)}else this._cascadeCacheControl&&r&&s._setCacheMetadata(e,e.get(r),n,c)}}},{key:"_setPartialQueryResponse",value:(w=a(m.mark((function e(t,a,r,n){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this._partialQueryResponses.set(t,a);case 1:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r){return w.apply(this,arguments)})},{key:"_setQueryResponseCacheEntry",value:(P=a(m.mark((function e(t,a,r,n){var i,c,o,u;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=a.cacheMetadata,c=a.data,o=z(i),u=s._getOperationCacheControl(i,n.operation),e.next=5,this._setCacheEntry(b,t,{cacheMetadata:o,data:c},{cacheHeaders:{cacheControl:u},tag:r.tag},r,n);case 5:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r){return P.apply(this,arguments)})},{key:"_setRequestFieldPathCacheEntry",value:(x=a(m.mark((function e(t,a,r,n,i){var s,u,l,f,y,v,b,_,k,C;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s=r.cacheability,u=r.data,l=r.fieldTypeInfo,f=a.hashedRequestFieldCacheKey,y=a.responseDataPath,v=d(u,y),b=this._isFieldEntity(v,l),_=l.hasArguments||l.hasDirectives,i.operation!==D||!b&&!_){e.next=14;break}return h(v)&&null!==(k=t.selectionSet)&&void 0!==k&&k.selections&&(v=Z(v,t.selectionSet.selections,a,i)),e.next=9,this._checkCacheEntry(g,f,n,i);case 9:return(C=e.sent)&&p(v)&&(v=this._mergeObjects(C.entry,v)),e.next=13,this._setCacheEntry(g,f,v,{cacheHeaders:{cacheControl:s.printCacheControl()},tag:n.tag},n,i);case 13:R(t)&&(b?o(u,y,{__cacheKey:"".concat(g,"::").concat(f)}):c(u,y));case 14:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r,n){return x.apply(this,arguments)})}],[{key:"init",value:(C=a(m.mark((function e(t){var a;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=[],t.cache||a.push(new TypeError("@graphql-box/cache-manager expected options.cache.")),t.typeCacheDirectives&&!h(t.typeCacheDirectives)&&a.push(new TypeError("@graphql-box/cache-manager expected options.typeCacheDirectives to be a plain object.")),!a.length){e.next=5;break}return e.abrupt("return",Promise.reject(a));case 5:return e.abrupt("return",new s(t));case 6:case"end":return e.stop()}}),e)}))),function(e){return C.apply(this,arguments)})},{key:"_countFieldPathChecklist",value:function(e){var t={missing:0,total:0};return e.forEach((function(e){t.total+=e.length;var a=e.filter((function(e){return!e.hasData}));t.missing+=a.length})),t}},{key:"_getFieldDataFromAncestor",value:function(e,t){return p(e)?f(e[t]):void 0}},{key:"_getOperationCacheControl",value:function(e,t){if(!e)return"no-cache";var a=e.get(t);return a?a.printCacheControl():"no-cache"}},{key:"_isNodeEntity",value:function(e){if(!e)return!1;var t=e.isEntity,a=e.possibleTypes;return t||a.some((function(e){return!!e.isEntity}))}},{key:"_isNodeRequestFieldPath",value:function(e){return!!e&&(this._isNodeEntity(e)||e.hasArguments||e.hasDirectives)}},{key:"_isValid",value:function(e){return!d(e,["metadata","cacheControl","noCache"],!1)&&e.checkTTL()}},{key:"_mergeResponseCacheMetadata",value:function(t,a){return a?new Map([].concat(e(a.cacheMetadata),e(t))):t}},{key:"_setCachedData",value:function(e,t,a){var r=t.data;if(p(r)||u(r)){if(p(r)){var n=r;e[a]=l(n)?[]:{}}}else e[a]=r}},{key:"_setCachedResponseData",value:function(e,t,a,r,n,i){var c=t.cacheMetadata,o=t.data,u=t.fieldPathChecklist,h=a.propNameOrIndex,p=a.requestFieldPath,l=i.operation;s._setCacheMetadata(c,e.cacheability,p,l),s._setFieldPathChecklist(u,e,p,r),s._setCachedData(o,e,h)}},{key:"_setCacheMetadata",value:function(e,t,a,r){if(t){e.set(a,t);var n=e.get(r);(!n||n.metadata.ttl>t.metadata.ttl)&&e.set(r,t)}}},{key:"_setFieldPathChecklist",value:function(t,a,r,n){var i=a.data,s=n.dataTypeName,c=n.fieldTypeName,o=n.fragmentKind,h=n.fragmentName;if(u(c)||o===M){if(t.has(r))return;t.set(r,[{fragmentKind:o,fragmentName:h,hasData:!u(i)}])}else if(s===c){var p=t.get(r),l=p||[];l.some((function(e){return e.typeName===s}))||t.set(r,[].concat(e(l),[{fragmentKind:o,fragmentName:h,hasData:!u(i),typeName:s}]))}}}]),s}()).prototype,"_getCacheEntry",[ne],Object.getOwnPropertyDescriptor(ce.prototype,"_getCacheEntry"),ce.prototype),s(ce.prototype,"_setCacheEntry",[ie],Object.getOwnPropertyDescriptor(ce.prototype,"_setCacheEntry"),ce.prototype),s(ce.prototype,"_setPartialQueryResponse",[se],Object.getOwnPropertyDescriptor(ce.prototype,"_setPartialQueryResponse"),ce.prototype),ce);export default function(e){if(!h(e))throw new TypeError("@graphql-box/cache-manager expected userOptions to be a plain object.");return function(t){return le.init(pe(pe({},t),e))}}export{J as CACHE_ENTRY_ADDED,W as CACHE_ENTRY_QUERIED,le as CacheManager,B as PARTIAL_QUERY_COMPILED};
1
+ import"core-js/modules/es.object.keys.js";import"core-js/modules/es.symbol.js";import"core-js/modules/es.object.get-own-property-descriptors.js";import e from"@babel/runtime/helpers/toConsumableArray";import t from"@babel/runtime/helpers/objectWithoutProperties";import a from"@babel/runtime/helpers/asyncToGenerator";import r from"@babel/runtime/helpers/classCallCheck";import n from"@babel/runtime/helpers/createClass";import i from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/applyDecoratedDescriptor";import c from"lodash/unset";import o from"lodash/set";import u from"lodash/isUndefined";import h from"lodash/isPlainObject";import p from"lodash/isObjectLike";import l from"lodash/isArray";import d from"lodash/get";import f from"lodash/cloneDeep";import y from"lodash/assign";import m from"@babel/runtime/regenerator";import"core-js/modules/es.array.iterator.js";import"core-js/modules/es.map.js";import"core-js/modules/es.object.to-string.js";import"core-js/modules/es.string.iterator.js";import"core-js/modules/web.dom-collections.iterator.js";import"core-js/modules/es.promise.js";import"core-js/modules/web.dom-collections.for-each.js";import"core-js/modules/es.array.concat.js";import"core-js/modules/es.array.map.js";import"core-js/modules/es.array.filter.js";import"core-js/modules/es.object.get-own-property-descriptor.js";import{TYPE_NAME_KEY as v,QUERY_RESPONSES as b,DATA_ENTITIES as _,REQUEST_FIELD_PATHS as g,QUERY as D}from"@graphql-box/core";import{hashRequest as k,getName as C,getAlias as x,getArguments as P,resolveFragments as w,getFragmentDefinitions as F,deleteFragmentSpreads as j,getChildFields as q,deleteChildFields as E,getInlineFragments as N,deleteInlineFragments as O,FRAGMENT_SPREAD as M,hasChildFields as R,deleteFragmentDefinitions as K,getOperationDefinitions as T,rehydrateCacheMetadata as I,iterateChildFields as A,mergeObjects as Q,dehydrateCacheMetadata as z}from"@graphql-box/helpers";import S from"cacheability";import{print as U}from"graphql";import L from"lodash/isNumber";import"core-js/modules/es.array.join.js";import H from"@babel/runtime/helpers/toArray";import V from"lodash/isEmpty";import"core-js/modules/es.object.values.js";import"core-js/modules/es.array.slice.js";import G from"lodash/keys";import"core-js/modules/es.array.find.js";import"core-js/modules/es.function.name.js";var J="cache_entry_added",W="cache_entry_queried",B="partial_query_compiled";var X=function(e,t){var a=[];return e.length&&a.push(e),a.push(t),a.join(".")},Y=function(e,t,a){var r=C(e),n=t.index,i=t.requestFieldCacheKey,s=void 0===i?"":i,c=t.requestFieldPath,o=void 0===c?"":c,u=t.responseDataPath,h=void 0===u?"":u,p=x(e)||r,l=L(n)?o:X(o,p),d=a.fieldTypeMap.get(l),f=function(e,t,a,r,n){var i,s,c="".concat(L(n)?n:e);return a&&(c="".concat(c,"(").concat(JSON.stringify(a),")")),null!=r&&null!==(i=r.inherited)&&void 0!==i&&i.length&&(c="".concat(r.inherited.join(" ")," ").concat(c)),null!=r&&null!==(s=r.own)&&void 0!==s&&s.length&&(c="".concat(c," ").concat(r.own.join(" "))),X(t,c)}(r,s,P(e),null==d?void 0:d.directives,n),y=L(n)?n:p,m=X(h,y);return{hashedRequestFieldCacheKey:k(f),propNameOrIndex:y,requestFieldCacheKey:f,requestFieldPath:l,responseDataPath:m}},Z=function(e,t,a,r){var n=w(t,r.fragmentDefinitions);return G(e).reduce((function(t,i){var s=n.find((function(e){var t=e.fieldNode;return C(t)===i}));if(s){var c=Y(s.fieldNode,a,r).requestFieldPath,o=r.fieldTypeMap.get(c);null!=o&&o.hasArguments||null!=o&&o.hasDirectives||(t[i]=e[i])}return t}),{})},$=function(e,t){if(!e||!e.length)return{hasData:!1,typeUnused:!!t};if(1===e.length){var a=e[0],r=a.hasData,n=a.typeName;return{hasData:r,typeUnused:n?n!==t:void 0}}return{hasData:e.some((function(e){var a=e.hasData;return e.typeName===t&&a})),typeUnused:!e.every((function(e){return e.typeName===t}))}},ee=function e(t,a,r,n,i){var s=i.fragmentDefinitions,c=i.typeIDKey,o=q(t,{fragmentDefinitions:s});if(!o)return!1;for(var u={},h=o.length-1;h>=0;h-=1){var p,l,d=o[h],f=d.fieldNode,y=d.fragmentKind,m=d.fragmentName,b=d.typeName;if(y===M&&m&&!u[m])u[m]={hasData:0,total:null!=s&&s[m]&&null!==(p=null===(l=q(null==s?void 0:s[m],{fragmentDefinitions:s}))||void 0===l?void 0:l.length)&&void 0!==p?p:0};var _=C(f);if(_!==c&&_!==v){var g=Y(f,{requestFieldPath:n},i).requestFieldPath,D=$(a.get(g),b),k=D.hasData,x=D.typeUnused;(k||x)&&(y===M?u[m].hasData+=1:R(f,{fragmentDefinitions:s})?e(f,a,r,g,i)&&E(t,f):E(t,f))}}return function(e,t,a,r){V(t)||G(t).forEach((function(n){a[n].total+=1,a[n].paths.push(r);var i=t[n];i.hasData===i.total&&(j(e,n),a[n].deleted+=1)}))}(t,u,r,n),function(e,t){var a=t.fragmentDefinitions,r=t.typeIDKey,n=N(e),i=!1;n.forEach((function(t){var n=q(t,{fragmentDefinitions:a});if(!n||!n.length)return O(e,t),void(i=!0);if(1===n.length){var s=n[0].fieldNode;C(s)===r&&(O(e,t),i=!0)}}))}(t,i),function(e,t){var a=t.fragmentDefinitions,r=t.typeIDKey,n=q(e,{fragmentDefinitions:a});if(!n||n.length>3)return!1;var i=n.map((function(e){var t=e.fieldNode;return C(t)}));if(2===i.length&&i.every((function(e){return e===r||e===v})))return E(e,n.map((function(e){return e.fieldNode}))),!0;if(1===i.length&&i[0]===r||i[0]===v){var s=n[0].fieldNode;return E(e,s),!0}}(t,i),!R(t,{fragmentDefinitions:s})},te=function(t,a,r){var n=t.ast,i=a.fieldPathChecklist,s=T(n,r.operation)[0],c=r.fragmentDefinitions,o=q(s,{fragmentDefinitions:c});if(!o)return n;for(var u=function(e){var t;return G(null!==(t=F(e))&&void 0!==t?t:{}).reduce((function(e,t){return e[t]={deleted:0,paths:[],total:0},e}),{})}(n),h=o.length-1;h>=0;h-=1){var p=o[h].fieldNode,l=Y(p,{requestFieldPath:r.operation},r).requestFieldPath;ee(p,i,u,l,r)&&E(s,p)}return r.queryFiltered=!0,function(t,a,r,n){var i,s=G(r).reduce((function(t,a){var n=r[a],i=n.deleted,s=n.total;return 0===i&&1===s?[].concat(e(t),[{name:a,path:r[a].paths[0]}]):t}),[]),c=null!==(i=F(t))&&void 0!==i?i:{};s.forEach((function(e){var t=e.name,i=e.path,s=c[t];ee(s,a,r,i,n)}));var o=G(r).reduce((function(t,a){var n=r[a],i=n.deleted,s=n.total;return i>0&&i===s?[].concat(e(t),[a]):t}),[]);return K(t,{include:o})}(n,i,u,r)};function ae(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function re(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?ae(Object(a),!0).forEach((function(t){i(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):ae(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}var ne,ie,se,ce,oe=function(e){var a=e.data,r=e.paths;return re(re({},t(e,["data","paths"])),{},{data:o({},r[0],a),paths:r})},ue=function(e,t,a){var r=t.typeIDValue,n=h(e)?e[a]:void 0;return r||n};function he(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function pe(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?he(Object(a),!0).forEach((function(t){i(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):he(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}var le=(ne=function(e,r,n){var i,s=n.value;s&&(n.value=(i=a(m.mark((function e(){var r,n,i,c=this,o=arguments;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(r=o.length,n=new Array(r),i=0;i<r;i++)n[i]=o[i];return e.prev=1,e.abrupt("return",new Promise(function(){var e=a(m.mark((function e(a){var r,i,o,u,h,p,l;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n[3],i=r.debugManager,o=t(r,["debugManager"]),i){e.next=8;break}return e.t0=a,e.next=5,s.apply(c,n);case 5:return e.t1=e.sent,(0,e.t0)(e.t1),e.abrupt("return");case 8:return u=i.now(),e.next=11,s.apply(c,n);case 11:h=e.sent,p=i.now(),l=p-u,a(h),i.emit("cache_entry_queried",{cacheType:n[0],context:o,hash:n[1],options:n[2],result:h,stats:{duration:l,endTime:p,startTime:u}});case 16:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 5:return e.prev=5,e.t0=e.catch(1),e.abrupt("return",Promise.reject(e.t0));case 8:case"end":return e.stop()}}),e,null,[[1,5]])}))),function(){return i.apply(this,arguments)}))},ie=function(e,r,n){var i,s=n.value;s&&(n.value=(i=a(m.mark((function e(){var r,n,i,c=this,o=arguments;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(r=o.length,n=new Array(r),i=0;i<r;i++)n[i]=o[i];return e.abrupt("return",new Promise(function(){var e=a(m.mark((function e(a){var r,i,o,u,h,p;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n[5],i=r.debugManager,o=t(r,["debugManager"]),i){e.next=6;break}return e.next=4,s.apply(c,n);case 4:return a(),e.abrupt("return");case 6:return u=i.now(),e.next=9,s.apply(c,n);case 9:h=i.now(),p=h-u,a(),i.emit("cache_entry_added",{cachemapOptions:n[3],cacheType:n[0],context:o,hash:n[1],options:n[4],stats:{duration:p,endTime:h,startTime:u},value:n[2]});case 13:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 2:case"end":return e.stop()}}),e)}))),function(){return i.apply(this,arguments)}))},se=function(e,r,n){var i,s=n.value;s&&(n.value=(i=a(m.mark((function e(){var r,n,i,c=this,o=arguments;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(r=o.length,n=new Array(r),i=0;i<r;i++)n[i]=o[i];return e.abrupt("return",new Promise(function(){var e=a(m.mark((function e(a){var r,i,o,u,h,p;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n[3],i=r.debugManager,o=t(r,["debugManager"]),i){e.next=6;break}return e.next=4,s.apply(c,n);case 4:return a(),e.abrupt("return");case 6:return u=i.now(),e.next=9,s.apply(c,n);case 9:h=i.now(),p=h-u,a(),i.emit("partial_query_compiled",{context:o,hash:n[0],options:n[2],partialQueryResponse:n[1],stats:{duration:p,endTime:h,startTime:u}});case 13:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 2:case"end":return e.stop()}}),e)}))),function(){return i.apply(this,arguments)}))},s((ce=function(){function s(e){r(this,s),i(this,"_cache",void 0),i(this,"_cascadeCacheControl",void 0),i(this,"_fallbackOperationCacheability",void 0),i(this,"_partialQueryResponses",new Map),i(this,"_typeCacheDirectives",void 0),i(this,"_typeIDKey",void 0);var t=e.cache,a=e.cascadeCacheControl,n=e.fallbackOperationCacheability,c=e.typeCacheDirectives,o=e.typeIDKey;this._cache=t,this._cascadeCacheControl=a||!1,this._fallbackOperationCacheability=n||"noCache",this._typeCacheDirectives=c||{},this._typeIDKey=o}var C,x,P,w,j,E,N,O,K,L,G,J,W,B,X,$,ee,ae,re,ne,ie,se,ce,he,le;return n(s,[{key:"cache",get:function(){return this._cache}},{key:"analyzeQuery",value:(le=a(m.mark((function e(a,r,n){var i,s,c,o,u,h,p,l,d,f,v;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=a.ast,s=a.hash,i){e.next=3;break}return e.abrupt("return",Promise.reject(new TypeError("@graphql-box/cache-manager expected an AST.")));case 3:return c=pe(pe({},n),{},{fragmentDefinitions:F(i),typeIDKey:this._typeIDKey}),e.next=6,this._retrieveCachedResponseData(a,r,c);case 6:if(o=e.sent,u=o.cacheMetadata,h=o.data,(p=o.fieldCount).missing!==p.total){e.next=10;break}return e.abrupt("return",{updated:a});case 10:if(p.missing){e.next=16;break}if(l=this._setQueryResponseCacheEntry(s,{cacheMetadata:u,data:h},r,c),!r.awaitDataCaching){e.next=15;break}return e.next=15,l;case 15:return e.abrupt("return",{response:{cacheMetadata:u,data:h}});case 16:return this._setPartialQueryResponse(s,{cacheMetadata:u,data:h},r,c),d=te(a,o,c),c.fragmentDefinitions,c.typeIDKey,f=t(c,["fragmentDefinitions","typeIDKey"]),y(n,f),v=U(d),e.abrupt("return",{updated:{ast:d,hash:k(v),request:v}});case 22:case"end":return e.stop()}}),e,this)}))),function(e,t,a){return le.apply(this,arguments)})},{key:"checkCacheEntry",value:(he=a(m.mark((function e(t,a,r,n){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._checkCacheEntry(t,a,r,n));case 1:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r){return he.apply(this,arguments)})},{key:"checkQueryResponseCacheEntry",value:(ce=a(m.mark((function e(t,a,r){var n,i,s,c;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._checkCacheEntry(b,t,a,r);case 2:if(n=e.sent){e.next=5;break}return e.abrupt("return",!1);case 5:return i=n.entry,s=i.cacheMetadata,c=i.data,e.abrupt("return",{cacheMetadata:I(s),data:c});case 7:case"end":return e.stop()}}),e,this)}))),function(e,t,a){return ce.apply(this,arguments)})},{key:"deletePartialQueryResponse",value:function(e){this._partialQueryResponses.delete(e)}},{key:"resolveQuery",value:(se=a(m.mark((function e(t,a,r,n,i){var c,o,u,h,p,l,d,f,y,v;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c=pe(pe({},i),{},{fragmentDefinitions:F(a.ast),typeIDKey:this._typeIDKey}),o=[],e.next=4,this._resolveRequest(a,r,n,c);case 4:if(u=e.sent,h=u.cacheMetadata,p=u.data,l=u.hasNext,d=u.paths,c.queryFiltered&&(r.hasNext||r.paths||o.push(this._setQueryResponseCacheEntry(a.hash,{cacheMetadata:h,data:p},n,c)),r.paths||(f=this._getPartialQueryResponse(t.hash))),y=s._mergeResponseCacheMetadata(h,f),v=this._mergeResponseData(p,f),r.hasNext||r.paths||o.push(this._setQueryResponseCacheEntry(t.hash,{cacheMetadata:y,data:v},n,c)),!n.awaitDataCaching){e.next=16;break}return e.next=16,Promise.all(o);case 16:return e.abrupt("return",{cacheMetadata:y,data:v,hasNext:l,paths:d});case 17:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r,n){return se.apply(this,arguments)})},{key:"resolveRequest",value:(ie=a(m.mark((function e(t,a,r,n){var i;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=pe(pe({},n),{},{fragmentDefinitions:F(t.ast),typeIDKey:this._typeIDKey}),e.abrupt("return",this._resolveRequest(t,a,r,i));case 2:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r){return ie.apply(this,arguments)})},{key:"_analyzeFieldNode",value:(ne=a(m.mark((function e(t,a,r,n,i){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!R(t)){e.next=5;break}return e.next=3,this._analyzeParentFieldNode(t,a,r,n,i);case 3:e.next=7;break;case 5:return e.next=7,this._analyzeLeafFieldNode(t,a,r,n,i);case 7:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r,n){return ne.apply(this,arguments)})},{key:"_analyzeLeafFieldNode",value:(re=a(m.mark((function e(t,a,r,n,i){var c,o,u,h,p,l,d,f,y,v,b,_,g,D,k;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(c=Y(t,a,i),o=c.hashedRequestFieldCacheKey,u=c.propNameOrIndex,h=c.requestFieldPath,p=i.fieldTypeMap.get(h),l=a.entityData,d=a.fragmentKind,f=a.fragmentName,y=a.requestFieldPathData,v=a.typeName,b={dataTypeName:(null==l?void 0:l.__typename)||(null==y?void 0:y.__typename),fieldTypeName:v,fragmentKind:d,fragmentName:f},!s._isNodeRequestFieldPath(p)){e.next=14;break}return e.next=8,this._retrieveCachedRequestFieldPathData(o,n,i);case 8:_=e.sent,g=_.cacheability,D=_.entry,s._setCachedResponseData({cacheability:g,data:D},r,c,b,n,i),e.next=17;break;case 14:k=s._getFieldDataFromAncestor(l,u)||s._getFieldDataFromAncestor(y,u),s._setFieldPathChecklist(r.fieldPathChecklist,{data:k},h,b),s._setCachedData(r.data,{data:k},u);case 17:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r,n){return re.apply(this,arguments)})},{key:"_analyzeParentFieldNode",value:(ae=a(m.mark((function e(t,a,r,n,i){var c,o,u,h,l,f,y,b,_,g,D,k,C,x,P=this;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c=Y(t,a,i),o=c.propNameOrIndex,u=c.requestFieldCacheKey,h=c.requestFieldPath,l=i.fieldTypeMap.get(h),e.next=5,this._retrieveCachedParentNodeData(a,c,l,n,i);case 5:if(f=e.sent,y=f.cacheability,b=f.data,_=f.entityData,g=f.requestFieldPathData,D=a.fragmentKind,k=a.fragmentName,C=a.typeName,s._setCachedResponseData({cacheability:y,data:b},r,c,{dataTypeName:d(b,v),fieldTypeName:C,fragmentKind:D,fragmentName:k},n,i),p(b)){e.next=14;break}return e.abrupt("return");case 14:return x=[],A(t,b,i.fragmentDefinitions,(function(e,t,a,s,c){x.push(P._analyzeFieldNode(e,{cacheability:y,entityData:_,fragmentKind:a,fragmentName:s,index:c,requestFieldCacheKey:u,requestFieldPath:h,requestFieldPathData:g,typeName:t},pe(pe({},r),{},{data:r.data[o]}),n,i))})),e.next=19,Promise.all(x);case 19:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r,n){return ae.apply(this,arguments)})},{key:"_buildCacheMetadata",value:function(e,a,r,n){var i=this,s=e.ast,c=a.data,o=t(a,["data"]),u=this._createCacheMetadata(pe({data:c},o),n),h=T(s,n.operation)[0],p=q(h);return p?(p.forEach((function(e){var t=e.fieldNode;return i._setFieldCacheability(t,{requestFieldPath:n.operation},{cacheMetadata:u,data:c},r,n)})),u):u}},{key:"_checkCacheEntry",value:(ee=a(m.mark((function e(t,a,r,n){var i,c;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._hasCacheEntry(t,a);case 3:if((i=e.sent)&&s._isValid(i)){e.next=6;break}return e.abrupt("return",!1);case 6:return e.next=8,this._getCacheEntry(t,a,r,n);case 8:if(c=e.sent,!u(c)){e.next=11;break}return e.abrupt("return",!1);case 11:return e.abrupt("return",{cacheability:i,entry:c});case 14:return e.prev=14,e.t0=e.catch(0),e.abrupt("return",!1);case 17:case"end":return e.stop()}}),e,this,[[0,14]])}))),function(e,t,a,r){return ee.apply(this,arguments)})},{key:"_createCacheMetadata",value:function(e,t){var a=e._cacheMetadata,r=e.headers,n=t.operation,i=new Map,s=function(e){var t=e._cacheMetadata,a=e.fallback,r=e.headers;if(t&&!V(t)){var n=Object.values(t),i=H(n),s=i[0],c=i.slice(1);return new S({metadata:c.reduce((function(e,t){return t.ttl<e.ttl?t:e}),s)})}return r&&r.has("cache-control")?new S({headers:r}):new S({cacheControl:a})}({_cacheMetadata:a,fallback:this._fallbackOperationCacheability,headers:r});return i.set(n,s),a&&I(a,i),i}},{key:"_getCacheEntry",value:($=a(m.mark((function e(t,a,r,n){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._cache.get("".concat(t,"::").concat(a));case 3:return e.abrupt("return",e.sent);case 6:return e.prev=6,e.t0=e.catch(0),e.abrupt("return",Promise.reject(e.t0));case 9:case"end":return e.stop()}}),e,this,[[0,6]])}))),function(e,t,a,r){return $.apply(this,arguments)})},{key:"_getPartialQueryResponse",value:function(e){var t=this._partialQueryResponses.get(e);return this._partialQueryResponses.delete(e),t}},{key:"_hasCacheEntry",value:(X=a(m.mark((function e(t,a){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._cache.has("".concat(t,"::").concat(a));case 3:return e.abrupt("return",e.sent);case 6:return e.prev=6,e.t0=e.catch(0),e.abrupt("return",!1);case 9:case"end":return e.stop()}}),e,this,[[0,6]])}))),function(e,t){return X.apply(this,arguments)})},{key:"_isFieldEntity",value:function(e,t){var a=t.isEntity,r=t.possibleTypes;return!!d(e,this._typeIDKey,null)&&(!!a||!!r.length&&r.some((function(t){return t.typeName===e.__typename})))}},{key:"_mergeObjects",value:function(e,t){var a=this;return Q(e,t,(function(e,t){return h(t)&&t[a._typeIDKey]?t[a._typeIDKey]:void 0}))}},{key:"_mergeResponseData",value:function(e,t){return t?this._mergeObjects(t.data,e):e}},{key:"_parseEntityAndRequestFieldPathCacheEntryData",value:(B=a(m.mark((function e(t,a,r,n,i){var s,c,o,u,h,l,f,y,v,b,_=this;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s=r.cacheMetadata,c=r.entityData,o=r.requestFieldPathData,u=Y(t,a,i),h=u.requestFieldCacheKey,l=u.requestFieldPath,f=u.responseDataPath,y=d(o,f),v=i.fieldTypeMap.get(l),p(y)||null!=v&&v.hasDirectives){e.next=7;break}return e.abrupt("return");case 7:if(!p(y)){e.next=12;break}return b=[],A(t,y,i.fragmentDefinitions,(function(e,t,a,r,u){b.push(_._parseEntityAndRequestFieldPathCacheEntryData(e,{index:u,requestFieldCacheKey:h,requestFieldPath:l,responseDataPath:f},{cacheMetadata:s,entityData:c,requestFieldPathData:o},n,i))})),e.next=12,Promise.all(b);case 12:return e.next=14,this._setEntityAndRequestFieldPathCacheEntry(t,u,{cacheMetadata:s,entityData:c,requestFieldPathData:o},n,i);case 14:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r,n){return B.apply(this,arguments)})},{key:"_resolveRequest",value:(W=a(m.mark((function e(t,a,r,n){var i,s,c,o,u,h;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=a.paths&&n.normalizePatchResponseData?oe(a):a,s=[],c=this._buildCacheMetadata(t,i,r,n),o=i.data,u=i.hasNext,h=i.paths,s.push(this._setEntityAndRequestFieldPathCacheEntries(t,{cacheMetadata:c,entityData:f(o),requestFieldPathData:f(o)},r,n)),!r.awaitDataCaching){e.next=8;break}return e.next=8,Promise.all(s);case 8:return e.abrupt("return",{cacheMetadata:c,data:o,hasNext:u,paths:h});case 9:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r){return W.apply(this,arguments)})},{key:"_retrieveCachedEntityData",value:(J=a(m.mark((function t(a,r,n,i){var s,c,o,u,h,p,l=this;return m.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return s=r.possibleTypes,c=r.typeName,o=[].concat(e(s.map((function(e){return e.typeName}))),[c]),t.next=4,Promise.all(o.map((function(e){return l._checkCacheEntry(_,"".concat(e,"::").concat(a),n,i)})));case 4:return u=t.sent,1===(h=u.filter((function(e){return!!e}))).length?p=h[0]:h.length>1&&(h.sort((function(e,t){var a=e.cacheability,r=t.cacheability;return a.metadata.ttl-r.metadata.ttl})),p={cacheability:h[0].cacheability,entry:h.reduce((function(e,t){var a=t.entry;return l._mergeObjects(e,a)}),{})}),t.abrupt("return",p||{});case 8:case"end":return t.stop()}}),t)}))),function(e,t,a,r){return J.apply(this,arguments)})},{key:"_retrieveCachedParentNodeData",value:(G=a(m.mark((function e(t,a,r,n,i){var c,o,h,p,l,d,f,y,v,b,_,g,D,k,C,x,P;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=t.entityData,h=t.requestFieldPathData,p=a.hashedRequestFieldCacheKey,l=a.propNameOrIndex,d=s._getFieldDataFromAncestor(o,l),f=s._getFieldDataFromAncestor(h,l),!s._isNodeRequestFieldPath(r)){e.next=12;break}return e.next=7,this._retrieveCachedRequestFieldPathData(p,n,i);case 7:v=e.sent,b=v.cacheability,(_=v.entry)&&(f=this._mergeObjects(f,_)),b&&(y=b);case 12:if(g=ue(f,r,this._typeIDKey),!s._isNodeEntity(r)||!g){e.next=21;break}return e.next=16,this._retrieveCachedEntityData(g,r,n,i);case 16:k=e.sent,C=k.cacheability,(x=k.entry)&&(d=this._mergeObjects(d,x)),C&&(!y||C.metadata.ttl>(null===(D=y)||void 0===D?void 0:D.metadata.ttl))&&(y=C);case 21:return P=u(f)&&u(d)?null!==(c=d)&&void 0!==c?c:f:this._mergeObjects(f,d),e.abrupt("return",{cacheability:y,data:P,entityData:d,requestFieldPathData:f});case 23:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r,n){return G.apply(this,arguments)})},{key:"_retrieveCachedRequestFieldPathData",value:(L=a(m.mark((function e(t,a,r){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._checkCacheEntry(g,t,a,r)||{});case 1:case"end":return e.stop()}}),e,this)}))),function(e,t,a){return L.apply(this,arguments)})},{key:"_retrieveCachedResponseData",value:(K=a(m.mark((function e(t,a,r){var n,i,c,o,u=this;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.ast,i={cacheMetadata:new Map,data:{},fieldCount:{missing:0,total:0},fieldPathChecklist:new Map},c=T(n,r.operation)[0],o=q(c)){e.next=6;break}return e.abrupt("return",i);case 6:return e.next=8,Promise.all(o.map((function(e){var t=e.fieldNode;return u._analyzeFieldNode(t,{requestFieldPath:r.operation},i,a,r)})));case 8:return i.fieldCount=s._countFieldPathChecklist(i.fieldPathChecklist),e.abrupt("return",i);case 10:case"end":return e.stop()}}),e)}))),function(e,t,a){return K.apply(this,arguments)})},{key:"_setCacheEntry",value:(O=a(m.mark((function e(t,a,r,n,i,s){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._cache.set("".concat(t,"::").concat(a),f(r),n);case 3:e.next=7;break;case 5:e.prev=5,e.t0=e.catch(0);case 7:case"end":return e.stop()}}),e,this,[[0,5]])}))),function(e,t,a,r,n,i){return O.apply(this,arguments)})},{key:"_setEntityAndRequestFieldPathCacheEntries",value:(N=a(m.mark((function e(t,a,r,n){var i,s,c=this;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=T(t.ast,n.operation)[0],s=q(i)){e.next=4;break}return e.abrupt("return");case 4:return e.next=6,Promise.all(s.map((function(e){var t=e.fieldNode;return c._parseEntityAndRequestFieldPathCacheEntryData(t,{requestFieldPath:n.operation},a,r,n)})));case 6:case"end":return e.stop()}}),e)}))),function(e,t,a,r){return N.apply(this,arguments)})},{key:"_setEntityAndRequestFieldPathCacheEntry",value:(E=a(m.mark((function e(t,a,r,n,i){var s,o,h,p,l,f,y,v,b,_;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s=r.cacheMetadata,o=r.entityData,h=r.requestFieldPathData,p=a.requestFieldPath,l=a.responseDataPath,f=d(o,l),y=i.fieldTypeMap.get(p),v=s.get(p),!u(f)&&y&&v){e.next=7;break}return e.abrupt("return");case 7:return(b=[]).push(this._setRequestFieldPathCacheEntry(t,a,{cacheability:v,data:h,fieldTypeInfo:y},n,i)),!(_=this._isFieldEntity(f,y))&&y.hasArguments&&c(o,l),_&&b.push(this._setEntityCacheEntry(a,{cacheability:v,data:o,fieldTypeInfo:y},n,i)),e.next=14,Promise.all(b);case 14:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r,n){return E.apply(this,arguments)})},{key:"_setEntityCacheEntry",value:(j=a(m.mark((function e(t,a,r,n){var i,s,c,u,h,p,l,f;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=t.responseDataPath,s=a.cacheability,c=a.data,u=a.fieldTypeInfo,h=d(c,i),p=u.isEntity?u.typeName:h.__typename,l="".concat(p,"::").concat(h[this._typeIDKey]),e.next=7,this._checkCacheEntry(_,l,r,n);case 7:return(f=e.sent)&&(h=this._mergeObjects(f.entry,h)),e.next=11,this._setCacheEntry(_,l,h,{cacheHeaders:{cacheControl:s.printCacheControl()},tag:r.tag},r,n);case 11:o(c,i,{__cacheKey:"".concat(_,"::").concat(l)});case 12:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r){return j.apply(this,arguments)})},{key:"_setFieldCacheability",value:function(e,t,a,r,n){var i=this,s=a.cacheMetadata,c=a.data,o=t.requestFieldPath,u=Y(e,t,n),h=u.requestFieldPath,l=u.responseDataPath,f=d(c,l),y=n.fieldTypeMap.get(h);(p(f)||null!=y&&y.hasDirectives)&&(this._setFieldTypeCacheDirective(s,{ancestorRequestFieldPath:o,requestFieldPath:h},n),p(f)&&A(e,f,n.fragmentDefinitions,(function(e,t,a,o,u){i._setFieldCacheability(e,{index:u,requestFieldPath:h,responseDataPath:l},{cacheMetadata:s,data:c},r,n)})))}},{key:"_setFieldTypeCacheDirective",value:function(e,t,a){var r=t.ancestorRequestFieldPath,n=t.requestFieldPath,i=a.fieldTypeMap,c=a.operation;if(!e.has(n)){var o=i.get(n);if(o&&this._typeCacheDirectives[o.typeName]){var u=new S({cacheControl:this._typeCacheDirectives[o.typeName]});s._setCacheMetadata(e,u,n,c)}else this._cascadeCacheControl&&r&&s._setCacheMetadata(e,e.get(r),n,c)}}},{key:"_setPartialQueryResponse",value:(w=a(m.mark((function e(t,a,r,n){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this._partialQueryResponses.set(t,a);case 1:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r){return w.apply(this,arguments)})},{key:"_setQueryResponseCacheEntry",value:(P=a(m.mark((function e(t,a,r,n){var i,c,o,u;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=a.cacheMetadata,c=a.data,o=z(i),u=s._getOperationCacheControl(i,n.operation),e.next=5,this._setCacheEntry(b,t,{cacheMetadata:o,data:c},{cacheHeaders:{cacheControl:u},tag:r.tag},r,n);case 5:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r){return P.apply(this,arguments)})},{key:"_setRequestFieldPathCacheEntry",value:(x=a(m.mark((function e(t,a,r,n,i){var s,u,l,f,y,v,b,_,k,C;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s=r.cacheability,u=r.data,l=r.fieldTypeInfo,f=a.hashedRequestFieldCacheKey,y=a.responseDataPath,v=d(u,y),b=this._isFieldEntity(v,l),_=l.hasArguments||l.hasDirectives,i.operation!==D||!b&&!_){e.next=14;break}return h(v)&&null!==(k=t.selectionSet)&&void 0!==k&&k.selections&&(v=Z(v,t.selectionSet.selections,a,i)),e.next=9,this._checkCacheEntry(g,f,n,i);case 9:return(C=e.sent)&&p(v)&&(v=this._mergeObjects(C.entry,v)),e.next=13,this._setCacheEntry(g,f,v,{cacheHeaders:{cacheControl:s.printCacheControl()},tag:n.tag},n,i);case 13:R(t)&&(b?o(u,y,{__cacheKey:"".concat(g,"::").concat(f)}):c(u,y));case 14:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r,n){return x.apply(this,arguments)})}],[{key:"init",value:(C=a(m.mark((function e(t){var a;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=[],t.cache||a.push(new TypeError("@graphql-box/cache-manager expected options.cache.")),t.typeCacheDirectives&&!h(t.typeCacheDirectives)&&a.push(new TypeError("@graphql-box/cache-manager expected options.typeCacheDirectives to be a plain object.")),!a.length){e.next=5;break}return e.abrupt("return",Promise.reject(a));case 5:return e.abrupt("return",new s(t));case 6:case"end":return e.stop()}}),e)}))),function(e){return C.apply(this,arguments)})},{key:"_countFieldPathChecklist",value:function(e){var t={missing:0,total:0};return e.forEach((function(e){t.total+=e.length;var a=e.filter((function(e){return!e.hasData}));t.missing+=a.length})),t}},{key:"_getFieldDataFromAncestor",value:function(e,t){return p(e)?f(e[t]):void 0}},{key:"_getOperationCacheControl",value:function(e,t){if(!e)return"no-cache";var a=e.get(t);return a?a.printCacheControl():"no-cache"}},{key:"_isNodeEntity",value:function(e){if(!e)return!1;var t=e.isEntity,a=e.possibleTypes;return t||a.some((function(e){return!!e.isEntity}))}},{key:"_isNodeRequestFieldPath",value:function(e){return!!e&&(this._isNodeEntity(e)||e.hasArguments||e.hasDirectives)}},{key:"_isValid",value:function(e){return!d(e,["metadata","cacheControl","noCache"],!1)&&e.checkTTL()}},{key:"_mergeResponseCacheMetadata",value:function(t,a){return a?new Map([].concat(e(a.cacheMetadata),e(t))):t}},{key:"_setCachedData",value:function(e,t,a){var r=t.data;if(p(r)||u(r)){if(p(r)){var n=r;e[a]=l(n)?[]:{}}}else e[a]=r}},{key:"_setCachedResponseData",value:function(e,t,a,r,n,i){var c=t.cacheMetadata,o=t.data,u=t.fieldPathChecklist,h=a.propNameOrIndex,p=a.requestFieldPath,l=i.operation;s._setCacheMetadata(c,e.cacheability,p,l),s._setFieldPathChecklist(u,e,p,r),s._setCachedData(o,e,h)}},{key:"_setCacheMetadata",value:function(e,t,a,r){if(t){e.set(a,t);var n=e.get(r);(!n||n.metadata.ttl>t.metadata.ttl)&&e.set(r,t)}}},{key:"_setFieldPathChecklist",value:function(t,a,r,n){var i=a.data,s=n.dataTypeName,c=n.fieldTypeName,o=n.fragmentKind,h=n.fragmentName;if(u(c)||o===M){if(t.has(r))return;t.set(r,[{fragmentKind:o,fragmentName:h,hasData:!u(i)}])}else if(s===c){var p=t.get(r),l=p||[];l.some((function(e){return e.typeName===s}))||t.set(r,[].concat(e(l),[{fragmentKind:o,fragmentName:h,hasData:!u(i),typeName:s}]))}}}]),s}()).prototype,"_getCacheEntry",[ne],Object.getOwnPropertyDescriptor(ce.prototype,"_getCacheEntry"),ce.prototype),s(ce.prototype,"_setCacheEntry",[ie],Object.getOwnPropertyDescriptor(ce.prototype,"_setCacheEntry"),ce.prototype),s(ce.prototype,"_setPartialQueryResponse",[se],Object.getOwnPropertyDescriptor(ce.prototype,"_setPartialQueryResponse"),ce.prototype),ce);export default function(e){if(!h(e))throw new TypeError("@graphql-box/cache-manager expected userOptions to be a plain object.");return function(t){return le.init(pe(pe({},t),e))}}export{J as CACHE_ENTRY_ADDED,W as CACHE_ENTRY_QUERIED,le as CacheManager,B as PARTIAL_QUERY_COMPILED};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../cache-manager/src/consts/index.ts","../cache-manager/src/helpers/buildKeysAndPaths.ts","../cache-manager/src/helpers/filterOutPropsWithArgsOrDirectives.ts","../cache-manager/src/helpers/checkFieldPathChecklist.ts","../cache-manager/src/helpers/filterField.ts","../cache-manager/src/helpers/filterFragmentSpreads.ts","../cache-manager/src/helpers/filterInlineFragments.ts","../cache-manager/src/helpers/filterIDsAndTypeNames.ts","../cache-manager/src/helpers/filterQuery.ts","../cache-manager/src/helpers/createFragmentSpreadChecklist.ts","../cache-manager/src/helpers/filterFragmentDefinitions.ts","../cache-manager/src/helpers/normalizeResponseData.ts","../cache-manager/src/helpers/validTypeIDValue.ts","../cache-manager/src/main/index.ts","../cache-manager/src/debug/log-cache-query/index.ts","../cache-manager/src/debug/log-cache-entry/index.ts","../cache-manager/src/debug/log-partial-compiled/index.ts","../cache-manager/src/helpers/deriveOpCacheability.ts"],"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\nexport const CACHE_ENTRY_ADDED = \"cache_entry_added\";\nexport const CACHE_ENTRY_QUERIED = \"cache_entry_queried\";\nexport const PARTIAL_QUERY_COMPILED = \"partial_query_compiled\";\n","import { FieldTypeInfo, PlainObjectMap } from \"@graphql-box/core\";\nimport { getAlias, getArguments, getName, hashRequest } from \"@graphql-box/helpers\";\nimport { FieldNode } from \"graphql\";\nimport { isNumber } from \"lodash\";\nimport { CacheManagerContext, KeysAndPaths, KeysAndPathsOptions } from \"../defs\";\n\nexport const buildKey = (path: string, key: string | number) => {\n const paths: (string | number)[] = [];\n\n if (path.length) {\n paths.push(path);\n }\n\n paths.push(key);\n return paths.join(\".\");\n};\n\nexport const buildRequestFieldCacheKey = (\n name: string,\n requestFieldCacheKey: string,\n args: PlainObjectMap | undefined,\n directives?: FieldTypeInfo[\"directives\"],\n index?: number,\n) => {\n let key = `${isNumber(index) ? index : name}`;\n\n if (args) {\n key = `${key}(${JSON.stringify(args)})`;\n }\n\n if (directives?.inherited?.length) {\n key = `${directives.inherited.join(\" \")} ${key}`;\n }\n\n if (directives?.own?.length) {\n key = `${key} ${directives.own.join(\" \")}`;\n }\n\n return buildKey(requestFieldCacheKey, key);\n};\n\nexport const buildFieldKeysAndPaths = (\n field: FieldNode,\n options: KeysAndPathsOptions,\n context: CacheManagerContext,\n): KeysAndPaths => {\n const name = getName(field) as FieldNode[\"name\"][\"value\"];\n const { index, requestFieldCacheKey = \"\", requestFieldPath = \"\", responseDataPath = \"\" } = options;\n const fieldAliasOrName = getAlias(field) || name;\n const updatedRequestFieldPath = isNumber(index) ? requestFieldPath : buildKey(requestFieldPath, fieldAliasOrName);\n const fieldTypeInfo = context.fieldTypeMap.get(updatedRequestFieldPath);\n\n const updatedRequestFieldCacheKey = buildRequestFieldCacheKey(\n name,\n requestFieldCacheKey,\n getArguments(field),\n fieldTypeInfo?.directives,\n index,\n );\n\n const propNameOrIndex = isNumber(index) ? index : fieldAliasOrName;\n const updatedResponseDataPath = buildKey(responseDataPath, propNameOrIndex);\n\n return {\n hashedRequestFieldCacheKey: hashRequest(updatedRequestFieldCacheKey),\n propNameOrIndex,\n requestFieldCacheKey: updatedRequestFieldCacheKey,\n requestFieldPath: updatedRequestFieldPath,\n responseDataPath: updatedResponseDataPath,\n };\n};\n","import { PlainObjectMap } from \"@graphql-box/core\";\nimport { getName, resolveFragments } from \"@graphql-box/helpers\";\nimport { FieldNode, SelectionNode } from \"graphql\";\nimport { keys } from \"lodash\";\nimport { CacheManagerContext, KeysAndPaths } from \"../defs\";\nimport { buildFieldKeysAndPaths } from \"./buildKeysAndPaths\";\n\nexport default (\n fieldData: PlainObjectMap,\n selectionNodes: readonly SelectionNode[],\n ancestorKeysAndPaths: KeysAndPaths,\n context: CacheManagerContext,\n) => {\n const fieldAndTypeName = resolveFragments(selectionNodes, context.fragmentDefinitions);\n\n return keys(fieldData).reduce((acc: PlainObjectMap, key) => {\n const match = fieldAndTypeName.find(({ fieldNode }) => (getName(fieldNode) as FieldNode[\"name\"][\"value\"]) === key);\n\n if (match) {\n const { requestFieldPath } = buildFieldKeysAndPaths(match.fieldNode, ancestorKeysAndPaths, context);\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n\n if (!fieldTypeInfo?.hasArguments && !fieldTypeInfo?.hasDirectives) {\n acc[key] = fieldData[key];\n }\n }\n\n return acc;\n }, {});\n};\n","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","import { TYPE_NAME_KEY } from \"@graphql-box/core\";\nimport { FRAGMENT_SPREAD, deleteChildFields, getChildFields, getName, hasChildFields } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode } from \"graphql\";\nimport { CacheManagerContext, FieldPathChecklist, FragmentSpreadFieldCounter } from \"../defs\";\nimport { buildFieldKeysAndPaths } from \"./buildKeysAndPaths\";\nimport checkFieldPathChecklist from \"./checkFieldPathChecklist\";\nimport { FragmentSpreadCheckist } from \"./createFragmentSpreadChecklist\";\nimport filterFragmentSpreads from \"./filterFragmentSpreads\";\nimport filterIDsAndTypeNames from \"./filterIDsAndTypeNames\";\nimport filterInlineFragments from \"./filterInlineFragments\";\n\nconst filterField = (\n field: FieldNode | FragmentDefinitionNode,\n fieldPathChecklist: FieldPathChecklist,\n fragmentSpreadChecklist: FragmentSpreadCheckist,\n ancestorRequestFieldPath: string,\n context: CacheManagerContext,\n): boolean => {\n const { fragmentDefinitions, typeIDKey } = context;\n const fieldsAndTypeNames = getChildFields(field, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames) {\n return false;\n }\n\n const fragmentSpreadFieldCounter: FragmentSpreadFieldCounter = {};\n\n for (let i = fieldsAndTypeNames.length - 1; i >= 0; i -= 1) {\n const { fieldNode: childField, fragmentKind, fragmentName, typeName: childTypeName } = fieldsAndTypeNames[i];\n\n if (fragmentKind === FRAGMENT_SPREAD && fragmentName && !fragmentSpreadFieldCounter[fragmentName]) {\n fragmentSpreadFieldCounter[fragmentName] = {\n hasData: 0,\n total: fragmentDefinitions?.[fragmentName]\n ? getChildFields(fragmentDefinitions?.[fragmentName], { fragmentDefinitions })?.length ?? 0\n : 0,\n };\n }\n\n const childFieldName = getName(childField);\n\n if (childFieldName === typeIDKey || childFieldName === TYPE_NAME_KEY) {\n continue;\n }\n\n const { requestFieldPath } = buildFieldKeysAndPaths(\n childField,\n {\n requestFieldPath: ancestorRequestFieldPath,\n },\n context,\n );\n\n const { hasData, typeUnused } = checkFieldPathChecklist(fieldPathChecklist.get(requestFieldPath), childTypeName);\n\n if (hasData || typeUnused) {\n if (fragmentKind === FRAGMENT_SPREAD) {\n fragmentSpreadFieldCounter[fragmentName as string].hasData += 1;\n } else if (!hasChildFields(childField, { fragmentDefinitions })) {\n deleteChildFields(field, childField);\n } else if (filterField(childField, fieldPathChecklist, fragmentSpreadChecklist, requestFieldPath, context)) {\n deleteChildFields(field, childField);\n }\n }\n }\n\n filterFragmentSpreads(field, fragmentSpreadFieldCounter, fragmentSpreadChecklist, ancestorRequestFieldPath);\n filterInlineFragments(field, context);\n filterIDsAndTypeNames(field, context);\n return !hasChildFields(field, { fragmentDefinitions });\n};\n\nexport default filterField;\n","import { deleteFragmentSpreads } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode } from \"graphql\";\nimport { isEmpty, keys } from \"lodash\";\nimport { FragmentSpreadFieldCounter } from \"../defs\";\nimport { FragmentSpreadCheckist } from \"./createFragmentSpreadChecklist\";\n\nexport default (\n field: FieldNode | FragmentDefinitionNode,\n fragmentSpreadFieldCounter: FragmentSpreadFieldCounter,\n fragmentSpreadChecklist: FragmentSpreadCheckist,\n ancestorRequestFieldPath: string,\n) => {\n if (isEmpty(fragmentSpreadFieldCounter)) {\n return;\n }\n\n keys(fragmentSpreadFieldCounter).forEach(key => {\n fragmentSpreadChecklist[key].total += 1;\n fragmentSpreadChecklist[key].paths.push(ancestorRequestFieldPath);\n\n const { hasData, total } = fragmentSpreadFieldCounter[key];\n\n if (hasData === total) {\n deleteFragmentSpreads(field, key);\n fragmentSpreadChecklist[key].deleted += 1;\n }\n });\n};\n","import { deleteInlineFragments, getChildFields, getInlineFragments, getName } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode } from \"graphql\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (field: FieldNode | FragmentDefinitionNode, { fragmentDefinitions, typeIDKey }: CacheManagerContext) => {\n const inlineFragments = getInlineFragments(field);\n let filtered = false;\n\n inlineFragments.forEach(fragment => {\n const fieldsAndTypeNames = getChildFields(fragment, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames || !fieldsAndTypeNames.length) {\n deleteInlineFragments(field, fragment);\n filtered = true;\n return;\n }\n\n if (fieldsAndTypeNames.length === 1) {\n const { fieldNode } = fieldsAndTypeNames[0];\n\n if (getName(fieldNode) === typeIDKey) {\n deleteInlineFragments(field, fragment);\n filtered = true;\n }\n }\n });\n\n return filtered;\n};\n","import { TYPE_NAME_KEY } from \"@graphql-box/core\";\nimport { deleteChildFields, getChildFields, getName } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode } from \"graphql\";\nimport { CacheManagerContext } from \"../defs\";\n\nexport default (field: FieldNode | FragmentDefinitionNode, { fragmentDefinitions, typeIDKey }: CacheManagerContext) => {\n const fieldsAndTypeNames = getChildFields(field, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames || fieldsAndTypeNames.length > 3) {\n return false;\n }\n\n const fieldNames = fieldsAndTypeNames.map(({ fieldNode }) => getName(fieldNode) as FieldNode[\"name\"][\"value\"]);\n\n if (fieldNames.length === 2 && fieldNames.every(name => name === typeIDKey || name === TYPE_NAME_KEY)) {\n deleteChildFields(\n field,\n fieldsAndTypeNames.map(({ fieldNode }) => fieldNode),\n );\n\n return true;\n }\n\n if ((fieldNames.length === 1 && fieldNames[0] === typeIDKey) || fieldNames[0] === TYPE_NAME_KEY) {\n const { fieldNode } = fieldsAndTypeNames[0];\n deleteChildFields(field, fieldNode);\n return true;\n }\n\n return false;\n};\n","import { RequestData } from \"@graphql-box/core\";\nimport { deleteChildFields, getChildFields, getOperationDefinitions } from \"@graphql-box/helpers\";\nimport { CacheManagerContext, CachedResponseData } from \"../defs\";\nimport { buildFieldKeysAndPaths } from \"./buildKeysAndPaths\";\nimport createFragmentSpreadChecklist from \"./createFragmentSpreadChecklist\";\nimport filterField from \"./filterField\";\nimport filterFragmentDefinitions from \"./filterFragmentDefinitions\";\n\nexport default ({ ast }: RequestData, { fieldPathChecklist }: CachedResponseData, context: CacheManagerContext) => {\n const queryNode = getOperationDefinitions(ast, context.operation)[0];\n const { fragmentDefinitions } = context;\n const fieldsAndTypeNames = getChildFields(queryNode, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames) {\n return ast;\n }\n\n const fragmentSpreadChecklist = createFragmentSpreadChecklist(ast);\n\n for (let i = fieldsAndTypeNames.length - 1; i >= 0; i -= 1) {\n const { fieldNode } = fieldsAndTypeNames[i];\n\n const { requestFieldPath } = buildFieldKeysAndPaths(\n fieldNode,\n {\n requestFieldPath: context.operation,\n },\n context,\n );\n\n if (filterField(fieldNode, fieldPathChecklist, fragmentSpreadChecklist, requestFieldPath, context)) {\n deleteChildFields(queryNode, fieldNode);\n }\n }\n\n context.queryFiltered = true;\n return filterFragmentDefinitions(ast, fieldPathChecklist, fragmentSpreadChecklist, context);\n};\n","import { getFragmentDefinitions } from \"@graphql-box/helpers\";\nimport { DocumentNode } from \"graphql\";\nimport { keys } from \"lodash\";\n\nexport type FragmentSpreadCheckist = {\n [key: string]: {\n deleted: number;\n paths: string[];\n total: number;\n };\n};\n\nexport default (ast: DocumentNode) =>\n keys(getFragmentDefinitions(ast) ?? {}).reduce((acc: FragmentSpreadCheckist, name) => {\n acc[name] = { deleted: 0, paths: [], total: 0 };\n return acc;\n }, {});\n","import { deleteFragmentDefinitions, getFragmentDefinitions } from \"@graphql-box/helpers\";\nimport { DocumentNode } from \"graphql\";\nimport { keys } from \"lodash\";\nimport { CacheManagerContext, FieldPathChecklist } from \"../defs\";\nimport { FragmentSpreadCheckist } from \"./createFragmentSpreadChecklist\";\nimport filterField from \"./filterField\";\n\nexport default (\n ast: DocumentNode,\n fieldPathChecklist: FieldPathChecklist,\n fragmentSpreadChecklist: FragmentSpreadCheckist,\n context: CacheManagerContext,\n) => {\n const definitionsToFilter = keys(fragmentSpreadChecklist).reduce(\n (namesAndPaths: { name: string; path: string }[], key) => {\n const { deleted, total } = fragmentSpreadChecklist[key];\n\n return deleted === 0 && total === 1\n ? [...namesAndPaths, { name: key, path: fragmentSpreadChecklist[key].paths[0] as string }]\n : namesAndPaths;\n },\n [],\n );\n\n const fragmentDefinitions = getFragmentDefinitions(ast) ?? {};\n\n definitionsToFilter.forEach(({ name, path }) => {\n const fragmentDefinition = fragmentDefinitions[name];\n filterField(fragmentDefinition, fieldPathChecklist, fragmentSpreadChecklist, path, context);\n });\n\n const definitionsToDelete = keys(fragmentSpreadChecklist).reduce((names: string[], key) => {\n const { deleted, total } = fragmentSpreadChecklist[key];\n return deleted > 0 && deleted === total ? [...names, key] : names;\n }, []);\n\n return deleteFragmentDefinitions(ast, {\n include: definitionsToDelete,\n });\n};\n","import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { set } from \"lodash\";\n\nexport default ({ data, path, ...rest }: RawResponseDataWithMaybeCacheMetadata) => {\n return {\n ...rest,\n data: set({}, path as (string | number)[], data),\n path,\n };\n};\n","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","import Cachemap from \"@cachemap/core\";\nimport {\n CacheMetadata,\n CacheTypes,\n DATA_ENTITIES,\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 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 CacheManagerInit,\n CachedAncestorFieldData,\n CachedResponseData,\n CachemapOptions,\n CheckCacheEntryResult,\n ClientOptions,\n ConstructorOptions,\n DataForCachingEntry,\n FieldCount,\n FieldPathChecklist,\n FieldPathChecklistValue,\n InitOptions,\n KeysAndPaths,\n MergedCachedFieldData,\n PartialQueryResponse,\n PartialQueryResponses,\n QueryResponseCacheEntry,\n ResponseDataForCaching,\n TypeNamesAndKind,\n UserOptions,\n} from \"../defs\";\nimport { buildFieldKeysAndPaths } from \"../helpers/buildKeysAndPaths\";\nimport deriveOpCacheability from \"../helpers/deriveOpCacheability\";\nimport filterOutPropsWithArgsOrDirectives from \"../helpers/filterOutPropsWithArgsOrDirectives\";\nimport filterQuery from \"../helpers/filterQuery\";\nimport normalizeResponseData from \"../helpers/normalizeResponseData\";\nimport { getValidTypeIDValue } from \"../helpers/validTypeIDValue\";\n\nexport class CacheManager implements CacheManagerDef {\n public static async init(options: InitOptions): Promise<CacheManager> {\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 return Promise.reject(errors);\n }\n\n return new CacheManager(options);\n }\n\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 _typeCacheDirectives: PlainObjectStringMap;\n private _typeIDKey: string;\n\n constructor(options: ConstructorOptions) {\n const { cache, cascadeCacheControl, fallbackOperationCacheability, typeCacheDirectives, typeIDKey } = options;\n this._cache = cache;\n this._cascadeCacheControl = cascadeCacheControl || false;\n this._fallbackOperationCacheability = fallbackOperationCacheability || NO_CACHE;\n this._typeCacheDirectives = typeCacheDirectives || {};\n this._typeIDKey = typeIDKey;\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 if (fieldCount.missing === fieldCount.total) {\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 this._setPartialQueryResponse(hash, { cacheMetadata, data }, options, cacheManagerContext);\n const filteredAST = filterQuery(requestData, cachedResponseData, cacheManagerContext);\n const { fragmentDefinitions, typeIDKey, ...rest } = cacheManagerContext;\n assign(context, rest);\n const request = print(filteredAST);\n return { updated: { ast: filteredAST, hash: hashRequest(request), request } };\n }\n\n public async checkCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n options: RequestOptions,\n context: RequestContext,\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 resolveQuery(\n requestData: RequestData,\n updatedRequestData: RequestData,\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<ResponseData> {\n const cacheManagerContext: CacheManagerContext = {\n ...context,\n fragmentDefinitions: getFragmentDefinitions(updatedRequestData.ast),\n typeIDKey: this._typeIDKey,\n };\n\n const dataCaching: Promise<void>[] = [];\n\n const { cacheMetadata, data, hasNext, path } = await this._resolveRequest(\n updatedRequestData,\n rawResponseData,\n options,\n cacheManagerContext,\n );\n\n let partialQueryResponse: PartialQueryResponse | undefined;\n\n if (cacheManagerContext.queryFiltered) {\n if (!(rawResponseData.hasNext || rawResponseData.path)) {\n dataCaching.push(\n this._setQueryResponseCacheEntry(\n updatedRequestData.hash,\n { cacheMetadata, data },\n options,\n cacheManagerContext,\n ),\n );\n }\n\n if (!rawResponseData.path) {\n partialQueryResponse = this._getPartialQueryResponse(requestData.hash);\n }\n }\n\n const responseCacheMetadata = CacheManager._mergeResponseCacheMetadata(cacheMetadata, partialQueryResponse);\n const responseData = this._mergeResponseData(data, partialQueryResponse);\n\n if (!(rawResponseData.hasNext || rawResponseData.path)) {\n dataCaching.push(\n this._setQueryResponseCacheEntry(\n requestData.hash,\n { cacheMetadata: responseCacheMetadata, data: responseData },\n options,\n cacheManagerContext,\n ),\n );\n }\n\n if (options.awaitDataCaching) {\n await Promise.all(dataCaching);\n }\n\n return { cacheMetadata: responseCacheMetadata, data: responseData, hasNext, path };\n }\n\n public async resolveRequest(\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._resolveRequest(requestData, rawResponseData, options, cacheManagerContext);\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)) {\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, 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 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 _checkCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n options: RequestOptions,\n context: CacheManagerContext,\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,\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 _resolveRequest(\n requestData: RequestData,\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<ResponseData> {\n const normalizedResponseData = rawResponseData.path ? normalizeResponseData(rawResponseData) : rawResponseData;\n const dataCaching: Promise<void>[] = [];\n const cacheMetadata = this._buildCacheMetadata(requestData, normalizedResponseData, options, context);\n const { data, hasNext, path } = normalizedResponseData;\n\n dataCaching.push(\n this._setEntityAndRequestFieldPathCacheEntries(\n requestData,\n { cacheMetadata, entityData: cloneDeep(data), requestFieldPathData: cloneDeep(data) },\n options,\n context,\n ),\n );\n\n if (options.awaitDataCaching) {\n await Promise.all(dataCaching);\n }\n\n return { cacheMetadata, data, hasNext, path };\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 }: 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 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 options: RequestOptions,\n context: CacheManagerContext,\n ) {\n return (this._checkCacheEntry(REQUEST_FIELD_PATHS, hash, options, context) || {}) 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 @logCacheEntry()\n private async _setCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n value: any,\n cachemapOptions: CachemapOptions,\n _options: RequestOptions,\n _context: CacheManagerContext,\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, 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, context);\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,\n );\n\n if (hasChildFields(field)) {\n if (isEntity) {\n set(data, responseDataPath, { __cacheKey: `${REQUEST_FIELD_PATHS}::${hashedRequestFieldCacheKey}` });\n } else {\n unset(data, responseDataPath);\n }\n }\n }\n }\n}\n\nexport default function init(userOptions: UserOptions): CacheManagerInit {\n if (!isPlainObject(userOptions)) {\n throw new TypeError(\"@graphql-box/cache-manager expected userOptions to be a plain object.\");\n }\n\n return (clientOptions: ClientOptions) => CacheManager.init({ ...clientOptions, ...userOptions });\n}\n","import { RequestContext } from \"@graphql-box/core\";\nimport { CACHE_ENTRY_QUERIED } from \"../../consts\";\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, ...otherContext } = args[3] as RequestContext;\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 debugManager.emit(CACHE_ENTRY_QUERIED, {\n cacheType: args[0],\n context: otherContext,\n hash: args[1],\n options: args[2],\n result,\n stats: { duration, endTime, startTime },\n });\n });\n } catch (error) {\n return Promise.reject(error);\n }\n };\n };\n}\n","import { RequestContext } from \"@graphql-box/core\";\nimport { CACHE_ENTRY_ADDED } from \"../../consts\";\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, ...otherContext } = args[5] 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.emit(CACHE_ENTRY_ADDED, {\n cachemapOptions: args[3],\n cacheType: args[0],\n context: otherContext,\n hash: args[1],\n options: args[4],\n stats: { duration, endTime, startTime },\n value: args[2],\n });\n });\n };\n };\n}\n","import { RequestContext } from \"@graphql-box/core\";\nimport { PARTIAL_QUERY_COMPILED } from \"../../consts\";\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.emit(PARTIAL_QUERY_COMPILED, {\n context: otherContext,\n hash: args[0],\n options: args[2],\n partialQueryResponse: args[1],\n stats: { duration, endTime, startTime },\n });\n });\n };\n };\n}\n","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"],"names":["CACHE_ENTRY_ADDED","CACHE_ENTRY_QUERIED","PARTIAL_QUERY_COMPILED","buildKey","path","key","paths","length","push","join","buildFieldKeysAndPaths","field","options","context","name","getName","index","requestFieldCacheKey","requestFieldPath","responseDataPath","fieldAliasOrName","getAlias","updatedRequestFieldPath","_isNumber","fieldTypeInfo","fieldTypeMap","get","updatedRequestFieldCacheKey","args","directives","JSON","stringify","inherited","_directives$inherited","own","_directives$own","buildRequestFieldCacheKey","getArguments","propNameOrIndex","updatedResponseDataPath","hashedRequestFieldCacheKey","hashRequest","fieldData","selectionNodes","ancestorKeysAndPaths","fieldAndTypeName","resolveFragments","fragmentDefinitions","_keys","reduce","acc","match","find","fieldNode","hasArguments","hasDirectives","fieldPathChecklistValues","fieldTypeName","hasData","typeUnused","typeName","undefined","some","every","filterField","fieldPathChecklist","fragmentSpreadChecklist","ancestorRequestFieldPath","typeIDKey","fieldsAndTypeNames","getChildFields","fragmentSpreadFieldCounter","i","childField","fragmentKind","fragmentName","childTypeName","FRAGMENT_SPREAD","total","_getChildFields","childFieldName","TYPE_NAME_KEY","checkFieldPathChecklist","hasChildFields","deleteChildFields","_isEmpty","forEach","deleteFragmentSpreads","deleted","filterFragmentSpreads","inlineFragments","getInlineFragments","filtered","fragment","deleteInlineFragments","filterInlineFragments","fieldNames","map","filterIDsAndTypeNames","ast","queryNode","getOperationDefinitions","operation","getFragmentDefinitions","createFragmentSpreadChecklist","queryFiltered","definitionsToFilter","namesAndPaths","fragmentDefinition","definitionsToDelete","names","deleteFragmentDefinitions","include","filterFragmentDefinitions","data","_set","getValidTypeIDValue","requestFieldPathData","typeIDValue","requestFieldPathDataIDValue","_isPlainObject","CacheManager","_target","_propertyName","descriptor","method","value","Promise","resolve","debugManager","otherContext","apply","_this","startTime","now","result","endTime","duration","emit","cacheType","hash","stats","reject","cachemapOptions","partialQueryResponse","Map","cache","cascadeCacheControl","fallbackOperationCacheability","typeCacheDirectives","_cache","_cascadeCacheControl","_fallbackOperationCacheability","_typeCacheDirectives","_typeIDKey","this","requestData","TypeError","cacheManagerContext","_retrieveCachedResponseData","cachedResponseData","cacheMetadata","fieldCount","missing","updated","dataCaching","_setQueryResponseCacheEntry","awaitDataCaching","response","_setPartialQueryResponse","filteredAST","filterQuery","rest","request","print","_checkCacheEntry","QUERY_RESPONSES","entry","rehydrateCacheMetadata","_partialQueryResponses","delete","updatedRequestData","rawResponseData","_resolveRequest","hasNext","_getPartialQueryResponse","responseCacheMetadata","_mergeResponseCacheMetadata","responseData","_mergeResponseData","all","cachedAncestorFieldData","_analyzeParentFieldNode","_analyzeLeafFieldNode","keysAndPaths","entityData","typeNamesAndKind","dataTypeName","__typename","_isNodeRequestFieldPath","_retrieveCachedRequestFieldPathData","cacheability","_setCachedResponseData","cachedFieldData","_getFieldDataFromAncestor","_setFieldPathChecklist","_setCachedData","_retrieveCachedParentNodeData","_get","_isObjectLike","promises","iterateChildFields","childFragmentKind","childFragmentName","childIndex","_analyzeFieldNode","otherProps","_createCacheMetadata","_this2","_setFieldCacheability","_hasCacheEntry","_isValid","_getCacheEntry","_isUndefined","_cacheMetadata","headers","fallback","Object","values","first","Cacheability","metadata","ttl","has","cacheControl","deriveOpCacheability","set","_options","_context","isEntity","possibleTypes","type","obj","src","mergeObjects","_key","val","_this3","_mergeObjects","_typeName","_fragmentKind","_fragmentName","_this4","_parseEntityAndRequestFieldPathCacheEntryData","_setEntityAndRequestFieldPathCacheEntry","normalizedResponseData","normalizeResponseData","_buildCacheMetadata","_setEntityAndRequestFieldPathCacheEntries","_cloneDeep","validTypeIDValue","typeNames","_this5","DATA_ENTITIES","checkResults","validResults","filter","validResult","sort","a","b","ancestorEntityData","ancestorRequestFieldPathData","entryCacheability","_isNodeEntity","_retrieveCachedEntityData","_cacheability","REQUEST_FIELD_PATHS","_this6","_countFieldPathChecklist","operationNode","_this7","_setRequestFieldPathCacheEntry","_isFieldEntity","_setEntityCacheEntry","entityDataKey","_setCacheEntry","cacheHeaders","printCacheControl","tag","__cacheKey","_setFieldTypeCacheDirective","_this8","_setCacheMetadata","dehydratedCacheMetadata","dehydrateCacheMetadata","_getOperationCacheControl","hasArgsOrDirectives","QUERY","selectionSet","_field$selectionSet","selections","filterOutPropsWithArgsOrDirectives","errors","checklistValues","ancestorFieldData","checkTTL","objectLikeData","_isArray","operationCacheability","userOptions","clientOptions","init"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../cache-manager/src/consts/index.ts","../cache-manager/src/helpers/buildKeysAndPaths.ts","../cache-manager/src/helpers/filterOutPropsWithArgsOrDirectives.ts","../cache-manager/src/helpers/checkFieldPathChecklist.ts","../cache-manager/src/helpers/filterField.ts","../cache-manager/src/helpers/filterFragmentSpreads.ts","../cache-manager/src/helpers/filterInlineFragments.ts","../cache-manager/src/helpers/filterIDsAndTypeNames.ts","../cache-manager/src/helpers/filterQuery.ts","../cache-manager/src/helpers/createFragmentSpreadChecklist.ts","../cache-manager/src/helpers/filterFragmentDefinitions.ts","../cache-manager/src/helpers/normalizePatchResponseData.ts","../cache-manager/src/helpers/validTypeIDValue.ts","../cache-manager/src/main/index.ts","../cache-manager/src/debug/log-cache-query/index.ts","../cache-manager/src/debug/log-cache-entry/index.ts","../cache-manager/src/debug/log-partial-compiled/index.ts","../cache-manager/src/helpers/deriveOpCacheability.ts"],"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\nexport const CACHE_ENTRY_ADDED = \"cache_entry_added\";\nexport const CACHE_ENTRY_QUERIED = \"cache_entry_queried\";\nexport const PARTIAL_QUERY_COMPILED = \"partial_query_compiled\";\n","import { FieldTypeInfo, PlainObjectMap } from \"@graphql-box/core\";\nimport { getAlias, getArguments, getName, hashRequest } from \"@graphql-box/helpers\";\nimport { FieldNode } from \"graphql\";\nimport { isNumber } from \"lodash\";\nimport { CacheManagerContext, KeysAndPaths, KeysAndPathsOptions } from \"../defs\";\n\nexport const buildKey = (path: string, key: string | number) => {\n const paths: (string | number)[] = [];\n\n if (path.length) {\n paths.push(path);\n }\n\n paths.push(key);\n return paths.join(\".\");\n};\n\nexport const buildRequestFieldCacheKey = (\n name: string,\n requestFieldCacheKey: string,\n args: PlainObjectMap | undefined,\n directives?: FieldTypeInfo[\"directives\"],\n index?: number,\n) => {\n let key = `${isNumber(index) ? index : name}`;\n\n if (args) {\n key = `${key}(${JSON.stringify(args)})`;\n }\n\n if (directives?.inherited?.length) {\n key = `${directives.inherited.join(\" \")} ${key}`;\n }\n\n if (directives?.own?.length) {\n key = `${key} ${directives.own.join(\" \")}`;\n }\n\n return buildKey(requestFieldCacheKey, key);\n};\n\nexport const buildFieldKeysAndPaths = (\n field: FieldNode,\n options: KeysAndPathsOptions,\n context: CacheManagerContext,\n): KeysAndPaths => {\n const name = getName(field) as FieldNode[\"name\"][\"value\"];\n const { index, requestFieldCacheKey = \"\", requestFieldPath = \"\", responseDataPath = \"\" } = options;\n const fieldAliasOrName = getAlias(field) || name;\n const updatedRequestFieldPath = isNumber(index) ? requestFieldPath : buildKey(requestFieldPath, fieldAliasOrName);\n const fieldTypeInfo = context.fieldTypeMap.get(updatedRequestFieldPath);\n\n const updatedRequestFieldCacheKey = buildRequestFieldCacheKey(\n name,\n requestFieldCacheKey,\n getArguments(field),\n fieldTypeInfo?.directives,\n index,\n );\n\n const propNameOrIndex = isNumber(index) ? index : fieldAliasOrName;\n const updatedResponseDataPath = buildKey(responseDataPath, propNameOrIndex);\n\n return {\n hashedRequestFieldCacheKey: hashRequest(updatedRequestFieldCacheKey),\n propNameOrIndex,\n requestFieldCacheKey: updatedRequestFieldCacheKey,\n requestFieldPath: updatedRequestFieldPath,\n responseDataPath: updatedResponseDataPath,\n };\n};\n","import { PlainObjectMap } from \"@graphql-box/core\";\nimport { getName, resolveFragments } from \"@graphql-box/helpers\";\nimport { FieldNode, SelectionNode } from \"graphql\";\nimport { keys } from \"lodash\";\nimport { CacheManagerContext, KeysAndPaths } from \"../defs\";\nimport { buildFieldKeysAndPaths } from \"./buildKeysAndPaths\";\n\nexport default (\n fieldData: PlainObjectMap,\n selectionNodes: readonly SelectionNode[],\n ancestorKeysAndPaths: KeysAndPaths,\n context: CacheManagerContext,\n) => {\n const fieldAndTypeName = resolveFragments(selectionNodes, context.fragmentDefinitions);\n\n return keys(fieldData).reduce((acc: PlainObjectMap, key) => {\n const match = fieldAndTypeName.find(({ fieldNode }) => (getName(fieldNode) as FieldNode[\"name\"][\"value\"]) === key);\n\n if (match) {\n const { requestFieldPath } = buildFieldKeysAndPaths(match.fieldNode, ancestorKeysAndPaths, context);\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n\n if (!fieldTypeInfo?.hasArguments && !fieldTypeInfo?.hasDirectives) {\n acc[key] = fieldData[key];\n }\n }\n\n return acc;\n }, {});\n};\n","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","import { TYPE_NAME_KEY } from \"@graphql-box/core\";\nimport { FRAGMENT_SPREAD, deleteChildFields, getChildFields, getName, hasChildFields } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode } from \"graphql\";\nimport { CacheManagerContext, FieldPathChecklist, FragmentSpreadFieldCounter } from \"../defs\";\nimport { buildFieldKeysAndPaths } from \"./buildKeysAndPaths\";\nimport checkFieldPathChecklist from \"./checkFieldPathChecklist\";\nimport { FragmentSpreadCheckist } from \"./createFragmentSpreadChecklist\";\nimport filterFragmentSpreads from \"./filterFragmentSpreads\";\nimport filterIDsAndTypeNames from \"./filterIDsAndTypeNames\";\nimport filterInlineFragments from \"./filterInlineFragments\";\n\nconst filterField = (\n field: FieldNode | FragmentDefinitionNode,\n fieldPathChecklist: FieldPathChecklist,\n fragmentSpreadChecklist: FragmentSpreadCheckist,\n ancestorRequestFieldPath: string,\n context: CacheManagerContext,\n): boolean => {\n const { fragmentDefinitions, typeIDKey } = context;\n const fieldsAndTypeNames = getChildFields(field, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames) {\n return false;\n }\n\n const fragmentSpreadFieldCounter: FragmentSpreadFieldCounter = {};\n\n for (let i = fieldsAndTypeNames.length - 1; i >= 0; i -= 1) {\n const { fieldNode: childField, fragmentKind, fragmentName, typeName: childTypeName } = fieldsAndTypeNames[i];\n\n if (fragmentKind === FRAGMENT_SPREAD && fragmentName && !fragmentSpreadFieldCounter[fragmentName]) {\n fragmentSpreadFieldCounter[fragmentName] = {\n hasData: 0,\n total: fragmentDefinitions?.[fragmentName]\n ? getChildFields(fragmentDefinitions?.[fragmentName], { fragmentDefinitions })?.length ?? 0\n : 0,\n };\n }\n\n const childFieldName = getName(childField);\n\n if (childFieldName === typeIDKey || childFieldName === TYPE_NAME_KEY) {\n continue;\n }\n\n const { requestFieldPath } = buildFieldKeysAndPaths(\n childField,\n {\n requestFieldPath: ancestorRequestFieldPath,\n },\n context,\n );\n\n const { hasData, typeUnused } = checkFieldPathChecklist(fieldPathChecklist.get(requestFieldPath), childTypeName);\n\n if (hasData || typeUnused) {\n if (fragmentKind === FRAGMENT_SPREAD) {\n fragmentSpreadFieldCounter[fragmentName as string].hasData += 1;\n } else if (!hasChildFields(childField, { fragmentDefinitions })) {\n deleteChildFields(field, childField);\n } else if (filterField(childField, fieldPathChecklist, fragmentSpreadChecklist, requestFieldPath, context)) {\n deleteChildFields(field, childField);\n }\n }\n }\n\n filterFragmentSpreads(field, fragmentSpreadFieldCounter, fragmentSpreadChecklist, ancestorRequestFieldPath);\n filterInlineFragments(field, context);\n filterIDsAndTypeNames(field, context);\n return !hasChildFields(field, { fragmentDefinitions });\n};\n\nexport default filterField;\n","import { deleteFragmentSpreads } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode } from \"graphql\";\nimport { isEmpty, keys } from \"lodash\";\nimport { FragmentSpreadFieldCounter } from \"../defs\";\nimport { FragmentSpreadCheckist } from \"./createFragmentSpreadChecklist\";\n\nexport default (\n field: FieldNode | FragmentDefinitionNode,\n fragmentSpreadFieldCounter: FragmentSpreadFieldCounter,\n fragmentSpreadChecklist: FragmentSpreadCheckist,\n ancestorRequestFieldPath: string,\n) => {\n if (isEmpty(fragmentSpreadFieldCounter)) {\n return;\n }\n\n keys(fragmentSpreadFieldCounter).forEach(key => {\n fragmentSpreadChecklist[key].total += 1;\n fragmentSpreadChecklist[key].paths.push(ancestorRequestFieldPath);\n\n const { hasData, total } = fragmentSpreadFieldCounter[key];\n\n if (hasData === total) {\n deleteFragmentSpreads(field, key);\n fragmentSpreadChecklist[key].deleted += 1;\n }\n });\n};\n","import { deleteInlineFragments, getChildFields, getInlineFragments, getName } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode } from \"graphql\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (field: FieldNode | FragmentDefinitionNode, { fragmentDefinitions, typeIDKey }: CacheManagerContext) => {\n const inlineFragments = getInlineFragments(field);\n let filtered = false;\n\n inlineFragments.forEach(fragment => {\n const fieldsAndTypeNames = getChildFields(fragment, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames || !fieldsAndTypeNames.length) {\n deleteInlineFragments(field, fragment);\n filtered = true;\n return;\n }\n\n if (fieldsAndTypeNames.length === 1) {\n const { fieldNode } = fieldsAndTypeNames[0];\n\n if (getName(fieldNode) === typeIDKey) {\n deleteInlineFragments(field, fragment);\n filtered = true;\n }\n }\n });\n\n return filtered;\n};\n","import { TYPE_NAME_KEY } from \"@graphql-box/core\";\nimport { deleteChildFields, getChildFields, getName } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode } from \"graphql\";\nimport { CacheManagerContext } from \"../defs\";\n\nexport default (field: FieldNode | FragmentDefinitionNode, { fragmentDefinitions, typeIDKey }: CacheManagerContext) => {\n const fieldsAndTypeNames = getChildFields(field, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames || fieldsAndTypeNames.length > 3) {\n return false;\n }\n\n const fieldNames = fieldsAndTypeNames.map(({ fieldNode }) => getName(fieldNode) as FieldNode[\"name\"][\"value\"]);\n\n if (fieldNames.length === 2 && fieldNames.every(name => name === typeIDKey || name === TYPE_NAME_KEY)) {\n deleteChildFields(\n field,\n fieldsAndTypeNames.map(({ fieldNode }) => fieldNode),\n );\n\n return true;\n }\n\n if ((fieldNames.length === 1 && fieldNames[0] === typeIDKey) || fieldNames[0] === TYPE_NAME_KEY) {\n const { fieldNode } = fieldsAndTypeNames[0];\n deleteChildFields(field, fieldNode);\n return true;\n }\n\n return false;\n};\n","import { RequestData } from \"@graphql-box/core\";\nimport { deleteChildFields, getChildFields, getOperationDefinitions } from \"@graphql-box/helpers\";\nimport { CacheManagerContext, CachedResponseData } from \"../defs\";\nimport { buildFieldKeysAndPaths } from \"./buildKeysAndPaths\";\nimport createFragmentSpreadChecklist from \"./createFragmentSpreadChecklist\";\nimport filterField from \"./filterField\";\nimport filterFragmentDefinitions from \"./filterFragmentDefinitions\";\n\nexport default ({ ast }: RequestData, { fieldPathChecklist }: CachedResponseData, context: CacheManagerContext) => {\n const queryNode = getOperationDefinitions(ast, context.operation)[0];\n const { fragmentDefinitions } = context;\n const fieldsAndTypeNames = getChildFields(queryNode, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames) {\n return ast;\n }\n\n const fragmentSpreadChecklist = createFragmentSpreadChecklist(ast);\n\n for (let i = fieldsAndTypeNames.length - 1; i >= 0; i -= 1) {\n const { fieldNode } = fieldsAndTypeNames[i];\n\n const { requestFieldPath } = buildFieldKeysAndPaths(\n fieldNode,\n {\n requestFieldPath: context.operation,\n },\n context,\n );\n\n if (filterField(fieldNode, fieldPathChecklist, fragmentSpreadChecklist, requestFieldPath, context)) {\n deleteChildFields(queryNode, fieldNode);\n }\n }\n\n context.queryFiltered = true;\n return filterFragmentDefinitions(ast, fieldPathChecklist, fragmentSpreadChecklist, context);\n};\n","import { getFragmentDefinitions } from \"@graphql-box/helpers\";\nimport { DocumentNode } from \"graphql\";\nimport { keys } from \"lodash\";\n\nexport type FragmentSpreadCheckist = {\n [key: string]: {\n deleted: number;\n paths: string[];\n total: number;\n };\n};\n\nexport default (ast: DocumentNode) =>\n keys(getFragmentDefinitions(ast) ?? {}).reduce((acc: FragmentSpreadCheckist, name) => {\n acc[name] = { deleted: 0, paths: [], total: 0 };\n return acc;\n }, {});\n","import { deleteFragmentDefinitions, getFragmentDefinitions } from \"@graphql-box/helpers\";\nimport { DocumentNode } from \"graphql\";\nimport { keys } from \"lodash\";\nimport { CacheManagerContext, FieldPathChecklist } from \"../defs\";\nimport { FragmentSpreadCheckist } from \"./createFragmentSpreadChecklist\";\nimport filterField from \"./filterField\";\n\nexport default (\n ast: DocumentNode,\n fieldPathChecklist: FieldPathChecklist,\n fragmentSpreadChecklist: FragmentSpreadCheckist,\n context: CacheManagerContext,\n) => {\n const definitionsToFilter = keys(fragmentSpreadChecklist).reduce(\n (namesAndPaths: { name: string; path: string }[], key) => {\n const { deleted, total } = fragmentSpreadChecklist[key];\n\n return deleted === 0 && total === 1\n ? [...namesAndPaths, { name: key, path: fragmentSpreadChecklist[key].paths[0] as string }]\n : namesAndPaths;\n },\n [],\n );\n\n const fragmentDefinitions = getFragmentDefinitions(ast) ?? {};\n\n definitionsToFilter.forEach(({ name, path }) => {\n const fragmentDefinition = fragmentDefinitions[name];\n filterField(fragmentDefinition, fieldPathChecklist, fragmentSpreadChecklist, path, context);\n });\n\n const definitionsToDelete = keys(fragmentSpreadChecklist).reduce((names: string[], key) => {\n const { deleted, total } = fragmentSpreadChecklist[key];\n return deleted > 0 && deleted === total ? [...names, key] : names;\n }, []);\n\n return deleteFragmentDefinitions(ast, {\n include: definitionsToDelete,\n });\n};\n","import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { set } from \"lodash\";\n\nexport default ({ data, paths, ...rest }: RawResponseDataWithMaybeCacheMetadata) => {\n return {\n ...rest,\n data: set({}, (paths as string[])[0], data),\n paths,\n };\n};\n","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","import Cachemap from \"@cachemap/core\";\nimport {\n CacheMetadata,\n CacheTypes,\n DATA_ENTITIES,\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 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 CacheManagerInit,\n CachedAncestorFieldData,\n CachedResponseData,\n CachemapOptions,\n CheckCacheEntryResult,\n ClientOptions,\n ConstructorOptions,\n DataForCachingEntry,\n FieldCount,\n FieldPathChecklist,\n FieldPathChecklistValue,\n InitOptions,\n KeysAndPaths,\n MergedCachedFieldData,\n PartialQueryResponse,\n PartialQueryResponses,\n QueryResponseCacheEntry,\n ResponseDataForCaching,\n TypeNamesAndKind,\n UserOptions,\n} from \"../defs\";\nimport { buildFieldKeysAndPaths } from \"../helpers/buildKeysAndPaths\";\nimport deriveOpCacheability from \"../helpers/deriveOpCacheability\";\nimport filterOutPropsWithArgsOrDirectives from \"../helpers/filterOutPropsWithArgsOrDirectives\";\nimport filterQuery from \"../helpers/filterQuery\";\nimport normalizePatchResponseData from \"../helpers/normalizePatchResponseData\";\nimport { getValidTypeIDValue } from \"../helpers/validTypeIDValue\";\n\nexport class CacheManager implements CacheManagerDef {\n public static async init(options: InitOptions): Promise<CacheManager> {\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 return Promise.reject(errors);\n }\n\n return new CacheManager(options);\n }\n\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 _typeCacheDirectives: PlainObjectStringMap;\n private _typeIDKey: string;\n\n constructor(options: ConstructorOptions) {\n const { cache, cascadeCacheControl, fallbackOperationCacheability, typeCacheDirectives, typeIDKey } = options;\n this._cache = cache;\n this._cascadeCacheControl = cascadeCacheControl || false;\n this._fallbackOperationCacheability = fallbackOperationCacheability || NO_CACHE;\n this._typeCacheDirectives = typeCacheDirectives || {};\n this._typeIDKey = typeIDKey;\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 if (fieldCount.missing === fieldCount.total) {\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 this._setPartialQueryResponse(hash, { cacheMetadata, data }, options, cacheManagerContext);\n const filteredAST = filterQuery(requestData, cachedResponseData, cacheManagerContext);\n const { fragmentDefinitions, typeIDKey, ...rest } = cacheManagerContext;\n assign(context, rest);\n const request = print(filteredAST);\n return { updated: { ast: filteredAST, hash: hashRequest(request), request } };\n }\n\n public async checkCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n options: RequestOptions,\n context: RequestContext,\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 resolveQuery(\n requestData: RequestData,\n updatedRequestData: RequestData,\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<ResponseData> {\n const cacheManagerContext: CacheManagerContext = {\n ...context,\n fragmentDefinitions: getFragmentDefinitions(updatedRequestData.ast),\n typeIDKey: this._typeIDKey,\n };\n\n const dataCaching: Promise<void>[] = [];\n\n const { cacheMetadata, data, hasNext, paths } = await this._resolveRequest(\n updatedRequestData,\n rawResponseData,\n options,\n cacheManagerContext,\n );\n\n let partialQueryResponse: PartialQueryResponse | undefined;\n\n if (cacheManagerContext.queryFiltered) {\n if (!(rawResponseData.hasNext || rawResponseData.paths)) {\n dataCaching.push(\n this._setQueryResponseCacheEntry(\n updatedRequestData.hash,\n { cacheMetadata, data },\n options,\n cacheManagerContext,\n ),\n );\n }\n\n if (!rawResponseData.paths) {\n partialQueryResponse = this._getPartialQueryResponse(requestData.hash);\n }\n }\n\n const responseCacheMetadata = CacheManager._mergeResponseCacheMetadata(cacheMetadata, partialQueryResponse);\n const responseData = this._mergeResponseData(data, partialQueryResponse);\n\n if (!(rawResponseData.hasNext || rawResponseData.paths)) {\n dataCaching.push(\n this._setQueryResponseCacheEntry(\n requestData.hash,\n { cacheMetadata: responseCacheMetadata, data: responseData },\n options,\n cacheManagerContext,\n ),\n );\n }\n\n if (options.awaitDataCaching) {\n await Promise.all(dataCaching);\n }\n\n return { cacheMetadata: responseCacheMetadata, data: responseData, hasNext, paths };\n }\n\n public async resolveRequest(\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._resolveRequest(requestData, rawResponseData, options, cacheManagerContext);\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)) {\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, 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 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 _checkCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n options: RequestOptions,\n context: CacheManagerContext,\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,\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 _resolveRequest(\n requestData: RequestData,\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<ResponseData> {\n const normalizedResponseData =\n rawResponseData.paths && context.normalizePatchResponseData\n ? normalizePatchResponseData(rawResponseData)\n : rawResponseData;\n\n const dataCaching: Promise<void>[] = [];\n const cacheMetadata = this._buildCacheMetadata(requestData, normalizedResponseData, options, context);\n const { data, hasNext, paths } = normalizedResponseData;\n\n dataCaching.push(\n this._setEntityAndRequestFieldPathCacheEntries(\n requestData,\n { cacheMetadata, entityData: cloneDeep(data), requestFieldPathData: cloneDeep(data) },\n options,\n context,\n ),\n );\n\n if (options.awaitDataCaching) {\n await Promise.all(dataCaching);\n }\n\n return { cacheMetadata, data, hasNext, paths };\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 }: 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 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 options: RequestOptions,\n context: CacheManagerContext,\n ) {\n return (this._checkCacheEntry(REQUEST_FIELD_PATHS, hash, options, context) || {}) 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 @logCacheEntry()\n private async _setCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n value: any,\n cachemapOptions: CachemapOptions,\n _options: RequestOptions,\n _context: CacheManagerContext,\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, 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, context);\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,\n );\n\n if (hasChildFields(field)) {\n if (isEntity) {\n set(data, responseDataPath, { __cacheKey: `${REQUEST_FIELD_PATHS}::${hashedRequestFieldCacheKey}` });\n } else {\n unset(data, responseDataPath);\n }\n }\n }\n }\n}\n\nexport default function init(userOptions: UserOptions): CacheManagerInit {\n if (!isPlainObject(userOptions)) {\n throw new TypeError(\"@graphql-box/cache-manager expected userOptions to be a plain object.\");\n }\n\n return (clientOptions: ClientOptions) => CacheManager.init({ ...clientOptions, ...userOptions });\n}\n","import { RequestContext } from \"@graphql-box/core\";\nimport { CACHE_ENTRY_QUERIED } from \"../../consts\";\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, ...otherContext } = args[3] as RequestContext;\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 debugManager.emit(CACHE_ENTRY_QUERIED, {\n cacheType: args[0],\n context: otherContext,\n hash: args[1],\n options: args[2],\n result,\n stats: { duration, endTime, startTime },\n });\n });\n } catch (error) {\n return Promise.reject(error);\n }\n };\n };\n}\n","import { RequestContext } from \"@graphql-box/core\";\nimport { CACHE_ENTRY_ADDED } from \"../../consts\";\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, ...otherContext } = args[5] 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.emit(CACHE_ENTRY_ADDED, {\n cachemapOptions: args[3],\n cacheType: args[0],\n context: otherContext,\n hash: args[1],\n options: args[4],\n stats: { duration, endTime, startTime },\n value: args[2],\n });\n });\n };\n };\n}\n","import { RequestContext } from \"@graphql-box/core\";\nimport { PARTIAL_QUERY_COMPILED } from \"../../consts\";\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.emit(PARTIAL_QUERY_COMPILED, {\n context: otherContext,\n hash: args[0],\n options: args[2],\n partialQueryResponse: args[1],\n stats: { duration, endTime, startTime },\n });\n });\n };\n };\n}\n","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"],"names":["CACHE_ENTRY_ADDED","CACHE_ENTRY_QUERIED","PARTIAL_QUERY_COMPILED","buildKey","path","key","paths","length","push","join","buildFieldKeysAndPaths","field","options","context","name","getName","index","requestFieldCacheKey","requestFieldPath","responseDataPath","fieldAliasOrName","getAlias","updatedRequestFieldPath","_isNumber","fieldTypeInfo","fieldTypeMap","get","updatedRequestFieldCacheKey","args","directives","JSON","stringify","inherited","_directives$inherited","own","_directives$own","buildRequestFieldCacheKey","getArguments","propNameOrIndex","updatedResponseDataPath","hashedRequestFieldCacheKey","hashRequest","fieldData","selectionNodes","ancestorKeysAndPaths","fieldAndTypeName","resolveFragments","fragmentDefinitions","_keys","reduce","acc","match","find","fieldNode","hasArguments","hasDirectives","fieldPathChecklistValues","fieldTypeName","hasData","typeUnused","typeName","undefined","some","every","filterField","fieldPathChecklist","fragmentSpreadChecklist","ancestorRequestFieldPath","typeIDKey","fieldsAndTypeNames","getChildFields","fragmentSpreadFieldCounter","i","childField","fragmentKind","fragmentName","childTypeName","FRAGMENT_SPREAD","total","_getChildFields","childFieldName","TYPE_NAME_KEY","checkFieldPathChecklist","hasChildFields","deleteChildFields","_isEmpty","forEach","deleteFragmentSpreads","deleted","filterFragmentSpreads","inlineFragments","getInlineFragments","filtered","fragment","deleteInlineFragments","filterInlineFragments","fieldNames","map","filterIDsAndTypeNames","ast","queryNode","getOperationDefinitions","operation","getFragmentDefinitions","createFragmentSpreadChecklist","queryFiltered","definitionsToFilter","namesAndPaths","fragmentDefinition","definitionsToDelete","names","deleteFragmentDefinitions","include","filterFragmentDefinitions","data","_set","getValidTypeIDValue","requestFieldPathData","typeIDValue","requestFieldPathDataIDValue","_isPlainObject","CacheManager","_target","_propertyName","descriptor","method","value","Promise","resolve","debugManager","otherContext","apply","_this","startTime","now","result","endTime","duration","emit","cacheType","hash","stats","reject","cachemapOptions","partialQueryResponse","Map","cache","cascadeCacheControl","fallbackOperationCacheability","typeCacheDirectives","_cache","_cascadeCacheControl","_fallbackOperationCacheability","_typeCacheDirectives","_typeIDKey","this","requestData","TypeError","cacheManagerContext","_retrieveCachedResponseData","cachedResponseData","cacheMetadata","fieldCount","missing","updated","dataCaching","_setQueryResponseCacheEntry","awaitDataCaching","response","_setPartialQueryResponse","filteredAST","filterQuery","rest","request","print","_checkCacheEntry","QUERY_RESPONSES","entry","rehydrateCacheMetadata","_partialQueryResponses","delete","updatedRequestData","rawResponseData","_resolveRequest","hasNext","_getPartialQueryResponse","responseCacheMetadata","_mergeResponseCacheMetadata","responseData","_mergeResponseData","all","cachedAncestorFieldData","_analyzeParentFieldNode","_analyzeLeafFieldNode","keysAndPaths","entityData","typeNamesAndKind","dataTypeName","__typename","_isNodeRequestFieldPath","_retrieveCachedRequestFieldPathData","cacheability","_setCachedResponseData","cachedFieldData","_getFieldDataFromAncestor","_setFieldPathChecklist","_setCachedData","_retrieveCachedParentNodeData","_get","_isObjectLike","promises","iterateChildFields","childFragmentKind","childFragmentName","childIndex","_analyzeFieldNode","otherProps","_createCacheMetadata","_this2","_setFieldCacheability","_hasCacheEntry","_isValid","_getCacheEntry","_isUndefined","_cacheMetadata","headers","fallback","Object","values","first","Cacheability","metadata","ttl","has","cacheControl","deriveOpCacheability","set","_options","_context","isEntity","possibleTypes","type","obj","src","mergeObjects","_key","val","_this3","_mergeObjects","_typeName","_fragmentKind","_fragmentName","_this4","_parseEntityAndRequestFieldPathCacheEntryData","_setEntityAndRequestFieldPathCacheEntry","normalizedResponseData","normalizePatchResponseData","_buildCacheMetadata","_setEntityAndRequestFieldPathCacheEntries","_cloneDeep","validTypeIDValue","typeNames","_this5","DATA_ENTITIES","checkResults","validResults","filter","validResult","sort","a","b","ancestorEntityData","ancestorRequestFieldPathData","entryCacheability","_isNodeEntity","_retrieveCachedEntityData","_cacheability","REQUEST_FIELD_PATHS","_this6","_countFieldPathChecklist","operationNode","_this7","_setRequestFieldPathCacheEntry","_isFieldEntity","_setEntityCacheEntry","entityDataKey","_setCacheEntry","cacheHeaders","printCacheControl","tag","__cacheKey","_setFieldTypeCacheDirective","_this8","_setCacheMetadata","dehydratedCacheMetadata","dehydrateCacheMetadata","_getOperationCacheControl","hasArgsOrDirectives","QUERY","selectionSet","_field$selectionSet","selections","filterOutPropsWithArgsOrDirectives","errors","checklistValues","ancestorFieldData","checkTTL","objectLikeData","_isArray","operationCacheability","userOptions","clientOptions","init"],"mappings":"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"}