@graphql-box/cache-manager 3.2.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/index.js +1 -1
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/production.analysis.txt +42 -46
- package/lib/main/consts/index.js +1 -7
- package/lib/main/consts/index.js.map +1 -1
- package/lib/main/debug/log-cache-entry/index.js +11 -4
- package/lib/main/debug/log-cache-entry/index.js.map +1 -1
- package/lib/main/debug/log-cache-query/index.js +11 -4
- package/lib/main/debug/log-cache-query/index.js.map +1 -1
- package/lib/main/debug/log-partial-compiled/index.js +4 -2
- package/lib/main/debug/log-partial-compiled/index.js.map +1 -1
- package/lib/main/index.js +0 -23
- package/lib/main/index.js.map +1 -1
- package/lib/main/main/index.js +21 -12
- package/lib/main/main/index.js.map +1 -1
- package/lib/module/consts/index.js +0 -3
- package/lib/module/consts/index.js.map +1 -1
- package/lib/module/debug/log-cache-entry/index.js +11 -4
- package/lib/module/debug/log-cache-entry/index.js.map +1 -1
- package/lib/module/debug/log-cache-query/index.js +11 -4
- package/lib/module/debug/log-cache-query/index.js.map +1 -1
- package/lib/module/debug/log-partial-compiled/index.js +3 -1
- package/lib/module/debug/log-partial-compiled/index.js.map +1 -1
- package/lib/module/index.js +0 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/main/index.js +21 -12
- package/lib/module/main/index.js.map +1 -1
- package/lib/types/consts/index.d.ts +0 -3
- package/lib/types/consts/index.d.ts.map +1 -1
- package/lib/types/debug/log-cache-entry/index.d.ts.map +1 -1
- package/lib/types/debug/log-cache-query/index.d.ts.map +1 -1
- package/lib/types/debug/log-partial-compiled/index.d.ts.map +1 -1
- package/lib/types/index.d.ts +0 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/main/index.d.ts +3 -1
- package/lib/types/main/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/__snapshots__/index.test.ts.snap +1082 -1082
- package/src/consts/index.ts +0 -4
- package/src/debug/log-cache-entry/index.ts +10 -5
- package/src/debug/log-cache-query/index.ts +10 -5
- package/src/debug/log-partial-compiled/index.ts +3 -3
- package/src/index.ts +0 -1
- package/src/main/index.ts +22 -15
package/lib/browser/index.js
CHANGED
|
@@ -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,QUERY as g,DATA_ENTITIES as _,REQUEST_FIELD_PATHS as D}from"@graphql-box/core";import{resolveFragments as C,getName as k,buildFieldKeysAndPaths as x,deleteFragmentSpreads as w,getChildFields as P,deleteChildFields as j,getInlineFragments as F,deleteInlineFragments as O,FRAGMENT_SPREAD as E,hasChildFields as q,deleteFragmentDefinitions as N,getOperationDefinitions as M,hashRequest as R,getFragmentDefinitions as T,rehydrateCacheMetadata as K,iterateChildFields as I,mergeObjects as A,dehydrateCacheMetadata as Q}from"@graphql-box/helpers";import S from"cacheability";import{print as z}from"graphql";import U from"@babel/runtime/helpers/toArray";import L from"lodash/isEmpty";import"core-js/modules/es.object.values.js";import"core-js/modules/es.array.slice.js";import H from"lodash/keys";import"core-js/modules/es.array.find.js";import"core-js/modules/es.regexp.exec.js";import"core-js/modules/es.string.match.js";import"core-js/modules/es.regexp.constructor.js";import"core-js/modules/es.regexp.to-string.js";import"core-js/modules/es.function.name.js";import V from"lodash/merge";var G="cache_entry_added",W="cache_entry_queried",B="partial_query_compiled";var J=function(e,t,a,r){var n=C(t,r.fragmentDefinitions);return H(e).reduce((function(t,i){var s=n.find((function(e){var t=e.fieldNode;return k(t)===i}));if(s){var c=x(s.fieldNode,a,r).requestFieldPath,o=r.fieldTypeMap.get(c);null!=o&&o.hasArguments||null!=o&&o.hasDirectives||(t[i]=e[i])}return t}),{})},X=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}))}},Y=function e(t,a,r,n,i){var s=i.fragmentDefinitions,c=i.typeIDKey,o=P(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===E&&m&&!u[m])u[m]={hasData:0,total:null!=s&&s[m]&&null!==(p=null===(l=P(null==s?void 0:s[m],{fragmentDefinitions:s}))||void 0===l?void 0:l.length)&&void 0!==p?p:0};var g=k(f);if(g!==c&&g!==v){var _=x(f,{requestFieldPath:n},i).requestFieldPath,D=X(a.get(_),b),C=D.hasData,N=D.typeUnused;(C||N)&&(y===E?u[m].hasData+=1:q(f,{fragmentDefinitions:s})?e(f,a,r,_,i)&&j(t,f):j(t,f))}}return function(e,t,a,r){L(t)||H(t).forEach((function(n){a[n].paths.push(r);var i=t[n];i.hasData===i.total&&(w(e,n),a[n].deleted+=1)}))}(t,u,r,n),function(e,t){var a=t.fragmentDefinitions,r=t.typeIDKey,n=F(e),i=!1;n.forEach((function(t){var n=P(t,{fragmentDefinitions:a});if(!n||!n.length)return O(e,t),void(i=!0);if(1===n.length){var s=n[0].fieldNode;k(s)===r&&(O(e,t),i=!0)}}))}(t,i),function(e,t){var a=t.fragmentDefinitions,r=t.typeIDKey,n=P(e,{fragmentDefinitions:a});if(!n||n.length>3)return!1;var i=n.map((function(e){var t=e.fieldNode;return k(t)}));if(2===i.length&&i.every((function(e){return e===r||e===v})))return j(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 j(e,s),!0}}(t,i),!q(t,{fragmentDefinitions:s})},Z=function(t,a,r){var n=a.fieldPathChecklist,i=t.ast,s=M(i,r.operation)[0],c=r.fragmentDefinitions,o=P(s,{fragmentDefinitions:c});if(!o)return i;for(var u=function(e,t){var a=e.request,r=t.fragmentDefinitions;return H(null!=r?r:{}).reduce((function(e,t){return e[t]={deleted:0,paths:[],total:(a.match(new RegExp("\\.\\.\\.".concat(t),"g"))||[]).length},e}),{})}(t,r),h=o.length-1;h>=0;h-=1){var p=o[h].fieldNode,l=x(p,{requestFieldPath:r.operation},r).requestFieldPath;Y(p,n,u,l,r)&&j(s,p)}return r.queryFiltered=!0,function(t,a,r,n){var i=H(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}),[]),s=n.fragmentDefinitions,c=void 0===s?{}:s;i.forEach((function(e){var t=e.name,i=e.path,s=c[t];Y(s,a,r,i,n)}));var o=H(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 o.length?N(t,{include:o}):t}(i,n,u,r)},$=function(e,t){return t.hasDeferOrStream&&!e.hasNext&&e.paths},ee=function(e,t){return t.hasDeferOrStream&&e.hasNext},te=function(e,t){return!t.hasDeferOrStream&&!e.hasNext&&!e.paths};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}function ne(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 ie(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?ne(Object(a),!0).forEach((function(t){i(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):ne(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}var se,ce,oe,ue,he=function(e,a){if(!a.normalizePatchResponseData)return e;var r=e.data,n=e.paths;return ie(ie({},t(e,["data","paths"])),{},{data:o({},n[0],r),paths:n})},pe=function(e,t,a){var r=t.typeIDValue,n=h(e)?e[a]:void 0;return r||n};function le(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 de(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?le(Object(a),!0).forEach((function(t){i(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):le(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}var fe=(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.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)}))},ce=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)}))},oe=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((ue=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,"_responseChunksAwaitingCaching",new Map),i(this,"_typeCacheDirectives",void 0),i(this,"_typeIDKey",void 0);var t=[];if(e.cache||t.push(new TypeError("@graphql-box/cache-manager expected options.cache.")),e.typeCacheDirectives&&!h(e.typeCacheDirectives)){t.push(new TypeError("@graphql-box/cache-manager expected options.typeCacheDirectives to be a plain object."))}if(t.length)throw t;this._cache=e.cache,this._cascadeCacheControl=e.cascadeCacheControl||!1,this._fallbackOperationCacheability=e.fallbackOperationCacheability||"noCache",this._typeCacheDirectives=e.typeCacheDirectives||{},this._typeIDKey=e.typeIDKey}var C,k,w,j,F,O,N,H,G,W,B,X,Y,ae,ne,ie,se,ce,oe,ue,le,fe,ye,me,ve;return n(s,[{key:"cache",get:function(){return this._cache}},{key:"analyzeQuery",value:(ve=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=de(de({},n),{},{fragmentDefinitions:T(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=Z(a,o,c),c.fragmentDefinitions,c.typeIDKey,f=t(c,["fragmentDefinitions","typeIDKey"]),y(n,f),v=z(d),e.abrupt("return",{updated:{ast:d,hash:R(v),request:v}});case 22:case"end":return e.stop()}}),e,this)}))),function(e,t,a){return ve.apply(this,arguments)})},{key:"cacheQuery",value:(me=a(m.mark((function e(t,a,r,n,i){var s;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s=de(de({},i),{},{fragmentDefinitions:T((null!=a?a:t).ast),typeIDKey:this._typeIDKey}),e.abrupt("return",this._cacheResponse(t,a,r,n,s));case 2:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r,n){return me.apply(this,arguments)})},{key:"cacheResponse",value:(ye=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=de(de({},n),{},{fragmentDefinitions:T(t.ast),typeIDKey:this._typeIDKey}),e.abrupt("return",this._cacheResponse(t,void 0,a,r,i));case 2:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r){return ye.apply(this,arguments)})},{key:"checkCacheEntry",value:(fe=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 fe.apply(this,arguments)})},{key:"checkQueryResponseCacheEntry",value:(le=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:K(s),data:c});case 7:case"end":return e.stop()}}),e,this)}))),function(e,t,a){return le.apply(this,arguments)})},{key:"deletePartialQueryResponse",value:function(e){this._partialQueryResponses.delete(e)}},{key:"setQueryResponseCacheEntry",value:(ue=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._setQueryResponseCacheEntry(t.hash,a,r,n));case 1:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r){return ue.apply(this,arguments)})},{key:"_analyzeFieldNode",value:(oe=a(m.mark((function e(t,a,r,n,i){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!q(t,{fragmentDefinitions:i.fragmentDefinitions})){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 oe.apply(this,arguments)})},{key:"_analyzeLeafFieldNode",value:(ce=a(m.mark((function e(t,a,r,n,i){var c,o,u,h,p,l,d,f,y,v,b,g,_,D,C;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(c=x(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:g=e.sent,_=g.cacheability,D=g.entry,s._setCachedResponseData({cacheability:_,data:D},r,c,b,n,i),e.next=17;break;case 14:C=s._getFieldDataFromAncestor(l,u)||s._getFieldDataFromAncestor(y,u),s._setFieldPathChecklist(r.fieldPathChecklist,{data:C},h,b),s._setCachedData(r.data,{data:C},u);case 17:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r,n){return ce.apply(this,arguments)})},{key:"_analyzeParentFieldNode",value:(se=a(m.mark((function e(t,a,r,n,i){var c,o,u,h,l,f,y,b,g,_,D,C,k,w,P=this;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c=x(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,g=f.entityData,_=f.requestFieldPathData,D=a.fragmentKind,C=a.fragmentName,k=a.typeName,s._setCachedResponseData({cacheability:y,data:b},r,c,{dataTypeName:d(b,v),fieldTypeName:k,fragmentKind:D,fragmentName:C},n,i),p(b)){e.next=14;break}return e.abrupt("return");case 14:return w=[],I(t,b,i.fragmentDefinitions,(function(e,t,a,s,c){w.push(P._analyzeFieldNode(e,{cacheability:y,entityData:g,fragmentKind:a,fragmentName:s,index:c,requestFieldCacheKey:u,requestFieldPath:h,requestFieldPathData:_,typeName:t},de(de({},r),{},{data:r.data[o]}),n,i))})),e.next=19,Promise.all(w);case 19:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r,n){return se.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(de({data:c},o),n),h=M(s,n.operation)[0],p=P(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:"_cacheResponse",value:(ie=a(m.mark((function e(t,a,r,n,i){var c,o,u,h,p,l,d,y,v,b,_;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(c=he(r,i),o=c,ee(r,i)&&(this._setResponseChunksAwaitingCaching(c,i),o=void 0),$(r,i)&&(o=this._retrieveResponseDataForCaching(c,i)),u=[],!o){e.next=15;break}if(h=o.data,p=this._buildCacheMetadata(t,o,n,i),u.push(this._setEntityAndRequestFieldPathCacheEntries(t,{cacheMetadata:p,entityData:f(h),requestFieldPathData:f(h)},n,i)),i.operation===g&&(i.queryFiltered&&a&&(u.push(this._setQueryResponseCacheEntry(a.hash,{cacheMetadata:p,data:h},n,i)),y=this._getPartialQueryResponse(t.hash)),l=s._mergeResponseCacheMetadata(p,y),d=this._mergeResponseData(h,y),u.push(this._setQueryResponseCacheEntry(t.hash,{cacheMetadata:l,data:d},n,i))),!n.awaitDataCaching){e.next=13;break}return e.next=13,Promise.all(u);case 13:if(!(te(c,i)&&l&&d)){e.next=15;break}return e.abrupt("return",{cacheMetadata:l,data:d});case 15:return v=c.data,b=c.hasNext,_=c.paths,e.abrupt("return",{cacheMetadata:this._buildCacheMetadata(t,c,n,i),data:v,hasNext:b,paths:_});case 17:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r,n){return ie.apply(this,arguments)})},{key:"_checkCacheEntry",value:(ne=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 ne.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&&!L(t)){var n=Object.values(t),i=U(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&&K(a,i),i}},{key:"_getCacheEntry",value:(ae=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 ae.apply(this,arguments)})},{key:"_getPartialQueryResponse",value:function(e){var t=this._partialQueryResponses.get(e);return this._partialQueryResponses.delete(e),t}},{key:"_hasCacheEntry",value:(Y=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 Y.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 A(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:(X=a(m.mark((function e(t,a,r,n,i){var s,c,o,u,h,l,f,y,v,b,g=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=x(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=[],I(t,y,i.fragmentDefinitions,(function(e,t,a,r,u){b.push(g._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 X.apply(this,arguments)})},{key:"_retrieveCachedEntityData",value:(B=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 B.apply(this,arguments)})},{key:"_retrieveCachedParentNodeData",value:(W=a(m.mark((function e(t,a,r,n,i){var c,o,h,p,l,d,f,y,v,b,g,_,D,C,k,x,w;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,(g=v.entry)&&(f=this._mergeObjects(f,g)),b&&(y=b);case 12:if(_=pe(f,r,this._typeIDKey),!s._isNodeEntity(r)||!_){e.next=21;break}return e.next=16,this._retrieveCachedEntityData(_,r,n,i);case 16:C=e.sent,k=C.cacheability,(x=C.entry)&&(d=this._mergeObjects(d,x)),k&&(!y||k.metadata.ttl>(null===(D=y)||void 0===D?void 0:D.metadata.ttl))&&(y=k);case 21:return w=u(f)&&u(d)?null!==(c=d)&&void 0!==c?c:f:this._mergeObjects(f,d),e.abrupt("return",{cacheability:y,data:w,entityData:d,requestFieldPathData:f});case 23:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r,n){return W.apply(this,arguments)})},{key:"_retrieveCachedRequestFieldPathData",value:(G=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(D,t,a,r)||{});case 1:case"end":return e.stop()}}),e,this)}))),function(e,t,a){return G.apply(this,arguments)})},{key:"_retrieveCachedResponseData",value:(H=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=M(n,r.operation)[0],o=P(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 H.apply(this,arguments)})},{key:"_retrieveResponseDataForCaching",value:function(t,a){var r,n=this._responseChunksAwaitingCaching.get(a.boxID);return this._responseChunksAwaitingCaching.delete(a.boxID),(r=[].concat(e(n),[t])).reduce((function(e,t,a){var n=t._cacheMetadata,i=t.data,s=t.hasNext,c=t.headers,o=t.paths;return n&&(e._cacheMetadata=e._cacheMetadata?re(re({},e._cacheMetadata),n):n),e.data=e.data?V(e.data,i):i,0===a&&(e.headers=c),a===r.length-1&&(e.hasNext=s),o&&(e.paths||(e.paths=[]),e.paths.push(o[0])),e}),{data:{}})}},{key:"_setCacheEntry",value:(N=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 N.apply(this,arguments)})},{key:"_setEntityAndRequestFieldPathCacheEntries",value:(O=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=M(t.ast,n.operation)[0],s=P(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 O.apply(this,arguments)})},{key:"_setEntityAndRequestFieldPathCacheEntry",value:(F=a(m.mark((function e(t,a,r,n,i){var s,o,h,p,l,f,y,v,b,g;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)),!(g=this._isFieldEntity(f,y))&&y.hasArguments&&c(o,l),g&&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 F.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=x(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)&&I(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:(k=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=Q(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 k.apply(this,arguments)})},{key:"_setRequestFieldPathCacheEntry",value:(C=a(m.mark((function e(t,a,r,n,i){var s,u,l,f,y,v,b,_,C,k;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!==g||!b&&!_){e.next=14;break}return h(v)&&null!==(C=t.selectionSet)&&void 0!==C&&C.selections&&(v=J(v,t.selectionSet.selections,a,i)),e.next=9,this._checkCacheEntry(D,f,n,i);case 9:return(k=e.sent)&&p(v)&&(v=this._mergeObjects(k.entry,v)),e.next=13,this._setCacheEntry(D,f,v,{cacheHeaders:{cacheControl:s.printCacheControl()},tag:n.tag},n,i);case 13:q(t,{fragmentDefinitions:i.fragmentDefinitions})&&(b?o(u,y,{__cacheKey:"".concat(D,"::").concat(f)}):c(u,y));case 14:case"end":return e.stop()}}),e,this)}))),function(e,t,a,r,n){return C.apply(this,arguments)})},{key:"_setResponseChunksAwaitingCaching",value:function(t,a){var r=this._responseChunksAwaitingCaching.get(a.boxID);r?this._responseChunksAwaitingCaching.set(a.boxID,[].concat(e(r),[t])):this._responseChunksAwaitingCaching.set(a.boxID,[t])}}],[{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===E){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",[se],Object.getOwnPropertyDescriptor(ue.prototype,"_getCacheEntry"),ue.prototype),s(ue.prototype,"_setCacheEntry",[ce],Object.getOwnPropertyDescriptor(ue.prototype,"_setCacheEntry"),ue.prototype),s(ue.prototype,"_setPartialQueryResponse",[oe],Object.getOwnPropertyDescriptor(ue.prototype,"_setPartialQueryResponse"),ue.prototype),ue);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 new fe(de(de({},t),e))}}export{G as CACHE_ENTRY_ADDED,W as CACHE_ENTRY_QUERIED,fe 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 r from"@babel/runtime/helpers/asyncToGenerator";import a 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 f from"lodash/get";import d 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{CACHE_ENTRY_ADDED as v,CACHE_ENTRY_QUERIED as b,PARTIAL_QUERY_COMPILED as g,TYPE_NAME_KEY as _,QUERY_RESPONSES as D,QUERY as C,DATA_ENTITIES as k,REQUEST_FIELD_PATHS as w}from"@graphql-box/core";import{resolveFragments as P,getName as x,buildFieldKeysAndPaths as j,deleteFragmentSpreads as O,getChildFields as F,deleteChildFields as q,getInlineFragments as E,deleteInlineFragments as N,FRAGMENT_SPREAD as M,hasChildFields as R,deleteFragmentDefinitions as K,getOperationDefinitions as I,hashRequest as T,getFragmentDefinitions as A,rehydrateCacheMetadata as Q,iterateChildFields as S,mergeObjects as z,dehydrateCacheMetadata as U}from"@graphql-box/helpers";import L from"cacheability";import{print as H}from"graphql";import V from"@babel/runtime/helpers/toArray";import G from"lodash/isEmpty";import"core-js/modules/es.object.values.js";import"core-js/modules/es.array.slice.js";import W from"lodash/keys";import"core-js/modules/es.array.find.js";import"core-js/modules/es.regexp.exec.js";import"core-js/modules/es.string.match.js";import"core-js/modules/es.regexp.constructor.js";import"core-js/modules/es.regexp.to-string.js";import"core-js/modules/es.function.name.js";import B from"lodash/merge";function J(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function X(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?J(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):J(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function Y(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function Z(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Y(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Y(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var $=function(e,t,r,a){var n=P(t,a.fragmentDefinitions);return W(e).reduce((function(t,i){var s=n.find((function(e){var t=e.fieldNode;return x(t)===i}));if(s){var c=j(s.fieldNode,r,a).requestFieldPath,o=a.fieldTypeMap.get(c);null!=o&&o.hasArguments||null!=o&&o.hasDirectives||(t[i]=e[i])}return t}),{})},ee=function(e,t){if(!e||!e.length)return{hasData:!1,typeUnused:!!t};if(1===e.length){var r=e[0],a=r.hasData,n=r.typeName;return{hasData:a,typeUnused:n?n!==t:void 0}}return{hasData:e.some((function(e){var r=e.hasData;return e.typeName===t&&r})),typeUnused:!e.every((function(e){return e.typeName===t}))}},te=function e(t,r,a,n,i){var s=i.fragmentDefinitions,c=i.typeIDKey,o=F(t,{fragmentDefinitions:s});if(!o)return!1;for(var u={},h=o.length-1;h>=0;h-=1){var p,l,f=o[h],d=f.fieldNode,y=f.fragmentKind,m=f.fragmentName,v=f.typeName;if(y===M&&m&&!u[m])u[m]={hasData:0,total:null!=s&&s[m]&&null!==(p=null===(l=F(null==s?void 0:s[m],{fragmentDefinitions:s}))||void 0===l?void 0:l.length)&&void 0!==p?p:0};var b=x(d);if(b!==c&&b!==_){var g=j(d,{requestFieldPath:n},i).requestFieldPath,D=ee(r.get(g),v),C=D.hasData,k=D.typeUnused;(C||k)&&(y===M?u[m].hasData+=1:R(d,{fragmentDefinitions:s})?e(d,r,a,g,i)&&q(t,d):q(t,d))}}return function(e,t,r,a){G(t)||W(t).forEach((function(n){r[n].paths.push(a);var i=t[n];i.hasData===i.total&&(O(e,n),r[n].deleted+=1)}))}(t,u,a,n),function(e,t){var r=t.fragmentDefinitions,a=t.typeIDKey,n=E(e),i=!1;n.forEach((function(t){var n=F(t,{fragmentDefinitions:r});if(!n||!n.length)return N(e,t),void(i=!0);if(1===n.length){var s=n[0].fieldNode;x(s)===a&&(N(e,t),i=!0)}}))}(t,i),function(e,t){var r=t.fragmentDefinitions,a=t.typeIDKey,n=F(e,{fragmentDefinitions:r});if(!n||n.length>3)return!1;var i=n.map((function(e){var t=e.fieldNode;return x(t)}));if(2===i.length&&i.every((function(e){return e===a||e===_})))return q(e,n.map((function(e){return e.fieldNode}))),!0;if(1===i.length&&i[0]===a||i[0]===_){var s=n[0].fieldNode;return q(e,s),!0}}(t,i),!R(t,{fragmentDefinitions:s})},re=function(t,r,a){var n=r.fieldPathChecklist,i=t.ast,s=I(i,a.operation)[0],c=a.fragmentDefinitions,o=F(s,{fragmentDefinitions:c});if(!o)return i;for(var u=function(e,t){var r=e.request,a=t.fragmentDefinitions;return W(null!=a?a:{}).reduce((function(e,t){return e[t]={deleted:0,paths:[],total:(r.match(new RegExp("\\.\\.\\.".concat(t),"g"))||[]).length},e}),{})}(t,a),h=o.length-1;h>=0;h-=1){var p=o[h].fieldNode,l=j(p,{requestFieldPath:a.operation},a).requestFieldPath;te(p,n,u,l,a)&&q(s,p)}return a.queryFiltered=!0,function(t,r,a,n){var i=W(a).reduce((function(t,r){var n=a[r],i=n.deleted,s=n.total;return 0===i&&1===s?[].concat(e(t),[{name:r,path:a[r].paths[0]}]):t}),[]),s=n.fragmentDefinitions,c=void 0===s?{}:s;i.forEach((function(e){var t=e.name,i=e.path,s=c[t];te(s,r,a,i,n)}));var o=W(a).reduce((function(t,r){var n=a[r],i=n.deleted,s=n.total;return i>0&&i===s?[].concat(e(t),[r]):t}),[]);return o.length?K(t,{include:o}):t}(i,n,u,a)},ae=function(e,t){return t.hasDeferOrStream&&!e.hasNext&&e.paths},ne=function(e,t){return t.hasDeferOrStream&&e.hasNext},ie=function(e,t){return!t.hasDeferOrStream&&!e.hasNext&&!e.paths};function se(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function ce(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?se(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):se(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function oe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function ue(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?oe(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):oe(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var he,pe,le,fe,de=function(e,r){if(!r.normalizePatchResponseData)return e;var a=e.data,n=e.paths;return ue(ue({},t(e,["data","paths"])),{},{data:o({},n[0],a),paths:n})},ye=function(e,t,r){var a=t.typeIDValue,n=h(e)?e[r]:void 0;return a||n};function me(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function ve(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?me(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):me(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var be=(he=function(e,a,n){var i,s=n.value;s&&(n.value=(i=r(m.mark((function e(){var a,n,i,c=this,o=arguments;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(a=o.length,n=new Array(a),i=0;i<a;i++)n[i]=o[i];return e.prev=1,e.abrupt("return",new Promise(function(){var e=r(m.mark((function e(r){var a,i,o,u,h,p,l,f,d,y;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=n[3],i=a.debugManager,o=a.requestFieldCacheKey,u=a.requestID,h=t(a,["debugManager","requestFieldCacheKey","requestID"]),i){e.next=8;break}return e.t0=r,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 p=i.now(),e.next=11,s.apply(c,n);case 11:l=e.sent,f=i.now(),d=f-p,r(l),y=Z({cacheType:n[0],context:h,hash:n[1],options:n[2],requestID:u,result:l,stats:{duration:d,endTime:f,startTime:p}},o?{decryptedCacheKey:o}:{}),i.emit(b,y);case 17: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)}))},pe=function(e,a,n){var i,s=n.value;s&&(n.value=(i=r(m.mark((function e(){var a,n,i,c=this,o=arguments;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(a=o.length,n=new Array(a),i=0;i<a;i++)n[i]=o[i];return e.abrupt("return",new Promise(function(){var e=r(m.mark((function e(r){var a,i,o,u,h,p,l,f,d;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=n[5],i=a.debugManager,o=a.requestFieldCacheKey,u=a.requestID,h=t(a,["debugManager","requestFieldCacheKey","requestID"]),i){e.next=6;break}return e.next=4,s.apply(c,n);case 4:return r(),e.abrupt("return");case 6:return p=i.now(),e.next=9,s.apply(c,n);case 9:l=i.now(),f=l-p,r(),d=X({cachemapOptions:n[3],cacheType:n[0],context:h,hash:n[1],options:n[4],requestID:u,stats:{duration:f,endTime:l,startTime:p},value:n[2]},o?{decryptedCacheKey:o}:{}),i.emit(v,d);case 14: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)}))},le=function(e,a,n){var i,s=n.value;s&&(n.value=(i=r(m.mark((function e(){var a,n,i,c=this,o=arguments;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(a=o.length,n=new Array(a),i=0;i<a;i++)n[i]=o[i];return e.abrupt("return",new Promise(function(){var e=r(m.mark((function e(r){var a,i,o,u,h,p,l;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=n[3],i=a.debugManager,o=a.requestID,u=t(a,["debugManager","requestID"]),i){e.next=6;break}return e.next=4,s.apply(c,n);case 4:return r(),e.abrupt("return");case 6:return h=i.now(),e.next=9,s.apply(c,n);case 9:p=i.now(),l=p-h,r(),i.emit(g,{context:u,hash:n[0],options:n[2],partialQueryResponse:n[1],requestID:o,stats:{duration:l,endTime:p,startTime:h}});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((fe=function(){function s(e){a(this,s),i(this,"_cache",void 0),i(this,"_cascadeCacheControl",void 0),i(this,"_fallbackOperationCacheability",void 0),i(this,"_partialQueryResponses",new Map),i(this,"_responseChunksAwaitingCaching",new Map),i(this,"_typeCacheDirectives",void 0),i(this,"_typeIDKey",void 0);var t=[];if(e.cache||t.push(new TypeError("@graphql-box/cache-manager expected options.cache.")),e.typeCacheDirectives&&!h(e.typeCacheDirectives)){t.push(new TypeError("@graphql-box/cache-manager expected options.typeCacheDirectives to be a plain object."))}if(t.length)throw t;this._cache=e.cache,this._cascadeCacheControl=e.cascadeCacheControl||!1,this._fallbackOperationCacheability=e.fallbackOperationCacheability||"noCache",this._typeCacheDirectives=e.typeCacheDirectives||{},this._typeIDKey=e.typeIDKey}var v,b,g,P,x,O,q,E,N,K,W,J,X,Y,Z,ee,te,se,oe,ue,he,pe,le,fe,me;return n(s,[{key:"cache",get:function(){return this._cache}},{key:"analyzeQuery",value:(me=r(m.mark((function e(r,a,n){var i,s,c,o,u,h,p,l,f,d,v;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=r.ast,s=r.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=ve(ve({},n),{},{fragmentDefinitions:A(i),typeIDKey:this._typeIDKey}),e.next=6,this._retrieveCachedResponseData(r,a,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:r});case 10:if(p.missing){e.next=16;break}if(l=this._setQueryResponseCacheEntry(s,{cacheMetadata:u,data:h},a,c),!a.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},a,c),f=re(r,o,c),c.fragmentDefinitions,c.typeIDKey,d=t(c,["fragmentDefinitions","typeIDKey"]),y(n,d),v=H(f),e.abrupt("return",{updated:{ast:f,hash:T(v),request:v}});case 22:case"end":return e.stop()}}),e,this)}))),function(e,t,r){return me.apply(this,arguments)})},{key:"cacheQuery",value:(fe=r(m.mark((function e(t,r,a,n,i){var s;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s=ve(ve({},i),{},{fragmentDefinitions:A((null!=r?r:t).ast),typeIDKey:this._typeIDKey}),e.abrupt("return",this._cacheResponse(t,r,a,n,s));case 2:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a,n){return fe.apply(this,arguments)})},{key:"cacheResponse",value:(le=r(m.mark((function e(t,r,a,n){var i;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=ve(ve({},n),{},{fragmentDefinitions:A(t.ast),typeIDKey:this._typeIDKey}),e.abrupt("return",this._cacheResponse(t,void 0,r,a,i));case 2:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a){return le.apply(this,arguments)})},{key:"checkCacheEntry",value:(pe=r(m.mark((function e(t,r,a,n){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._checkCacheEntry(t,r,a,n));case 1:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a){return pe.apply(this,arguments)})},{key:"checkQueryResponseCacheEntry",value:(he=r(m.mark((function e(t,r,a){var n,i,s,c;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._checkCacheEntry(D,t,r,a);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:Q(s),data:c});case 7:case"end":return e.stop()}}),e,this)}))),function(e,t,r){return he.apply(this,arguments)})},{key:"deletePartialQueryResponse",value:function(e){this._partialQueryResponses.delete(e)}},{key:"setQueryResponseCacheEntry",value:(ue=r(m.mark((function e(t,r,a,n){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._setQueryResponseCacheEntry(t.hash,r,a,n));case 1:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a){return ue.apply(this,arguments)})},{key:"_analyzeFieldNode",value:(oe=r(m.mark((function e(t,r,a,n,i){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!R(t,{fragmentDefinitions:i.fragmentDefinitions})){e.next=5;break}return e.next=3,this._analyzeParentFieldNode(t,r,a,n,i);case 3:e.next=7;break;case 5:return e.next=7,this._analyzeLeafFieldNode(t,r,a,n,i);case 7:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a,n){return oe.apply(this,arguments)})},{key:"_analyzeLeafFieldNode",value:(se=r(m.mark((function e(t,r,a,n,i){var c,o,u,h,p,l,f,d,y,v,b,g,_,D,C,k;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(c=j(t,r,i),o=c.hashedRequestFieldCacheKey,u=c.propNameOrIndex,h=c.requestFieldCacheKey,p=c.requestFieldPath,l=i.fieldTypeMap.get(p),f=r.entityData,d=r.fragmentKind,y=r.fragmentName,v=r.requestFieldPathData,b=r.typeName,g={dataTypeName:(null==f?void 0:f.__typename)||(null==v?void 0:v.__typename),fieldTypeName:b,fragmentKind:d,fragmentName:y},!s._isNodeRequestFieldPath(l)){e.next=14;break}return e.next=8,this._retrieveCachedRequestFieldPathData(o,h,n,i);case 8:_=e.sent,D=_.cacheability,C=_.entry,s._setCachedResponseData({cacheability:D,data:C},a,c,g,n,i),e.next=17;break;case 14:k=s._getFieldDataFromAncestor(f,u)||s._getFieldDataFromAncestor(v,u),s._setFieldPathChecklist(a.fieldPathChecklist,{data:k},p,g),s._setCachedData(a.data,{data:k},u);case 17:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a,n){return se.apply(this,arguments)})},{key:"_analyzeParentFieldNode",value:(te=r(m.mark((function e(t,r,a,n,i){var c,o,u,h,l,d,y,v,b,g,D,C,k,w,P=this;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c=j(t,r,i),o=c.propNameOrIndex,u=c.requestFieldCacheKey,h=c.requestFieldPath,l=i.fieldTypeMap.get(h),e.next=5,this._retrieveCachedParentNodeData(r,c,l,n,i);case 5:if(d=e.sent,y=d.cacheability,v=d.data,b=d.entityData,g=d.requestFieldPathData,D=r.fragmentKind,C=r.fragmentName,k=r.typeName,s._setCachedResponseData({cacheability:y,data:v},a,c,{dataTypeName:f(v,_),fieldTypeName:k,fragmentKind:D,fragmentName:C},n,i),p(v)){e.next=14;break}return e.abrupt("return");case 14:return w=[],S(t,v,i.fragmentDefinitions,(function(e,t,r,s,c){w.push(P._analyzeFieldNode(e,{cacheability:y,entityData:b,fragmentKind:r,fragmentName:s,index:c,requestFieldCacheKey:u,requestFieldPath:h,requestFieldPathData:g,typeName:t},ve(ve({},a),{},{data:a.data[o]}),n,i))})),e.next=19,Promise.all(w);case 19:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a,n){return te.apply(this,arguments)})},{key:"_buildCacheMetadata",value:function(e,r,a,n){var i=this,s=e.ast,c=r.data,o=t(r,["data"]),u=this._createCacheMetadata(ve({data:c},o),n),h=I(s,n.operation)[0],p=F(h);return p?(p.forEach((function(e){var t=e.fieldNode;return i._setFieldCacheability(t,{requestFieldPath:n.operation},{cacheMetadata:u,data:c},a,n)})),u):u}},{key:"_cacheResponse",value:(ee=r(m.mark((function e(t,r,a,n,i){var c,o,u,h,p,l,f,y,v,b,g;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(c=de(a,i),o=c,ne(a,i)&&(this._setResponseChunksAwaitingCaching(c,i),o=void 0),ae(a,i)&&(o=this._retrieveResponseDataForCaching(c,i)),u=[],!o){e.next=15;break}if(h=o.data,p=this._buildCacheMetadata(t,o,n,i),u.push(this._setEntityAndRequestFieldPathCacheEntries(t,{cacheMetadata:p,entityData:d(h),requestFieldPathData:d(h)},n,i)),i.operation===C&&(i.queryFiltered&&r&&(u.push(this._setQueryResponseCacheEntry(r.hash,{cacheMetadata:p,data:h},n,i)),y=this._getPartialQueryResponse(t.hash)),l=s._mergeResponseCacheMetadata(p,y),f=this._mergeResponseData(h,y),u.push(this._setQueryResponseCacheEntry(t.hash,{cacheMetadata:l,data:f},n,i))),!n.awaitDataCaching){e.next=13;break}return e.next=13,Promise.all(u);case 13:if(!(ie(c,i)&&l&&f)){e.next=15;break}return e.abrupt("return",{cacheMetadata:l,data:f});case 15:return v=c.data,b=c.hasNext,g=c.paths,e.abrupt("return",{cacheMetadata:this._buildCacheMetadata(t,c,n,i),data:v,hasNext:b,paths:g});case 17:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a,n){return ee.apply(this,arguments)})},{key:"_checkCacheEntry",value:(Z=r(m.mark((function e(t,r,a,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,r);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,r,a,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,r,a){return Z.apply(this,arguments)})},{key:"_createCacheMetadata",value:function(e,t){var r=e._cacheMetadata,a=e.headers,n=t.operation,i=new Map,s=function(e){var t=e._cacheMetadata,r=e.fallback,a=e.headers;if(t&&!G(t)){var n=Object.values(t),i=V(n),s=i[0],c=i.slice(1);return new L({metadata:c.reduce((function(e,t){return t.ttl<e.ttl?t:e}),s)})}return a&&a.has("cache-control")?new L({headers:a}):new L({cacheControl:r})}({_cacheMetadata:r,fallback:this._fallbackOperationCacheability,headers:a});return i.set(n,s),r&&Q(r,i),i}},{key:"_getCacheEntry",value:(Y=r(m.mark((function e(t,r,a,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(r));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,r,a){return Y.apply(this,arguments)})},{key:"_getPartialQueryResponse",value:function(e){var t=this._partialQueryResponses.get(e);return this._partialQueryResponses.delete(e),t}},{key:"_hasCacheEntry",value:(X=r(m.mark((function e(t,r){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(r));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 r=t.isEntity,a=t.possibleTypes;return!!f(e,this._typeIDKey,null)&&(!!r||!!a.length&&a.some((function(t){return t.typeName===e.__typename})))}},{key:"_mergeObjects",value:function(e,t){var r=this;return z(e,t,(function(e,t){return h(t)&&t[r._typeIDKey]?t[r._typeIDKey]:void 0}))}},{key:"_mergeResponseData",value:function(e,t){return t?this._mergeObjects(t.data,e):e}},{key:"_parseEntityAndRequestFieldPathCacheEntryData",value:(J=r(m.mark((function e(t,r,a,n,i){var s,c,o,u,h,l,d,y,v,b,g=this;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s=a.cacheMetadata,c=a.entityData,o=a.requestFieldPathData,u=j(t,r,i),h=u.requestFieldCacheKey,l=u.requestFieldPath,d=u.responseDataPath,y=f(o,d),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=[],S(t,y,i.fragmentDefinitions,(function(e,t,r,a,u){b.push(g._parseEntityAndRequestFieldPathCacheEntryData(e,{index:u,requestFieldCacheKey:h,requestFieldPath:l,responseDataPath:d},{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,r,a,n){return J.apply(this,arguments)})},{key:"_retrieveCachedEntityData",value:(W=r(m.mark((function t(r,a,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=a.possibleTypes,c=a.typeName,o=[].concat(e(s.map((function(e){return e.typeName}))),[c]),t.next=4,Promise.all(o.map((function(e){return l._checkCacheEntry(k,"".concat(e,"::").concat(r),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 r=e.cacheability,a=t.cacheability;return r.metadata.ttl-a.metadata.ttl})),p={cacheability:h[0].cacheability,entry:h.reduce((function(e,t){var r=t.entry;return l._mergeObjects(e,r)}),{})}),t.abrupt("return",p||{});case 8:case"end":return t.stop()}}),t)}))),function(e,t,r,a){return W.apply(this,arguments)})},{key:"_retrieveCachedParentNodeData",value:(K=r(m.mark((function e(t,r,a,n,i){var c,o,h,p,l,f,d,y,v,b,g,_,D,C,k,w,P,x;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=t.entityData,h=t.requestFieldPathData,p=r.hashedRequestFieldCacheKey,l=r.propNameOrIndex,f=r.requestFieldCacheKey,d=s._getFieldDataFromAncestor(o,l),y=s._getFieldDataFromAncestor(h,l),!s._isNodeRequestFieldPath(a)){e.next=12;break}return e.next=7,this._retrieveCachedRequestFieldPathData(p,f,n,i);case 7:b=e.sent,g=b.cacheability,(_=b.entry)&&(y=this._mergeObjects(y,_)),g&&(v=g);case 12:if(D=ye(y,a,this._typeIDKey),!s._isNodeEntity(a)||!D){e.next=21;break}return e.next=16,this._retrieveCachedEntityData(D,a,n,i);case 16:k=e.sent,w=k.cacheability,(P=k.entry)&&(d=this._mergeObjects(d,P)),w&&(!v||w.metadata.ttl>(null===(C=v)||void 0===C?void 0:C.metadata.ttl))&&(v=w);case 21:return x=u(y)&&u(d)?null!==(c=d)&&void 0!==c?c:y:this._mergeObjects(y,d),e.abrupt("return",{cacheability:v,data:x,entityData:d,requestFieldPathData:y});case 23:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a,n){return K.apply(this,arguments)})},{key:"_retrieveCachedRequestFieldPathData",value:(N=r(m.mark((function e(t,r,a,n){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._checkCacheEntry(w,t,a,ve(ve({},n),{},{requestFieldCacheKey:r}))||{});case 1:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a){return N.apply(this,arguments)})},{key:"_retrieveCachedResponseData",value:(E=r(m.mark((function e(t,r,a){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=I(n,a.operation)[0],o=F(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:a.operation},i,r,a)})));case 8:return i.fieldCount=s._countFieldPathChecklist(i.fieldPathChecklist),e.abrupt("return",i);case 10:case"end":return e.stop()}}),e)}))),function(e,t,r){return E.apply(this,arguments)})},{key:"_retrieveResponseDataForCaching",value:function(t,r){var a,n=this._responseChunksAwaitingCaching.get(r.requestID);return this._responseChunksAwaitingCaching.delete(r.requestID),(a=[].concat(e(n),[t])).reduce((function(e,t,r){var n=t._cacheMetadata,i=t.data,s=t.hasNext,c=t.headers,o=t.paths;return n&&(e._cacheMetadata=e._cacheMetadata?ce(ce({},e._cacheMetadata),n):n),e.data=e.data?B(e.data,i):i,0===r&&(e.headers=c),r===a.length-1&&(e.hasNext=s),o&&(e.paths||(e.paths=[]),e.paths.push(o[0])),e}),{data:{}})}},{key:"_setCacheEntry",value:(q=r(m.mark((function e(t,r,a,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(r),d(a),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,r,a,n,i){return q.apply(this,arguments)})},{key:"_setEntityAndRequestFieldPathCacheEntries",value:(O=r(m.mark((function e(t,r,a,n){var i,s,c=this;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=I(t.ast,n.operation)[0],s=F(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},r,a,n)})));case 6:case"end":return e.stop()}}),e)}))),function(e,t,r,a){return O.apply(this,arguments)})},{key:"_setEntityAndRequestFieldPathCacheEntry",value:(x=r(m.mark((function e(t,r,a,n,i){var s,o,h,p,l,d,y,v,b,g;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s=a.cacheMetadata,o=a.entityData,h=a.requestFieldPathData,p=r.requestFieldPath,l=r.responseDataPath,d=f(o,l),y=i.fieldTypeMap.get(p),v=s.get(p),!u(d)&&y&&v){e.next=7;break}return e.abrupt("return");case 7:return(b=[]).push(this._setRequestFieldPathCacheEntry(t,r,{cacheability:v,data:h,fieldTypeInfo:y},n,i)),!(g=this._isFieldEntity(d,y))&&y.hasArguments&&c(o,l),g&&b.push(this._setEntityCacheEntry(r,{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,r,a,n){return x.apply(this,arguments)})},{key:"_setEntityCacheEntry",value:(P=r(m.mark((function e(t,r,a,n){var i,s,c,u,h,p,l,d;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=t.responseDataPath,s=r.cacheability,c=r.data,u=r.fieldTypeInfo,h=f(c,i),p=u.isEntity?u.typeName:h.__typename,l="".concat(p,"::").concat(h[this._typeIDKey]),e.next=7,this._checkCacheEntry(k,l,a,n);case 7:return(d=e.sent)&&(h=this._mergeObjects(d.entry,h)),e.next=11,this._setCacheEntry(k,l,h,{cacheHeaders:{cacheControl:s.printCacheControl()},tag:a.tag},a,n);case 11:o(c,i,{__cacheKey:"".concat(k,"::").concat(l)});case 12:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a){return P.apply(this,arguments)})},{key:"_setFieldCacheability",value:function(e,t,r,a,n){var i=this,s=r.cacheMetadata,c=r.data,o=t.requestFieldPath,u=j(e,t,n),h=u.requestFieldPath,l=u.responseDataPath,d=f(c,l),y=n.fieldTypeMap.get(h);(p(d)||null!=y&&y.hasDirectives)&&(this._setFieldTypeCacheDirective(s,{ancestorRequestFieldPath:o,requestFieldPath:h},n),p(d)&&S(e,d,n.fragmentDefinitions,(function(e,t,r,o,u){i._setFieldCacheability(e,{index:u,requestFieldPath:h,responseDataPath:l},{cacheMetadata:s,data:c},a,n)})))}},{key:"_setFieldTypeCacheDirective",value:function(e,t,r){var a=t.ancestorRequestFieldPath,n=t.requestFieldPath,i=r.fieldTypeMap,c=r.operation;if(!e.has(n)){var o=i.get(n);if(o&&this._typeCacheDirectives[o.typeName]){var u=new L({cacheControl:this._typeCacheDirectives[o.typeName]});s._setCacheMetadata(e,u,n,c)}else this._cascadeCacheControl&&a&&s._setCacheMetadata(e,e.get(a),n,c)}}},{key:"_setPartialQueryResponse",value:(g=r(m.mark((function e(t,r,a,n){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this._partialQueryResponses.set(t,r);case 1:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a){return g.apply(this,arguments)})},{key:"_setQueryResponseCacheEntry",value:(b=r(m.mark((function e(t,r,a,n){var i,c,o,u;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=r.cacheMetadata,c=r.data,o=U(i),u=s._getOperationCacheControl(i,n.operation),e.next=5,this._setCacheEntry(D,t,{cacheMetadata:o,data:c},{cacheHeaders:{cacheControl:u},tag:a.tag},a,n);case 5:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a){return b.apply(this,arguments)})},{key:"_setRequestFieldPathCacheEntry",value:(v=r(m.mark((function e(t,r,a,n,i){var s,u,l,d,y,v,b,g,_,D,k;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s=a.cacheability,u=a.data,l=a.fieldTypeInfo,d=r.hashedRequestFieldCacheKey,y=r.requestFieldCacheKey,v=r.responseDataPath,b=f(u,v),g=this._isFieldEntity(b,l),_=l.hasArguments||l.hasDirectives,i.operation!==C||!g&&!_){e.next=14;break}return h(b)&&null!==(D=t.selectionSet)&&void 0!==D&&D.selections&&(b=$(b,t.selectionSet.selections,r,i)),e.next=9,this._checkCacheEntry(w,d,n,ve(ve({},i),{},{requestFieldCacheKey:y}));case 9:return(k=e.sent)&&p(b)&&(b=this._mergeObjects(k.entry,b)),e.next=13,this._setCacheEntry(w,d,b,{cacheHeaders:{cacheControl:s.printCacheControl()},tag:n.tag},n,ve(ve({},i),{},{requestFieldCacheKey:y}));case 13:R(t,{fragmentDefinitions:i.fragmentDefinitions})&&(g?o(u,v,{__cacheKey:"".concat(w,"::").concat(d)}):c(u,v));case 14:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a,n){return v.apply(this,arguments)})},{key:"_setResponseChunksAwaitingCaching",value:function(t,r){var a=this._responseChunksAwaitingCaching.get(r.requestID);a?this._responseChunksAwaitingCaching.set(r.requestID,[].concat(e(a),[t])):this._responseChunksAwaitingCaching.set(r.requestID,[t])}}],[{key:"_countFieldPathChecklist",value:function(e){var t={missing:0,total:0};return e.forEach((function(e){t.total+=e.length;var r=e.filter((function(e){return!e.hasData}));t.missing+=r.length})),t}},{key:"_getFieldDataFromAncestor",value:function(e,t){return p(e)?d(e[t]):void 0}},{key:"_getOperationCacheControl",value:function(e,t){if(!e)return"no-cache";var r=e.get(t);return r?r.printCacheControl():"no-cache"}},{key:"_isNodeEntity",value:function(e){if(!e)return!1;var t=e.isEntity,r=e.possibleTypes;return t||r.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!f(e,["metadata","cacheControl","noCache"],!1)&&e.checkTTL()}},{key:"_mergeResponseCacheMetadata",value:function(t,r){return r?new Map([].concat(e(r.cacheMetadata),e(t))):t}},{key:"_setCachedData",value:function(e,t,r){var a=t.data;if(p(a)||u(a)){if(p(a)){var n=a;e[r]=l(n)?[]:{}}}else e[r]=a}},{key:"_setCachedResponseData",value:function(e,t,r,a,n,i){var c=t.cacheMetadata,o=t.data,u=t.fieldPathChecklist,h=r.propNameOrIndex,p=r.requestFieldPath,l=i.operation;s._setCacheMetadata(c,e.cacheability,p,l),s._setFieldPathChecklist(u,e,p,a),s._setCachedData(o,e,h)}},{key:"_setCacheMetadata",value:function(e,t,r,a){if(t){e.set(r,t);var n=e.get(a);(!n||n.metadata.ttl>t.metadata.ttl)&&e.set(a,t)}}},{key:"_setFieldPathChecklist",value:function(t,r,a,n){var i=r.data,s=n.dataTypeName,c=n.fieldTypeName,o=n.fragmentKind,h=n.fragmentName;if(u(c)||o===M){if(t.has(a))return;t.set(a,[{fragmentKind:o,fragmentName:h,hasData:!u(i)}])}else if(s===c){var p=t.get(a),l=p||[];l.some((function(e){return e.typeName===s}))||t.set(a,[].concat(e(l),[{fragmentKind:o,fragmentName:h,hasData:!u(i),typeName:s}]))}}}]),s}()).prototype,"_getCacheEntry",[he],Object.getOwnPropertyDescriptor(fe.prototype,"_getCacheEntry"),fe.prototype),s(fe.prototype,"_setCacheEntry",[pe],Object.getOwnPropertyDescriptor(fe.prototype,"_setCacheEntry"),fe.prototype),s(fe.prototype,"_setPartialQueryResponse",[le],Object.getOwnPropertyDescriptor(fe.prototype,"_setPartialQueryResponse"),fe.prototype),fe);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 new be(ve(ve({},t),e))}}export{be as CacheManager};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/browser/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../cache-manager/src/consts/index.ts","../cache-manager/src/helpers/deriveOpCacheability.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/isLastResponseChunk.ts","../cache-manager/src/helpers/isNotLastResponseChunk.ts","../cache-manager/src/helpers/isNotResponseChunk.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/mergeResponseDataSets.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 { 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","import { PlainObjectMap } from \"@graphql-box/core\";\nimport { KeysAndPaths, buildFieldKeysAndPaths, getName, resolveFragments } from \"@graphql-box/helpers\";\nimport { FieldNode, SelectionNode } from \"graphql\";\nimport { keys } from \"lodash\";\nimport { CacheManagerContext } from \"../defs\";\n\nexport default (\n fieldData: PlainObjectMap,\n selectionNodes: readonly SelectionNode[],\n ancestorKeysAndPaths: KeysAndPaths,\n context: CacheManagerContext,\n) => {\n const fieldAndTypeName = resolveFragments(selectionNodes, context.fragmentDefinitions);\n\n return keys(fieldData).reduce((acc: PlainObjectMap, key) => {\n const match = fieldAndTypeName.find(({ fieldNode }) => (getName(fieldNode) as FieldNode[\"name\"][\"value\"]) === key);\n\n if (match) {\n const { requestFieldPath } = buildFieldKeysAndPaths(match.fieldNode, ancestorKeysAndPaths, context);\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n\n if (!fieldTypeInfo?.hasArguments && !fieldTypeInfo?.hasDirectives) {\n acc[key] = fieldData[key];\n }\n }\n\n return acc;\n }, {});\n};\n","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 {\n FRAGMENT_SPREAD,\n buildFieldKeysAndPaths,\n deleteChildFields,\n getChildFields,\n getName,\n hasChildFields,\n} from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from \"graphql\";\nimport { CacheManagerContext, FieldPathChecklist, FragmentSpreadFieldCounter } from \"../defs\";\nimport checkFieldPathChecklist from \"./checkFieldPathChecklist\";\nimport { FragmentSpreadCheckist } from \"./createFragmentSpreadChecklist\";\nimport filterFragmentSpreads from \"./filterFragmentSpreads\";\nimport filterIDsAndTypeNames from \"./filterIDsAndTypeNames\";\nimport filterInlineFragments from \"./filterInlineFragments\";\n\nconst filterField = (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\n fieldPathChecklist: FieldPathChecklist,\n fragmentSpreadChecklist: FragmentSpreadCheckist,\n ancestorRequestFieldPath: string,\n context: CacheManagerContext,\n): boolean => {\n const { fragmentDefinitions, typeIDKey } = context;\n const fieldsAndTypeNames = getChildFields(field, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames) {\n return false;\n }\n\n const fragmentSpreadFieldCounter: FragmentSpreadFieldCounter = {};\n\n for (let i = fieldsAndTypeNames.length - 1; i >= 0; i -= 1) {\n const { fieldNode: childField, fragmentKind, fragmentName, typeName: childTypeName } = fieldsAndTypeNames[i];\n\n if (fragmentKind === FRAGMENT_SPREAD && fragmentName && !fragmentSpreadFieldCounter[fragmentName]) {\n fragmentSpreadFieldCounter[fragmentName] = {\n hasData: 0,\n total: fragmentDefinitions?.[fragmentName]\n ? getChildFields(fragmentDefinitions?.[fragmentName], { fragmentDefinitions })?.length ?? 0\n : 0,\n };\n }\n\n const childFieldName = getName(childField);\n\n if (childFieldName === typeIDKey || childFieldName === TYPE_NAME_KEY) {\n continue;\n }\n\n const { requestFieldPath } = buildFieldKeysAndPaths(\n childField,\n {\n requestFieldPath: ancestorRequestFieldPath,\n },\n context,\n );\n\n const { hasData, typeUnused } = checkFieldPathChecklist(fieldPathChecklist.get(requestFieldPath), childTypeName);\n\n if (hasData || typeUnused) {\n if (fragmentKind === FRAGMENT_SPREAD) {\n fragmentSpreadFieldCounter[fragmentName as string].hasData += 1;\n } else if (!hasChildFields(childField, { fragmentDefinitions })) {\n deleteChildFields(field, childField);\n } else if (filterField(childField, fieldPathChecklist, fragmentSpreadChecklist, requestFieldPath, context)) {\n deleteChildFields(field, childField);\n }\n }\n }\n\n filterFragmentSpreads(field, fragmentSpreadFieldCounter, fragmentSpreadChecklist, ancestorRequestFieldPath);\n filterInlineFragments(field, context);\n filterIDsAndTypeNames(field, context);\n return !hasChildFields(field, { fragmentDefinitions });\n};\n\nexport default filterField;\n","import { deleteFragmentSpreads } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from \"graphql\";\nimport { isEmpty, keys } from \"lodash\";\nimport { FragmentSpreadFieldCounter } from \"../defs\";\nimport { FragmentSpreadCheckist } from \"./createFragmentSpreadChecklist\";\n\nexport default (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\n fragmentSpreadFieldCounter: FragmentSpreadFieldCounter,\n fragmentSpreadChecklist: FragmentSpreadCheckist,\n ancestorRequestFieldPath: string,\n) => {\n if (isEmpty(fragmentSpreadFieldCounter)) {\n return;\n }\n\n keys(fragmentSpreadFieldCounter).forEach(key => {\n fragmentSpreadChecklist[key].paths.push(ancestorRequestFieldPath);\n\n const { hasData, total } = fragmentSpreadFieldCounter[key];\n\n if (hasData === total) {\n deleteFragmentSpreads(field, key);\n fragmentSpreadChecklist[key].deleted += 1;\n }\n });\n};\n","import { deleteInlineFragments, getChildFields, getInlineFragments, getName } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from \"graphql\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\n { fragmentDefinitions, typeIDKey }: CacheManagerContext,\n) => {\n const inlineFragments = getInlineFragments(field);\n let filtered = false;\n\n inlineFragments.forEach(fragment => {\n const fieldsAndTypeNames = getChildFields(fragment, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames || !fieldsAndTypeNames.length) {\n deleteInlineFragments(field, fragment);\n filtered = true;\n return;\n }\n\n if (fieldsAndTypeNames.length === 1) {\n const { fieldNode } = fieldsAndTypeNames[0];\n\n if (getName(fieldNode) === typeIDKey) {\n deleteInlineFragments(field, fragment);\n filtered = true;\n }\n }\n });\n\n return filtered;\n};\n","import { TYPE_NAME_KEY } from \"@graphql-box/core\";\nimport { deleteChildFields, getChildFields, getName } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from \"graphql\";\nimport { CacheManagerContext } from \"../defs\";\n\nexport default (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\n { fragmentDefinitions, typeIDKey }: CacheManagerContext,\n) => {\n const fieldsAndTypeNames = getChildFields(field, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames || fieldsAndTypeNames.length > 3) {\n return false;\n }\n\n const fieldNames = fieldsAndTypeNames.map(({ fieldNode }) => getName(fieldNode) as FieldNode[\"name\"][\"value\"]);\n\n if (fieldNames.length === 2 && fieldNames.every(name => name === typeIDKey || name === TYPE_NAME_KEY)) {\n deleteChildFields(\n field,\n fieldsAndTypeNames.map(({ fieldNode }) => fieldNode),\n );\n\n return true;\n }\n\n if ((fieldNames.length === 1 && fieldNames[0] === typeIDKey) || fieldNames[0] === TYPE_NAME_KEY) {\n const { fieldNode } = fieldsAndTypeNames[0];\n deleteChildFields(field, fieldNode);\n return true;\n }\n\n return false;\n};\n","import { RequestData } from \"@graphql-box/core\";\nimport {\n buildFieldKeysAndPaths,\n deleteChildFields,\n getChildFields,\n getOperationDefinitions,\n} from \"@graphql-box/helpers\";\nimport { CacheManagerContext, CachedResponseData } from \"../defs\";\nimport createFragmentSpreadChecklist from \"./createFragmentSpreadChecklist\";\nimport filterField from \"./filterField\";\nimport filterFragmentDefinitions from \"./filterFragmentDefinitions\";\n\nexport default (requestData: RequestData, { fieldPathChecklist }: CachedResponseData, context: CacheManagerContext) => {\n const { ast } = requestData;\n const queryNode = getOperationDefinitions(ast, context.operation)[0];\n const { fragmentDefinitions } = context;\n const fieldsAndTypeNames = getChildFields(queryNode, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames) {\n return ast;\n }\n\n const fragmentSpreadChecklist = createFragmentSpreadChecklist(requestData, context);\n\n for (let i = fieldsAndTypeNames.length - 1; i >= 0; i -= 1) {\n const { fieldNode } = fieldsAndTypeNames[i];\n\n const { requestFieldPath } = buildFieldKeysAndPaths(\n fieldNode,\n {\n requestFieldPath: context.operation,\n },\n context,\n );\n\n if (filterField(fieldNode, fieldPathChecklist, fragmentSpreadChecklist, requestFieldPath, context)) {\n deleteChildFields(queryNode, fieldNode);\n }\n }\n\n context.queryFiltered = true;\n return filterFragmentDefinitions(ast, fieldPathChecklist, fragmentSpreadChecklist, context);\n};\n","import { RequestData } from \"@graphql-box/core\";\nimport { keys } from \"lodash\";\nimport { CacheManagerContext } from \"../defs\";\n\nexport type FragmentSpreadCheckist = {\n [key: string]: {\n deleted: number;\n paths: string[];\n total: number;\n };\n};\n\nexport default ({ request }: RequestData, { fragmentDefinitions }: CacheManagerContext) =>\n keys(fragmentDefinitions ?? {}).reduce((acc: FragmentSpreadCheckist, name) => {\n acc[name] = { deleted: 0, paths: [], total: (request.match(new RegExp(`\\\\.\\\\.\\\\.${name}`, \"g\")) || []).length };\n return acc;\n }, {});\n","import { deleteFragmentDefinitions } from \"@graphql-box/helpers\";\nimport { DocumentNode } from \"graphql\";\nimport { keys } from \"lodash\";\nimport { CacheManagerContext, FieldPathChecklist } from \"../defs\";\nimport { FragmentSpreadCheckist } from \"./createFragmentSpreadChecklist\";\nimport filterField from \"./filterField\";\n\nexport default (\n ast: DocumentNode,\n fieldPathChecklist: FieldPathChecklist,\n fragmentSpreadChecklist: FragmentSpreadCheckist,\n context: CacheManagerContext,\n) => {\n const definitionsToFilter = keys(fragmentSpreadChecklist).reduce(\n (namesAndPaths: { name: string; path: string }[], key) => {\n const { deleted, total } = fragmentSpreadChecklist[key];\n\n return deleted === 0 && total === 1\n ? [...namesAndPaths, { name: key, path: fragmentSpreadChecklist[key].paths[0] as string }]\n : namesAndPaths;\n },\n [],\n );\n\n const { fragmentDefinitions = {} } = context;\n\n definitionsToFilter.forEach(({ name, path }) => {\n const fragmentDefinition = fragmentDefinitions[name];\n filterField(fragmentDefinition, fieldPathChecklist, fragmentSpreadChecklist, path, context);\n });\n\n const definitionsToDelete = keys(fragmentSpreadChecklist).reduce((names: string[], key) => {\n const { deleted, total } = fragmentSpreadChecklist[key];\n return deleted > 0 && deleted === total ? [...names, key] : names;\n }, []);\n\n if (!definitionsToDelete.length) {\n return ast;\n }\n\n return deleteFragmentDefinitions(ast, {\n include: definitionsToDelete,\n });\n};\n","import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) =>\n context.hasDeferOrStream && !rawResponseData.hasNext && rawResponseData.paths;\n","import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) =>\n context.hasDeferOrStream && rawResponseData.hasNext;\n","import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) =>\n !context.hasDeferOrStream && !rawResponseData.hasNext && !rawResponseData.paths;\n","import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { set } from \"lodash\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) => {\n if (!context.normalizePatchResponseData) {\n return rawResponseData;\n }\n\n const { data, paths, ...rest } = rawResponseData;\n\n return {\n ...rest,\n data: set({}, (paths as string[])[0], data),\n paths,\n };\n};\n","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 KeysAndPaths,\n buildFieldKeysAndPaths,\n dehydrateCacheMetadata,\n getChildFields,\n getFragmentDefinitions,\n getOperationDefinitions,\n hasChildFields,\n hashRequest,\n iterateChildFields,\n mergeObjects,\n rehydrateCacheMetadata,\n} from \"@graphql-box/helpers\";\nimport Cacheability from \"cacheability\";\nimport { FieldNode, print } from \"graphql\";\nimport { assign, cloneDeep, get, isArray, isObjectLike, isPlainObject, isUndefined, set, unset } from \"lodash\";\nimport { CACHE_CONTROL, HEADER_NO_CACHE, METADATA, NO_CACHE } from \"../consts\";\nimport { logCacheEntry, logCacheQuery, logPartialCompiled } from \"../debug\";\nimport {\n AnalyzeQueryResult,\n AncestorKeysAndPaths,\n CacheManagerContext,\n CacheManagerDef,\n CacheManagerInit,\n CachedAncestorFieldData,\n CachedResponseData,\n CachemapOptions,\n CheckCacheEntryResult,\n ClientOptions,\n ConstructorOptions,\n DataForCachingEntry,\n FieldCount,\n FieldPathChecklist,\n FieldPathChecklistValue,\n MergedCachedFieldData,\n PartialQueryResponse,\n PartialQueryResponses,\n QueryResponseCacheEntry,\n ResponseDataForCaching,\n TypeNamesAndKind,\n UserOptions,\n} from \"../defs\";\nimport deriveOpCacheability from \"../helpers/deriveOpCacheability\";\nimport filterOutPropsWithArgsOrDirectives from \"../helpers/filterOutPropsWithArgsOrDirectives\";\nimport filterQuery from \"../helpers/filterQuery\";\nimport isLastResponseChunk from \"../helpers/isLastResponseChunk\";\nimport isNotLastResponseChunk from \"../helpers/isNotLastResponseChunk\";\nimport isNotResponseChunk from \"../helpers/isNotResponseChunk\";\nimport mergeResponseDataSets from \"../helpers/mergeResponseDataSets\";\nimport normalizePatchResponseData from \"../helpers/normalizePatchResponseData\";\nimport { getValidTypeIDValue } from \"../helpers/validTypeIDValue\";\n\nexport class CacheManager implements CacheManagerDef {\n private static _countFieldPathChecklist(fieldPathChecklist: FieldPathChecklist): FieldCount {\n const fieldCount: FieldCount = { missing: 0, total: 0 };\n\n fieldPathChecklist.forEach(checklistValues => {\n fieldCount.total += checklistValues.length;\n const missing = checklistValues.filter(({ hasData }) => !hasData);\n fieldCount.missing += missing.length;\n });\n\n return fieldCount;\n }\n\n private static _getFieldDataFromAncestor(ancestorFieldData: any, propNameOrIndex: string | number): any {\n return isObjectLike(ancestorFieldData) ? cloneDeep(ancestorFieldData[propNameOrIndex]) : undefined;\n }\n\n private static _getOperationCacheControl(cacheMetadata: CacheMetadata | undefined, operation: string): string {\n const defaultCacheControl = HEADER_NO_CACHE;\n\n if (!cacheMetadata) {\n return defaultCacheControl;\n }\n\n const cacheability = cacheMetadata.get(operation);\n return cacheability ? cacheability.printCacheControl() : defaultCacheControl;\n }\n\n private static _isNodeEntity(fieldTypeInfo?: FieldTypeInfo): boolean {\n if (!fieldTypeInfo) {\n return false;\n }\n\n const { isEntity, possibleTypes } = fieldTypeInfo;\n return isEntity || possibleTypes.some(type => !!type.isEntity);\n }\n\n private static _isNodeRequestFieldPath(fieldTypeInfo?: FieldTypeInfo): boolean {\n return (\n !!fieldTypeInfo &&\n (this._isNodeEntity(fieldTypeInfo) || fieldTypeInfo.hasArguments || fieldTypeInfo.hasDirectives)\n );\n }\n\n private static _isValid(cacheability: Cacheability): boolean {\n const noCache = get(cacheability, [METADATA, CACHE_CONTROL, NO_CACHE], false);\n return !noCache && cacheability.checkTTL();\n }\n\n private static _mergeResponseCacheMetadata(\n cacheMetadata: CacheMetadata,\n partialQueryResponse?: PartialQueryResponse,\n ): CacheMetadata {\n if (!partialQueryResponse) {\n return cacheMetadata;\n }\n\n return new Map([...partialQueryResponse.cacheMetadata, ...cacheMetadata]);\n }\n\n private static _setCachedData(\n requestData: PlainObjectMap,\n { data }: MergedCachedFieldData,\n propNameOrIndex: string | number,\n ): void {\n if (!isObjectLike(data) && !isUndefined(data)) {\n requestData[propNameOrIndex] = data as string | number | boolean | null;\n } else if (isObjectLike(data)) {\n const objectLikeData = data as PlainObjectMap | any[];\n requestData[propNameOrIndex] = isArray(objectLikeData) ? [] : {};\n }\n }\n\n private static _setCachedResponseData(\n cachedFieldData: MergedCachedFieldData,\n { cacheMetadata, data, fieldPathChecklist }: CachedResponseData,\n { propNameOrIndex, requestFieldPath }: KeysAndPaths,\n typeNamesAndKind: TypeNamesAndKind,\n _options: RequestOptions,\n { operation }: CacheManagerContext,\n ) {\n CacheManager._setCacheMetadata(cacheMetadata, cachedFieldData.cacheability, requestFieldPath, operation);\n CacheManager._setFieldPathChecklist(fieldPathChecklist, cachedFieldData, requestFieldPath, typeNamesAndKind);\n CacheManager._setCachedData(data, cachedFieldData, propNameOrIndex);\n }\n\n private static _setCacheMetadata(\n cacheMetadata: CacheMetadata,\n cacheability: Cacheability | undefined,\n requestFieldPath: string,\n operation: string,\n ): void {\n if (!cacheability) {\n return;\n }\n\n cacheMetadata.set(requestFieldPath, cacheability);\n const operationCacheability = cacheMetadata.get(operation);\n\n if (!operationCacheability || operationCacheability.metadata.ttl > cacheability.metadata.ttl) {\n cacheMetadata.set(operation, cacheability);\n }\n }\n\n private static _setFieldPathChecklist(\n fieldPathChecklist: FieldPathChecklist,\n { data }: MergedCachedFieldData,\n requestFieldPath: string,\n { dataTypeName, fieldTypeName, fragmentKind, fragmentName }: TypeNamesAndKind,\n ): void {\n if (isUndefined(fieldTypeName) || fragmentKind === FRAGMENT_SPREAD) {\n if (fieldPathChecklist.has(requestFieldPath)) {\n return;\n }\n\n fieldPathChecklist.set(requestFieldPath, [{ fragmentKind, fragmentName, hasData: !isUndefined(data) }]);\n return;\n }\n\n if (dataTypeName !== fieldTypeName) {\n return;\n }\n\n const entry = fieldPathChecklist.get(requestFieldPath);\n const checklistValues = entry ? (entry as FieldPathChecklistValue[]) : [];\n\n if (checklistValues.some(({ typeName }) => typeName === dataTypeName)) {\n return;\n }\n\n fieldPathChecklist.set(requestFieldPath, [\n ...checklistValues,\n { fragmentKind, fragmentName, hasData: !isUndefined(data), typeName: dataTypeName as string },\n ]);\n }\n\n private _cache: Cachemap;\n private _cascadeCacheControl: boolean;\n private _fallbackOperationCacheability: string;\n private _partialQueryResponses: PartialQueryResponses = new Map();\n private _responseChunksAwaitingCaching: Map<string, RawResponseDataWithMaybeCacheMetadata[]> = new Map();\n private _typeCacheDirectives: PlainObjectStringMap;\n private _typeIDKey: string;\n\n constructor(options: ConstructorOptions) {\n const errors: TypeError[] = [];\n\n if (!options.cache) {\n errors.push(new TypeError(\"@graphql-box/cache-manager expected options.cache.\"));\n }\n\n if (!!options.typeCacheDirectives && !isPlainObject(options.typeCacheDirectives)) {\n const message = \"@graphql-box/cache-manager expected options.typeCacheDirectives to be a plain object.\";\n errors.push(new TypeError(message));\n }\n\n if (errors.length) {\n throw errors;\n }\n\n this._cache = options.cache;\n this._cascadeCacheControl = options.cascadeCacheControl || false;\n this._fallbackOperationCacheability = options.fallbackOperationCacheability || NO_CACHE;\n this._typeCacheDirectives = options.typeCacheDirectives || {};\n this._typeIDKey = options.typeIDKey;\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 cacheQuery(\n requestData: RequestData,\n updatedRequestData: RequestData | undefined,\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<ResponseData> {\n const cacheManagerContext: CacheManagerContext = {\n ...context,\n fragmentDefinitions: getFragmentDefinitions((updatedRequestData ?? requestData).ast),\n typeIDKey: this._typeIDKey,\n };\n\n return this._cacheResponse(requestData, updatedRequestData, rawResponseData, options, cacheManagerContext);\n }\n\n public async cacheResponse(\n requestData: RequestData,\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<ResponseData> {\n const cacheManagerContext: CacheManagerContext = {\n ...context,\n fragmentDefinitions: getFragmentDefinitions(requestData.ast),\n typeIDKey: this._typeIDKey,\n };\n\n return this._cacheResponse(requestData, undefined, rawResponseData, options, cacheManagerContext);\n }\n\n public async checkCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<CheckCacheEntryResult | false> {\n return this._checkCacheEntry(cacheType, hash, options, context);\n }\n\n public async checkQueryResponseCacheEntry(\n hash: string,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<ResponseData | false> {\n const result = await this._checkCacheEntry(QUERY_RESPONSES, hash, options, context);\n\n if (!result) {\n return false;\n }\n\n const { cacheMetadata, data } = result.entry as QueryResponseCacheEntry;\n\n return {\n cacheMetadata: rehydrateCacheMetadata(cacheMetadata),\n data,\n };\n }\n\n public deletePartialQueryResponse(hash: string): void {\n this._partialQueryResponses.delete(hash);\n }\n\n public async setQueryResponseCacheEntry(\n requestData: RequestData,\n responseData: ResponseData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n return this._setQueryResponseCacheEntry(requestData.hash, responseData, options, context);\n }\n\n private async _analyzeFieldNode(\n fieldNode: FieldNode,\n cachedAncestorFieldData: CachedAncestorFieldData,\n cachedResponseData: CachedResponseData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n if (hasChildFields(fieldNode, { fragmentDefinitions: context.fragmentDefinitions })) {\n await this._analyzeParentFieldNode(fieldNode, cachedAncestorFieldData, cachedResponseData, options, context);\n } else {\n await this._analyzeLeafFieldNode(fieldNode, cachedAncestorFieldData, cachedResponseData, options, context);\n }\n }\n\n private async _analyzeLeafFieldNode(\n fieldNode: FieldNode,\n cachedAncestorFieldData: CachedAncestorFieldData,\n cachedResponseData: CachedResponseData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n const keysAndPaths = buildFieldKeysAndPaths(fieldNode, cachedAncestorFieldData, context);\n const { hashedRequestFieldCacheKey, propNameOrIndex, 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 _cacheResponse(\n requestData: RequestData,\n updatedRequestData: RequestData | undefined,\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<ResponseData> {\n const normalizedResponseData = normalizePatchResponseData(rawResponseData, context);\n let responseDataForCaching: RawResponseDataWithMaybeCacheMetadata | undefined = normalizedResponseData;\n\n if (isNotLastResponseChunk(rawResponseData, context)) {\n this._setResponseChunksAwaitingCaching(normalizedResponseData, context);\n responseDataForCaching = undefined;\n }\n\n if (isLastResponseChunk(rawResponseData, context)) {\n responseDataForCaching = this._retrieveResponseDataForCaching(normalizedResponseData, context);\n }\n\n const dataCaching: Promise<void>[] = [];\n\n if (responseDataForCaching) {\n const { data } = responseDataForCaching;\n const cacheMetadata = this._buildCacheMetadata(requestData, responseDataForCaching, options, context);\n\n dataCaching.push(\n this._setEntityAndRequestFieldPathCacheEntries(\n requestData,\n {\n cacheMetadata,\n entityData: cloneDeep(data),\n requestFieldPathData: cloneDeep(data),\n },\n options,\n context,\n ),\n );\n\n let queryCacheMetadata: CacheMetadata | undefined;\n let queryData: PlainObjectMap | undefined;\n\n if (context.operation === QUERY) {\n let partialQueryResponse: PartialQueryResponse | undefined;\n\n if (context.queryFiltered && updatedRequestData) {\n dataCaching.push(\n this._setQueryResponseCacheEntry(updatedRequestData.hash, { cacheMetadata, data }, options, context),\n );\n\n partialQueryResponse = this._getPartialQueryResponse(requestData.hash);\n }\n\n queryCacheMetadata = CacheManager._mergeResponseCacheMetadata(cacheMetadata, partialQueryResponse);\n queryData = this._mergeResponseData(data, partialQueryResponse);\n\n dataCaching.push(\n this._setQueryResponseCacheEntry(\n requestData.hash,\n { cacheMetadata: queryCacheMetadata, data: queryData },\n options,\n context,\n ),\n );\n }\n\n if (options.awaitDataCaching) {\n await Promise.all(dataCaching);\n }\n\n if (isNotResponseChunk(normalizedResponseData, context) && queryCacheMetadata && queryData) {\n return {\n cacheMetadata: queryCacheMetadata,\n data: queryData,\n };\n }\n }\n\n const { data, hasNext, paths } = normalizedResponseData;\n\n return {\n cacheMetadata: this._buildCacheMetadata(requestData, normalizedResponseData, options, context),\n data,\n hasNext,\n paths,\n };\n }\n\n private async _checkCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n options: RequestOptions,\n context: CacheManagerContext,\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 _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 private _retrieveResponseDataForCaching(\n normalizedResponseData: RawResponseDataWithMaybeCacheMetadata,\n context: CacheManagerContext,\n ) {\n const responseChunks = this._responseChunksAwaitingCaching.get(\n context.boxID,\n ) as RawResponseDataWithMaybeCacheMetadata[];\n\n this._responseChunksAwaitingCaching.delete(context.boxID);\n return mergeResponseDataSets([...responseChunks, normalizedResponseData]);\n }\n\n @logCacheEntry()\n private async _setCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n value: any,\n cachemapOptions: CachemapOptions,\n _options: RequestOptions,\n _context: CacheManagerContext,\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, { fragmentDefinitions: context.fragmentDefinitions })) {\n if (isEntity) {\n set(data, responseDataPath, { __cacheKey: `${REQUEST_FIELD_PATHS}::${hashedRequestFieldCacheKey}` });\n } else {\n unset(data, responseDataPath);\n }\n }\n }\n }\n\n private _setResponseChunksAwaitingCaching(\n normalizedResponseData: RawResponseDataWithMaybeCacheMetadata,\n context: CacheManagerContext,\n ) {\n const responseChunks = this._responseChunksAwaitingCaching.get(context.boxID);\n\n if (responseChunks) {\n this._responseChunksAwaitingCaching.set(context.boxID, [...responseChunks, normalizedResponseData]);\n } else {\n this._responseChunksAwaitingCaching.set(context.boxID, [normalizedResponseData]);\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) => new CacheManager({ ...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 { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { merge } from \"lodash\";\n\nexport default (responseDataSets: RawResponseDataWithMaybeCacheMetadata[]) => {\n return responseDataSets.reduce(\n (acc: RawResponseDataWithMaybeCacheMetadata, dataSet, index) => {\n const { _cacheMetadata, data, hasNext, headers, paths } = dataSet;\n\n if (_cacheMetadata) {\n acc._cacheMetadata = acc._cacheMetadata ? { ...acc._cacheMetadata, ..._cacheMetadata } : _cacheMetadata;\n }\n\n acc.data = acc.data ? merge(acc.data, data) : data;\n\n if (index === 0) {\n acc.headers = headers;\n }\n\n if (index === responseDataSets.length - 1) {\n acc.hasNext = hasNext;\n }\n\n if (paths) {\n if (!acc.paths) {\n acc.paths = [];\n }\n\n acc.paths.push(paths[0]);\n }\n\n return acc;\n },\n { data: {} },\n );\n};\n"],"names":["CACHE_ENTRY_ADDED","CACHE_ENTRY_QUERIED","PARTIAL_QUERY_COMPILED","fieldData","selectionNodes","ancestorKeysAndPaths","context","fieldAndTypeName","resolveFragments","fragmentDefinitions","_keys","reduce","acc","key","match","find","fieldNode","getName","requestFieldPath","buildFieldKeysAndPaths","fieldTypeInfo","fieldTypeMap","get","hasArguments","hasDirectives","fieldPathChecklistValues","fieldTypeName","length","hasData","typeUnused","typeName","undefined","some","every","filterField","field","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","paths","push","deleteFragmentSpreads","deleted","filterFragmentSpreads","inlineFragments","getInlineFragments","filtered","fragment","deleteInlineFragments","filterInlineFragments","fieldNames","map","name","filterIDsAndTypeNames","requestData","ast","queryNode","getOperationDefinitions","operation","request","RegExp","createFragmentSpreadChecklist","queryFiltered","definitionsToFilter","namesAndPaths","path","fragmentDefinition","definitionsToDelete","names","deleteFragmentDefinitions","include","filterFragmentDefinitions","rawResponseData","hasDeferOrStream","hasNext","normalizePatchResponseData","data","_set","getValidTypeIDValue","requestFieldPathData","typeIDValue","requestFieldPathDataIDValue","_isPlainObject","CacheManager","_target","_propertyName","descriptor","method","value","args","Promise","resolve","debugManager","otherContext","apply","_this","startTime","now","result","endTime","duration","emit","cacheType","hash","options","stats","reject","cachemapOptions","partialQueryResponse","Map","errors","cache","TypeError","typeCacheDirectives","_cache","_cascadeCacheControl","cascadeCacheControl","_fallbackOperationCacheability","fallbackOperationCacheability","_typeCacheDirectives","_typeIDKey","this","cacheManagerContext","getFragmentDefinitions","_retrieveCachedResponseData","cachedResponseData","cacheMetadata","fieldCount","missing","updated","dataCaching","_setQueryResponseCacheEntry","awaitDataCaching","response","_setPartialQueryResponse","filteredAST","filterQuery","rest","print","hashRequest","updatedRequestData","_cacheResponse","_checkCacheEntry","QUERY_RESPONSES","entry","rehydrateCacheMetadata","_partialQueryResponses","delete","responseData","cachedAncestorFieldData","_analyzeParentFieldNode","_analyzeLeafFieldNode","keysAndPaths","hashedRequestFieldCacheKey","propNameOrIndex","entityData","typeNamesAndKind","dataTypeName","__typename","_isNodeRequestFieldPath","_retrieveCachedRequestFieldPathData","cacheability","_setCachedResponseData","cachedFieldData","_getFieldDataFromAncestor","_setFieldPathChecklist","_setCachedData","requestFieldCacheKey","_retrieveCachedParentNodeData","_get","_isObjectLike","promises","iterateChildFields","childFragmentKind","childFragmentName","childIndex","_analyzeFieldNode","index","all","otherProps","_createCacheMetadata","_this2","_setFieldCacheability","normalizedResponseData","responseDataForCaching","isNotLastResponseChunk","_setResponseChunksAwaitingCaching","isLastResponseChunk","_retrieveResponseDataForCaching","_buildCacheMetadata","_setEntityAndRequestFieldPathCacheEntries","_cloneDeep","QUERY","_getPartialQueryResponse","queryCacheMetadata","_mergeResponseCacheMetadata","queryData","_mergeResponseData","isNotResponseChunk","_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","responseDataPath","_typeName","_fragmentKind","_fragmentName","_this4","_parseEntityAndRequestFieldPathCacheEntryData","_setEntityAndRequestFieldPathCacheEntry","validTypeIDValue","typeNames","_this5","DATA_ENTITIES","checkResults","validResults","filter","validResult","sort","a","b","ancestorEntityData","ancestorRequestFieldPathData","entryCacheability","_isNodeEntity","_retrieveCachedEntityData","_cacheability","REQUEST_FIELD_PATHS","_this6","_countFieldPathChecklist","responseDataSets","responseChunks","_responseChunksAwaitingCaching","boxID","dataSet","_merge","operationNode","_this7","_setRequestFieldPathCacheEntry","_isFieldEntity","_setEntityCacheEntry","entityDataKey","_setCacheEntry","cacheHeaders","printCacheControl","tag","__cacheKey","_setFieldTypeCacheDirective","_this8","_setCacheMetadata","dehydratedCacheMetadata","dehydrateCacheMetadata","_getOperationCacheControl","hasArgsOrDirectives","selectionSet","_field$selectionSet","selections","filterOutPropsWithArgsOrDirectives","checklistValues","ancestorFieldData","checkTTL","objectLikeData","_isArray","operationCacheability","userOptions","clientOptions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../cache-manager/src/helpers/deriveOpCacheability.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/isLastResponseChunk.ts","../cache-manager/src/helpers/isNotLastResponseChunk.ts","../cache-manager/src/helpers/isNotResponseChunk.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/consts/index.ts","../cache-manager/src/helpers/mergeResponseDataSets.ts"],"sourcesContent":["import { DehydratedCacheMetadata } from \"@graphql-box/core\";\nimport Cacheability from \"cacheability\";\nimport { isEmpty } from \"lodash\";\nimport { HEADER_CACHE_CONTROL } from \"../consts\";\n\nexport type Params = {\n _cacheMetadata?: DehydratedCacheMetadata;\n fallback: string;\n headers?: Headers;\n};\n\nexport default ({ _cacheMetadata, fallback, headers }: Params): Cacheability => {\n if (_cacheMetadata && !isEmpty(_cacheMetadata)) {\n const [first, ...rest] = Object.values(_cacheMetadata);\n\n return new Cacheability({\n metadata: rest.reduce((acc, metadata) => {\n if (metadata.ttl < acc.ttl) {\n return metadata;\n }\n\n return acc;\n }, first),\n });\n }\n\n if (headers && headers.has(HEADER_CACHE_CONTROL)) {\n return new Cacheability({ headers });\n }\n\n return new Cacheability({ cacheControl: fallback });\n};\n","import { PlainObjectMap } from \"@graphql-box/core\";\nimport { KeysAndPaths, buildFieldKeysAndPaths, getName, resolveFragments } from \"@graphql-box/helpers\";\nimport { FieldNode, SelectionNode } from \"graphql\";\nimport { keys } from \"lodash\";\nimport { CacheManagerContext } from \"../defs\";\n\nexport default (\n fieldData: PlainObjectMap,\n selectionNodes: readonly SelectionNode[],\n ancestorKeysAndPaths: KeysAndPaths,\n context: CacheManagerContext,\n) => {\n const fieldAndTypeName = resolveFragments(selectionNodes, context.fragmentDefinitions);\n\n return keys(fieldData).reduce((acc: PlainObjectMap, key) => {\n const match = fieldAndTypeName.find(({ fieldNode }) => (getName(fieldNode) as FieldNode[\"name\"][\"value\"]) === key);\n\n if (match) {\n const { requestFieldPath } = buildFieldKeysAndPaths(match.fieldNode, ancestorKeysAndPaths, context);\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n\n if (!fieldTypeInfo?.hasArguments && !fieldTypeInfo?.hasDirectives) {\n acc[key] = fieldData[key];\n }\n }\n\n return acc;\n }, {});\n};\n","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 {\n FRAGMENT_SPREAD,\n buildFieldKeysAndPaths,\n deleteChildFields,\n getChildFields,\n getName,\n hasChildFields,\n} from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from \"graphql\";\nimport { CacheManagerContext, FieldPathChecklist, FragmentSpreadFieldCounter } from \"../defs\";\nimport checkFieldPathChecklist from \"./checkFieldPathChecklist\";\nimport { FragmentSpreadCheckist } from \"./createFragmentSpreadChecklist\";\nimport filterFragmentSpreads from \"./filterFragmentSpreads\";\nimport filterIDsAndTypeNames from \"./filterIDsAndTypeNames\";\nimport filterInlineFragments from \"./filterInlineFragments\";\n\nconst filterField = (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\n fieldPathChecklist: FieldPathChecklist,\n fragmentSpreadChecklist: FragmentSpreadCheckist,\n ancestorRequestFieldPath: string,\n context: CacheManagerContext,\n): boolean => {\n const { fragmentDefinitions, typeIDKey } = context;\n const fieldsAndTypeNames = getChildFields(field, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames) {\n return false;\n }\n\n const fragmentSpreadFieldCounter: FragmentSpreadFieldCounter = {};\n\n for (let i = fieldsAndTypeNames.length - 1; i >= 0; i -= 1) {\n const { fieldNode: childField, fragmentKind, fragmentName, typeName: childTypeName } = fieldsAndTypeNames[i];\n\n if (fragmentKind === FRAGMENT_SPREAD && fragmentName && !fragmentSpreadFieldCounter[fragmentName]) {\n fragmentSpreadFieldCounter[fragmentName] = {\n hasData: 0,\n total: fragmentDefinitions?.[fragmentName]\n ? getChildFields(fragmentDefinitions?.[fragmentName], { fragmentDefinitions })?.length ?? 0\n : 0,\n };\n }\n\n const childFieldName = getName(childField);\n\n if (childFieldName === typeIDKey || childFieldName === TYPE_NAME_KEY) {\n continue;\n }\n\n const { requestFieldPath } = buildFieldKeysAndPaths(\n childField,\n {\n requestFieldPath: ancestorRequestFieldPath,\n },\n context,\n );\n\n const { hasData, typeUnused } = checkFieldPathChecklist(fieldPathChecklist.get(requestFieldPath), childTypeName);\n\n if (hasData || typeUnused) {\n if (fragmentKind === FRAGMENT_SPREAD) {\n fragmentSpreadFieldCounter[fragmentName as string].hasData += 1;\n } else if (!hasChildFields(childField, { fragmentDefinitions })) {\n deleteChildFields(field, childField);\n } else if (filterField(childField, fieldPathChecklist, fragmentSpreadChecklist, requestFieldPath, context)) {\n deleteChildFields(field, childField);\n }\n }\n }\n\n filterFragmentSpreads(field, fragmentSpreadFieldCounter, fragmentSpreadChecklist, ancestorRequestFieldPath);\n filterInlineFragments(field, context);\n filterIDsAndTypeNames(field, context);\n return !hasChildFields(field, { fragmentDefinitions });\n};\n\nexport default filterField;\n","import { deleteFragmentSpreads } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from \"graphql\";\nimport { isEmpty, keys } from \"lodash\";\nimport { FragmentSpreadFieldCounter } from \"../defs\";\nimport { FragmentSpreadCheckist } from \"./createFragmentSpreadChecklist\";\n\nexport default (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\n fragmentSpreadFieldCounter: FragmentSpreadFieldCounter,\n fragmentSpreadChecklist: FragmentSpreadCheckist,\n ancestorRequestFieldPath: string,\n) => {\n if (isEmpty(fragmentSpreadFieldCounter)) {\n return;\n }\n\n keys(fragmentSpreadFieldCounter).forEach(key => {\n fragmentSpreadChecklist[key].paths.push(ancestorRequestFieldPath);\n\n const { hasData, total } = fragmentSpreadFieldCounter[key];\n\n if (hasData === total) {\n deleteFragmentSpreads(field, key);\n fragmentSpreadChecklist[key].deleted += 1;\n }\n });\n};\n","import { deleteInlineFragments, getChildFields, getInlineFragments, getName } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from \"graphql\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\n { fragmentDefinitions, typeIDKey }: CacheManagerContext,\n) => {\n const inlineFragments = getInlineFragments(field);\n let filtered = false;\n\n inlineFragments.forEach(fragment => {\n const fieldsAndTypeNames = getChildFields(fragment, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames || !fieldsAndTypeNames.length) {\n deleteInlineFragments(field, fragment);\n filtered = true;\n return;\n }\n\n if (fieldsAndTypeNames.length === 1) {\n const { fieldNode } = fieldsAndTypeNames[0];\n\n if (getName(fieldNode) === typeIDKey) {\n deleteInlineFragments(field, fragment);\n filtered = true;\n }\n }\n });\n\n return filtered;\n};\n","import { TYPE_NAME_KEY } from \"@graphql-box/core\";\nimport { deleteChildFields, getChildFields, getName } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from \"graphql\";\nimport { CacheManagerContext } from \"../defs\";\n\nexport default (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\n { fragmentDefinitions, typeIDKey }: CacheManagerContext,\n) => {\n const fieldsAndTypeNames = getChildFields(field, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames || fieldsAndTypeNames.length > 3) {\n return false;\n }\n\n const fieldNames = fieldsAndTypeNames.map(({ fieldNode }) => getName(fieldNode) as FieldNode[\"name\"][\"value\"]);\n\n if (fieldNames.length === 2 && fieldNames.every(name => name === typeIDKey || name === TYPE_NAME_KEY)) {\n deleteChildFields(\n field,\n fieldsAndTypeNames.map(({ fieldNode }) => fieldNode),\n );\n\n return true;\n }\n\n if ((fieldNames.length === 1 && fieldNames[0] === typeIDKey) || fieldNames[0] === TYPE_NAME_KEY) {\n const { fieldNode } = fieldsAndTypeNames[0];\n deleteChildFields(field, fieldNode);\n return true;\n }\n\n return false;\n};\n","import { RequestData } from \"@graphql-box/core\";\nimport {\n buildFieldKeysAndPaths,\n deleteChildFields,\n getChildFields,\n getOperationDefinitions,\n} from \"@graphql-box/helpers\";\nimport { CacheManagerContext, CachedResponseData } from \"../defs\";\nimport createFragmentSpreadChecklist from \"./createFragmentSpreadChecklist\";\nimport filterField from \"./filterField\";\nimport filterFragmentDefinitions from \"./filterFragmentDefinitions\";\n\nexport default (requestData: RequestData, { fieldPathChecklist }: CachedResponseData, context: CacheManagerContext) => {\n const { ast } = requestData;\n const queryNode = getOperationDefinitions(ast, context.operation)[0];\n const { fragmentDefinitions } = context;\n const fieldsAndTypeNames = getChildFields(queryNode, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames) {\n return ast;\n }\n\n const fragmentSpreadChecklist = createFragmentSpreadChecklist(requestData, context);\n\n for (let i = fieldsAndTypeNames.length - 1; i >= 0; i -= 1) {\n const { fieldNode } = fieldsAndTypeNames[i];\n\n const { requestFieldPath } = buildFieldKeysAndPaths(\n fieldNode,\n {\n requestFieldPath: context.operation,\n },\n context,\n );\n\n if (filterField(fieldNode, fieldPathChecklist, fragmentSpreadChecklist, requestFieldPath, context)) {\n deleteChildFields(queryNode, fieldNode);\n }\n }\n\n context.queryFiltered = true;\n return filterFragmentDefinitions(ast, fieldPathChecklist, fragmentSpreadChecklist, context);\n};\n","import { RequestData } from \"@graphql-box/core\";\nimport { keys } from \"lodash\";\nimport { CacheManagerContext } from \"../defs\";\n\nexport type FragmentSpreadCheckist = {\n [key: string]: {\n deleted: number;\n paths: string[];\n total: number;\n };\n};\n\nexport default ({ request }: RequestData, { fragmentDefinitions }: CacheManagerContext) =>\n keys(fragmentDefinitions ?? {}).reduce((acc: FragmentSpreadCheckist, name) => {\n acc[name] = { deleted: 0, paths: [], total: (request.match(new RegExp(`\\\\.\\\\.\\\\.${name}`, \"g\")) || []).length };\n return acc;\n }, {});\n","import { deleteFragmentDefinitions } from \"@graphql-box/helpers\";\nimport { DocumentNode } from \"graphql\";\nimport { keys } from \"lodash\";\nimport { CacheManagerContext, FieldPathChecklist } from \"../defs\";\nimport { FragmentSpreadCheckist } from \"./createFragmentSpreadChecklist\";\nimport filterField from \"./filterField\";\n\nexport default (\n ast: DocumentNode,\n fieldPathChecklist: FieldPathChecklist,\n fragmentSpreadChecklist: FragmentSpreadCheckist,\n context: CacheManagerContext,\n) => {\n const definitionsToFilter = keys(fragmentSpreadChecklist).reduce(\n (namesAndPaths: { name: string; path: string }[], key) => {\n const { deleted, total } = fragmentSpreadChecklist[key];\n\n return deleted === 0 && total === 1\n ? [...namesAndPaths, { name: key, path: fragmentSpreadChecklist[key].paths[0] as string }]\n : namesAndPaths;\n },\n [],\n );\n\n const { fragmentDefinitions = {} } = context;\n\n definitionsToFilter.forEach(({ name, path }) => {\n const fragmentDefinition = fragmentDefinitions[name];\n filterField(fragmentDefinition, fieldPathChecklist, fragmentSpreadChecklist, path, context);\n });\n\n const definitionsToDelete = keys(fragmentSpreadChecklist).reduce((names: string[], key) => {\n const { deleted, total } = fragmentSpreadChecklist[key];\n return deleted > 0 && deleted === total ? [...names, key] : names;\n }, []);\n\n if (!definitionsToDelete.length) {\n return ast;\n }\n\n return deleteFragmentDefinitions(ast, {\n include: definitionsToDelete,\n });\n};\n","import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) =>\n context.hasDeferOrStream && !rawResponseData.hasNext && rawResponseData.paths;\n","import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) =>\n context.hasDeferOrStream && rawResponseData.hasNext;\n","import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) =>\n !context.hasDeferOrStream && !rawResponseData.hasNext && !rawResponseData.paths;\n","import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { set } from \"lodash\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) => {\n if (!context.normalizePatchResponseData) {\n return rawResponseData;\n }\n\n const { data, paths, ...rest } = rawResponseData;\n\n return {\n ...rest,\n data: set({}, (paths as string[])[0], data),\n paths,\n };\n};\n","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 KeysAndPaths,\n buildFieldKeysAndPaths,\n dehydrateCacheMetadata,\n getChildFields,\n getFragmentDefinitions,\n getOperationDefinitions,\n hasChildFields,\n hashRequest,\n iterateChildFields,\n mergeObjects,\n rehydrateCacheMetadata,\n} from \"@graphql-box/helpers\";\nimport Cacheability from \"cacheability\";\nimport { FieldNode, print } from \"graphql\";\nimport { assign, cloneDeep, get, isArray, isObjectLike, isPlainObject, isUndefined, set, unset } from \"lodash\";\nimport { CACHE_CONTROL, HEADER_NO_CACHE, METADATA, NO_CACHE } from \"../consts\";\nimport { logCacheEntry, logCacheQuery, logPartialCompiled } from \"../debug\";\nimport {\n AnalyzeQueryResult,\n AncestorKeysAndPaths,\n CacheManagerContext,\n CacheManagerDef,\n CacheManagerInit,\n CachedAncestorFieldData,\n CachedResponseData,\n CachemapOptions,\n CheckCacheEntryResult,\n ClientOptions,\n ConstructorOptions,\n DataForCachingEntry,\n FieldCount,\n FieldPathChecklist,\n FieldPathChecklistValue,\n MergedCachedFieldData,\n PartialQueryResponse,\n PartialQueryResponses,\n QueryResponseCacheEntry,\n ResponseDataForCaching,\n TypeNamesAndKind,\n UserOptions,\n} from \"../defs\";\nimport deriveOpCacheability from \"../helpers/deriveOpCacheability\";\nimport filterOutPropsWithArgsOrDirectives from \"../helpers/filterOutPropsWithArgsOrDirectives\";\nimport filterQuery from \"../helpers/filterQuery\";\nimport isLastResponseChunk from \"../helpers/isLastResponseChunk\";\nimport isNotLastResponseChunk from \"../helpers/isNotLastResponseChunk\";\nimport isNotResponseChunk from \"../helpers/isNotResponseChunk\";\nimport mergeResponseDataSets from \"../helpers/mergeResponseDataSets\";\nimport normalizePatchResponseData from \"../helpers/normalizePatchResponseData\";\nimport { getValidTypeIDValue } from \"../helpers/validTypeIDValue\";\n\nexport class CacheManager implements CacheManagerDef {\n private static _countFieldPathChecklist(fieldPathChecklist: FieldPathChecklist): FieldCount {\n const fieldCount: FieldCount = { missing: 0, total: 0 };\n\n fieldPathChecklist.forEach(checklistValues => {\n fieldCount.total += checklistValues.length;\n const missing = checklistValues.filter(({ hasData }) => !hasData);\n fieldCount.missing += missing.length;\n });\n\n return fieldCount;\n }\n\n private static _getFieldDataFromAncestor(ancestorFieldData: any, propNameOrIndex: string | number): any {\n return isObjectLike(ancestorFieldData) ? cloneDeep(ancestorFieldData[propNameOrIndex]) : undefined;\n }\n\n private static _getOperationCacheControl(cacheMetadata: CacheMetadata | undefined, operation: string): string {\n const defaultCacheControl = HEADER_NO_CACHE;\n\n if (!cacheMetadata) {\n return defaultCacheControl;\n }\n\n const cacheability = cacheMetadata.get(operation);\n return cacheability ? cacheability.printCacheControl() : defaultCacheControl;\n }\n\n private static _isNodeEntity(fieldTypeInfo?: FieldTypeInfo): boolean {\n if (!fieldTypeInfo) {\n return false;\n }\n\n const { isEntity, possibleTypes } = fieldTypeInfo;\n return isEntity || possibleTypes.some(type => !!type.isEntity);\n }\n\n private static _isNodeRequestFieldPath(fieldTypeInfo?: FieldTypeInfo): boolean {\n return (\n !!fieldTypeInfo &&\n (this._isNodeEntity(fieldTypeInfo) || fieldTypeInfo.hasArguments || fieldTypeInfo.hasDirectives)\n );\n }\n\n private static _isValid(cacheability: Cacheability): boolean {\n const noCache = get(cacheability, [METADATA, CACHE_CONTROL, NO_CACHE], false);\n return !noCache && cacheability.checkTTL();\n }\n\n private static _mergeResponseCacheMetadata(\n cacheMetadata: CacheMetadata,\n partialQueryResponse?: PartialQueryResponse,\n ): CacheMetadata {\n if (!partialQueryResponse) {\n return cacheMetadata;\n }\n\n return new Map([...partialQueryResponse.cacheMetadata, ...cacheMetadata]);\n }\n\n private static _setCachedData(\n requestData: PlainObjectMap,\n { data }: MergedCachedFieldData,\n propNameOrIndex: string | number,\n ): void {\n if (!isObjectLike(data) && !isUndefined(data)) {\n requestData[propNameOrIndex] = data as string | number | boolean | null;\n } else if (isObjectLike(data)) {\n const objectLikeData = data as PlainObjectMap | any[];\n requestData[propNameOrIndex] = isArray(objectLikeData) ? [] : {};\n }\n }\n\n private static _setCachedResponseData(\n cachedFieldData: MergedCachedFieldData,\n { cacheMetadata, data, fieldPathChecklist }: CachedResponseData,\n { propNameOrIndex, requestFieldPath }: KeysAndPaths,\n typeNamesAndKind: TypeNamesAndKind,\n _options: RequestOptions,\n { operation }: CacheManagerContext,\n ) {\n CacheManager._setCacheMetadata(cacheMetadata, cachedFieldData.cacheability, requestFieldPath, operation);\n CacheManager._setFieldPathChecklist(fieldPathChecklist, cachedFieldData, requestFieldPath, typeNamesAndKind);\n CacheManager._setCachedData(data, cachedFieldData, propNameOrIndex);\n }\n\n private static _setCacheMetadata(\n cacheMetadata: CacheMetadata,\n cacheability: Cacheability | undefined,\n requestFieldPath: string,\n operation: string,\n ): void {\n if (!cacheability) {\n return;\n }\n\n cacheMetadata.set(requestFieldPath, cacheability);\n const operationCacheability = cacheMetadata.get(operation);\n\n if (!operationCacheability || operationCacheability.metadata.ttl > cacheability.metadata.ttl) {\n cacheMetadata.set(operation, cacheability);\n }\n }\n\n private static _setFieldPathChecklist(\n fieldPathChecklist: FieldPathChecklist,\n { data }: MergedCachedFieldData,\n requestFieldPath: string,\n { dataTypeName, fieldTypeName, fragmentKind, fragmentName }: TypeNamesAndKind,\n ): void {\n if (isUndefined(fieldTypeName) || fragmentKind === FRAGMENT_SPREAD) {\n if (fieldPathChecklist.has(requestFieldPath)) {\n return;\n }\n\n fieldPathChecklist.set(requestFieldPath, [{ fragmentKind, fragmentName, hasData: !isUndefined(data) }]);\n return;\n }\n\n if (dataTypeName !== fieldTypeName) {\n return;\n }\n\n const entry = fieldPathChecklist.get(requestFieldPath);\n const checklistValues = entry ? (entry as FieldPathChecklistValue[]) : [];\n\n if (checklistValues.some(({ typeName }) => typeName === dataTypeName)) {\n return;\n }\n\n fieldPathChecklist.set(requestFieldPath, [\n ...checklistValues,\n { fragmentKind, fragmentName, hasData: !isUndefined(data), typeName: dataTypeName as string },\n ]);\n }\n\n private _cache: Cachemap;\n private _cascadeCacheControl: boolean;\n private _fallbackOperationCacheability: string;\n private _partialQueryResponses: PartialQueryResponses = new Map();\n private _responseChunksAwaitingCaching: Map<string, RawResponseDataWithMaybeCacheMetadata[]> = new Map();\n private _typeCacheDirectives: PlainObjectStringMap;\n private _typeIDKey: string;\n\n constructor(options: ConstructorOptions) {\n const errors: TypeError[] = [];\n\n if (!options.cache) {\n errors.push(new TypeError(\"@graphql-box/cache-manager expected options.cache.\"));\n }\n\n if (!!options.typeCacheDirectives && !isPlainObject(options.typeCacheDirectives)) {\n const message = \"@graphql-box/cache-manager expected options.typeCacheDirectives to be a plain object.\";\n errors.push(new TypeError(message));\n }\n\n if (errors.length) {\n throw errors;\n }\n\n this._cache = options.cache;\n this._cascadeCacheControl = options.cascadeCacheControl || false;\n this._fallbackOperationCacheability = options.fallbackOperationCacheability || NO_CACHE;\n this._typeCacheDirectives = options.typeCacheDirectives || {};\n this._typeIDKey = options.typeIDKey;\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 cacheQuery(\n requestData: RequestData,\n updatedRequestData: RequestData | undefined,\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<ResponseData> {\n const cacheManagerContext: CacheManagerContext = {\n ...context,\n fragmentDefinitions: getFragmentDefinitions((updatedRequestData ?? requestData).ast),\n typeIDKey: this._typeIDKey,\n };\n\n return this._cacheResponse(requestData, updatedRequestData, rawResponseData, options, cacheManagerContext);\n }\n\n public async cacheResponse(\n requestData: RequestData,\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<ResponseData> {\n const cacheManagerContext: CacheManagerContext = {\n ...context,\n fragmentDefinitions: getFragmentDefinitions(requestData.ast),\n typeIDKey: this._typeIDKey,\n };\n\n return this._cacheResponse(requestData, undefined, rawResponseData, options, cacheManagerContext);\n }\n\n public async checkCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n options: RequestOptions,\n context: RequestContext & { requestFieldCacheKey?: string },\n ): Promise<CheckCacheEntryResult | false> {\n return this._checkCacheEntry(cacheType, hash, options, context);\n }\n\n public async checkQueryResponseCacheEntry(\n hash: string,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<ResponseData | false> {\n const result = await this._checkCacheEntry(QUERY_RESPONSES, hash, options, context);\n\n if (!result) {\n return false;\n }\n\n const { cacheMetadata, data } = result.entry as QueryResponseCacheEntry;\n\n return {\n cacheMetadata: rehydrateCacheMetadata(cacheMetadata),\n data,\n };\n }\n\n public deletePartialQueryResponse(hash: string): void {\n this._partialQueryResponses.delete(hash);\n }\n\n public async setQueryResponseCacheEntry(\n requestData: RequestData,\n responseData: ResponseData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n return this._setQueryResponseCacheEntry(requestData.hash, responseData, options, context);\n }\n\n private async _analyzeFieldNode(\n fieldNode: FieldNode,\n cachedAncestorFieldData: CachedAncestorFieldData,\n cachedResponseData: CachedResponseData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n if (hasChildFields(fieldNode, { fragmentDefinitions: context.fragmentDefinitions })) {\n await this._analyzeParentFieldNode(fieldNode, cachedAncestorFieldData, cachedResponseData, options, context);\n } else {\n await this._analyzeLeafFieldNode(fieldNode, cachedAncestorFieldData, cachedResponseData, options, context);\n }\n }\n\n private async _analyzeLeafFieldNode(\n fieldNode: FieldNode,\n cachedAncestorFieldData: CachedAncestorFieldData,\n cachedResponseData: CachedResponseData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n const keysAndPaths = buildFieldKeysAndPaths(fieldNode, cachedAncestorFieldData, context);\n const { hashedRequestFieldCacheKey, propNameOrIndex, requestFieldCacheKey, requestFieldPath } = keysAndPaths;\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n const { entityData, fragmentKind, fragmentName, requestFieldPathData, typeName } = cachedAncestorFieldData;\n\n const typeNamesAndKind = {\n dataTypeName: entityData?.__typename || requestFieldPathData?.__typename,\n fieldTypeName: typeName,\n fragmentKind,\n fragmentName,\n };\n\n if (CacheManager._isNodeRequestFieldPath(fieldTypeInfo)) {\n const { cacheability, entry } = await this._retrieveCachedRequestFieldPathData(\n hashedRequestFieldCacheKey,\n requestFieldCacheKey,\n options,\n context,\n );\n\n CacheManager._setCachedResponseData(\n { cacheability, data: entry },\n cachedResponseData,\n keysAndPaths,\n typeNamesAndKind,\n options,\n context,\n );\n } else {\n const cachedFieldData =\n CacheManager._getFieldDataFromAncestor(entityData, propNameOrIndex) ||\n CacheManager._getFieldDataFromAncestor(requestFieldPathData, propNameOrIndex);\n\n CacheManager._setFieldPathChecklist(\n cachedResponseData.fieldPathChecklist,\n { data: cachedFieldData },\n requestFieldPath,\n typeNamesAndKind,\n );\n\n CacheManager._setCachedData(cachedResponseData.data, { data: cachedFieldData }, propNameOrIndex);\n }\n }\n\n private async _analyzeParentFieldNode(\n fieldNode: FieldNode,\n cachedAncestorFieldData: CachedAncestorFieldData,\n cachedResponseData: CachedResponseData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n const keysAndPaths = buildFieldKeysAndPaths(fieldNode, cachedAncestorFieldData, context);\n const { propNameOrIndex, requestFieldCacheKey, requestFieldPath } = keysAndPaths;\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath) as FieldTypeInfo;\n\n const { cacheability, data, entityData, requestFieldPathData } = await this._retrieveCachedParentNodeData(\n cachedAncestorFieldData,\n keysAndPaths,\n fieldTypeInfo,\n options,\n context,\n );\n\n const { fragmentKind, fragmentName, typeName } = cachedAncestorFieldData;\n\n CacheManager._setCachedResponseData(\n { cacheability, data },\n cachedResponseData,\n keysAndPaths,\n { dataTypeName: get(data, TYPE_NAME_KEY), fieldTypeName: typeName, fragmentKind, fragmentName },\n options,\n context,\n );\n\n if (!isObjectLike(data)) {\n return;\n }\n\n const objectLikeData = data as PlainObjectMap | any[];\n const promises: Promise<void>[] = [];\n\n iterateChildFields(\n fieldNode,\n objectLikeData,\n context.fragmentDefinitions,\n (\n childField: FieldNode,\n childTypeName: string | undefined,\n childFragmentKind: string | undefined,\n childFragmentName: string | undefined,\n childIndex?: number,\n ) => {\n promises.push(\n this._analyzeFieldNode(\n childField,\n {\n cacheability,\n entityData,\n fragmentKind: childFragmentKind,\n fragmentName: childFragmentName,\n index: childIndex,\n requestFieldCacheKey,\n requestFieldPath,\n requestFieldPathData,\n typeName: childTypeName,\n },\n { ...cachedResponseData, data: cachedResponseData.data[propNameOrIndex] },\n options,\n context,\n ),\n );\n },\n );\n\n await Promise.all(promises);\n }\n\n private _buildCacheMetadata(\n { ast }: RequestData,\n { data, ...otherProps }: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: CacheManagerContext,\n ): CacheMetadata {\n const cacheMetadata = this._createCacheMetadata({ data, ...otherProps }, context);\n const queryNode = getOperationDefinitions(ast, context.operation)[0];\n const fieldsAndTypeNames = getChildFields(queryNode);\n\n if (!fieldsAndTypeNames) {\n return cacheMetadata;\n }\n\n fieldsAndTypeNames.forEach(({ fieldNode }) =>\n this._setFieldCacheability(\n fieldNode,\n { requestFieldPath: context.operation },\n { cacheMetadata, data },\n options,\n context,\n ),\n );\n\n return cacheMetadata;\n }\n\n private async _cacheResponse(\n requestData: RequestData,\n updatedRequestData: RequestData | undefined,\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<ResponseData> {\n const normalizedResponseData = normalizePatchResponseData(rawResponseData, context);\n let responseDataForCaching: RawResponseDataWithMaybeCacheMetadata | undefined = normalizedResponseData;\n\n if (isNotLastResponseChunk(rawResponseData, context)) {\n this._setResponseChunksAwaitingCaching(normalizedResponseData, context);\n responseDataForCaching = undefined;\n }\n\n if (isLastResponseChunk(rawResponseData, context)) {\n responseDataForCaching = this._retrieveResponseDataForCaching(normalizedResponseData, context);\n }\n\n const dataCaching: Promise<void>[] = [];\n\n if (responseDataForCaching) {\n const { data } = responseDataForCaching;\n const cacheMetadata = this._buildCacheMetadata(requestData, responseDataForCaching, options, context);\n\n dataCaching.push(\n this._setEntityAndRequestFieldPathCacheEntries(\n requestData,\n {\n cacheMetadata,\n entityData: cloneDeep(data),\n requestFieldPathData: cloneDeep(data),\n },\n options,\n context,\n ),\n );\n\n let queryCacheMetadata: CacheMetadata | undefined;\n let queryData: PlainObjectMap | undefined;\n\n if (context.operation === QUERY) {\n let partialQueryResponse: PartialQueryResponse | undefined;\n\n if (context.queryFiltered && updatedRequestData) {\n dataCaching.push(\n this._setQueryResponseCacheEntry(updatedRequestData.hash, { cacheMetadata, data }, options, context),\n );\n\n partialQueryResponse = this._getPartialQueryResponse(requestData.hash);\n }\n\n queryCacheMetadata = CacheManager._mergeResponseCacheMetadata(cacheMetadata, partialQueryResponse);\n queryData = this._mergeResponseData(data, partialQueryResponse);\n\n dataCaching.push(\n this._setQueryResponseCacheEntry(\n requestData.hash,\n { cacheMetadata: queryCacheMetadata, data: queryData },\n options,\n context,\n ),\n );\n }\n\n if (options.awaitDataCaching) {\n await Promise.all(dataCaching);\n }\n\n if (isNotResponseChunk(normalizedResponseData, context) && queryCacheMetadata && queryData) {\n return {\n cacheMetadata: queryCacheMetadata,\n data: queryData,\n };\n }\n }\n\n const { data, hasNext, paths } = normalizedResponseData;\n\n return {\n cacheMetadata: this._buildCacheMetadata(requestData, normalizedResponseData, options, context),\n data,\n hasNext,\n paths,\n };\n }\n\n private async _checkCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n options: RequestOptions,\n context: CacheManagerContext & { requestFieldCacheKey?: string },\n ): Promise<CheckCacheEntryResult | false> {\n try {\n const cacheability = await this._hasCacheEntry(cacheType, hash);\n\n if (!cacheability || !CacheManager._isValid(cacheability)) {\n return false;\n }\n\n const entry = await this._getCacheEntry(cacheType, hash, options, context);\n\n if (isUndefined(entry)) {\n return false;\n }\n\n return { cacheability, entry };\n } catch (error) {\n return false;\n }\n }\n\n private _createCacheMetadata(\n { _cacheMetadata, headers }: RawResponseDataWithMaybeCacheMetadata,\n { operation }: CacheManagerContext,\n ): CacheMetadata {\n const cacheMetadata = new Map();\n\n const cacheability = deriveOpCacheability({\n _cacheMetadata,\n fallback: this._fallbackOperationCacheability,\n headers,\n });\n\n cacheMetadata.set(operation, cacheability);\n\n if (_cacheMetadata) {\n rehydrateCacheMetadata(_cacheMetadata, cacheMetadata);\n }\n\n return cacheMetadata;\n }\n\n @logCacheQuery()\n private async _getCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n _options: RequestOptions,\n _context: CacheManagerContext & { requestFieldCacheKey?: string },\n ): Promise<any> {\n try {\n return await this._cache.get(`${cacheType}::${hash}`);\n } catch (errors) {\n return Promise.reject(errors);\n }\n }\n\n private _getPartialQueryResponse(hash: string): PartialQueryResponse | undefined {\n const partialQueryResponse = this._partialQueryResponses.get(hash);\n this._partialQueryResponses.delete(hash);\n return partialQueryResponse;\n }\n\n private async _hasCacheEntry(cacheType: CacheTypes, hash: string): Promise<Cacheability | false> {\n try {\n return await this._cache.has(`${cacheType}::${hash}`);\n } catch (error) {\n return false;\n }\n }\n\n private _isFieldEntity(fieldData: any, { isEntity, possibleTypes }: FieldTypeInfo): boolean {\n if (!get(fieldData, this._typeIDKey, null)) {\n return false;\n }\n\n if (isEntity) {\n return true;\n }\n\n if (!possibleTypes.length) {\n return false;\n }\n\n return possibleTypes.some(type => type.typeName === fieldData.__typename);\n }\n\n private _mergeObjects<T>(obj: T, src: T): T {\n return mergeObjects(obj, src, (_key: string, val: any): string | number | undefined => {\n return isPlainObject(val) && val[this._typeIDKey] ? val[this._typeIDKey] : undefined;\n });\n }\n\n private _mergeResponseData(\n responseData: PlainObjectMap,\n partialQueryResponse?: PartialQueryResponse,\n ): PlainObjectMap {\n if (!partialQueryResponse) {\n return responseData;\n }\n\n return this._mergeObjects(partialQueryResponse.data, responseData);\n }\n\n private async _parseEntityAndRequestFieldPathCacheEntryData(\n field: FieldNode,\n ancestorKeysAndPaths: AncestorKeysAndPaths,\n { cacheMetadata, entityData, requestFieldPathData }: ResponseDataForCaching,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n const keysAndPaths = buildFieldKeysAndPaths(field, ancestorKeysAndPaths, context);\n const { requestFieldCacheKey, requestFieldPath, responseDataPath } = keysAndPaths;\n const fieldData = get(requestFieldPathData, responseDataPath);\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n\n if (!isObjectLike(fieldData) && !fieldTypeInfo?.hasDirectives) {\n return;\n }\n\n if (isObjectLike(fieldData)) {\n const promises: Promise<void>[] = [];\n\n iterateChildFields(\n field,\n fieldData as PlainObjectMap | any[],\n context.fragmentDefinitions,\n (\n childField: FieldNode,\n _typeName: string | undefined,\n _fragmentKind: string | undefined,\n _fragmentName: string | undefined,\n childIndex?: number,\n ) => {\n promises.push(\n this._parseEntityAndRequestFieldPathCacheEntryData(\n childField,\n { index: childIndex, requestFieldCacheKey, requestFieldPath, responseDataPath },\n { cacheMetadata, entityData, requestFieldPathData },\n options,\n context,\n ),\n );\n },\n );\n\n await Promise.all(promises);\n }\n\n await this._setEntityAndRequestFieldPathCacheEntry(\n field,\n keysAndPaths,\n { cacheMetadata, entityData, requestFieldPathData },\n options,\n context,\n );\n }\n\n private async _retrieveCachedEntityData(\n validTypeIDValue: string | number,\n { possibleTypes, typeName }: FieldTypeInfo,\n options: RequestOptions,\n context: CacheManagerContext,\n ) {\n const typeNames = [...possibleTypes.map(type => type.typeName), typeName];\n\n const checkResults = await Promise.all(\n typeNames.map(name => this._checkCacheEntry(DATA_ENTITIES, `${name}::${validTypeIDValue}`, options, context)),\n );\n\n const validResults = checkResults.filter(result => !!result) as CheckCacheEntryResult[];\n let validResult: CheckCacheEntryResult | undefined;\n\n if (validResults.length === 1) {\n validResult = validResults[0];\n } else if (validResults.length > 1) {\n validResults.sort(({ cacheability: a }, { cacheability: b }) => a.metadata.ttl - b.metadata.ttl);\n\n validResult = {\n cacheability: validResults[0].cacheability,\n entry: validResults.reduce((obj, { entry }) => this._mergeObjects(obj, entry), {}),\n };\n }\n\n return (validResult || {}) as Partial<CheckCacheEntryResult>;\n }\n\n private async _retrieveCachedParentNodeData(\n { entityData: ancestorEntityData, requestFieldPathData: ancestorRequestFieldPathData }: CachedAncestorFieldData,\n { hashedRequestFieldCacheKey, propNameOrIndex, requestFieldCacheKey }: KeysAndPaths,\n fieldTypeInfo: FieldTypeInfo,\n options: RequestOptions,\n context: CacheManagerContext,\n ) {\n let entityData = CacheManager._getFieldDataFromAncestor(ancestorEntityData, propNameOrIndex);\n let requestFieldPathData = CacheManager._getFieldDataFromAncestor(ancestorRequestFieldPathData, propNameOrIndex);\n let cacheability: Cacheability | undefined;\n\n if (CacheManager._isNodeRequestFieldPath(fieldTypeInfo)) {\n const { cacheability: entryCacheability, entry } = await this._retrieveCachedRequestFieldPathData(\n hashedRequestFieldCacheKey,\n requestFieldCacheKey,\n options,\n context,\n );\n\n if (entry) {\n requestFieldPathData = this._mergeObjects(requestFieldPathData, entry);\n }\n\n if (entryCacheability) {\n cacheability = entryCacheability;\n }\n }\n\n const validTypeIDValue = getValidTypeIDValue(requestFieldPathData, fieldTypeInfo, this._typeIDKey);\n\n if (CacheManager._isNodeEntity(fieldTypeInfo) && validTypeIDValue) {\n const { cacheability: entryCacheability, entry } = await this._retrieveCachedEntityData(\n validTypeIDValue,\n fieldTypeInfo,\n options,\n context,\n );\n\n if (entry) {\n entityData = this._mergeObjects(entityData, entry);\n }\n\n if (entryCacheability && (!cacheability || entryCacheability.metadata.ttl > cacheability?.metadata.ttl)) {\n cacheability = entryCacheability;\n }\n }\n\n const data =\n !isUndefined(requestFieldPathData) || !isUndefined(entityData)\n ? this._mergeObjects(requestFieldPathData, entityData)\n : entityData ?? requestFieldPathData;\n\n return {\n cacheability,\n data,\n entityData,\n requestFieldPathData,\n };\n }\n\n private async _retrieveCachedRequestFieldPathData(\n hash: string,\n requestFieldCacheKey: string,\n options: RequestOptions,\n context: CacheManagerContext,\n ) {\n return (this._checkCacheEntry(REQUEST_FIELD_PATHS, hash, options, { ...context, requestFieldCacheKey }) ||\n {}) as Partial<CheckCacheEntryResult>;\n }\n\n private async _retrieveCachedResponseData(\n { ast }: RequestData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<CachedResponseData> {\n const cachedResponseData: CachedResponseData = {\n cacheMetadata: new Map(),\n data: {},\n fieldCount: { missing: 0, total: 0 },\n fieldPathChecklist: new Map(),\n };\n\n const queryNode = getOperationDefinitions(ast, context.operation)[0];\n const fieldsAndTypeNames = getChildFields(queryNode);\n\n if (!fieldsAndTypeNames) {\n return cachedResponseData;\n }\n\n await Promise.all(\n fieldsAndTypeNames.map(({ fieldNode }) =>\n this._analyzeFieldNode(\n fieldNode,\n { requestFieldPath: context.operation },\n cachedResponseData,\n options,\n context,\n ),\n ),\n );\n\n cachedResponseData.fieldCount = CacheManager._countFieldPathChecklist(cachedResponseData.fieldPathChecklist);\n return cachedResponseData;\n }\n\n private _retrieveResponseDataForCaching(\n normalizedResponseData: RawResponseDataWithMaybeCacheMetadata,\n context: CacheManagerContext,\n ) {\n const responseChunks = this._responseChunksAwaitingCaching.get(\n context.requestID,\n ) as RawResponseDataWithMaybeCacheMetadata[];\n\n this._responseChunksAwaitingCaching.delete(context.requestID);\n return mergeResponseDataSets([...responseChunks, normalizedResponseData]);\n }\n\n @logCacheEntry()\n private async _setCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n value: any,\n cachemapOptions: CachemapOptions,\n _options: RequestOptions,\n _context: CacheManagerContext & { requestFieldCacheKey?: string },\n ): Promise<void> {\n try {\n await this._cache.set(`${cacheType}::${hash}`, cloneDeep(value), cachemapOptions);\n } catch (error) {\n // no catch\n }\n }\n\n private async _setEntityAndRequestFieldPathCacheEntries(\n requestData: RequestData,\n responseData: ResponseDataForCaching,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n const operationNode = getOperationDefinitions(requestData.ast, context.operation)[0];\n const fieldsAndTypeNames = getChildFields(operationNode);\n\n if (!fieldsAndTypeNames) {\n return;\n }\n\n await Promise.all(\n fieldsAndTypeNames.map(({ fieldNode }) => {\n return this._parseEntityAndRequestFieldPathCacheEntryData(\n fieldNode,\n { requestFieldPath: context.operation },\n responseData,\n options,\n context,\n );\n }),\n );\n }\n\n private async _setEntityAndRequestFieldPathCacheEntry(\n field: FieldNode,\n keysAndPaths: KeysAndPaths,\n { cacheMetadata, entityData, requestFieldPathData }: ResponseDataForCaching,\n options: RequestOptions,\n context: CacheManagerContext,\n ) {\n const { requestFieldPath, responseDataPath } = keysAndPaths;\n const fieldData = get(entityData, responseDataPath);\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n const cacheability = cacheMetadata.get(requestFieldPath);\n\n if (isUndefined(fieldData) || !fieldTypeInfo || !cacheability) {\n return;\n }\n\n const promises: Promise<void>[] = [];\n\n promises.push(\n this._setRequestFieldPathCacheEntry(\n field,\n keysAndPaths,\n { cacheability, data: requestFieldPathData, fieldTypeInfo },\n options,\n context,\n ),\n );\n\n const isEntity = this._isFieldEntity(fieldData, fieldTypeInfo);\n\n if (!isEntity && fieldTypeInfo.hasArguments) {\n unset(entityData, responseDataPath);\n }\n\n if (isEntity) {\n promises.push(\n this._setEntityCacheEntry(keysAndPaths, { cacheability, data: entityData, fieldTypeInfo }, options, context),\n );\n }\n\n await Promise.all(promises);\n }\n\n private async _setEntityCacheEntry(\n { responseDataPath }: KeysAndPaths,\n { cacheability, data, fieldTypeInfo }: DataForCachingEntry,\n options: RequestOptions,\n context: CacheManagerContext,\n ) {\n let fieldData = get(data, responseDataPath);\n const fieldTypeName = fieldTypeInfo.isEntity ? fieldTypeInfo.typeName : fieldData.__typename;\n const entityDataKey = `${fieldTypeName}::${fieldData[this._typeIDKey]}`;\n const result = await this._checkCacheEntry(DATA_ENTITIES, entityDataKey, options, context);\n\n if (result) {\n fieldData = this._mergeObjects(result.entry, fieldData);\n }\n\n await this._setCacheEntry(\n DATA_ENTITIES,\n entityDataKey,\n fieldData,\n { cacheHeaders: { cacheControl: cacheability.printCacheControl() }, tag: options.tag },\n options,\n context,\n );\n\n set(data, responseDataPath, { __cacheKey: `${DATA_ENTITIES}::${entityDataKey}` });\n }\n\n private _setFieldCacheability(\n field: FieldNode,\n ancestorKeysAndPaths: AncestorKeysAndPaths,\n { cacheMetadata, data }: ResponseData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): void {\n const { requestFieldPath: ancestorRequestFieldPath } = ancestorKeysAndPaths;\n const keysAndPaths = buildFieldKeysAndPaths(field, ancestorKeysAndPaths, context);\n const { requestFieldPath, responseDataPath } = keysAndPaths;\n const fieldData = get(data, responseDataPath);\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n\n if (!isObjectLike(fieldData) && !fieldTypeInfo?.hasDirectives) {\n return;\n }\n\n this._setFieldTypeCacheDirective(cacheMetadata, { ancestorRequestFieldPath, requestFieldPath }, context);\n\n if (isObjectLike(fieldData)) {\n iterateChildFields(\n field,\n fieldData as PlainObjectMap | any[],\n context.fragmentDefinitions,\n (\n childField: FieldNode,\n _typeName: string | undefined,\n _fragmentKind: string | undefined,\n _fragmentName: string | undefined,\n childIndex?: number,\n ) => {\n this._setFieldCacheability(\n childField,\n { index: childIndex, requestFieldPath, responseDataPath },\n { cacheMetadata, data },\n options,\n context,\n );\n },\n );\n }\n }\n\n private _setFieldTypeCacheDirective(\n cacheMetadata: CacheMetadata,\n { ancestorRequestFieldPath, requestFieldPath }: { ancestorRequestFieldPath?: string; requestFieldPath: string },\n { fieldTypeMap, operation }: CacheManagerContext,\n ): void {\n if (cacheMetadata.has(requestFieldPath)) {\n return;\n }\n\n const fieldTypeInfo = fieldTypeMap.get(requestFieldPath);\n\n if (fieldTypeInfo && this._typeCacheDirectives[fieldTypeInfo.typeName]) {\n const cacheability = new Cacheability({ cacheControl: this._typeCacheDirectives[fieldTypeInfo.typeName] });\n CacheManager._setCacheMetadata(cacheMetadata, cacheability, requestFieldPath, operation);\n } else if (this._cascadeCacheControl && ancestorRequestFieldPath) {\n CacheManager._setCacheMetadata(\n cacheMetadata,\n cacheMetadata.get(ancestorRequestFieldPath),\n requestFieldPath,\n operation,\n );\n }\n }\n\n @logPartialCompiled()\n private async _setPartialQueryResponse(\n hash: string,\n partialQueryResponse: PartialQueryResponse,\n _options: RequestOptions,\n _context: CacheManagerContext,\n ): Promise<void> {\n this._partialQueryResponses.set(hash, partialQueryResponse);\n }\n\n private async _setQueryResponseCacheEntry(\n hash: string,\n { cacheMetadata, data }: ResponseData,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n const dehydratedCacheMetadata = dehydrateCacheMetadata(cacheMetadata);\n const cacheControl = CacheManager._getOperationCacheControl(cacheMetadata, context.operation);\n\n await this._setCacheEntry(\n QUERY_RESPONSES,\n hash,\n { cacheMetadata: dehydratedCacheMetadata, data },\n { cacheHeaders: { cacheControl }, tag: options.tag },\n options,\n context,\n );\n }\n\n private async _setRequestFieldPathCacheEntry(\n field: FieldNode,\n keysAndPaths: KeysAndPaths,\n { cacheability, data, fieldTypeInfo }: DataForCachingEntry,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n const { hashedRequestFieldCacheKey, requestFieldCacheKey, responseDataPath } = keysAndPaths;\n let fieldData = get(data, responseDataPath);\n const isEntity = this._isFieldEntity(fieldData, fieldTypeInfo);\n const hasArgsOrDirectives = fieldTypeInfo.hasArguments || fieldTypeInfo.hasDirectives;\n\n if (context.operation === QUERY && (isEntity || hasArgsOrDirectives)) {\n if (isPlainObject(fieldData) && field.selectionSet?.selections) {\n fieldData = filterOutPropsWithArgsOrDirectives(fieldData, field.selectionSet.selections, keysAndPaths, context);\n }\n\n const result = await this._checkCacheEntry(REQUEST_FIELD_PATHS, hashedRequestFieldCacheKey, options, {\n ...context,\n requestFieldCacheKey,\n });\n\n if (result && isObjectLike(fieldData)) {\n fieldData = this._mergeObjects(result.entry, fieldData);\n }\n\n await this._setCacheEntry(\n REQUEST_FIELD_PATHS,\n hashedRequestFieldCacheKey,\n fieldData,\n { cacheHeaders: { cacheControl: cacheability.printCacheControl() }, tag: options.tag },\n options,\n { ...context, requestFieldCacheKey },\n );\n\n if (hasChildFields(field, { fragmentDefinitions: context.fragmentDefinitions })) {\n if (isEntity) {\n set(data, responseDataPath, { __cacheKey: `${REQUEST_FIELD_PATHS}::${hashedRequestFieldCacheKey}` });\n } else {\n unset(data, responseDataPath);\n }\n }\n }\n }\n\n private _setResponseChunksAwaitingCaching(\n normalizedResponseData: RawResponseDataWithMaybeCacheMetadata,\n context: CacheManagerContext,\n ) {\n const responseChunks = this._responseChunksAwaitingCaching.get(context.requestID);\n\n if (responseChunks) {\n this._responseChunksAwaitingCaching.set(context.requestID, [...responseChunks, normalizedResponseData]);\n } else {\n this._responseChunksAwaitingCaching.set(context.requestID, [normalizedResponseData]);\n }\n }\n}\n\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) => new CacheManager({ ...clientOptions, ...userOptions });\n}\n","import { CACHE_ENTRY_QUERIED, RequestContext } from \"@graphql-box/core\";\n\nexport default function logCacheQuery() {\n return (\n _target: any,\n _propertyName: string,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise<any>>,\n ): void => {\n const method = descriptor.value;\n if (!method) return;\n\n descriptor.value = async function descriptorValue(...args: any[]): Promise<any> {\n try {\n return new Promise(async resolve => {\n const { debugManager, requestFieldCacheKey, requestID, ...otherContext } = args[3] as RequestContext & {\n requestFieldCacheKey?: string;\n };\n\n if (!debugManager) {\n resolve(await method.apply(this, args));\n return;\n }\n\n const startTime = debugManager.now();\n const result = await method.apply(this, args);\n const endTime = debugManager.now();\n const duration = endTime - startTime;\n resolve(result);\n\n const payload = {\n cacheType: args[0],\n context: otherContext,\n hash: args[1],\n options: args[2],\n requestID,\n result,\n stats: { duration, endTime, startTime },\n ...(requestFieldCacheKey ? { decryptedCacheKey: requestFieldCacheKey } : {}),\n };\n\n debugManager.emit(CACHE_ENTRY_QUERIED, payload);\n });\n } catch (error) {\n return Promise.reject(error);\n }\n };\n };\n}\n","import { CACHE_ENTRY_ADDED, RequestContext } from \"@graphql-box/core\";\n\nexport default function logCacheEntry() {\n return (\n _target: any,\n _propertyName: string,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise<any>>,\n ): void => {\n const method = descriptor.value;\n if (!method) return;\n\n descriptor.value = async function descriptorValue(...args: any[]): Promise<any> {\n return new Promise<void>(async resolve => {\n const { debugManager, requestFieldCacheKey, requestID, ...otherContext } = args[5] as RequestContext & {\n requestFieldCacheKey?: string;\n };\n\n if (!debugManager) {\n await method.apply(this, args);\n resolve();\n return;\n }\n\n const startTime = debugManager.now();\n await method.apply(this, args);\n const endTime = debugManager.now();\n const duration = endTime - startTime;\n resolve();\n\n const payload = {\n cachemapOptions: args[3],\n cacheType: args[0],\n context: otherContext,\n hash: args[1],\n options: args[4],\n requestID,\n stats: { duration, endTime, startTime },\n value: args[2],\n ...(requestFieldCacheKey ? { decryptedCacheKey: requestFieldCacheKey } : {}),\n };\n\n debugManager.emit(CACHE_ENTRY_ADDED, payload);\n });\n };\n };\n}\n","import { PARTIAL_QUERY_COMPILED, RequestContext } from \"@graphql-box/core\";\n\nexport default function logPartialCompiled() {\n return (\n _target: any,\n _propertyName: string,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise<any>>,\n ): void => {\n const method = descriptor.value;\n if (!method) return;\n\n descriptor.value = async function descriptorValue(...args: any[]): Promise<any> {\n return new Promise<void>(async resolve => {\n const { debugManager, requestID, ...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 requestID,\n stats: { duration, endTime, startTime },\n });\n });\n };\n };\n}\n","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","import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { merge } from \"lodash\";\n\nexport default (responseDataSets: RawResponseDataWithMaybeCacheMetadata[]) => {\n return responseDataSets.reduce(\n (acc: RawResponseDataWithMaybeCacheMetadata, dataSet, index) => {\n const { _cacheMetadata, data, hasNext, headers, paths } = dataSet;\n\n if (_cacheMetadata) {\n acc._cacheMetadata = acc._cacheMetadata ? { ...acc._cacheMetadata, ..._cacheMetadata } : _cacheMetadata;\n }\n\n acc.data = acc.data ? merge(acc.data, data) : data;\n\n if (index === 0) {\n acc.headers = headers;\n }\n\n if (index === responseDataSets.length - 1) {\n acc.hasNext = hasNext;\n }\n\n if (paths) {\n if (!acc.paths) {\n acc.paths = [];\n }\n\n acc.paths.push(paths[0]);\n }\n\n return acc;\n },\n { data: {} },\n );\n};\n"],"names":["fieldData","selectionNodes","ancestorKeysAndPaths","context","fieldAndTypeName","resolveFragments","fragmentDefinitions","_keys","reduce","acc","key","match","find","fieldNode","getName","requestFieldPath","buildFieldKeysAndPaths","fieldTypeInfo","fieldTypeMap","get","hasArguments","hasDirectives","fieldPathChecklistValues","fieldTypeName","length","hasData","typeUnused","typeName","undefined","some","every","filterField","field","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","paths","push","deleteFragmentSpreads","deleted","filterFragmentSpreads","inlineFragments","getInlineFragments","filtered","fragment","deleteInlineFragments","filterInlineFragments","fieldNames","map","name","filterIDsAndTypeNames","requestData","ast","queryNode","getOperationDefinitions","operation","request","RegExp","createFragmentSpreadChecklist","queryFiltered","definitionsToFilter","namesAndPaths","path","fragmentDefinition","definitionsToDelete","names","deleteFragmentDefinitions","include","filterFragmentDefinitions","rawResponseData","hasDeferOrStream","hasNext","normalizePatchResponseData","data","_set","getValidTypeIDValue","requestFieldPathData","typeIDValue","requestFieldPathDataIDValue","_isPlainObject","CacheManager","_target","_propertyName","descriptor","method","value","args","Promise","resolve","debugManager","requestFieldCacheKey","requestID","otherContext","apply","_this","startTime","now","result","endTime","duration","payload","cacheType","hash","options","stats","decryptedCacheKey","emit","CACHE_ENTRY_QUERIED","reject","cachemapOptions","CACHE_ENTRY_ADDED","PARTIAL_QUERY_COMPILED","partialQueryResponse","Map","errors","cache","TypeError","typeCacheDirectives","_cache","_cascadeCacheControl","cascadeCacheControl","_fallbackOperationCacheability","fallbackOperationCacheability","_typeCacheDirectives","_typeIDKey","this","cacheManagerContext","getFragmentDefinitions","_retrieveCachedResponseData","cachedResponseData","cacheMetadata","fieldCount","missing","updated","dataCaching","_setQueryResponseCacheEntry","awaitDataCaching","response","_setPartialQueryResponse","filteredAST","filterQuery","rest","print","hashRequest","updatedRequestData","_cacheResponse","_checkCacheEntry","QUERY_RESPONSES","entry","rehydrateCacheMetadata","_partialQueryResponses","delete","responseData","cachedAncestorFieldData","_analyzeParentFieldNode","_analyzeLeafFieldNode","keysAndPaths","hashedRequestFieldCacheKey","propNameOrIndex","entityData","typeNamesAndKind","dataTypeName","__typename","_isNodeRequestFieldPath","_retrieveCachedRequestFieldPathData","cacheability","_setCachedResponseData","cachedFieldData","_getFieldDataFromAncestor","_setFieldPathChecklist","_setCachedData","_retrieveCachedParentNodeData","_get","_isObjectLike","promises","iterateChildFields","childFragmentKind","childFragmentName","childIndex","_analyzeFieldNode","index","all","otherProps","_createCacheMetadata","_this2","_setFieldCacheability","normalizedResponseData","responseDataForCaching","isNotLastResponseChunk","_setResponseChunksAwaitingCaching","isLastResponseChunk","_retrieveResponseDataForCaching","_buildCacheMetadata","_setEntityAndRequestFieldPathCacheEntries","_cloneDeep","QUERY","_getPartialQueryResponse","queryCacheMetadata","_mergeResponseCacheMetadata","queryData","_mergeResponseData","isNotResponseChunk","_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","responseDataPath","_typeName","_fragmentKind","_fragmentName","_this4","_parseEntityAndRequestFieldPathCacheEntryData","_setEntityAndRequestFieldPathCacheEntry","validTypeIDValue","typeNames","_this5","DATA_ENTITIES","checkResults","validResults","filter","validResult","sort","a","b","ancestorEntityData","ancestorRequestFieldPathData","entryCacheability","_isNodeEntity","_retrieveCachedEntityData","_cacheability","REQUEST_FIELD_PATHS","_this6","_countFieldPathChecklist","responseDataSets","responseChunks","_responseChunksAwaitingCaching","dataSet","_merge","operationNode","_this7","_setRequestFieldPathCacheEntry","_isFieldEntity","_setEntityCacheEntry","entityDataKey","_setCacheEntry","cacheHeaders","printCacheControl","tag","__cacheKey","_setFieldTypeCacheDirective","_this8","_setCacheMetadata","dehydratedCacheMetadata","dehydrateCacheMetadata","_getOperationCacheControl","hasArgsOrDirectives","selectionSet","_field$selectionSet","selections","filterOutPropsWithArgsOrDirectives","checklistValues","ancestorFieldData","checkTTL","objectLikeData","_isArray","operationCacheability","userOptions","clientOptions"],"mappings":"6oHAWA,eCJEA,EACAC,EACAC,EACAC,OAEMC,EAAmBC,EAAiBJ,EAAgBE,EAAQG,4BAE3DC,EAAKP,GAAWQ,QAAO,SAACC,EAAqBC,OAC5CC,EAAQP,EAAiBQ,MAAK,gBAAGC,IAAAA,iBAAiBC,EAAQD,KAA8CH,QAE1GC,EAAO,KACDI,EAAqBC,EAAuBL,EAAME,UAAWX,EAAsBC,GAAnFY,iBACFE,EAAgBd,EAAQe,aAAaC,IAAIJ,GAE1CE,MAAAA,GAAAA,EAAeG,cAAiBH,MAAAA,GAAAA,EAAeI,gBAClDZ,EAAIC,GAAOV,EAAUU,WAIlBD,IACN,iBCxBHa,EACAC,OAEKD,IAA6BA,EAAyBE,aAClD,CAAEC,SAAS,EAAOC,aAAcH,MAGD,IAApCD,EAAyBE,OAAc,OACXF,EAAyB,GAA/CG,IAAAA,QAASE,IAAAA,eAEV,CAAEF,QAAAA,EAASC,WADEC,EAAuBA,IAAaJ,OAAzBK,SAI1B,CACLH,QAASH,EAAyBO,MAAK,gBAAGJ,IAAAA,iBAASE,WAA4BJ,GAAiBE,KAChGC,YAAaJ,EAAyBQ,OAAM,qBAAGH,WAA4BJ,OCDzEQ,GAAc,SAAdA,EACJC,EACAC,EACAC,EACAC,EACAhC,OAEQG,EAAmCH,EAAnCG,oBAAqB8B,EAAcjC,EAAdiC,UACvBC,EAAqBC,EAAeN,EAAO,CAAE1B,oBAAAA,QAE9C+B,SACI,UAGHE,EAAyD,GAEtDC,EAAIH,EAAmBb,OAAS,EAAGgB,GAAK,EAAGA,GAAK,EAAG,WAC6BH,EAAmBG,GAAvFC,IAAX5B,UAAuB6B,IAAAA,aAAcC,IAAAA,aAAwBC,IAAVjB,YAEvDe,IAAiBG,GAAmBF,IAAiBJ,EAA2BI,GAClFJ,EAA2BI,GAAgB,CACzClB,QAAS,EACTqB,MAAOxC,MAAAA,GAAAA,EAAsBqC,wBACzBL,EAAehC,MAAAA,SAAAA,EAAsBqC,GAAe,CAAErC,oBAAAA,wBAAtDyC,EAA8EvB,sBAC9E,OAIFwB,EAAiBlC,EAAQ2B,MAE3BO,IAAmBZ,GAAaY,IAAmBC,OAI/ClC,EAAqBC,EAC3ByB,EACA,CACE1B,iBAAkBoB,GAEpBhC,GALMY,mBAQwBmC,GAAwBjB,EAAmBd,IAAIJ,GAAmB6B,GAA1FnB,IAAAA,QAASC,IAAAA,YAEbD,GAAWC,KACTgB,IAAiBG,EACnBN,EAA2BI,GAAwBlB,SAAW,EACpD0B,EAAeV,EAAY,CAAEnC,oBAAAA,IAE9ByB,EAAYU,EAAYR,EAAoBC,EAAyBnB,EAAkBZ,IAChGiD,EAAkBpB,EAAOS,GAFzBW,EAAkBpB,EAAOS,qBC1D/BT,EACAO,EACAL,EACAC,GAEIkB,EAAQd,MAIPA,GAA4Be,SAAQ,SAAA5C,GACvCwB,EAAwBxB,GAAK6C,MAAMC,KAAKrB,SAEbI,EAA2B7B,KAA9Ce,YAASqB,QAGfW,EAAsBzB,EAAOtB,GAC7BwB,EAAwBxB,GAAKgD,SAAW,MDiD5CC,CAAsB3B,EAAOO,EAA4BL,EAAyBC,YEnElFH,SACE1B,IAAAA,oBAAqB8B,IAAAA,UAEjBwB,EAAkBC,EAAmB7B,GACvC8B,GAAW,EAEfF,EAAgBN,SAAQ,SAAAS,OAChB1B,EAAqBC,EAAeyB,EAAU,CAAEzD,oBAAAA,QAEjD+B,IAAuBA,EAAmBb,cAC7CwC,EAAsBhC,EAAO+B,QAC7BD,GAAW,MAIqB,IAA9BzB,EAAmBb,OAAc,KAC3BX,EAAcwB,EAAmB,GAAjCxB,UAEJC,EAAQD,KAAeuB,IACzB4B,EAAsBhC,EAAO+B,GAC7BD,GAAW,OFgDjBG,CAAsBjC,EAAO7B,YGnE7B6B,SACE1B,IAAAA,oBAAqB8B,IAAAA,UAEjBC,EAAqBC,EAAeN,EAAO,CAAE1B,oBAAAA,QAE9C+B,GAAsBA,EAAmBb,OAAS,SAC9C,MAGH0C,EAAa7B,EAAmB8B,KAAI,gBAAGtD,IAAAA,iBAAgBC,EAAQD,SAE3C,IAAtBqD,EAAW1C,QAAgB0C,EAAWpC,OAAM,SAAAsC,UAAQA,IAAShC,GAAagC,IAASnB,YACrFG,EACEpB,EACAK,EAAmB8B,KAAI,qBAAGtD,eAGrB,KAGkB,IAAtBqD,EAAW1C,QAAgB0C,EAAW,KAAO9B,GAAc8B,EAAW,KAAOjB,EAAe,KACvFpC,EAAcwB,EAAmB,GAAjCxB,iBACRuC,EAAkBpB,EAAOnB,IAClB,GH6CTwD,CAAsBrC,EAAO7B,IACrBgD,EAAenB,EAAO,CAAE1B,oBAAAA,iBI/DlBgE,IAAsEnE,OAA1C8B,IAAAA,mBAClCsC,EAAQD,EAARC,IACFC,EAAYC,EAAwBF,EAAKpE,EAAQuE,WAAW,GAC1DpE,EAAwBH,EAAxBG,oBACF+B,EAAqBC,EAAekC,EAAW,CAAElE,oBAAAA,QAElD+B,SACIkC,UAGHrC,oBCVUyC,IAAAA,QAA0BrE,IAAAA,2BAC1CC,EAAKD,MAAAA,EAAAA,EAAuB,IAAIE,QAAO,SAACC,EAA6B2D,UACnE3D,EAAI2D,GAAQ,CAAEV,QAAS,EAAGH,MAAO,GAAIT,OAAQ6B,EAAQhE,MAAM,IAAIiE,0BAAmBR,GAAQ,OAAS,IAAI5C,QAChGf,IACN,IDM6BoE,CAA8BP,EAAanE,GAElEqC,EAAIH,EAAmBb,OAAS,EAAGgB,GAAK,EAAGA,GAAK,EAAG,KAClD3B,EAAcwB,EAAmBG,GAAjC3B,UAEAE,EAAqBC,EAC3BH,EACA,CACEE,iBAAkBZ,EAAQuE,WAE5BvE,GALMY,iBAQJgB,GAAYlB,EAAWoB,EAAoBC,EAAyBnB,EAAkBZ,IACxFiD,EAAkBoB,EAAW3D,UAIjCV,EAAQ2E,eAAgB,WEhCxBP,EACAtC,EACAC,EACA/B,OAEM4E,EAAsBxE,EAAK2B,GAAyB1B,QACxD,SAACwE,EAAiDtE,SACrBwB,EAAwBxB,GAA3CgD,IAAAA,QAASZ,IAAAA,aAEE,IAAZY,GAA2B,IAAVZ,cAChBkC,IAAe,CAAEZ,KAAM1D,EAAKuE,KAAM/C,EAAwBxB,GAAK6C,MAAM,MACzEyB,IAEN,MAGmC7E,EAA7BG,oBAAAA,aAAsB,KAE9ByE,EAAoBzB,SAAQ,gBAAGc,IAAAA,KAAMa,IAAAA,KAC7BC,EAAqB5E,EAAoB8D,GAC/CrC,GAAYmD,EAAoBjD,EAAoBC,EAAyB+C,EAAM9E,UAG/EgF,EAAsB5E,EAAK2B,GAAyB1B,QAAO,SAAC4E,EAAiB1E,SACtDwB,EAAwBxB,GAA3CgD,IAAAA,QAASZ,IAAAA,aACVY,EAAU,GAAKA,IAAYZ,cAAYsC,IAAO1E,IAAO0E,IAC3D,WAEED,EAAoB3D,OAIlB6D,EAA0Bd,EAAK,CACpCe,QAASH,IAJFZ,EFIFgB,CAA0BhB,EAAKtC,EAAoBC,EAAyB/B,gBGtCrEqF,EAAwDrF,UACtEA,EAAQsF,mBAAqBD,EAAgBE,SAAWF,EAAgBjC,mBCD1DiC,EAAwDrF,UACtEA,EAAQsF,kBAAoBD,EAAgBE,qBCD9BF,EAAwDrF,UACrEA,EAAQsF,mBAAqBD,EAAgBE,UAAYF,EAAgBjC,6oCCA5E,4BAAgBiC,EAAwDrF,OACjEA,EAAQwF,kCACJH,MAGDI,EAAyBJ,EAAzBI,KAAMrC,EAAmBiC,EAAnBjC,wBAAmBiC,yBAI/BI,KAAMC,EAAI,GAAKtC,EAAmB,GAAIqC,GACtCrC,MAAAA,KCXSuC,GAAsB,SACjCC,IAEA3D,OADE4D,IAAAA,YAGIC,EAA8BC,EAAcH,GAAwBA,EAAqB3D,QAAaR,SACrGoE,GAAeC,0kBC8DXE,OCpEJ,SACLC,EACAC,EACAC,SAEMC,EAASD,EAAWE,MACrBD,IAELD,EAAWE,mBAAQ,wHAAkCC,2BAAAA,4CAE1C,IAAIC,mCAAQ,WAAMC,+FACoDF,EAAK,GAAxEG,IAAAA,aAAcC,IAAAA,qBAAsBC,IAAAA,UAAcC,2DAIrDH,8BACHD,WAAcJ,EAAOS,MAAMC,EAAMR,6EAI7BS,EAAYN,EAAaO,gBACVZ,EAAOS,MAAMC,EAAMR,WAAlCW,SACAC,EAAUT,EAAaO,MACvBG,EAAWD,EAAUH,EAC3BP,EAAQS,GAEFG,KACJC,UAAWf,EAAK,GAChBtG,QAAS4G,EACTU,KAAMhB,EAAK,GACXiB,QAASjB,EAAK,GACdK,UAAAA,EACAM,OAAAA,EACAO,MAAO,CAAEL,SAAAA,EAAUD,QAAAA,EAASH,UAAAA,IACxBL,EAAuB,CAAEe,kBAAmBf,GAAyB,IAG3ED,EAAaiB,KAAKC,EAAqBP,gKAGlCb,QAAQqB,uHCxCd,SACL3B,EACAC,EACAC,SAEMC,EAASD,EAAWE,MACrBD,IAELD,EAAWE,mBAAQ,wHAAkCC,2BAAAA,mCAC5C,IAAIC,mCAAc,WAAMC,6FAC8CF,EAAK,GAAxEG,IAAAA,aAAcC,IAAAA,qBAAsBC,IAAAA,UAAcC,2DAIrDH,kCACGL,EAAOS,MAAMC,EAAMR,iBACzBE,qCAIIO,EAAYN,EAAaO,eACzBZ,EAAOS,MAAMC,EAAMR,UACnBY,EAAUT,EAAaO,MACvBG,EAAWD,EAAUH,EAC3BP,IAEMY,KACJS,gBAAiBvB,EAAK,GACtBe,UAAWf,EAAK,GAChBtG,QAAS4G,EACTU,KAAMhB,EAAK,GACXiB,QAASjB,EAAK,GACdK,UAAAA,EACAa,MAAO,CAAEL,SAAAA,EAAUD,QAAAA,EAASH,UAAAA,GAC5BV,MAAOC,EAAK,IACRI,EAAuB,CAAEe,kBAAmBf,GAAyB,IAG3ED,EAAaiB,KAAKI,EAAmBV,mMCtCpC,SACLnB,EACAC,EACAC,SAEMC,EAASD,EAAWE,MACrBD,IAELD,EAAWE,mBAAQ,wHAAkCC,2BAAAA,mCAC5C,IAAIC,mCAAc,WAAMC,yFACwBF,EAAK,GAAlDG,IAAAA,aAAcE,IAAAA,UAAcC,oCAE/BH,kCACGL,EAAOS,MAAMC,EAAMR,iBACzBE,qCAIIO,EAAYN,EAAaO,eACzBZ,EAAOS,MAAMC,EAAMR,UACnBY,EAAUT,EAAaO,MACvBG,EAAWD,EAAUH,EAC3BP,IAEAC,EAAaiB,KAAKK,EAAwB,CACxC/H,QAAS4G,EACTU,KAAMhB,EAAK,GACXiB,QAASjB,EAAK,GACd0B,qBAAsB1B,EAAK,GAC3BK,UAAAA,EACAa,MAAO,CAAEL,SAAAA,EAAUD,QAAAA,EAASH,UAAAA,8NHsLxBQ,2JAL4C,IAAIU,6CACmC,IAAIA,2EAK3FC,EAAsB,MAEvBX,EAAQY,OACXD,EAAO7E,KAAK,IAAI+E,UAAU,uDAGtBb,EAAQc,sBAAwBtC,EAAcwB,EAAQc,qBAAsB,CAEhFH,EAAO7E,KAAK,IAAI+E,UADA,6FAIdF,EAAO7G,aACH6G,OAGHI,OAASf,EAAQY,WACjBI,qBAAuBhB,EAAQiB,sBAAuB,OACtDC,+BAAiClB,EAAQmB,+BIvO1B,eJwOfC,qBAAuBpB,EAAQc,qBAAuB,QACtDO,WAAarB,EAAQtF,uGAG5B,kBACS4G,KAAKP,iDAGd,WACEnE,EACAoD,EACAvH,+FAEQoE,EAAcD,EAAdC,IAAKkD,EAASnD,EAATmD,KAERlD,2CACImC,QAAQqB,OAAO,IAAIQ,UAAU,+DAGhCU,WACD9I,OACHG,oBAAqB4I,EAAuB3E,GAC5CnC,UAAW4G,KAAKD,sBAGeC,KAAKG,4BAA4B7E,EAAaoD,EAASuB,aAAlFG,SACEC,EAAoCD,EAApCC,cAAezD,EAAqBwD,EAArBxD,MAAM0D,EAAeF,EAAfE,YAEdC,UAAYD,EAAWxG,gDAC7B,CAAE0G,QAASlF,eAGfgF,EAAWC,4BACRE,EAAcT,KAAKU,4BAA4BjC,EAAM,CAAE4B,cAAAA,EAAezD,KAAAA,GAAQ8B,EAASuB,IAEzFvB,EAAQiC,mDACJF,mCAGD,CAAEG,SAAU,CAAEP,cAAAA,EAAezD,KAAAA,yBAGjCiE,yBAAyBpC,EAAM,CAAE4B,cAAAA,EAAezD,KAAAA,GAAQ8B,EAASuB,GAChEa,EAAcC,GAAYzF,EAAa8E,EAAoBH,GACbA,EAA5C3I,oBAA4C2I,EAAvB7G,UAAc4H,IAASf,yCAC7C9I,EAAS6J,GACVrF,EAAUsF,EAAMH,qBACf,CAAEN,QAAS,CAAEjF,IAAKuF,EAAarC,KAAMyC,EAAYvF,GAAUA,QAAAA,+IAGpE,WACEL,EACA6F,EACA3E,EACAkC,EACAvH,+EAEM8I,WACD9I,OACHG,oBAAqB4I,GAAwBiB,MAAAA,EAAAA,EAAsB7F,GAAaC,KAChFnC,UAAW4G,KAAKD,+BAGXC,KAAKoB,eAAe9F,EAAa6F,EAAoB3E,EAAiBkC,EAASuB,oJAGxF,WACE3E,EACAkB,EACAkC,EACAvH,+EAEM8I,WACD9I,OACHG,oBAAqB4I,EAAuB5E,EAAYC,KACxDnC,UAAW4G,KAAKD,+BAGXC,KAAKoB,eAAe9F,OAAa1C,EAAW4D,EAAiBkC,EAASuB,oJAG/E,WACEzB,EACAC,EACAC,EACAvH,2FAEO6I,KAAKqB,iBAAiB7C,EAAWC,EAAMC,EAASvH,iKAGzD,WACEsH,EACAC,EACAvH,8FAEqB6I,KAAKqB,iBAAiBC,EAAiB7C,EAAMC,EAASvH,aAArEiH,mDAGG,mBAGuBA,EAAOmD,MAA/BlB,IAAAA,cAAezD,IAAAA,uBAEhB,CACLyD,cAAemB,EAAuBnB,GACtCzD,KAAAA,+IAIJ,SAAkC6B,QAC3BgD,uBAAuBC,OAAOjD,2DAGrC,WACEnD,EACAqG,EACAjD,EACAvH,2FAEO6I,KAAKU,4BAA4BpF,EAAYmD,KAAMkD,EAAcjD,EAASvH,sJAGnF,WACEU,EACA+J,EACAxB,EACA1B,EACAvH,sEAEIgD,EAAetC,EAAW,CAAEP,oBAAqBH,EAAQG,sDACrD0I,KAAK6B,wBAAwBhK,EAAW+J,EAAyBxB,EAAoB1B,EAASvH,gDAE9F6I,KAAK8B,sBAAsBjK,EAAW+J,EAAyBxB,EAAoB1B,EAASvH,2JAItG,WACEU,EACA+J,EACAxB,EACA1B,EACAvH,yGAEM4K,EAAe/J,EAAuBH,EAAW+J,EAAyBzK,GACxE6K,EAAwFD,EAAxFC,2BAA4BC,EAA4DF,EAA5DE,gBAAiBpE,EAA2CkE,EAA3ClE,qBAAsB9F,EAAqBgK,EAArBhK,iBACrEE,EAAgBd,EAAQe,aAAaC,IAAIJ,GACvCmK,EAA2EN,EAA3EM,WAAYxI,EAA+DkI,EAA/DlI,aAAcC,EAAiDiI,EAAjDjI,aAAcoD,EAAmC6E,EAAnC7E,qBAAsBpE,EAAaiJ,EAAbjJ,SAEhEwJ,EAAmB,CACvBC,cAAcF,MAAAA,SAAAA,EAAYG,cAActF,MAAAA,SAAAA,EAAsBsF,YAC9D9J,cAAeI,EACfe,aAAAA,EACAC,aAAAA,IAGEwD,EAAamF,wBAAwBrK,oCACD+H,KAAKuC,oCACzCP,EACAnE,EACAa,EACAvH,mBAJMqL,IAAAA,aAAcjB,IAAAA,MAOtBpE,EAAasF,uBACX,CAAED,aAAAA,EAAc5F,KAAM2E,GACtBnB,EACA2B,EACAI,EACAzD,EACAvH,2BAGIuL,EACJvF,EAAawF,0BAA0BT,EAAYD,IACnD9E,EAAawF,0BAA0B5F,EAAsBkF,GAE/D9E,EAAayF,uBACXxC,EAAmBnH,mBACnB,CAAE2D,KAAM8F,GACR3K,EACAoK,GAGFhF,EAAa0F,eAAezC,EAAmBxD,KAAM,CAAEA,KAAM8F,GAAmBT,8JAIpF,WACEpK,EACA+J,EACAxB,EACA1B,EACAvH,gHAEM4K,EAAe/J,EAAuBH,EAAW+J,EAAyBzK,GACxE8K,EAA4DF,EAA5DE,gBAAiBpE,EAA2CkE,EAA3ClE,qBAAsB9F,EAAqBgK,EAArBhK,iBACzCE,EAAgBd,EAAQe,aAAaC,IAAIJ,YAEwBiI,KAAK8C,8BAC1ElB,EACAG,EACA9J,EACAyG,EACAvH,sBALMqL,IAAAA,aAAc5F,IAAAA,KAAMsF,IAAAA,WAAYnF,IAAAA,qBAQhCrD,EAAyCkI,EAAzClI,aAAcC,EAA2BiI,EAA3BjI,aAAchB,EAAaiJ,EAAbjJ,SAEpCwE,EAAasF,uBACX,CAAED,aAAAA,EAAc5F,KAAAA,GAChBwD,EACA2B,EACA,CAAEK,aAAcW,EAAInG,EAAM3C,GAAgB1B,cAAeI,EAAUe,aAAAA,EAAcC,aAAAA,GACjF+E,EACAvH,GAGG6L,EAAapG,6DAKZqG,EAA4B,GAElCC,EACErL,EAJqB+E,EAMrBzF,EAAQG,qBACR,SACEmC,EACAG,EACAuJ,EACAC,EACAC,GAEAJ,EAASzI,KACPyD,EAAKqF,kBACH7J,EACA,CACE+I,aAAAA,EACAN,WAAAA,EACAxI,aAAcyJ,EACdxJ,aAAcyJ,EACdG,MAAOF,EACPxF,qBAAAA,EACA9F,iBAAAA,EACAgF,qBAAAA,EACApE,SAAUiB,YAEPwG,OAAoBxD,KAAMwD,EAAmBxD,KAAKqF,KACvDvD,EACAvH,iBAMFuG,QAAQ8F,IAAIP,4IAGpB,aAGEvE,EACAvH,cAHEoE,IAAAA,IACAqB,IAAAA,KAAS6G,gBAILpD,EAAgBL,KAAK0D,yBAAuB9G,KAAAA,GAAS6G,GAActM,GACnEqE,EAAYC,EAAwBF,EAAKpE,EAAQuE,WAAW,GAC5DrC,EAAqBC,EAAekC,UAErCnC,GAILA,EAAmBiB,SAAQ,gBAAGzC,IAAAA,iBAC5B8L,EAAKC,sBACH/L,EACA,CAAEE,iBAAkBZ,EAAQuE,WAC5B,CAAE2E,cAAAA,EAAezD,KAAAA,GACjB8B,EACAvH,MAIGkJ,GAbEA,8CAgBX,WACE/E,EACA6F,EACA3E,EACAkC,EACAvH,+FAEM0M,EAAyBlH,GAA2BH,EAAiBrF,GACvE2M,EAA4ED,EAE5EE,GAAuBvH,EAAiBrF,UACrC6M,kCAAkCH,EAAwB1M,GAC/D2M,OAAyBlL,GAGvBqL,GAAoBzH,EAAiBrF,KACvC2M,EAAyB9D,KAAKkE,gCAAgCL,EAAwB1M,IAGlFsJ,EAA+B,IAEjCqD,sBACMlH,EAASkH,EAATlH,KACFyD,EAAgBL,KAAKmE,oBAAoB7I,EAAawI,EAAwBpF,EAASvH,GAE7FsJ,EAAYjG,KACVwF,KAAKoE,0CACH9I,EACA,CACE+E,cAAAA,EACA6B,WAAYmC,EAAUzH,GACtBG,qBAAsBsH,EAAUzH,IAElC8B,EACAvH,IAOAA,EAAQuE,YAAc4I,IAGpBnN,EAAQ2E,eAAiBqF,IAC3BV,EAAYjG,KACVwF,KAAKU,4BAA4BS,EAAmB1C,KAAM,CAAE4B,cAAAA,EAAezD,KAAAA,GAAQ8B,EAASvH,IAG9FgI,EAAuBa,KAAKuE,yBAAyBjJ,EAAYmD,OAGnE+F,EAAqBrH,EAAasH,4BAA4BpE,EAAelB,GAC7EuF,EAAY1E,KAAK2E,mBAAmB/H,EAAMuC,GAE1CsB,EAAYjG,KACVwF,KAAKU,4BACHpF,EAAYmD,KACZ,CAAE4B,cAAemE,EAAoB5H,KAAM8H,GAC3ChG,EACAvH,MAKFuH,EAAQiC,mDACJjD,QAAQ8F,IAAI/C,gBAGhBmE,GAAmBf,EAAwB1M,IAAYqN,GAAsBE,6CACxE,CACLrE,cAAemE,EACf5H,KAAM8H,mBAKJ9H,EAAyBiH,EAAzBjH,KAAMF,EAAmBmH,EAAnBnH,QAASnC,EAAUsJ,EAAVtJ,wBAEhB,CACL8F,cAAeL,KAAKmE,oBAAoB7I,EAAauI,EAAwBnF,EAASvH,GACtFyF,KAAAA,EACAF,QAAAA,EACAnC,MAAAA,uJAIJ,WACEiE,EACAC,EACAC,EACAvH,mGAG6B6I,KAAK6E,eAAerG,EAAWC,cAApD+D,WAEgBrF,EAAa2H,SAAStC,6CACnC,0BAGWxC,KAAK+E,eAAevG,EAAWC,EAAMC,EAASvH,aAA5DoK,UAEFyD,EAAYzD,8CACP,oCAGF,CAAEiB,aAAAA,EAAcjB,MAAAA,gEAEhB,mJAIX,kBACI0D,IAAAA,eAAgBC,IAAAA,QAChBxJ,IAAAA,UAEI2E,EAAgB,IAAIjB,IAEpBoD,kBfpnBQyC,IAAAA,eAAgBE,IAAAA,SAAUD,IAAAA,WACtCD,IAAmB5K,EAAQ4K,GAAiB,OACrBG,OAAOC,OAAOJ,UAAhCK,OAAUtE,oBAEV,IAAIuE,EAAa,CACtBC,SAAUxE,EAAKxJ,QAAO,SAACC,EAAK+N,UACtBA,EAASC,IAAMhO,EAAIgO,IACdD,EAGF/N,IACN6N,YAIHJ,GAAWA,EAAQQ,ImBtBW,iBnBuBzB,IAAIH,EAAa,CAAEL,QAAAA,IAGrB,IAAIK,EAAa,CAAEI,aAAcR,IeimBjBS,CAAqB,CACxCX,eAAAA,EACAE,SAAUnF,KAAKJ,+BACfsF,QAAAA,WAGF7E,EAAcwF,IAAInK,EAAW8G,GAEzByC,GACFzD,EAAuByD,EAAgB5E,GAGlCA,6CAGT,WAEE7B,EACAC,EACAqH,EACAC,2FAGe/F,KAAKP,OAAOtH,cAAOqG,eAAcC,qGAEvCf,QAAQqB,gKAInB,SAAiCN,OACzBU,EAAuBa,KAAKyB,uBAAuBtJ,IAAIsG,eACxDgD,uBAAuBC,OAAOjD,GAC5BU,6CAGT,WAA6BX,EAAuBC,2FAEnCuB,KAAKP,OAAOiG,cAAOlH,eAAcC,sGAEvC,uIAIX,SAAuBzH,SAAkBgP,IAAAA,SAAUC,IAAAA,sBAC5ClD,EAAI/L,EAAWgJ,KAAKD,WAAY,UAIjCiG,KAICC,EAAczN,QAIZyN,EAAcpN,MAAK,SAAAqN,UAAQA,EAAKvN,WAAa3B,EAAUqL,4CAGhE,SAAyB8D,EAAQC,qBACxBC,EAAaF,EAAKC,GAAK,SAACE,EAAcC,UACpCrJ,EAAcqJ,IAAQA,EAAIC,EAAKzG,YAAcwG,EAAIC,EAAKzG,iBAAcnH,uCAI/E,SACE+I,EACAxC,UAEKA,EAIEa,KAAKyG,cAActH,EAAqBvC,KAAM+E,GAH5CA,4EAMX,WACE3I,EACA9B,IAEAwH,EACAvH,oGAFEkJ,IAAAA,cAAe6B,IAAAA,WAAYnF,IAAAA,qBAIvBgF,EAAe/J,EAAuBgB,EAAO9B,EAAsBC,GACjE0G,EAA6DkE,EAA7DlE,qBAAsB9F,EAAuCgK,EAAvChK,iBAAkB2O,EAAqB3E,EAArB2E,iBAC1C1P,EAAY+L,EAAIhG,EAAsB2J,GACtCzO,EAAgBd,EAAQe,aAAaC,IAAIJ,GAE1CiL,EAAahM,IAAeiB,MAAAA,GAAAA,EAAeI,mEAI5C2K,EAAahM,2BACTiM,EAA4B,GAElCC,EACElK,EACAhC,EACAG,EAAQG,qBACR,SACEmC,EACAkN,EACAC,EACAC,EACAxD,GAEAJ,EAASzI,KACPsM,EAAKC,8CACHtN,EACA,CAAE8J,MAAOF,EAAYxF,qBAAAA,EAAsB9F,iBAAAA,EAAkB2O,iBAAAA,GAC7D,CAAErG,cAAAA,EAAe6B,WAAAA,EAAYnF,qBAAAA,GAC7B2B,EACAvH,iBAMFuG,QAAQ8F,IAAIP,4BAGdjD,KAAKgH,wCACThO,EACA+I,EACA,CAAE1B,cAAAA,EAAe6B,WAAAA,EAAYnF,qBAAAA,GAC7B2B,EACAvH,8JAIJ,WACE8P,IAEAvI,EACAvH,gGAFE8O,IAAAA,cAAetN,IAAAA,SAIXuO,cAAgBjB,EAAc9K,KAAI,SAAA+K,UAAQA,EAAKvN,cAAWA,aAErC+E,QAAQ8F,IACjC0D,EAAU/L,KAAI,SAAAC,UAAQ+L,EAAK9F,iBAAiB+F,YAAkBhM,eAAS6L,GAAoBvI,EAASvH,qBADhGkQ,SAOsB,KAHtBC,EAAeD,EAAaE,QAAO,SAAAnJ,WAAYA,MAGpC5F,OACfgP,EAAcF,EAAa,GAClBA,EAAa9O,OAAS,IAC/B8O,EAAaG,MAAK,kBAAiBC,IAAdlF,aAAmCmF,IAAdnF,oBAAsBkF,EAAElC,SAASC,IAAMkC,EAAEnC,SAASC,OAE5F+B,EAAc,CACZhF,aAAc8E,EAAa,GAAG9E,aAC9BjB,MAAO+F,EAAa9P,QAAO,SAAC2O,SAAO5E,IAAAA,aAAY4F,EAAKV,cAAcN,EAAK5E,KAAQ,wBAI3EiG,GAAe,2JAGzB,eAGEvP,EACAyG,EACAvH,6GAJcyQ,IAAZ1F,WAAsD2F,IAAtB9K,qBAChCiF,IAAAA,2BAA4BC,IAAAA,gBAAiBpE,IAAAA,qBAK3CqE,EAAa/E,EAAawF,0BAA0BiF,EAAoB3F,GACxElF,EAAuBI,EAAawF,0BAA0BkF,EAA8B5F,IAG5F9E,EAAamF,wBAAwBrK,oCACkB+H,KAAKuC,oCAC5DP,EACAnE,EACAa,EACAvH,mBAJoB2Q,IAAdtF,cAAiCjB,IAAAA,SAQvCxE,EAAuBiD,KAAKyG,cAAc1J,EAAsBwE,IAG9DuG,IACFtF,EAAesF,cAIbb,EAAmBnK,GAAoBC,EAAsB9E,EAAe+H,KAAKD,aAEnF5C,EAAa4K,cAAc9P,KAAkBgP,oCACUjH,KAAKgI,0BAC5Df,EACAhP,EACAyG,EACAvH,oBAJoB2Q,IAAdtF,cAAiCjB,IAAAA,SAQvCW,EAAalC,KAAKyG,cAAcvE,EAAYX,IAG1CuG,KAAuBtF,GAAgBsF,EAAkBtC,SAASC,eAAMjD,sBAAAyF,EAAczC,SAASC,QACjGjD,EAAesF,kBAIblL,EACHoI,EAAYjI,IAA0BiI,EAAY9C,aAE/CA,iBAAcnF,EADdiD,KAAKyG,cAAc1J,EAAsBmF,qBAGxC,CACLM,aAAAA,EACA5F,KAAAA,EACAsF,WAAAA,EACAnF,qBAAAA,yKAIJ,WACE0B,EACAZ,EACAa,EACAvH,2FAEQ6I,KAAKqB,iBAAiB6G,EAAqBzJ,EAAMC,WAAcvH,OAAS0G,qBAAAA,MAC9E,8JAGJ,aAEEa,EACAvH,wFAFEoE,IAAAA,IAII6E,EAAyC,CAC7CC,cAAe,IAAIjB,IACnBxC,KAAM,GACN0D,WAAY,CAAEC,QAAS,EAAGzG,MAAO,GACjCb,mBAAoB,IAAImG,KAGpB5D,EAAYC,EAAwBF,EAAKpE,EAAQuE,WAAW,GAC5DrC,EAAqBC,EAAekC,4CAGjC4E,0BAGH1C,QAAQ8F,IACZnK,EAAmB8B,KAAI,gBAAGtD,IAAAA,iBACxBsQ,EAAK7E,kBACHzL,EACA,CAAEE,iBAAkBZ,EAAQuE,WAC5B0E,EACA1B,EACAvH,qBAKNiJ,EAAmBE,WAAanD,EAAaiL,yBAAyBhI,EAAmBnH,sCAClFmH,8IAGT,SACEyD,EACA1M,OKt4BYkR,ELw4BNC,EAAiBtI,KAAKuI,+BAA+BpQ,IACzDhB,EAAQ2G,uBAGLyK,+BAA+B7G,OAAOvK,EAAQ2G,YK54BvCuK,cL64BqBC,IAAgBzE,KK54B3BrM,QACtB,SAACC,EAA4C+Q,EAASjF,OAC5C0B,EAAkDuD,EAAlDvD,eAAgBrI,EAAkC4L,EAAlC5L,KAAMF,EAA4B8L,EAA5B9L,QAASwI,EAAmBsD,EAAnBtD,QAAS3K,EAAUiO,EAAVjO,aAE5C0K,IACFxN,EAAIwN,eAAiBxN,EAAIwN,wBAAsBxN,EAAIwN,gBAAmBA,GAAmBA,GAG3FxN,EAAImF,KAAOnF,EAAImF,KAAO6L,EAAMhR,EAAImF,KAAMA,GAAQA,EAEhC,IAAV2G,IACF9L,EAAIyN,QAAUA,GAGZ3B,IAAU8E,EAAiB7P,OAAS,IACtCf,EAAIiF,QAAUA,GAGZnC,IACG9C,EAAI8C,QACP9C,EAAI8C,MAAQ,IAGd9C,EAAI8C,MAAMC,KAAKD,EAAM,KAGhB9C,IAET,CAAEmF,KAAM,gDLm3BV,WAEE4B,EACAC,EACAjB,EACAwB,EACA8G,EACAC,2FAGQ/F,KAAKP,OAAOoG,cAAOrH,eAAcC,GAAQ4F,EAAU7G,GAAQwB,6OAMrE,WACE1D,EACAqG,EACAjD,EACAvH,oFAEMuR,EAAgBjN,EAAwBH,EAAYC,IAAKpE,EAAQuE,WAAW,GAC5ErC,EAAqBC,EAAeoP,oEAMpChL,QAAQ8F,IACZnK,EAAmB8B,KAAI,gBAAGtD,IAAAA,iBACjB8Q,EAAK5B,8CACVlP,EACA,CAAEE,iBAAkBZ,EAAQuE,WAC5BiG,EACAjD,EACAvH,wKAMR,WACE6B,EACA+I,IAEArD,EACAvH,6FAFEkJ,IAAAA,cAAe6B,IAAAA,WAAYnF,IAAAA,qBAIrBhF,EAAuCgK,EAAvChK,iBAAkB2O,EAAqB3E,EAArB2E,iBACpB1P,EAAY+L,EAAIb,EAAYwE,GAC5BzO,EAAgBd,EAAQe,aAAaC,IAAIJ,GACzCyK,EAAenC,EAAclI,IAAIJ,IAEnCiN,EAAYhO,IAAeiB,GAAkBuK,0DAI3CS,EAA4B,IAEzBzI,KACPwF,KAAK4I,+BACH5P,EACA+I,EACA,CAAES,aAAAA,EAAc5F,KAAMG,EAAsB9E,cAAAA,GAC5CyG,EACAvH,MAIE6O,EAAWhG,KAAK6I,eAAe7R,EAAWiB,KAE/BA,EAAcG,gBACvB8J,EAAYwE,GAGhBV,GACF/C,EAASzI,KACPwF,KAAK8I,qBAAqB/G,EAAc,CAAES,aAAAA,EAAc5F,KAAMsF,EAAYjK,cAAAA,GAAiByG,EAASvH,cAIlGuG,QAAQ8F,IAAIP,yJAGpB,eAGEvE,EACAvH,6FAHEuP,IAAAA,iBACAlE,IAAAA,aAAc5F,IAAAA,KAAM3E,IAAAA,cAIlBjB,EAAY+L,EAAInG,EAAM8J,GACpBnO,EAAgBN,EAAc+N,SAAW/N,EAAcU,SAAW3B,EAAUqL,WAC5E0G,YAAmBxQ,eAAkBvB,EAAUgJ,KAAKD,sBACrCC,KAAKqB,iBAAiB+F,EAAe2B,EAAerK,EAASvH,iBAA5EiH,YAGJpH,EAAYgJ,KAAKyG,cAAcrI,EAAOmD,MAAOvK,cAGzCgJ,KAAKgJ,eACT5B,EACA2B,EACA/R,EACA,CAAEiS,aAAc,CAAEtD,aAAcnD,EAAa0G,qBAAuBC,IAAKzK,EAAQyK,KACjFzK,EACAvH,aAGEyF,EAAM8J,EAAkB,CAAE0C,qBAAehC,eAAkB2B,6IAGjE,SACE/P,EACA9B,IAEAwH,EACAvH,cAFEkJ,IAAAA,cAAezD,IAAAA,KAISzD,EAA6BjC,EAA/Ca,iBACFgK,EAAe/J,EAAuBgB,EAAO9B,EAAsBC,GACjEY,EAAuCgK,EAAvChK,iBAAkB2O,EAAqB3E,EAArB2E,iBACpB1P,EAAY+L,EAAInG,EAAM8J,GACtBzO,EAAgBd,EAAQe,aAAaC,IAAIJ,IAE1CiL,EAAahM,IAAeiB,MAAAA,GAAAA,EAAeI,sBAI3CgR,4BAA4BhJ,EAAe,CAAElH,yBAAAA,EAA0BpB,iBAAAA,GAAoBZ,GAE5F6L,EAAahM,IACfkM,EACElK,EACAhC,EACAG,EAAQG,qBACR,SACEmC,EACAkN,EACAC,EACAC,EACAxD,GAEAiG,EAAK1F,sBACHnK,EACA,CAAE8J,MAAOF,EAAYtL,iBAAAA,EAAkB2O,iBAAAA,GACvC,CAAErG,cAAAA,EAAezD,KAAAA,GACjB8B,EACAvH,kDAOV,SACEkJ,WACElH,IAAAA,yBAA0BpB,IAAAA,iBAC1BG,IAAAA,aAAcwD,IAAAA,cAEZ2E,EAAcqF,IAAI3N,QAIhBE,EAAgBC,EAAaC,IAAIJ,MAEnCE,GAAiB+H,KAAKF,qBAAqB7H,EAAcU,UAAW,KAChE6J,EAAe,IAAI+C,EAAa,CAAEI,aAAc3F,KAAKF,qBAAqB7H,EAAcU,YAC9FwE,EAAaoM,kBAAkBlJ,EAAemC,EAAczK,EAAkB2D,QACrEsE,KAAKN,sBAAwBvG,GACtCgE,EAAaoM,kBACXlJ,EACAA,EAAclI,IAAIgB,GAClBpB,EACA2D,yDAKN,WAEE+C,EACAU,EACA2G,EACAC,uEAEKtE,uBAAuBoE,IAAIpH,EAAMU,6JAGxC,WACEV,IAEAC,EACAvH,qFAFEkJ,IAAAA,cAAezD,IAAAA,KAIX4M,EAA0BC,EAAuBpJ,GACjDsF,EAAexI,EAAauM,0BAA0BrJ,EAAelJ,EAAQuE,oBAE7EsE,KAAKgJ,eACT1H,EACA7C,EACA,CAAE4B,cAAemJ,EAAyB5M,KAAAA,GAC1C,CAAEqM,aAAc,CAAEtD,aAAAA,GAAgBwD,IAAKzK,EAAQyK,KAC/CzK,EACAvH,gKAIJ,WACE6B,EACA+I,IAEArD,EACAvH,+FAFEqL,IAAAA,aAAc5F,IAAAA,KAAM3E,IAAAA,cAId+J,EAAuED,EAAvEC,2BAA4BnE,EAA2CkE,EAA3ClE,qBAAsB6I,EAAqB3E,EAArB2E,iBACtD1P,EAAY+L,EAAInG,EAAM8J,GACpBV,EAAWhG,KAAK6I,eAAe7R,EAAWiB,GAC1C0R,EAAsB1R,EAAcG,cAAgBH,EAAcI,cAEpElB,EAAQuE,YAAc4I,IAAU0B,IAAY2D,0BAC1CzM,EAAclG,cAAcgC,EAAM4Q,2BAANC,EAAoBC,aAClD9S,EAAY+S,EAAmC/S,EAAWgC,EAAM4Q,aAAaE,WAAY/H,EAAc5K,aAGpF6I,KAAKqB,iBAAiB6G,EAAqBlG,EAA4BtD,WACvFvH,OACH0G,qBAAAA,mBAFIO,WAKQ4E,EAAahM,KACzBA,EAAYgJ,KAAKyG,cAAcrI,EAAOmD,MAAOvK,cAGzCgJ,KAAKgJ,eACTd,EACAlG,EACAhL,EACA,CAAEiS,aAAc,CAAEtD,aAAcnD,EAAa0G,qBAAuBC,IAAKzK,EAAQyK,KACjFzK,WACKvH,OAAS0G,qBAAAA,aAGZ1D,EAAenB,EAAO,CAAE1B,oBAAqBH,EAAQG,wBACnD0O,IACEpJ,EAAM8J,EAAkB,CAAE0C,qBAAelB,eAAwBlG,OAE/DpF,EAAM8J,0JAMpB,SACE7C,EACA1M,OAEMmR,EAAiBtI,KAAKuI,+BAA+BpQ,IAAIhB,EAAQ2G,WAEnEwK,OACGC,+BAA+B1C,IAAI1O,EAAQ2G,sBAAewK,IAAgBzE,UAE1E0E,+BAA+B1C,IAAI1O,EAAQ2G,UAAW,CAAC+F,8CAjlChE,SAAwC5K,OAChCqH,EAAyB,CAAEC,QAAS,EAAGzG,MAAO,UAEpDb,EAAmBqB,SAAQ,SAAA0P,GACzB1J,EAAWxG,OAASkQ,EAAgBxR,WAC9B+H,EAAUyJ,EAAgBzC,QAAO,qBAAG9O,WAC1C6H,EAAWC,SAAWA,EAAQ/H,UAGzB8H,2CAGT,SAAyC2J,EAAwBhI,UACxDe,EAAaiH,GAAqB5F,EAAU4F,EAAkBhI,SAAoBrJ,2CAG3F,SAAyCyH,EAA0C3E,OAG5E2E,QItFsB,eJ0FrBmC,EAAenC,EAAclI,IAAIuD,UAChC8G,EAAeA,EAAa0G,oBI3FR,wCJ8F7B,SAA6BjR,OACtBA,SACI,MAGD+N,EAA4B/N,EAA5B+N,SAAUC,EAAkBhO,EAAlBgO,qBACXD,GAAYC,EAAcpN,MAAK,SAAAqN,WAAUA,EAAKF,mDAGvD,SAAuC/N,WAEjCA,IACD+H,KAAK+H,cAAc9P,IAAkBA,EAAcG,cAAgBH,EAAcI,uCAItF,SAAwBmK,UACNO,EAAIP,EAAc,CIpHd,WACK,eACL,YJkHmD,IACpDA,EAAa0H,sDAGlC,SACE7J,EACAlB,UAEKA,EAIE,IAAIC,gBAAQD,EAAqBkB,iBAAkBA,KAHjDA,gCAMX,SACE/E,IAEA2G,OADErF,IAAAA,QAGGoG,EAAapG,IAAUoI,EAAYpI,IAEjC,GAAIoG,EAAapG,GAAO,KACvBuN,EAAiBvN,EACvBtB,EAAY2G,GAAmBmI,EAAQD,GAAkB,GAAK,SAH9D7O,EAAY2G,GAAmBrF,wCAOnC,SACE8F,MAGAP,EACA2D,SAHEzF,IAAAA,cAAezD,IAAAA,KAAM3D,IAAAA,mBACrBgJ,IAAAA,gBAAiBlK,IAAAA,iBAGjB2D,IAAAA,UAEFyB,EAAaoM,kBAAkBlJ,EAAeqC,EAAgBF,aAAczK,EAAkB2D,GAC9FyB,EAAayF,uBAAuB3J,EAAoByJ,EAAiB3K,EAAkBoK,GAC3FhF,EAAa0F,eAAejG,EAAM8F,EAAiBT,oCAGrD,SACE5B,EACAmC,EACAzK,EACA2D,MAEK8G,GAILnC,EAAcwF,IAAI9N,EAAkByK,OAC9B6H,EAAwBhK,EAAclI,IAAIuD,KAE3C2O,GAAyBA,EAAsB7E,SAASC,IAAMjD,EAAagD,SAASC,MACvFpF,EAAcwF,IAAInK,EAAW8G,0CAIjC,SACEvJ,IAEAlB,SADE6E,IAAAA,KAEAwF,IAAAA,aAAc7J,IAAAA,cAAemB,IAAAA,aAAcC,IAAAA,gBAEzCqL,EAAYzM,IAAkBmB,IAAiBG,MAC7CZ,EAAmByM,IAAI3N,UAI3BkB,EAAmB4M,IAAI9N,EAAkB,CAAC,CAAE2B,aAAAA,EAAcC,aAAAA,EAAclB,SAAUuM,EAAYpI,cAI5FwF,IAAiB7J,OAIfgJ,EAAQtI,EAAmBd,IAAIJ,GAC/BiS,EAAkBzI,GAA+C,GAEnEyI,EAAgBnR,MAAK,qBAAGF,WAA4ByJ,MAIxDnJ,EAAmB4M,IAAI9N,cAClBiS,IACH,CAAEtQ,aAAAA,EAAcC,aAAAA,EAAclB,SAAUuM,EAAYpI,GAAOjE,SAAUyJ,yYAm9B5D,SAAckI,OACtBpN,EAAcoN,SACX,IAAI/K,UAAU,gFAGf,SAACgL,UAAiC,IAAIpN,YAAkBoN,GAAkBD"}
|