@graphql-box/worker-client 3.7.0 → 3.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- import"core-js/modules/es.object.keys.js";import"core-js/modules/es.symbol.js";import"core-js/modules/es.array.filter.js";import"core-js/modules/web.dom-collections.for-each.js";import"core-js/modules/es.object.get-own-property-descriptors.js";import e from"@babel/runtime/helpers/objectWithoutProperties";import t from"@babel/runtime/helpers/asyncToGenerator";import r from"@babel/runtime/helpers/classCallCheck";import n from"@babel/runtime/helpers/createClass";import s from"@babel/runtime/helpers/defineProperty";import o from"@babel/runtime/helpers/applyDecoratedDescriptor";import a from"lodash/isPlainObject";import c from"lodash/castArray";import u 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/es.object.get-own-property-descriptor.js";import{REQUEST_RESOLVED as i,REQUEST_EXECUTED as p,MUTATION as h,QUERY as l,SUBSCRIPTION as f}from"@graphql-box/core";import{hashRequest as m,EventAsyncIterator as b,deserializeErrors as d,rehydrateCacheMetadata as g,dehydrateCacheMetadata as v,serializeErrors as y}from"@graphql-box/helpers";import w from"eventemitter3";import{v1 as x}from"uuid";import{handleMessage as j}from"@cachemap/core-worker";import{forAwaitEach as _,isAsyncIterable as q}from"iterall";var k,O,M;function D(){return function(r,n,s){var o,a=s.value;a&&(s.value=(o=t(u.mark((function r(){var n,s,o,c=this,h=arguments;return u.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:for(n=h.length,s=new Array(n),o=0;o<n;o++)s[o]=h[o];return r.prev=1,r.abrupt("return",new Promise(function(){var r=t(u.mark((function t(r){var n,o,h,l,f,m,b,d;return u.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=s[2],o=n.debugManager,h=n.requestID,l=e(n,["debugManager","requestID"]),o){t.next=8;break}return t.t0=r,t.next=5,a.apply(c,s);case 5:return t.t1=t.sent,(0,t.t0)(t.t1),t.abrupt("return");case 8:return f=o.now(),o.emit(p,{context:l,options:s[1],request:s[0],requestID:h,stats:{startTime:f}}),t.next=12,a.apply(c,s);case 12:m=t.sent,b=o.now(),d=b-f,r(m),o.emit(i,{context:l,options:s[1],request:s[0],requestID:h,result:m,stats:{duration:d,endTime:b,startTime:f}});case 17:case"end":return t.stop()}}),t)})));return function(e){return r.apply(this,arguments)}}()));case 5:return r.prev=5,r.t0=r.catch(1),r.abrupt("return",Promise.reject(r.t0));case 8:case"end":return r.stop()}}),r,null,[[1,5]])}))),function(){return o.apply(this,arguments)}))}}function P(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function E(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?P(Object(r),!0).forEach((function(t){s(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):P(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var I=(k=D(),O=D(),o((M=function(){function o(n){var c,i=this;r(this,o),s(this,"_cache",void 0),s(this,"_debugManager",void 0),s(this,"_eventEmitter",void 0),s(this,"_pending",new Map),s(this,"_worker",void 0),s(this,"_onMessage",(c=t(u.mark((function t(r){var n,s,o,c,p,h,l,f,m;return u.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=r.data,a(n)){t.next=3;break}return t.abrupt("return");case 3:if(o=(s=n).context,c=s.method,p=s.result,"graphqlBox"===s.type&&a(p)){t.next=6;break}return t.abrupt("return");case 6:if(h=p._cacheMetadata,l=e(p,["_cacheMetadata"]),f=d(E(E({},l),{},{requestID:o.requestID})),h&&(f._cacheMetadata=g(h)),"request"!==c){t.next=16;break}if(m=i._pending.get(o.requestID)){t.next=13;break}return t.abrupt("return");case 13:m.resolve(f),t.next=17;break;case 16:("subscribe"===c||o.hasDeferOrStream)&&i._eventEmitter.emit(o.requestID,f);case 17:case"end":return t.stop()}}),t)}))),function(e){return c.apply(this,arguments)}));var p=[];if(a(n)||p.push(new TypeError("@graphql-box/client expected options to ba a plain object.")),n.cache||p.push(new TypeError("@graphql-box/client expected options.cache.")),n.worker||p.push(new TypeError("@graphql-box/client expected options.worker.")),p.length)throw p;this._cache=n.cache,this._debugManager=n.debugManager?n.debugManager():null,this._eventEmitter=new w,this._worker=n.worker,this._addEventListener()}var i,p,v,y,j,_;return n(o,[{key:"cache",get:function(){return this._cache}},{key:"mutate",value:(_=t(u.mark((function e(t){var r,n,s=arguments;return u.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=s.length>1&&void 0!==s[1]?s[1]:{},n=s.length>2&&void 0!==s[2]?s[2]:{},e.abrupt("return",this._request(t,r,this._getRequestContext(h,t,n)));case 3:case"end":return e.stop()}}),e,this)}))),function(e){return _.apply(this,arguments)})},{key:"query",value:(j=t(u.mark((function e(t){var r,n,s=arguments;return u.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=s.length>1&&void 0!==s[1]?s[1]:{},n=s.length>2&&void 0!==s[2]?s[2]:{},e.abrupt("return",this._request(t,r,this._getRequestContext(l,t,n)));case 3:case"end":return e.stop()}}),e,this)}))),function(e){return j.apply(this,arguments)})},{key:"request",value:(y=t(u.mark((function e(t){var r,n,s=arguments;return u.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=s.length>1&&void 0!==s[1]?s[1]:{},n=s.length>2&&void 0!==s[2]?s[2]:{},e.abrupt("return",this._request(t,r,this._getRequestContext(l,t,n)));case 3:case"end":return e.stop()}}),e,this)}))),function(e){return y.apply(this,arguments)})},{key:"subscribe",value:(v=t(u.mark((function e(t){var r,n=arguments;return u.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=n.length>1&&void 0!==n[1]?n[1]:{},e.abrupt("return",this._subscribe(t,r,this._getRequestContext(f,t)));case 2:case"end":return e.stop()}}),e,this)}))),function(e){return v.apply(this,arguments)})},{key:"_addEventListener",value:function(){this._worker.addEventListener("message",this._onMessage)}},{key:"_getRequestContext",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return E({debugManager:this._debugManager,fieldTypeMap:new Map,operation:e,operationName:"",queryFiltered:!1,request:t,requestID:x(),whitelistHash:m(t)},r)}},{key:"_request",value:(p=t(u.mark((function e(t,r,n){var s,a=this;return u.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,n.hasDeferOrStream){e.next=3;break}return e.abrupt("return",new Promise((function(e){a._worker.postMessage({context:o._getMessageContext(n),method:"request",options:r,request:t,type:"graphqlBox"}),a._pending.set(n.requestID,{resolve:e})})));case 3:return this._worker.postMessage({context:o._getMessageContext(n),method:"request",options:r,request:t,type:"graphqlBox"}),s=new b(this._eventEmitter,n.requestID),e.abrupt("return",s.getIterator());case 8:return e.prev=8,e.t0=e.catch(0),e.abrupt("return",{errors:c(e.t0)});case 11:case"end":return e.stop()}}),e,this,[[0,8]])}))),function(e,t,r){return p.apply(this,arguments)})},{key:"_subscribe",value:(i=t(u.mark((function e(t,r,n){var s;return u.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,this._worker.postMessage({context:o._getMessageContext(n),method:"subscribe",options:r,request:t,type:"graphqlBox"}),s=new b(this._eventEmitter,n.requestID),e.abrupt("return",s.getIterator());case 6:return e.prev=6,e.t0=e.catch(0),e.abrupt("return",{errors:c(e.t0)});case 9:case"end":return e.stop()}}),e,this,[[0,6]])}))),function(e,t,r){return i.apply(this,arguments)})}],[{key:"_getMessageContext",value:function(e){var t=e.hasDeferOrStream;return{hasDeferOrStream:void 0!==t&&t,requestID:e.requestID}}}]),o}()).prototype,"_request",[k],Object.getOwnPropertyDescriptor(M.prototype,"_request"),M.prototype),o(M.prototype,"_subscribe",[O],Object.getOwnPropertyDescriptor(M.prototype,"_subscribe"),M.prototype),M);function C(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function B(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?C(Object(r),!0).forEach((function(t){s(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):C(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var S=self,T=S.addEventListener,R=S.postMessage;function L(){return(L=t(u.mark((function t(r,n,s,o,a){var c,i,p,h,l;return u.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,a.request(r,s,o);case 2:if(c=t.sent,q(c)){t.next=9;break}return p=(i=c)._cacheMetadata,h=e(i,["_cacheMetadata"]),l=B({},h),p&&(l._cacheMetadata=v(p)),R({context:o,method:n,result:y(l),type:"graphqlBox"}),t.abrupt("return");case 9:_(c,(function(t){var r=t._cacheMetadata,s=B({},e(t,["_cacheMetadata"]));r&&(s._cacheMetadata=v(r)),R({context:o,method:n,result:y(s),type:"graphqlBox"})}));case 10:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function A(){return(A=t(u.mark((function t(r,n,s,o,a){var c;return u.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,a.subscribe(r,s,o);case 2:if(c=t.sent,q(c)){t.next=6;break}return R({context:o,method:n,result:y(c),type:"graphqlBox"}),t.abrupt("return");case 6:_(c,(function(t){var r=t._cacheMetadata,s=B({},e(t,["_cacheMetadata"]));r&&(s._cacheMetadata=v(r)),R({context:o,method:n,result:y(s),type:"graphqlBox"})}));case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function F(e,t){var r=e,n=r.context,s=r.method,o=r.options,a=r.request;"request"===s?function(e,t,r,n,s){L.apply(this,arguments)}(a,s,o,n,t):"subscribe"===s&&function(e,t,r,n,s){A.apply(this,arguments)}(a,s,o,n,t)}function G(e){return H.apply(this,arguments)}function H(){return(H=t(u.mark((function e(t){var r,n;return u.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=function(e){var t=e.data;if(a(t)){var n=t.type;"graphqlBox"===n?F(t,r):"cachemap"===n&&r.cache&&j(t,r.cache)}},r=t.client,T("message",n);case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}export default I;export{G as registerWorker};
1
+ import"core-js/modules/es.object.keys.js";import"core-js/modules/es.symbol.js";import"core-js/modules/es.array.filter.js";import"core-js/modules/web.dom-collections.for-each.js";import"core-js/modules/es.object.get-own-property-descriptors.js";import e from"@babel/runtime/helpers/objectWithoutProperties";import t from"@babel/runtime/helpers/asyncToGenerator";import r from"@babel/runtime/helpers/classCallCheck";import n from"@babel/runtime/helpers/createClass";import a from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/applyDecoratedDescriptor";import o from"lodash/isPlainObject";import u from"lodash/castArray";import c 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/es.object.get-own-property-descriptor.js";import{REQUEST_RESOLVED as i,REQUEST_EXECUTED as p,SUBSCRIPTION_EXECUTED as h,MUTATION as l,QUERY as f,SUBSCRIPTION as b,SUBSCRIPTION_RESOLVED as m}from"@graphql-box/core";import{hashRequest as d,EventAsyncIterator as g,deserializeErrors as v,rehydrateCacheMetadata as y,dehydrateCacheMetadata as w,serializeErrors as x}from"@graphql-box/helpers";import _ from"eventemitter3";import{v1 as j}from"uuid";import{isAsyncIterable as k,forAwaitEach as q}from"iterall";import{handleMessage as O}from"@cachemap/core-worker";var M,D,P;function E(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function I(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?E(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):E(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var C=(M=function(r,n,a){var s,o=a.value;o&&(a.value=(s=t(c.mark((function r(){var n,a,s,u=this,h=arguments;return c.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:for(n=h.length,a=new Array(n),s=0;s<n;s++)a[s]=h[s];return r.prev=1,r.abrupt("return",new Promise(function(){var r=t(c.mark((function t(r){var n,s,h,l,f,b,m;return c.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=a[2],s=n.debugManager,h=e(n,["debugManager"]),s){t.next=8;break}return t.t0=r,t.next=5,o.apply(u,a);case 5:return t.t1=t.sent,(0,t.t0)(t.t1),t.abrupt("return");case 8:return l=s.now(),s.log(p,{context:h,options:a[1],request:a[0],stats:{startTime:l}}),t.next=12,o.apply(u,a);case 12:if(f=t.sent,b=s.now(),m=b-l,r(f),!k(f)){t.next=18;break}return t.abrupt("return");case 18:s.log(i,{context:h,options:a[1],request:a[0],result:f,stats:{duration:m,endTime:b,startTime:l}});case 19:case"end":return t.stop()}}),t)})));return function(e){return r.apply(this,arguments)}}()));case 5:return r.prev=5,r.t0=r.catch(1),r.abrupt("return",Promise.reject(r.t0));case 8:case"end":return r.stop()}}),r,null,[[1,5]])}))),function(){return s.apply(this,arguments)}))},D=function(r,n,a){var s,o=a.value;o&&(a.value=(s=t(c.mark((function r(){var n,a,s,u=this,i=arguments;return c.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:for(n=i.length,a=new Array(n),s=0;s<n;s++)a[s]=i[s];return r.prev=1,r.abrupt("return",new Promise(function(){var r=t(c.mark((function t(r){var n,s,i,p,l;return c.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=a[2],s=n.debugManager,i=e(n,["debugManager"]),s){t.next=8;break}return t.t0=r,t.next=5,o.apply(u,a);case 5:return t.t1=t.sent,(0,t.t0)(t.t1),t.abrupt("return");case 8:return p=s.now(),s.log(h,{context:i,options:a[1],request:a[0],stats:{startTime:p}}),t.next=12,o.apply(u,a);case 12:l=t.sent,r(l);case 14:case"end":return t.stop()}}),t)})));return function(e){return r.apply(this,arguments)}}()));case 5:return r.prev=5,r.t0=r.catch(1),r.abrupt("return",Promise.reject(r.t0));case 8:case"end":return r.stop()}}),r,null,[[1,5]])}))),function(){return s.apply(this,arguments)}))},s((P=function(){function s(n){var u,p=this;r(this,s),a(this,"_cache",void 0),a(this,"_debugManager",void 0),a(this,"_eventEmitter",void 0),a(this,"_pending",new Map),a(this,"_worker",void 0),a(this,"_onMessage",(u=t(c.mark((function t(r){var n,a,s,u,h,l,f,b,d,g,w,x,_;return c.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=r.data,o(n)){t.next=3;break}return t.abrupt("return");case 3:if(s=(a=n).context,u=a.method,h=a.result,"graphqlBox"===a.type&&o(h)){t.next=6;break}return t.abrupt("return");case 6:if(l=h._cacheMetadata,f=e(h,["_cacheMetadata"]),b=v(I(I({},f),{},{requestID:s.requestID})),l&&(b._cacheMetadata=y(l)),"subscribe"!==u){t.next=14;break}null===(d=p._debugManager)||void 0===d||d.log(m,{context:s,result:b,stats:{endTime:null===(g=p._debugManager)||void 0===g?void 0:g.now()}}),p._eventEmitter.emit(s.requestID,b),t.next=23;break;case 14:if(!s.hasDeferOrStream){t.next=19;break}null===(w=p._debugManager)||void 0===w||w.log(i,{context:s,result:b,stats:{endTime:null===(x=p._debugManager)||void 0===x?void 0:x.now()}}),p._eventEmitter.emit(s.requestID,b),t.next=23;break;case 19:if(_=p._pending.get(s.requestID)){t.next=22;break}return t.abrupt("return");case 22:_.resolve(b);case 23:case"end":return t.stop()}}),t)}))),function(e){return u.apply(this,arguments)}));var h=[];if(o(n)||h.push(new TypeError("@graphql-box/client expected options to ba a plain object.")),n.cache||h.push(new TypeError("@graphql-box/client expected options.cache.")),n.worker||h.push(new TypeError("@graphql-box/client expected options.worker.")),h.length)throw h;this._cache=n.cache,this._debugManager=n.debugManager?n.debugManager():null,this._eventEmitter=new _,this._worker=n.worker,this._addEventListener()}var p,h,w,x,k,q;return n(s,[{key:"cache",get:function(){return this._cache}},{key:"mutate",value:(q=t(c.mark((function e(t){var r,n,a=arguments;return c.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=a.length>1&&void 0!==a[1]?a[1]:{},n=a.length>2&&void 0!==a[2]?a[2]:{},e.abrupt("return",this._request(t,r,this._getRequestContext(l,t,n)));case 3:case"end":return e.stop()}}),e,this)}))),function(e){return q.apply(this,arguments)})},{key:"query",value:(k=t(c.mark((function e(t){var r,n,a=arguments;return c.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=a.length>1&&void 0!==a[1]?a[1]:{},n=a.length>2&&void 0!==a[2]?a[2]:{},e.abrupt("return",this._request(t,r,this._getRequestContext(f,t,n)));case 3:case"end":return e.stop()}}),e,this)}))),function(e){return k.apply(this,arguments)})},{key:"request",value:(x=t(c.mark((function e(t){var r,n,a=arguments;return c.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=a.length>1&&void 0!==a[1]?a[1]:{},n=a.length>2&&void 0!==a[2]?a[2]:{},e.abrupt("return",this._request(t,r,this._getRequestContext(f,t,n)));case 3:case"end":return e.stop()}}),e,this)}))),function(e){return x.apply(this,arguments)})},{key:"subscribe",value:(w=t(c.mark((function e(t){var r,n=arguments;return c.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=n.length>1&&void 0!==n[1]?n[1]:{},e.abrupt("return",this._subscribe(t,r,this._getRequestContext(b,t)));case 2:case"end":return e.stop()}}),e,this)}))),function(e){return w.apply(this,arguments)})},{key:"_addEventListener",value:function(){this._worker.addEventListener("message",this._onMessage)}},{key:"_getRequestContext",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return I({debugManager:this._debugManager,fieldTypeMap:new Map,operation:e,operationName:"",queryFiltered:!1,request:t,requestID:j(),whitelistHash:d(t)},r)}},{key:"_request",value:(h=t(c.mark((function e(t,r,n){var a,o=this;return c.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,n.hasDeferOrStream){e.next=3;break}return e.abrupt("return",new Promise((function(e){o._worker.postMessage({context:s._getMessageContext(n),method:"request",options:r,request:t,type:"graphqlBox"}),o._pending.set(n.requestID,{resolve:e})})));case 3:return this._worker.postMessage({context:s._getMessageContext(n),method:"request",options:r,request:t,type:"graphqlBox"}),a=new g(this._eventEmitter,n.requestID),e.abrupt("return",a.getIterator());case 8:return e.prev=8,e.t0=e.catch(0),e.abrupt("return",{errors:u(e.t0)});case 11:case"end":return e.stop()}}),e,this,[[0,8]])}))),function(e,t,r){return h.apply(this,arguments)})},{key:"_subscribe",value:(p=t(c.mark((function e(t,r,n){var a;return c.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,this._worker.postMessage({context:s._getMessageContext(n),method:"subscribe",options:r,request:t,type:"graphqlBox"}),a=new g(this._eventEmitter,n.requestID),e.abrupt("return",a.getIterator());case 6:return e.prev=6,e.t0=e.catch(0),e.abrupt("return",{errors:u(e.t0)});case 9:case"end":return e.stop()}}),e,this,[[0,6]])}))),function(e,t,r){return p.apply(this,arguments)})}],[{key:"_getMessageContext",value:function(e){var t=e.hasDeferOrStream;return{hasDeferOrStream:void 0!==t&&t,requestID:e.requestID}}}]),s}()).prototype,"_request",[M],Object.getOwnPropertyDescriptor(P.prototype,"_request"),P.prototype),s(P.prototype,"_subscribe",[D],Object.getOwnPropertyDescriptor(P.prototype,"_subscribe"),P.prototype),P);function T(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function B(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?T(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):T(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var S=self,R=S.addEventListener,L=S.postMessage;function A(){return(A=t(c.mark((function t(r,n,a,s,o){var u,i,p,h,l;return c.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,o.request(r,a,s);case 2:if(u=t.sent,k(u)){t.next=9;break}return p=(i=u)._cacheMetadata,h=e(i,["_cacheMetadata"]),l=B({},h),p&&(l._cacheMetadata=w(p)),L({context:s,method:n,result:x(l),type:"graphqlBox"}),t.abrupt("return");case 9:q(u,(function(t){var r=t._cacheMetadata,a=B({},e(t,["_cacheMetadata"]));r&&(a._cacheMetadata=w(r)),L({context:s,method:n,result:x(a),type:"graphqlBox"})}));case 10:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function F(){return(F=t(c.mark((function t(r,n,a,s,o){var u;return c.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,o.subscribe(r,a,s);case 2:if(u=t.sent,k(u)){t.next=6;break}return L({context:s,method:n,result:x(u),type:"graphqlBox"}),t.abrupt("return");case 6:q(u,(function(t){var r=t._cacheMetadata,a=B({},e(t,["_cacheMetadata"]));r&&(a._cacheMetadata=w(r)),L({context:s,method:n,result:x(a),type:"graphqlBox"})}));case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function G(e,t){var r=e,n=r.context,a=r.method,s=r.options,o=r.request;"request"===a?function(e,t,r,n,a){A.apply(this,arguments)}(o,a,s,n,t):"subscribe"===a&&function(e,t,r,n,a){F.apply(this,arguments)}(o,a,s,n,t)}function H(e){return N.apply(this,arguments)}function N(){return(N=t(c.mark((function e(t){var r,n;return c.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=function(e){var t=e.data;if(o(t)){var n=t.type;"graphqlBox"===n?G(t,r):"cachemap"===n&&r.cache&&O(t,r.cache)}},r=t.client,R("message",n);case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}export default C;export{H as registerWorker};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../worker-client/src/consts/index.ts","../worker-client/src/debug/log-request/index.ts","../worker-client/src/main/index.ts","../worker-client/src/register-worker/index.ts"],"sourcesContent":["export const REQUEST = \"request\";\nexport const SUBSCRIBE = \"subscribe\";\n\nexport const MESSAGE = \"message\";\n\nexport const GRAPHQL_BOX = \"graphqlBox\";\nexport const CACHEMAP = \"cachemap\";\n","import { REQUEST_EXECUTED, REQUEST_RESOLVED, RequestContext } from \"@graphql-box/core\";\n\nexport default function logRequest() {\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, requestID, ...otherContext } = args[2] as RequestContext;\n\n if (!debugManager) {\n resolve(await method.apply(this, args));\n return;\n }\n\n const startTime = debugManager.now();\n\n debugManager.emit(REQUEST_EXECUTED, {\n context: otherContext,\n options: args[1],\n request: args[0],\n requestID,\n stats: { startTime },\n });\n\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(REQUEST_RESOLVED, {\n context: otherContext,\n options: args[1],\n request: args[0],\n requestID,\n result,\n stats: { duration, endTime, startTime },\n });\n });\n } catch (error) {\n return Promise.reject(error);\n }\n };\n };\n}\n","import WorkerCachemap from \"@cachemap/core-worker\";\nimport {\n DebugManagerDef,\n MUTATION,\n MaybeRequestContext,\n MaybeRequestResult,\n QUERY,\n RequestContext,\n RequestOptions,\n SUBSCRIPTION,\n ValidOperations,\n} from \"@graphql-box/core\";\nimport { EventAsyncIterator, deserializeErrors, hashRequest, rehydrateCacheMetadata } from \"@graphql-box/helpers\";\nimport EventEmitter from \"eventemitter3\";\nimport { castArray, isPlainObject } from \"lodash\";\nimport { v1 as uuid } from \"uuid\";\nimport { GRAPHQL_BOX, MESSAGE, REQUEST, SUBSCRIBE } from \"../consts\";\nimport logRequest from \"../debug/log-request\";\nimport { MessageContext, MessageResponsePayload, PendingResolver, PendingTracker, UserOptions } from \"../defs\";\n\nexport default class WorkerClient {\n private static _getMessageContext({ hasDeferOrStream = false, requestID }: RequestContext): MessageContext {\n return { hasDeferOrStream, requestID };\n }\n\n private _cache: WorkerCachemap;\n private _debugManager: DebugManagerDef | null;\n private _eventEmitter: EventEmitter;\n private _pending: PendingTracker = new Map();\n private _worker: Worker;\n\n constructor(options: UserOptions) {\n const errors: TypeError[] = [];\n\n if (!isPlainObject(options)) {\n errors.push(new TypeError(\"@graphql-box/client expected options to ba a plain object.\"));\n }\n\n if (!options.cache) {\n errors.push(new TypeError(\"@graphql-box/client expected options.cache.\"));\n }\n\n if (!options.worker) {\n errors.push(new TypeError(\"@graphql-box/client expected options.worker.\"));\n }\n\n if (errors.length) {\n throw errors;\n }\n\n this._cache = options.cache;\n this._debugManager = options.debugManager ? options.debugManager() : null;\n this._eventEmitter = new EventEmitter();\n this._worker = options.worker;\n this._addEventListener();\n }\n\n get cache(): WorkerCachemap {\n return this._cache;\n }\n\n public async mutate(request: string, options: RequestOptions = {}, context: MaybeRequestContext = {}) {\n return this._request(request, options, this._getRequestContext(MUTATION, request, context));\n }\n\n public async query(request: string, options: RequestOptions = {}, context: MaybeRequestContext = {}) {\n return this._request(request, options, this._getRequestContext(QUERY, request, context));\n }\n\n public async request(request: string, options: RequestOptions = {}, context: MaybeRequestContext = {}) {\n return this._request(request, options, this._getRequestContext(QUERY, request, context));\n }\n\n public async subscribe(request: string, options: RequestOptions = {}) {\n return this._subscribe(request, options, this._getRequestContext(SUBSCRIPTION, request));\n }\n\n private _addEventListener(): void {\n this._worker.addEventListener(MESSAGE, this._onMessage);\n }\n\n private _getRequestContext(\n operation: ValidOperations,\n request: string,\n context: MaybeRequestContext = {},\n ): RequestContext {\n return {\n debugManager: this._debugManager,\n fieldTypeMap: new Map(),\n operation,\n operationName: \"\",\n queryFiltered: false,\n request,\n requestID: uuid(),\n whitelistHash: hashRequest(request),\n ...context,\n };\n }\n\n private _onMessage = async ({ data }: MessageEvent): Promise<void> => {\n if (!isPlainObject(data)) {\n return;\n }\n\n const { context, method, result, type } = data as MessageResponsePayload;\n\n if (type !== GRAPHQL_BOX || !isPlainObject(result)) {\n return;\n }\n\n const { _cacheMetadata, ...otherProps } = result;\n const response: MaybeRequestResult = deserializeErrors({ ...otherProps, requestID: context.requestID });\n\n if (_cacheMetadata) {\n response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);\n }\n\n if (method === REQUEST) {\n const pending = this._pending.get(context.requestID);\n\n if (!pending) {\n return;\n }\n\n pending.resolve(response);\n } else if (method === SUBSCRIBE || context.hasDeferOrStream) {\n this._eventEmitter.emit(context.requestID, response);\n }\n };\n\n @logRequest()\n private async _request(request: string, options: RequestOptions, context: RequestContext) {\n try {\n if (!context.hasDeferOrStream) {\n return new Promise((resolve: PendingResolver) => {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: REQUEST,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n this._pending.set(context.requestID, { resolve });\n });\n }\n\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: REQUEST,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.requestID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return { errors: castArray(error) };\n }\n }\n\n @logRequest()\n private async _subscribe(request: string, options: RequestOptions, context: RequestContext) {\n try {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: SUBSCRIBE,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.requestID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return { errors: castArray(error) };\n }\n }\n}\n","import { handleMessage as handleCachemapMessage } from \"@cachemap/core-worker\";\nimport Client from \"@graphql-box/client\";\nimport { MaybeRequestResult, MaybeRequestResultWithDehydratedCacheMetadata, RequestOptions } from \"@graphql-box/core\";\nimport { dehydrateCacheMetadata, serializeErrors } from \"@graphql-box/helpers\";\nimport { forAwaitEach, isAsyncIterable } from \"iterall\";\nimport { isPlainObject } from \"lodash\";\nimport { CACHEMAP, GRAPHQL_BOX, MESSAGE, REQUEST, SUBSCRIBE } from \"../consts\";\nimport { MessageContext, MessageRequestPayload, MethodNames, RegisterWorkerOptions } from \"../defs\";\n\nconst { addEventListener, postMessage } = (self as unknown) as DedicatedWorkerGlobalScope;\n\nasync function handleRequest(\n request: string,\n method: MethodNames,\n options: RequestOptions,\n context: MessageContext,\n client: Client,\n): Promise<void> {\n const requestResult = await client.request(request, options, context);\n\n if (!isAsyncIterable(requestResult)) {\n const { _cacheMetadata, ...otherProps } = requestResult as MaybeRequestResult;\n const result: MaybeRequestResultWithDehydratedCacheMetadata = { ...otherProps };\n\n if (_cacheMetadata) {\n result._cacheMetadata = dehydrateCacheMetadata(_cacheMetadata);\n }\n\n postMessage({ context, method, result: serializeErrors(result), type: GRAPHQL_BOX });\n return;\n }\n\n forAwaitEach(requestResult, ({ _cacheMetadata, ...otherProps }: MaybeRequestResult) => {\n const result: MaybeRequestResultWithDehydratedCacheMetadata = { ...otherProps };\n\n if (_cacheMetadata) {\n result._cacheMetadata = dehydrateCacheMetadata(_cacheMetadata);\n }\n\n postMessage({ context, method, result: serializeErrors(result), type: GRAPHQL_BOX });\n });\n}\n\nasync function handleSubscription(\n request: string,\n method: MethodNames,\n options: RequestOptions,\n context: MessageContext,\n client: Client,\n): Promise<void> {\n const subscribeResult = await client.subscribe(request, options, context);\n\n if (!isAsyncIterable(subscribeResult)) {\n postMessage({ context, method, result: serializeErrors(subscribeResult as MaybeRequestResult), type: GRAPHQL_BOX });\n return;\n }\n\n forAwaitEach(subscribeResult, ({ _cacheMetadata, ...otherProps }: MaybeRequestResult) => {\n const result: MaybeRequestResultWithDehydratedCacheMetadata = { ...otherProps };\n\n if (_cacheMetadata) {\n result._cacheMetadata = dehydrateCacheMetadata(_cacheMetadata);\n }\n\n postMessage({ context, method, result: serializeErrors(result), type: GRAPHQL_BOX });\n });\n}\n\nexport function handleMessage(data: MessageRequestPayload, client: Client): void {\n const { context, method, options, request } = data as MessageRequestPayload;\n\n if (method === REQUEST) {\n handleRequest(request, method, options, context, client);\n } else if (method === SUBSCRIBE) {\n handleSubscription(request, method, options, context, client);\n }\n}\n\nexport default async function registerWorker({ client }: RegisterWorkerOptions): Promise<void> {\n function onMessage({ data }: MessageEvent): void {\n if (!isPlainObject(data)) {\n return;\n }\n\n const { type } = data as MessageRequestPayload;\n\n if (type === GRAPHQL_BOX) {\n handleMessage(data, client);\n } else if (type === CACHEMAP && client.cache) {\n handleCachemapMessage(data, client.cache);\n }\n }\n\n addEventListener(MESSAGE, onMessage);\n}\n"],"names":["logRequest","_target","_propertyName","descriptor","method","value","args","Promise","resolve","debugManager","requestID","otherContext","apply","_this","startTime","now","emit","REQUEST_EXECUTED","context","options","request","stats","result","endTime","duration","REQUEST_RESOLVED","reject","WorkerClient","Map","data","_isPlainObject","type","_cacheMetadata","otherProps","response","deserializeErrors","rehydrateCacheMetadata","pending","_pending","get","hasDeferOrStream","_eventEmitter","errors","push","TypeError","cache","worker","length","_cache","_debugManager","EventEmitter","_worker","_addEventListener","this","_request","_getRequestContext","MUTATION","QUERY","_subscribe","SUBSCRIPTION","addEventListener","_onMessage","operation","fieldTypeMap","operationName","queryFiltered","uuid","whitelistHash","hashRequest","_this2","postMessage","_getMessageContext","set","eventAsyncIterator","EventAsyncIterator","getIterator","_castArray","self","client","requestResult","isAsyncIterable","dehydrateCacheMetadata","serializeErrors","forAwaitEach","subscribe","subscribeResult","handleMessage","handleRequest","handleSubscription","registerWorker","onMessage","handleCachemapMessage"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../worker-client/src/consts/index.ts","../worker-client/src/main/index.ts","../worker-client/src/debug/log-request/index.ts","../worker-client/src/debug/log-subscription/index.ts","../worker-client/src/register-worker/index.ts"],"sourcesContent":["export const REQUEST = \"request\";\nexport const SUBSCRIBE = \"subscribe\";\n\nexport const MESSAGE = \"message\";\n\nexport const GRAPHQL_BOX = \"graphqlBox\";\nexport const CACHEMAP = \"cachemap\";\n","import WorkerCachemap from \"@cachemap/core-worker\";\nimport {\n DebugManagerDef,\n MUTATION,\n MaybeRequestContext,\n MaybeRequestResult,\n QUERY,\n REQUEST_RESOLVED,\n RequestContext,\n RequestOptions,\n SUBSCRIPTION,\n SUBSCRIPTION_RESOLVED,\n ValidOperations,\n} from \"@graphql-box/core\";\nimport { EventAsyncIterator, deserializeErrors, hashRequest, rehydrateCacheMetadata } from \"@graphql-box/helpers\";\nimport EventEmitter from \"eventemitter3\";\nimport { castArray, isPlainObject } from \"lodash\";\nimport { v1 as uuid } from \"uuid\";\nimport { GRAPHQL_BOX, MESSAGE, REQUEST, SUBSCRIBE } from \"../consts\";\nimport logRequest from \"../debug/log-request\";\nimport logSubscription from \"../debug/log-subscription\";\nimport { MessageContext, MessageResponsePayload, PendingResolver, PendingTracker, UserOptions } from \"../defs\";\n\nexport default class WorkerClient {\n private static _getMessageContext({ hasDeferOrStream = false, requestID }: RequestContext): MessageContext {\n return { hasDeferOrStream, requestID };\n }\n\n private _cache: WorkerCachemap;\n private _debugManager: DebugManagerDef | null;\n private _eventEmitter: EventEmitter;\n private _pending: PendingTracker = new Map();\n private _worker: Worker;\n\n constructor(options: UserOptions) {\n const errors: TypeError[] = [];\n\n if (!isPlainObject(options)) {\n errors.push(new TypeError(\"@graphql-box/client expected options to ba a plain object.\"));\n }\n\n if (!options.cache) {\n errors.push(new TypeError(\"@graphql-box/client expected options.cache.\"));\n }\n\n if (!options.worker) {\n errors.push(new TypeError(\"@graphql-box/client expected options.worker.\"));\n }\n\n if (errors.length) {\n throw errors;\n }\n\n this._cache = options.cache;\n this._debugManager = options.debugManager ? options.debugManager() : null;\n this._eventEmitter = new EventEmitter();\n this._worker = options.worker;\n this._addEventListener();\n }\n\n get cache(): WorkerCachemap {\n return this._cache;\n }\n\n public async mutate(request: string, options: RequestOptions = {}, context: MaybeRequestContext = {}) {\n return this._request(request, options, this._getRequestContext(MUTATION, request, context));\n }\n\n public async query(request: string, options: RequestOptions = {}, context: MaybeRequestContext = {}) {\n return this._request(request, options, this._getRequestContext(QUERY, request, context));\n }\n\n public async request(request: string, options: RequestOptions = {}, context: MaybeRequestContext = {}) {\n return this._request(request, options, this._getRequestContext(QUERY, request, context));\n }\n\n public async subscribe(request: string, options: RequestOptions = {}) {\n return this._subscribe(request, options, this._getRequestContext(SUBSCRIPTION, request));\n }\n\n private _addEventListener(): void {\n this._worker.addEventListener(MESSAGE, this._onMessage);\n }\n\n private _getRequestContext(\n operation: ValidOperations,\n request: string,\n context: MaybeRequestContext = {},\n ): RequestContext {\n return {\n debugManager: this._debugManager,\n fieldTypeMap: new Map(),\n operation,\n operationName: \"\",\n queryFiltered: false,\n request,\n requestID: uuid(),\n whitelistHash: hashRequest(request),\n ...context,\n };\n }\n\n private _onMessage = async ({ data }: MessageEvent): Promise<void> => {\n if (!isPlainObject(data)) {\n return;\n }\n\n const { context, method, result, type } = data as MessageResponsePayload;\n\n if (type !== GRAPHQL_BOX || !isPlainObject(result)) {\n return;\n }\n\n const { _cacheMetadata, ...otherProps } = result;\n const response: MaybeRequestResult = deserializeErrors({ ...otherProps, requestID: context.requestID });\n\n if (_cacheMetadata) {\n response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);\n }\n\n if (method === SUBSCRIBE) {\n this._debugManager?.log(SUBSCRIPTION_RESOLVED, {\n context,\n result: response,\n stats: { endTime: this._debugManager?.now() },\n });\n\n this._eventEmitter.emit(context.requestID, response);\n } else if (context.hasDeferOrStream) {\n this._debugManager?.log(REQUEST_RESOLVED, {\n context,\n result: response,\n stats: { endTime: this._debugManager?.now() },\n });\n\n this._eventEmitter.emit(context.requestID, response);\n } else {\n const pending = this._pending.get(context.requestID);\n\n if (!pending) {\n return;\n }\n\n pending.resolve(response);\n }\n };\n\n @logRequest()\n private async _request(request: string, options: RequestOptions, context: RequestContext) {\n try {\n if (!context.hasDeferOrStream) {\n return new Promise((resolve: PendingResolver) => {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: REQUEST,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n this._pending.set(context.requestID, { resolve });\n });\n }\n\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: REQUEST,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.requestID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return { errors: castArray(error) };\n }\n }\n\n @logSubscription()\n private async _subscribe(request: string, options: RequestOptions, context: RequestContext) {\n try {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: SUBSCRIBE,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.requestID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return { errors: castArray(error) };\n }\n }\n}\n","import { REQUEST_EXECUTED, REQUEST_RESOLVED, RequestContext } from \"@graphql-box/core\";\nimport { isAsyncIterable } from \"iterall\";\n\nexport default function logRequest() {\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[2] as RequestContext;\n\n if (!debugManager) {\n resolve(await method.apply(this, args));\n return;\n }\n\n const startTime = debugManager.now();\n\n debugManager.log(REQUEST_EXECUTED, {\n context: otherContext,\n options: args[1],\n request: args[0],\n stats: { startTime },\n });\n\n const result = await method.apply(this, args);\n const endTime = debugManager.now();\n const duration = endTime - startTime;\n resolve(result);\n\n if (isAsyncIterable(result)) {\n return;\n }\n\n debugManager.log(REQUEST_RESOLVED, {\n context: otherContext,\n options: args[1],\n request: args[0],\n result,\n stats: { duration, endTime, startTime },\n });\n });\n } catch (error) {\n return Promise.reject(error);\n }\n };\n };\n}\n","import { RequestContext, SUBSCRIPTION_EXECUTED } from \"@graphql-box/core\";\n\nexport default function logSubscription() {\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[2] as RequestContext;\n\n if (!debugManager) {\n resolve(await method.apply(this, args));\n return;\n }\n\n const startTime = debugManager.now();\n\n debugManager.log(SUBSCRIPTION_EXECUTED, {\n context: otherContext,\n options: args[1],\n request: args[0],\n stats: { startTime },\n });\n\n const result = await method.apply(this, args);\n resolve(result);\n });\n } catch (error) {\n return Promise.reject(error);\n }\n };\n };\n}\n","import { handleMessage as handleCachemapMessage } from \"@cachemap/core-worker\";\nimport Client from \"@graphql-box/client\";\nimport { MaybeRequestResult, MaybeRequestResultWithDehydratedCacheMetadata, RequestOptions } from \"@graphql-box/core\";\nimport { dehydrateCacheMetadata, serializeErrors } from \"@graphql-box/helpers\";\nimport { forAwaitEach, isAsyncIterable } from \"iterall\";\nimport { isPlainObject } from \"lodash\";\nimport { CACHEMAP, GRAPHQL_BOX, MESSAGE, REQUEST, SUBSCRIBE } from \"../consts\";\nimport { MessageContext, MessageRequestPayload, MethodNames, RegisterWorkerOptions } from \"../defs\";\n\nconst { addEventListener, postMessage } = (self as unknown) as DedicatedWorkerGlobalScope;\n\nasync function handleRequest(\n request: string,\n method: MethodNames,\n options: RequestOptions,\n context: MessageContext,\n client: Client,\n): Promise<void> {\n const requestResult = await client.request(request, options, context);\n\n if (!isAsyncIterable(requestResult)) {\n const { _cacheMetadata, ...otherProps } = requestResult as MaybeRequestResult;\n const result: MaybeRequestResultWithDehydratedCacheMetadata = { ...otherProps };\n\n if (_cacheMetadata) {\n result._cacheMetadata = dehydrateCacheMetadata(_cacheMetadata);\n }\n\n postMessage({ context, method, result: serializeErrors(result), type: GRAPHQL_BOX });\n return;\n }\n\n forAwaitEach(requestResult, ({ _cacheMetadata, ...otherProps }: MaybeRequestResult) => {\n const result: MaybeRequestResultWithDehydratedCacheMetadata = { ...otherProps };\n\n if (_cacheMetadata) {\n result._cacheMetadata = dehydrateCacheMetadata(_cacheMetadata);\n }\n\n postMessage({ context, method, result: serializeErrors(result), type: GRAPHQL_BOX });\n });\n}\n\nasync function handleSubscription(\n request: string,\n method: MethodNames,\n options: RequestOptions,\n context: MessageContext,\n client: Client,\n): Promise<void> {\n const subscribeResult = await client.subscribe(request, options, context);\n\n if (!isAsyncIterable(subscribeResult)) {\n postMessage({ context, method, result: serializeErrors(subscribeResult as MaybeRequestResult), type: GRAPHQL_BOX });\n return;\n }\n\n forAwaitEach(subscribeResult, ({ _cacheMetadata, ...otherProps }: MaybeRequestResult) => {\n const result: MaybeRequestResultWithDehydratedCacheMetadata = { ...otherProps };\n\n if (_cacheMetadata) {\n result._cacheMetadata = dehydrateCacheMetadata(_cacheMetadata);\n }\n\n postMessage({ context, method, result: serializeErrors(result), type: GRAPHQL_BOX });\n });\n}\n\nexport function handleMessage(data: MessageRequestPayload, client: Client): void {\n const { context, method, options, request } = data as MessageRequestPayload;\n\n if (method === REQUEST) {\n handleRequest(request, method, options, context, client);\n } else if (method === SUBSCRIBE) {\n handleSubscription(request, method, options, context, client);\n }\n}\n\nexport default async function registerWorker({ client }: RegisterWorkerOptions): Promise<void> {\n function onMessage({ data }: MessageEvent): void {\n if (!isPlainObject(data)) {\n return;\n }\n\n const { type } = data as MessageRequestPayload;\n\n if (type === GRAPHQL_BOX) {\n handleMessage(data, client);\n } else if (type === CACHEMAP && client.cache) {\n handleCachemapMessage(data, client.cache);\n }\n }\n\n addEventListener(MESSAGE, onMessage);\n}\n"],"names":["WorkerClient","_target","_propertyName","descriptor","method","value","args","Promise","resolve","debugManager","otherContext","apply","_this","startTime","now","log","REQUEST_EXECUTED","context","options","request","stats","result","endTime","duration","isAsyncIterable","REQUEST_RESOLVED","reject","SUBSCRIPTION_EXECUTED","Map","data","_isPlainObject","type","_cacheMetadata","otherProps","response","deserializeErrors","requestID","rehydrateCacheMetadata","_debugManager","SUBSCRIPTION_RESOLVED","_this$_debugManager2","_eventEmitter","emit","hasDeferOrStream","_this$_debugManager4","pending","_pending","get","errors","push","TypeError","cache","worker","length","_cache","EventEmitter","_worker","_addEventListener","this","_request","_getRequestContext","MUTATION","QUERY","_subscribe","SUBSCRIPTION","addEventListener","_onMessage","operation","fieldTypeMap","operationName","queryFiltered","uuid","whitelistHash","hashRequest","_this2","postMessage","_getMessageContext","set","eventAsyncIterator","EventAsyncIterator","getIterator","_castArray","self","client","requestResult","dehydrateCacheMetadata","serializeErrors","forAwaitEach","subscribe","subscribeResult","handleMessage","handleRequest","handleSubscription","registerWorker","onMessage","handleCachemapMessage"],"mappings":"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"}
@@ -1,41 +1,50 @@
1
1
  -----------------------------
2
2
  Rollup File Analysis
3
3
  -----------------------------
4
- bundle size: 23.953 KB
5
- original size: 11.951 KB
4
+ bundle size: 28.786 KB
5
+ original size: 13.585 KB
6
6
  code reduction: 0 %
7
- module count: 6
7
+ module count: 7
8
8
 
9
- ███████████████████████████░░░░░░░░░░░░░░░░░░░░░░░
9
+ ████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░
10
10
  file: /src/main/index.ts
11
- bundle space: 54.84 %
12
- rendered size: 13.136 KB
13
- original size: 5.563 KB
11
+ bundle space: 49.82 %
12
+ rendered size: 14.341 KB
13
+ original size: 6.044 KB
14
14
  code reduction: 0 %
15
15
  dependents: 1
16
16
  - /src/index.ts
17
17
 
18
- █████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
18
+ ███████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
19
19
  file: /src/register-worker/index.ts
20
- bundle space: 26.58 %
20
+ bundle space: 22.11 %
21
21
  rendered size: 6.366 KB
22
22
  original size: 3.377 KB
23
23
  code reduction: 0 %
24
24
  dependents: 1
25
25
  - /src/index.ts
26
26
 
27
- █████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
27
+ ███████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
28
28
  file: /src/debug/log-request/index.ts
29
- bundle space: 18.01 %
30
- rendered size: 4.314 KB
31
- original size: 1.481 KB
29
+ bundle space: 15.4 %
30
+ rendered size: 4.432 KB
31
+ original size: 1.539 KB
32
+ code reduction: 0 %
33
+ dependents: 1
34
+ - /src/main/index.ts
35
+
36
+ ██████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
37
+ file: /src/debug/log-subscription/index.ts
38
+ bundle space: 12.19 %
39
+ rendered size: 3.51 KB
40
+ original size: 1.095 KB
32
41
  code reduction: 0 %
33
42
  dependents: 1
34
43
  - /src/main/index.ts
35
44
 
36
45
  ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
37
46
  file: /src/consts/index.ts
38
- bundle space: 0.57 %
47
+ bundle space: 0.48 %
39
48
  rendered size: 137 Bytes
40
49
  original size: 185 Bytes
41
50
  code reduction: 25.95 %
@@ -9,6 +9,8 @@ require("core-js/modules/es.promise.js");
9
9
 
10
10
  var _core = require("@graphql-box/core");
11
11
 
12
+ var _iterall = require("iterall");
13
+
12
14
  function logRequest() {
13
15
  return (_target, _propertyName, descriptor) => {
14
16
  const method = descriptor.value;
@@ -19,7 +21,6 @@ function logRequest() {
19
21
  return new Promise(async resolve => {
20
22
  const {
21
23
  debugManager,
22
- requestID,
23
24
  ...otherContext
24
25
  } = args[2];
25
26
 
@@ -29,11 +30,10 @@ function logRequest() {
29
30
  }
30
31
 
31
32
  const startTime = debugManager.now();
32
- debugManager.emit(_core.REQUEST_EXECUTED, {
33
+ debugManager.log(_core.REQUEST_EXECUTED, {
33
34
  context: otherContext,
34
35
  options: args[1],
35
36
  request: args[0],
36
- requestID,
37
37
  stats: {
38
38
  startTime
39
39
  }
@@ -42,11 +42,15 @@ function logRequest() {
42
42
  const endTime = debugManager.now();
43
43
  const duration = endTime - startTime;
44
44
  resolve(result);
45
- debugManager.emit(_core.REQUEST_RESOLVED, {
45
+
46
+ if ((0, _iterall.isAsyncIterable)(result)) {
47
+ return;
48
+ }
49
+
50
+ debugManager.log(_core.REQUEST_RESOLVED, {
46
51
  context: otherContext,
47
52
  options: args[1],
48
53
  request: args[0],
49
- requestID,
50
54
  result,
51
55
  stats: {
52
56
  duration,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/debug/log-request/index.ts"],"names":["logRequest","_target","_propertyName","descriptor","method","value","descriptorValue","args","Promise","resolve","debugManager","requestID","otherContext","apply","startTime","now","emit","REQUEST_EXECUTED","context","options","request","stats","result","endTime","duration","REQUEST_RESOLVED","error","reject"],"mappings":";;;;;;;;;AAAA;;AAEe,SAASA,UAAT,GAAsB;AACnC,SAAO,CACLC,OADK,EAELC,aAFK,EAGLC,UAHK,KAII;AACT,UAAMC,MAAM,GAAGD,UAAU,CAACE,KAA1B;AACA,QAAI,CAACD,MAAL,EAAa;;AAEbD,IAAAA,UAAU,CAACE,KAAX,GAAmB,eAAeC,eAAf,CAA+B,GAAGC,IAAlC,EAA6D;AAC9E,UAAI;AACF,eAAO,IAAIC,OAAJ,CAAY,MAAMC,OAAN,IAAiB;AAClC,gBAAM;AAAEC,YAAAA,YAAF;AAAgBC,YAAAA,SAAhB;AAA2B,eAAGC;AAA9B,cAA+CL,IAAI,CAAC,CAAD,CAAzD;;AAEA,cAAI,CAACG,YAAL,EAAmB;AACjBD,YAAAA,OAAO,CAAC,MAAML,MAAM,CAACS,KAAP,CAAa,IAAb,EAAmBN,IAAnB,CAAP,CAAP;AACA;AACD;;AAED,gBAAMO,SAAS,GAAGJ,YAAY,CAACK,GAAb,EAAlB;AAEAL,UAAAA,YAAY,CAACM,IAAb,CAAkBC,sBAAlB,EAAoC;AAClCC,YAAAA,OAAO,EAAEN,YADyB;AAElCO,YAAAA,OAAO,EAAEZ,IAAI,CAAC,CAAD,CAFqB;AAGlCa,YAAAA,OAAO,EAAEb,IAAI,CAAC,CAAD,CAHqB;AAIlCI,YAAAA,SAJkC;AAKlCU,YAAAA,KAAK,EAAE;AAAEP,cAAAA;AAAF;AAL2B,WAApC;AAQA,gBAAMQ,MAAM,GAAG,MAAMlB,MAAM,CAACS,KAAP,CAAa,IAAb,EAAmBN,IAAnB,CAArB;AACA,gBAAMgB,OAAO,GAAGb,YAAY,CAACK,GAAb,EAAhB;AACA,gBAAMS,QAAQ,GAAGD,OAAO,GAAGT,SAA3B;AACAL,UAAAA,OAAO,CAACa,MAAD,CAAP;AAEAZ,UAAAA,YAAY,CAACM,IAAb,CAAkBS,sBAAlB,EAAoC;AAClCP,YAAAA,OAAO,EAAEN,YADyB;AAElCO,YAAAA,OAAO,EAAEZ,IAAI,CAAC,CAAD,CAFqB;AAGlCa,YAAAA,OAAO,EAAEb,IAAI,CAAC,CAAD,CAHqB;AAIlCI,YAAAA,SAJkC;AAKlCW,YAAAA,MALkC;AAMlCD,YAAAA,KAAK,EAAE;AAAEG,cAAAA,QAAF;AAAYD,cAAAA,OAAZ;AAAqBT,cAAAA;AAArB;AAN2B,WAApC;AAQD,SA/BM,CAAP;AAgCD,OAjCD,CAiCE,OAAOY,KAAP,EAAc;AACd,eAAOlB,OAAO,CAACmB,MAAR,CAAeD,KAAf,CAAP;AACD;AACF,KArCD;AAsCD,GA9CD;AA+CD","sourcesContent":["import { REQUEST_EXECUTED, REQUEST_RESOLVED, RequestContext } from \"@graphql-box/core\";\n\nexport default function logRequest() {\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, requestID, ...otherContext } = args[2] as RequestContext;\n\n if (!debugManager) {\n resolve(await method.apply(this, args));\n return;\n }\n\n const startTime = debugManager.now();\n\n debugManager.emit(REQUEST_EXECUTED, {\n context: otherContext,\n options: args[1],\n request: args[0],\n requestID,\n stats: { startTime },\n });\n\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(REQUEST_RESOLVED, {\n context: otherContext,\n options: args[1],\n request: args[0],\n requestID,\n result,\n stats: { duration, endTime, startTime },\n });\n });\n } catch (error) {\n return Promise.reject(error);\n }\n };\n };\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/debug/log-request/index.ts"],"names":["logRequest","_target","_propertyName","descriptor","method","value","descriptorValue","args","Promise","resolve","debugManager","otherContext","apply","startTime","now","log","REQUEST_EXECUTED","context","options","request","stats","result","endTime","duration","REQUEST_RESOLVED","error","reject"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEe,SAASA,UAAT,GAAsB;AACnC,SAAO,CACLC,OADK,EAELC,aAFK,EAGLC,UAHK,KAII;AACT,UAAMC,MAAM,GAAGD,UAAU,CAACE,KAA1B;AACA,QAAI,CAACD,MAAL,EAAa;;AAEbD,IAAAA,UAAU,CAACE,KAAX,GAAmB,eAAeC,eAAf,CAA+B,GAAGC,IAAlC,EAA6D;AAC9E,UAAI;AACF,eAAO,IAAIC,OAAJ,CAAY,MAAMC,OAAN,IAAiB;AAClC,gBAAM;AAAEC,YAAAA,YAAF;AAAgB,eAAGC;AAAnB,cAAoCJ,IAAI,CAAC,CAAD,CAA9C;;AAEA,cAAI,CAACG,YAAL,EAAmB;AACjBD,YAAAA,OAAO,CAAC,MAAML,MAAM,CAACQ,KAAP,CAAa,IAAb,EAAmBL,IAAnB,CAAP,CAAP;AACA;AACD;;AAED,gBAAMM,SAAS,GAAGH,YAAY,CAACI,GAAb,EAAlB;AAEAJ,UAAAA,YAAY,CAACK,GAAb,CAAiBC,sBAAjB,EAAmC;AACjCC,YAAAA,OAAO,EAAEN,YADwB;AAEjCO,YAAAA,OAAO,EAAEX,IAAI,CAAC,CAAD,CAFoB;AAGjCY,YAAAA,OAAO,EAAEZ,IAAI,CAAC,CAAD,CAHoB;AAIjCa,YAAAA,KAAK,EAAE;AAAEP,cAAAA;AAAF;AAJ0B,WAAnC;AAOA,gBAAMQ,MAAM,GAAG,MAAMjB,MAAM,CAACQ,KAAP,CAAa,IAAb,EAAmBL,IAAnB,CAArB;AACA,gBAAMe,OAAO,GAAGZ,YAAY,CAACI,GAAb,EAAhB;AACA,gBAAMS,QAAQ,GAAGD,OAAO,GAAGT,SAA3B;AACAJ,UAAAA,OAAO,CAACY,MAAD,CAAP;;AAEA,cAAI,8BAAgBA,MAAhB,CAAJ,EAA6B;AAC3B;AACD;;AAEDX,UAAAA,YAAY,CAACK,GAAb,CAAiBS,sBAAjB,EAAmC;AACjCP,YAAAA,OAAO,EAAEN,YADwB;AAEjCO,YAAAA,OAAO,EAAEX,IAAI,CAAC,CAAD,CAFoB;AAGjCY,YAAAA,OAAO,EAAEZ,IAAI,CAAC,CAAD,CAHoB;AAIjCc,YAAAA,MAJiC;AAKjCD,YAAAA,KAAK,EAAE;AAAEG,cAAAA,QAAF;AAAYD,cAAAA,OAAZ;AAAqBT,cAAAA;AAArB;AAL0B,WAAnC;AAOD,SAjCM,CAAP;AAkCD,OAnCD,CAmCE,OAAOY,KAAP,EAAc;AACd,eAAOjB,OAAO,CAACkB,MAAR,CAAeD,KAAf,CAAP;AACD;AACF,KAvCD;AAwCD,GAhDD;AAiDD","sourcesContent":["import { REQUEST_EXECUTED, REQUEST_RESOLVED, RequestContext } from \"@graphql-box/core\";\nimport { isAsyncIterable } from \"iterall\";\n\nexport default function logRequest() {\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[2] as RequestContext;\n\n if (!debugManager) {\n resolve(await method.apply(this, args));\n return;\n }\n\n const startTime = debugManager.now();\n\n debugManager.log(REQUEST_EXECUTED, {\n context: otherContext,\n options: args[1],\n request: args[0],\n stats: { startTime },\n });\n\n const result = await method.apply(this, args);\n const endTime = debugManager.now();\n const duration = endTime - startTime;\n resolve(result);\n\n if (isAsyncIterable(result)) {\n return;\n }\n\n debugManager.log(REQUEST_RESOLVED, {\n context: otherContext,\n options: args[1],\n request: args[0],\n result,\n stats: { duration, endTime, startTime },\n });\n });\n } catch (error) {\n return Promise.reject(error);\n }\n };\n };\n}\n"],"file":"index.js"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = logSubscription;
7
+
8
+ require("core-js/modules/es.promise.js");
9
+
10
+ var _core = require("@graphql-box/core");
11
+
12
+ function logSubscription() {
13
+ return (_target, _propertyName, descriptor) => {
14
+ const method = descriptor.value;
15
+ if (!method) return;
16
+
17
+ descriptor.value = async function descriptorValue(...args) {
18
+ try {
19
+ return new Promise(async resolve => {
20
+ const {
21
+ debugManager,
22
+ ...otherContext
23
+ } = args[2];
24
+
25
+ if (!debugManager) {
26
+ resolve(await method.apply(this, args));
27
+ return;
28
+ }
29
+
30
+ const startTime = debugManager.now();
31
+ debugManager.log(_core.SUBSCRIPTION_EXECUTED, {
32
+ context: otherContext,
33
+ options: args[1],
34
+ request: args[0],
35
+ stats: {
36
+ startTime
37
+ }
38
+ });
39
+ const result = await method.apply(this, args);
40
+ resolve(result);
41
+ });
42
+ } catch (error) {
43
+ return Promise.reject(error);
44
+ }
45
+ };
46
+ };
47
+ }
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/debug/log-subscription/index.ts"],"names":["logSubscription","_target","_propertyName","descriptor","method","value","descriptorValue","args","Promise","resolve","debugManager","otherContext","apply","startTime","now","log","SUBSCRIPTION_EXECUTED","context","options","request","stats","result","error","reject"],"mappings":";;;;;;;;;AAAA;;AAEe,SAASA,eAAT,GAA2B;AACxC,SAAO,CACLC,OADK,EAELC,aAFK,EAGLC,UAHK,KAII;AACT,UAAMC,MAAM,GAAGD,UAAU,CAACE,KAA1B;AACA,QAAI,CAACD,MAAL,EAAa;;AAEbD,IAAAA,UAAU,CAACE,KAAX,GAAmB,eAAeC,eAAf,CAA+B,GAAGC,IAAlC,EAA6D;AAC9E,UAAI;AACF,eAAO,IAAIC,OAAJ,CAAY,MAAMC,OAAN,IAAiB;AAClC,gBAAM;AAAEC,YAAAA,YAAF;AAAgB,eAAGC;AAAnB,cAAoCJ,IAAI,CAAC,CAAD,CAA9C;;AAEA,cAAI,CAACG,YAAL,EAAmB;AACjBD,YAAAA,OAAO,CAAC,MAAML,MAAM,CAACQ,KAAP,CAAa,IAAb,EAAmBL,IAAnB,CAAP,CAAP;AACA;AACD;;AAED,gBAAMM,SAAS,GAAGH,YAAY,CAACI,GAAb,EAAlB;AAEAJ,UAAAA,YAAY,CAACK,GAAb,CAAiBC,2BAAjB,EAAwC;AACtCC,YAAAA,OAAO,EAAEN,YAD6B;AAEtCO,YAAAA,OAAO,EAAEX,IAAI,CAAC,CAAD,CAFyB;AAGtCY,YAAAA,OAAO,EAAEZ,IAAI,CAAC,CAAD,CAHyB;AAItCa,YAAAA,KAAK,EAAE;AAAEP,cAAAA;AAAF;AAJ+B,WAAxC;AAOA,gBAAMQ,MAAM,GAAG,MAAMjB,MAAM,CAACQ,KAAP,CAAa,IAAb,EAAmBL,IAAnB,CAArB;AACAE,UAAAA,OAAO,CAACY,MAAD,CAAP;AACD,SAnBM,CAAP;AAoBD,OArBD,CAqBE,OAAOC,KAAP,EAAc;AACd,eAAOd,OAAO,CAACe,MAAR,CAAeD,KAAf,CAAP;AACD;AACF,KAzBD;AA0BD,GAlCD;AAmCD","sourcesContent":["import { RequestContext, SUBSCRIPTION_EXECUTED } from \"@graphql-box/core\";\n\nexport default function logSubscription() {\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[2] as RequestContext;\n\n if (!debugManager) {\n resolve(await method.apply(this, args));\n return;\n }\n\n const startTime = debugManager.now();\n\n debugManager.log(SUBSCRIPTION_EXECUTED, {\n context: otherContext,\n options: args[1],\n request: args[0],\n stats: { startTime },\n });\n\n const result = await method.apply(this, args);\n resolve(result);\n });\n } catch (error) {\n return Promise.reject(error);\n }\n };\n };\n}\n"],"file":"index.js"}
@@ -29,9 +29,11 @@ var _consts = require("../consts");
29
29
 
30
30
  var _logRequest = _interopRequireDefault(require("../debug/log-request"));
31
31
 
32
+ var _logSubscription = _interopRequireDefault(require("../debug/log-subscription"));
33
+
32
34
  var _dec, _dec2, _class;
33
35
 
34
- let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logRequest.default)(), (_class = class WorkerClient {
36
+ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logSubscription.default)(), (_class = class WorkerClient {
35
37
  static _getMessageContext({
36
38
  hasDeferOrStream = false,
37
39
  requestID
@@ -78,7 +80,31 @@ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logRequest.d
78
80
  response._cacheMetadata = (0, _helpers.rehydrateCacheMetadata)(_cacheMetadata);
79
81
  }
80
82
 
81
- if (method === _consts.REQUEST) {
83
+ if (method === _consts.SUBSCRIBE) {
84
+ var _this$_debugManager, _this$_debugManager2;
85
+
86
+ (_this$_debugManager = this._debugManager) === null || _this$_debugManager === void 0 ? void 0 : _this$_debugManager.log(_core.SUBSCRIPTION_RESOLVED, {
87
+ context,
88
+ result: response,
89
+ stats: {
90
+ endTime: (_this$_debugManager2 = this._debugManager) === null || _this$_debugManager2 === void 0 ? void 0 : _this$_debugManager2.now()
91
+ }
92
+ });
93
+
94
+ this._eventEmitter.emit(context.requestID, response);
95
+ } else if (context.hasDeferOrStream) {
96
+ var _this$_debugManager3, _this$_debugManager4;
97
+
98
+ (_this$_debugManager3 = this._debugManager) === null || _this$_debugManager3 === void 0 ? void 0 : _this$_debugManager3.log(_core.REQUEST_RESOLVED, {
99
+ context,
100
+ result: response,
101
+ stats: {
102
+ endTime: (_this$_debugManager4 = this._debugManager) === null || _this$_debugManager4 === void 0 ? void 0 : _this$_debugManager4.now()
103
+ }
104
+ });
105
+
106
+ this._eventEmitter.emit(context.requestID, response);
107
+ } else {
82
108
  const pending = this._pending.get(context.requestID);
83
109
 
84
110
  if (!pending) {
@@ -86,8 +112,6 @@ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logRequest.d
86
112
  }
87
113
 
88
114
  pending.resolve(response);
89
- } else if (method === _consts.SUBSCRIBE || context.hasDeferOrStream) {
90
- this._eventEmitter.emit(context.requestID, response);
91
115
  }
92
116
  });
93
117
  const errors = [];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/main/index.ts"],"names":["WorkerClient","_getMessageContext","hasDeferOrStream","requestID","constructor","options","Map","data","context","method","result","type","GRAPHQL_BOX","_cacheMetadata","otherProps","response","REQUEST","pending","_pending","get","resolve","SUBSCRIBE","_eventEmitter","emit","errors","push","TypeError","cache","worker","length","_cache","_debugManager","debugManager","EventEmitter","_worker","_addEventListener","mutate","request","_request","_getRequestContext","MUTATION","query","QUERY","subscribe","_subscribe","SUBSCRIPTION","addEventListener","MESSAGE","_onMessage","operation","fieldTypeMap","operationName","queryFiltered","whitelistHash","Promise","postMessage","set","eventAsyncIterator","EventAsyncIterator","getIterator","error"],"mappings":"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","sourcesContent":["import WorkerCachemap from \"@cachemap/core-worker\";\nimport {\n DebugManagerDef,\n MUTATION,\n MaybeRequestContext,\n MaybeRequestResult,\n QUERY,\n RequestContext,\n RequestOptions,\n SUBSCRIPTION,\n ValidOperations,\n} from \"@graphql-box/core\";\nimport { EventAsyncIterator, deserializeErrors, hashRequest, rehydrateCacheMetadata } from \"@graphql-box/helpers\";\nimport EventEmitter from \"eventemitter3\";\nimport { castArray, isPlainObject } from \"lodash\";\nimport { v1 as uuid } from \"uuid\";\nimport { GRAPHQL_BOX, MESSAGE, REQUEST, SUBSCRIBE } from \"../consts\";\nimport logRequest from \"../debug/log-request\";\nimport { MessageContext, MessageResponsePayload, PendingResolver, PendingTracker, UserOptions } from \"../defs\";\n\nexport default class WorkerClient {\n private static _getMessageContext({ hasDeferOrStream = false, requestID }: RequestContext): MessageContext {\n return { hasDeferOrStream, requestID };\n }\n\n private _cache: WorkerCachemap;\n private _debugManager: DebugManagerDef | null;\n private _eventEmitter: EventEmitter;\n private _pending: PendingTracker = new Map();\n private _worker: Worker;\n\n constructor(options: UserOptions) {\n const errors: TypeError[] = [];\n\n if (!isPlainObject(options)) {\n errors.push(new TypeError(\"@graphql-box/client expected options to ba a plain object.\"));\n }\n\n if (!options.cache) {\n errors.push(new TypeError(\"@graphql-box/client expected options.cache.\"));\n }\n\n if (!options.worker) {\n errors.push(new TypeError(\"@graphql-box/client expected options.worker.\"));\n }\n\n if (errors.length) {\n throw errors;\n }\n\n this._cache = options.cache;\n this._debugManager = options.debugManager ? options.debugManager() : null;\n this._eventEmitter = new EventEmitter();\n this._worker = options.worker;\n this._addEventListener();\n }\n\n get cache(): WorkerCachemap {\n return this._cache;\n }\n\n public async mutate(request: string, options: RequestOptions = {}, context: MaybeRequestContext = {}) {\n return this._request(request, options, this._getRequestContext(MUTATION, request, context));\n }\n\n public async query(request: string, options: RequestOptions = {}, context: MaybeRequestContext = {}) {\n return this._request(request, options, this._getRequestContext(QUERY, request, context));\n }\n\n public async request(request: string, options: RequestOptions = {}, context: MaybeRequestContext = {}) {\n return this._request(request, options, this._getRequestContext(QUERY, request, context));\n }\n\n public async subscribe(request: string, options: RequestOptions = {}) {\n return this._subscribe(request, options, this._getRequestContext(SUBSCRIPTION, request));\n }\n\n private _addEventListener(): void {\n this._worker.addEventListener(MESSAGE, this._onMessage);\n }\n\n private _getRequestContext(\n operation: ValidOperations,\n request: string,\n context: MaybeRequestContext = {},\n ): RequestContext {\n return {\n debugManager: this._debugManager,\n fieldTypeMap: new Map(),\n operation,\n operationName: \"\",\n queryFiltered: false,\n request,\n requestID: uuid(),\n whitelistHash: hashRequest(request),\n ...context,\n };\n }\n\n private _onMessage = async ({ data }: MessageEvent): Promise<void> => {\n if (!isPlainObject(data)) {\n return;\n }\n\n const { context, method, result, type } = data as MessageResponsePayload;\n\n if (type !== GRAPHQL_BOX || !isPlainObject(result)) {\n return;\n }\n\n const { _cacheMetadata, ...otherProps } = result;\n const response: MaybeRequestResult = deserializeErrors({ ...otherProps, requestID: context.requestID });\n\n if (_cacheMetadata) {\n response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);\n }\n\n if (method === REQUEST) {\n const pending = this._pending.get(context.requestID);\n\n if (!pending) {\n return;\n }\n\n pending.resolve(response);\n } else if (method === SUBSCRIBE || context.hasDeferOrStream) {\n this._eventEmitter.emit(context.requestID, response);\n }\n };\n\n @logRequest()\n private async _request(request: string, options: RequestOptions, context: RequestContext) {\n try {\n if (!context.hasDeferOrStream) {\n return new Promise((resolve: PendingResolver) => {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: REQUEST,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n this._pending.set(context.requestID, { resolve });\n });\n }\n\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: REQUEST,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.requestID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return { errors: castArray(error) };\n }\n }\n\n @logRequest()\n private async _subscribe(request: string, options: RequestOptions, context: RequestContext) {\n try {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: SUBSCRIBE,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.requestID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return { errors: castArray(error) };\n }\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/main/index.ts"],"names":["WorkerClient","_getMessageContext","hasDeferOrStream","requestID","constructor","options","Map","data","context","method","result","type","GRAPHQL_BOX","_cacheMetadata","otherProps","response","SUBSCRIBE","_debugManager","log","SUBSCRIPTION_RESOLVED","stats","endTime","now","_eventEmitter","emit","REQUEST_RESOLVED","pending","_pending","get","resolve","errors","push","TypeError","cache","worker","length","_cache","debugManager","EventEmitter","_worker","_addEventListener","mutate","request","_request","_getRequestContext","MUTATION","query","QUERY","subscribe","_subscribe","SUBSCRIPTION","addEventListener","MESSAGE","_onMessage","operation","fieldTypeMap","operationName","queryFiltered","whitelistHash","Promise","postMessage","REQUEST","set","eventAsyncIterator","EventAsyncIterator","getIterator","error"],"mappings":"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","sourcesContent":["import WorkerCachemap from \"@cachemap/core-worker\";\nimport {\n DebugManagerDef,\n MUTATION,\n MaybeRequestContext,\n MaybeRequestResult,\n QUERY,\n REQUEST_RESOLVED,\n RequestContext,\n RequestOptions,\n SUBSCRIPTION,\n SUBSCRIPTION_RESOLVED,\n ValidOperations,\n} from \"@graphql-box/core\";\nimport { EventAsyncIterator, deserializeErrors, hashRequest, rehydrateCacheMetadata } from \"@graphql-box/helpers\";\nimport EventEmitter from \"eventemitter3\";\nimport { castArray, isPlainObject } from \"lodash\";\nimport { v1 as uuid } from \"uuid\";\nimport { GRAPHQL_BOX, MESSAGE, REQUEST, SUBSCRIBE } from \"../consts\";\nimport logRequest from \"../debug/log-request\";\nimport logSubscription from \"../debug/log-subscription\";\nimport { MessageContext, MessageResponsePayload, PendingResolver, PendingTracker, UserOptions } from \"../defs\";\n\nexport default class WorkerClient {\n private static _getMessageContext({ hasDeferOrStream = false, requestID }: RequestContext): MessageContext {\n return { hasDeferOrStream, requestID };\n }\n\n private _cache: WorkerCachemap;\n private _debugManager: DebugManagerDef | null;\n private _eventEmitter: EventEmitter;\n private _pending: PendingTracker = new Map();\n private _worker: Worker;\n\n constructor(options: UserOptions) {\n const errors: TypeError[] = [];\n\n if (!isPlainObject(options)) {\n errors.push(new TypeError(\"@graphql-box/client expected options to ba a plain object.\"));\n }\n\n if (!options.cache) {\n errors.push(new TypeError(\"@graphql-box/client expected options.cache.\"));\n }\n\n if (!options.worker) {\n errors.push(new TypeError(\"@graphql-box/client expected options.worker.\"));\n }\n\n if (errors.length) {\n throw errors;\n }\n\n this._cache = options.cache;\n this._debugManager = options.debugManager ? options.debugManager() : null;\n this._eventEmitter = new EventEmitter();\n this._worker = options.worker;\n this._addEventListener();\n }\n\n get cache(): WorkerCachemap {\n return this._cache;\n }\n\n public async mutate(request: string, options: RequestOptions = {}, context: MaybeRequestContext = {}) {\n return this._request(request, options, this._getRequestContext(MUTATION, request, context));\n }\n\n public async query(request: string, options: RequestOptions = {}, context: MaybeRequestContext = {}) {\n return this._request(request, options, this._getRequestContext(QUERY, request, context));\n }\n\n public async request(request: string, options: RequestOptions = {}, context: MaybeRequestContext = {}) {\n return this._request(request, options, this._getRequestContext(QUERY, request, context));\n }\n\n public async subscribe(request: string, options: RequestOptions = {}) {\n return this._subscribe(request, options, this._getRequestContext(SUBSCRIPTION, request));\n }\n\n private _addEventListener(): void {\n this._worker.addEventListener(MESSAGE, this._onMessage);\n }\n\n private _getRequestContext(\n operation: ValidOperations,\n request: string,\n context: MaybeRequestContext = {},\n ): RequestContext {\n return {\n debugManager: this._debugManager,\n fieldTypeMap: new Map(),\n operation,\n operationName: \"\",\n queryFiltered: false,\n request,\n requestID: uuid(),\n whitelistHash: hashRequest(request),\n ...context,\n };\n }\n\n private _onMessage = async ({ data }: MessageEvent): Promise<void> => {\n if (!isPlainObject(data)) {\n return;\n }\n\n const { context, method, result, type } = data as MessageResponsePayload;\n\n if (type !== GRAPHQL_BOX || !isPlainObject(result)) {\n return;\n }\n\n const { _cacheMetadata, ...otherProps } = result;\n const response: MaybeRequestResult = deserializeErrors({ ...otherProps, requestID: context.requestID });\n\n if (_cacheMetadata) {\n response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);\n }\n\n if (method === SUBSCRIBE) {\n this._debugManager?.log(SUBSCRIPTION_RESOLVED, {\n context,\n result: response,\n stats: { endTime: this._debugManager?.now() },\n });\n\n this._eventEmitter.emit(context.requestID, response);\n } else if (context.hasDeferOrStream) {\n this._debugManager?.log(REQUEST_RESOLVED, {\n context,\n result: response,\n stats: { endTime: this._debugManager?.now() },\n });\n\n this._eventEmitter.emit(context.requestID, response);\n } else {\n const pending = this._pending.get(context.requestID);\n\n if (!pending) {\n return;\n }\n\n pending.resolve(response);\n }\n };\n\n @logRequest()\n private async _request(request: string, options: RequestOptions, context: RequestContext) {\n try {\n if (!context.hasDeferOrStream) {\n return new Promise((resolve: PendingResolver) => {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: REQUEST,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n this._pending.set(context.requestID, { resolve });\n });\n }\n\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: REQUEST,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.requestID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return { errors: castArray(error) };\n }\n }\n\n @logSubscription()\n private async _subscribe(request: string, options: RequestOptions, context: RequestContext) {\n try {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: SUBSCRIBE,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.requestID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return { errors: castArray(error) };\n }\n }\n}\n"],"file":"index.js"}
@@ -1,5 +1,6 @@
1
1
  import "core-js/modules/es.promise.js";
2
2
  import { REQUEST_EXECUTED, REQUEST_RESOLVED } from "@graphql-box/core";
3
+ import { isAsyncIterable } from "iterall";
3
4
  export default function logRequest() {
4
5
  return (_target, _propertyName, descriptor) => {
5
6
  const method = descriptor.value;
@@ -10,7 +11,6 @@ export default function logRequest() {
10
11
  return new Promise(async resolve => {
11
12
  const {
12
13
  debugManager,
13
- requestID,
14
14
  ...otherContext
15
15
  } = args[2];
16
16
 
@@ -20,11 +20,10 @@ export default function logRequest() {
20
20
  }
21
21
 
22
22
  const startTime = debugManager.now();
23
- debugManager.emit(REQUEST_EXECUTED, {
23
+ debugManager.log(REQUEST_EXECUTED, {
24
24
  context: otherContext,
25
25
  options: args[1],
26
26
  request: args[0],
27
- requestID,
28
27
  stats: {
29
28
  startTime
30
29
  }
@@ -33,11 +32,15 @@ export default function logRequest() {
33
32
  const endTime = debugManager.now();
34
33
  const duration = endTime - startTime;
35
34
  resolve(result);
36
- debugManager.emit(REQUEST_RESOLVED, {
35
+
36
+ if (isAsyncIterable(result)) {
37
+ return;
38
+ }
39
+
40
+ debugManager.log(REQUEST_RESOLVED, {
37
41
  context: otherContext,
38
42
  options: args[1],
39
43
  request: args[0],
40
- requestID,
41
44
  result,
42
45
  stats: {
43
46
  duration,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/debug/log-request/index.ts"],"names":["REQUEST_EXECUTED","REQUEST_RESOLVED","logRequest","_target","_propertyName","descriptor","method","value","descriptorValue","args","Promise","resolve","debugManager","requestID","otherContext","apply","startTime","now","emit","context","options","request","stats","result","endTime","duration","error","reject"],"mappings":";AAAA,SAASA,gBAAT,EAA2BC,gBAA3B,QAAmE,mBAAnE;AAEA,eAAe,SAASC,UAAT,GAAsB;AACnC,SAAO,CACLC,OADK,EAELC,aAFK,EAGLC,UAHK,KAII;AACT,UAAMC,MAAM,GAAGD,UAAU,CAACE,KAA1B;AACA,QAAI,CAACD,MAAL,EAAa;;AAEbD,IAAAA,UAAU,CAACE,KAAX,GAAmB,eAAeC,eAAf,CAA+B,GAAGC,IAAlC,EAA6D;AAC9E,UAAI;AACF,eAAO,IAAIC,OAAJ,CAAY,MAAMC,OAAN,IAAiB;AAClC,gBAAM;AAAEC,YAAAA,YAAF;AAAgBC,YAAAA,SAAhB;AAA2B,eAAGC;AAA9B,cAA+CL,IAAI,CAAC,CAAD,CAAzD;;AAEA,cAAI,CAACG,YAAL,EAAmB;AACjBD,YAAAA,OAAO,CAAC,MAAML,MAAM,CAACS,KAAP,CAAa,IAAb,EAAmBN,IAAnB,CAAP,CAAP;AACA;AACD;;AAED,gBAAMO,SAAS,GAAGJ,YAAY,CAACK,GAAb,EAAlB;AAEAL,UAAAA,YAAY,CAACM,IAAb,CAAkBlB,gBAAlB,EAAoC;AAClCmB,YAAAA,OAAO,EAAEL,YADyB;AAElCM,YAAAA,OAAO,EAAEX,IAAI,CAAC,CAAD,CAFqB;AAGlCY,YAAAA,OAAO,EAAEZ,IAAI,CAAC,CAAD,CAHqB;AAIlCI,YAAAA,SAJkC;AAKlCS,YAAAA,KAAK,EAAE;AAAEN,cAAAA;AAAF;AAL2B,WAApC;AAQA,gBAAMO,MAAM,GAAG,MAAMjB,MAAM,CAACS,KAAP,CAAa,IAAb,EAAmBN,IAAnB,CAArB;AACA,gBAAMe,OAAO,GAAGZ,YAAY,CAACK,GAAb,EAAhB;AACA,gBAAMQ,QAAQ,GAAGD,OAAO,GAAGR,SAA3B;AACAL,UAAAA,OAAO,CAACY,MAAD,CAAP;AAEAX,UAAAA,YAAY,CAACM,IAAb,CAAkBjB,gBAAlB,EAAoC;AAClCkB,YAAAA,OAAO,EAAEL,YADyB;AAElCM,YAAAA,OAAO,EAAEX,IAAI,CAAC,CAAD,CAFqB;AAGlCY,YAAAA,OAAO,EAAEZ,IAAI,CAAC,CAAD,CAHqB;AAIlCI,YAAAA,SAJkC;AAKlCU,YAAAA,MALkC;AAMlCD,YAAAA,KAAK,EAAE;AAAEG,cAAAA,QAAF;AAAYD,cAAAA,OAAZ;AAAqBR,cAAAA;AAArB;AAN2B,WAApC;AAQD,SA/BM,CAAP;AAgCD,OAjCD,CAiCE,OAAOU,KAAP,EAAc;AACd,eAAOhB,OAAO,CAACiB,MAAR,CAAeD,KAAf,CAAP;AACD;AACF,KArCD;AAsCD,GA9CD;AA+CD","sourcesContent":["import { REQUEST_EXECUTED, REQUEST_RESOLVED, RequestContext } from \"@graphql-box/core\";\n\nexport default function logRequest() {\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, requestID, ...otherContext } = args[2] as RequestContext;\n\n if (!debugManager) {\n resolve(await method.apply(this, args));\n return;\n }\n\n const startTime = debugManager.now();\n\n debugManager.emit(REQUEST_EXECUTED, {\n context: otherContext,\n options: args[1],\n request: args[0],\n requestID,\n stats: { startTime },\n });\n\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(REQUEST_RESOLVED, {\n context: otherContext,\n options: args[1],\n request: args[0],\n requestID,\n result,\n stats: { duration, endTime, startTime },\n });\n });\n } catch (error) {\n return Promise.reject(error);\n }\n };\n };\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/debug/log-request/index.ts"],"names":["REQUEST_EXECUTED","REQUEST_RESOLVED","isAsyncIterable","logRequest","_target","_propertyName","descriptor","method","value","descriptorValue","args","Promise","resolve","debugManager","otherContext","apply","startTime","now","log","context","options","request","stats","result","endTime","duration","error","reject"],"mappings":";AAAA,SAASA,gBAAT,EAA2BC,gBAA3B,QAAmE,mBAAnE;AACA,SAASC,eAAT,QAAgC,SAAhC;AAEA,eAAe,SAASC,UAAT,GAAsB;AACnC,SAAO,CACLC,OADK,EAELC,aAFK,EAGLC,UAHK,KAII;AACT,UAAMC,MAAM,GAAGD,UAAU,CAACE,KAA1B;AACA,QAAI,CAACD,MAAL,EAAa;;AAEbD,IAAAA,UAAU,CAACE,KAAX,GAAmB,eAAeC,eAAf,CAA+B,GAAGC,IAAlC,EAA6D;AAC9E,UAAI;AACF,eAAO,IAAIC,OAAJ,CAAY,MAAMC,OAAN,IAAiB;AAClC,gBAAM;AAAEC,YAAAA,YAAF;AAAgB,eAAGC;AAAnB,cAAoCJ,IAAI,CAAC,CAAD,CAA9C;;AAEA,cAAI,CAACG,YAAL,EAAmB;AACjBD,YAAAA,OAAO,CAAC,MAAML,MAAM,CAACQ,KAAP,CAAa,IAAb,EAAmBL,IAAnB,CAAP,CAAP;AACA;AACD;;AAED,gBAAMM,SAAS,GAAGH,YAAY,CAACI,GAAb,EAAlB;AAEAJ,UAAAA,YAAY,CAACK,GAAb,CAAiBlB,gBAAjB,EAAmC;AACjCmB,YAAAA,OAAO,EAAEL,YADwB;AAEjCM,YAAAA,OAAO,EAAEV,IAAI,CAAC,CAAD,CAFoB;AAGjCW,YAAAA,OAAO,EAAEX,IAAI,CAAC,CAAD,CAHoB;AAIjCY,YAAAA,KAAK,EAAE;AAAEN,cAAAA;AAAF;AAJ0B,WAAnC;AAOA,gBAAMO,MAAM,GAAG,MAAMhB,MAAM,CAACQ,KAAP,CAAa,IAAb,EAAmBL,IAAnB,CAArB;AACA,gBAAMc,OAAO,GAAGX,YAAY,CAACI,GAAb,EAAhB;AACA,gBAAMQ,QAAQ,GAAGD,OAAO,GAAGR,SAA3B;AACAJ,UAAAA,OAAO,CAACW,MAAD,CAAP;;AAEA,cAAIrB,eAAe,CAACqB,MAAD,CAAnB,EAA6B;AAC3B;AACD;;AAEDV,UAAAA,YAAY,CAACK,GAAb,CAAiBjB,gBAAjB,EAAmC;AACjCkB,YAAAA,OAAO,EAAEL,YADwB;AAEjCM,YAAAA,OAAO,EAAEV,IAAI,CAAC,CAAD,CAFoB;AAGjCW,YAAAA,OAAO,EAAEX,IAAI,CAAC,CAAD,CAHoB;AAIjCa,YAAAA,MAJiC;AAKjCD,YAAAA,KAAK,EAAE;AAAEG,cAAAA,QAAF;AAAYD,cAAAA,OAAZ;AAAqBR,cAAAA;AAArB;AAL0B,WAAnC;AAOD,SAjCM,CAAP;AAkCD,OAnCD,CAmCE,OAAOU,KAAP,EAAc;AACd,eAAOf,OAAO,CAACgB,MAAR,CAAeD,KAAf,CAAP;AACD;AACF,KAvCD;AAwCD,GAhDD;AAiDD","sourcesContent":["import { REQUEST_EXECUTED, REQUEST_RESOLVED, RequestContext } from \"@graphql-box/core\";\nimport { isAsyncIterable } from \"iterall\";\n\nexport default function logRequest() {\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[2] as RequestContext;\n\n if (!debugManager) {\n resolve(await method.apply(this, args));\n return;\n }\n\n const startTime = debugManager.now();\n\n debugManager.log(REQUEST_EXECUTED, {\n context: otherContext,\n options: args[1],\n request: args[0],\n stats: { startTime },\n });\n\n const result = await method.apply(this, args);\n const endTime = debugManager.now();\n const duration = endTime - startTime;\n resolve(result);\n\n if (isAsyncIterable(result)) {\n return;\n }\n\n debugManager.log(REQUEST_RESOLVED, {\n context: otherContext,\n options: args[1],\n request: args[0],\n result,\n stats: { duration, endTime, startTime },\n });\n });\n } catch (error) {\n return Promise.reject(error);\n }\n };\n };\n}\n"],"file":"index.js"}
@@ -0,0 +1,39 @@
1
+ import "core-js/modules/es.promise.js";
2
+ import { SUBSCRIPTION_EXECUTED } from "@graphql-box/core";
3
+ export default function logSubscription() {
4
+ return (_target, _propertyName, descriptor) => {
5
+ const method = descriptor.value;
6
+ if (!method) return;
7
+
8
+ descriptor.value = async function descriptorValue(...args) {
9
+ try {
10
+ return new Promise(async resolve => {
11
+ const {
12
+ debugManager,
13
+ ...otherContext
14
+ } = args[2];
15
+
16
+ if (!debugManager) {
17
+ resolve(await method.apply(this, args));
18
+ return;
19
+ }
20
+
21
+ const startTime = debugManager.now();
22
+ debugManager.log(SUBSCRIPTION_EXECUTED, {
23
+ context: otherContext,
24
+ options: args[1],
25
+ request: args[0],
26
+ stats: {
27
+ startTime
28
+ }
29
+ });
30
+ const result = await method.apply(this, args);
31
+ resolve(result);
32
+ });
33
+ } catch (error) {
34
+ return Promise.reject(error);
35
+ }
36
+ };
37
+ };
38
+ }
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/debug/log-subscription/index.ts"],"names":["SUBSCRIPTION_EXECUTED","logSubscription","_target","_propertyName","descriptor","method","value","descriptorValue","args","Promise","resolve","debugManager","otherContext","apply","startTime","now","log","context","options","request","stats","result","error","reject"],"mappings":";AAAA,SAAyBA,qBAAzB,QAAsD,mBAAtD;AAEA,eAAe,SAASC,eAAT,GAA2B;AACxC,SAAO,CACLC,OADK,EAELC,aAFK,EAGLC,UAHK,KAII;AACT,UAAMC,MAAM,GAAGD,UAAU,CAACE,KAA1B;AACA,QAAI,CAACD,MAAL,EAAa;;AAEbD,IAAAA,UAAU,CAACE,KAAX,GAAmB,eAAeC,eAAf,CAA+B,GAAGC,IAAlC,EAA6D;AAC9E,UAAI;AACF,eAAO,IAAIC,OAAJ,CAAY,MAAMC,OAAN,IAAiB;AAClC,gBAAM;AAAEC,YAAAA,YAAF;AAAgB,eAAGC;AAAnB,cAAoCJ,IAAI,CAAC,CAAD,CAA9C;;AAEA,cAAI,CAACG,YAAL,EAAmB;AACjBD,YAAAA,OAAO,CAAC,MAAML,MAAM,CAACQ,KAAP,CAAa,IAAb,EAAmBL,IAAnB,CAAP,CAAP;AACA;AACD;;AAED,gBAAMM,SAAS,GAAGH,YAAY,CAACI,GAAb,EAAlB;AAEAJ,UAAAA,YAAY,CAACK,GAAb,CAAiBhB,qBAAjB,EAAwC;AACtCiB,YAAAA,OAAO,EAAEL,YAD6B;AAEtCM,YAAAA,OAAO,EAAEV,IAAI,CAAC,CAAD,CAFyB;AAGtCW,YAAAA,OAAO,EAAEX,IAAI,CAAC,CAAD,CAHyB;AAItCY,YAAAA,KAAK,EAAE;AAAEN,cAAAA;AAAF;AAJ+B,WAAxC;AAOA,gBAAMO,MAAM,GAAG,MAAMhB,MAAM,CAACQ,KAAP,CAAa,IAAb,EAAmBL,IAAnB,CAArB;AACAE,UAAAA,OAAO,CAACW,MAAD,CAAP;AACD,SAnBM,CAAP;AAoBD,OArBD,CAqBE,OAAOC,KAAP,EAAc;AACd,eAAOb,OAAO,CAACc,MAAR,CAAeD,KAAf,CAAP;AACD;AACF,KAzBD;AA0BD,GAlCD;AAmCD","sourcesContent":["import { RequestContext, SUBSCRIPTION_EXECUTED } from \"@graphql-box/core\";\n\nexport default function logSubscription() {\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[2] as RequestContext;\n\n if (!debugManager) {\n resolve(await method.apply(this, args));\n return;\n }\n\n const startTime = debugManager.now();\n\n debugManager.log(SUBSCRIPTION_EXECUTED, {\n context: otherContext,\n options: args[1],\n request: args[0],\n stats: { startTime },\n });\n\n const result = await method.apply(this, args);\n resolve(result);\n });\n } catch (error) {\n return Promise.reject(error);\n }\n };\n };\n}\n"],"file":"index.js"}
@@ -6,13 +6,14 @@ import _castArray from "lodash/castArray";
6
6
  var _dec, _dec2, _class;
7
7
 
8
8
  import "core-js/modules/es.promise.js";
9
- import { MUTATION, QUERY, SUBSCRIPTION } from "@graphql-box/core";
9
+ import { MUTATION, QUERY, REQUEST_RESOLVED, SUBSCRIPTION, SUBSCRIPTION_RESOLVED } from "@graphql-box/core";
10
10
  import { EventAsyncIterator, deserializeErrors, hashRequest, rehydrateCacheMetadata } from "@graphql-box/helpers";
11
11
  import EventEmitter from "eventemitter3";
12
12
  import { v1 as uuid } from "uuid";
13
13
  import { GRAPHQL_BOX, MESSAGE, REQUEST, SUBSCRIBE } from "../consts";
14
14
  import logRequest from "../debug/log-request";
15
- let WorkerClient = (_dec = logRequest(), _dec2 = logRequest(), (_class = class WorkerClient {
15
+ import logSubscription from "../debug/log-subscription";
16
+ let WorkerClient = (_dec = logRequest(), _dec2 = logSubscription(), (_class = class WorkerClient {
16
17
  static _getMessageContext({
17
18
  hasDeferOrStream = false,
18
19
  requestID
@@ -64,7 +65,31 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logRequest(), (_class = class W
64
65
  response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);
65
66
  }
66
67
 
67
- if (method === REQUEST) {
68
+ if (method === SUBSCRIBE) {
69
+ var _this$_debugManager, _this$_debugManager2;
70
+
71
+ (_this$_debugManager = this._debugManager) === null || _this$_debugManager === void 0 ? void 0 : _this$_debugManager.log(SUBSCRIPTION_RESOLVED, {
72
+ context,
73
+ result: response,
74
+ stats: {
75
+ endTime: (_this$_debugManager2 = this._debugManager) === null || _this$_debugManager2 === void 0 ? void 0 : _this$_debugManager2.now()
76
+ }
77
+ });
78
+
79
+ this._eventEmitter.emit(context.requestID, response);
80
+ } else if (context.hasDeferOrStream) {
81
+ var _this$_debugManager3, _this$_debugManager4;
82
+
83
+ (_this$_debugManager3 = this._debugManager) === null || _this$_debugManager3 === void 0 ? void 0 : _this$_debugManager3.log(REQUEST_RESOLVED, {
84
+ context,
85
+ result: response,
86
+ stats: {
87
+ endTime: (_this$_debugManager4 = this._debugManager) === null || _this$_debugManager4 === void 0 ? void 0 : _this$_debugManager4.now()
88
+ }
89
+ });
90
+
91
+ this._eventEmitter.emit(context.requestID, response);
92
+ } else {
68
93
  const pending = this._pending.get(context.requestID);
69
94
 
70
95
  if (!pending) {
@@ -72,8 +97,6 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logRequest(), (_class = class W
72
97
  }
73
98
 
74
99
  pending.resolve(response);
75
- } else if (method === SUBSCRIBE || context.hasDeferOrStream) {
76
- this._eventEmitter.emit(context.requestID, response);
77
100
  }
78
101
  });
79
102
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/main/index.ts"],"names":["MUTATION","QUERY","SUBSCRIPTION","EventAsyncIterator","deserializeErrors","hashRequest","rehydrateCacheMetadata","EventEmitter","v1","uuid","GRAPHQL_BOX","MESSAGE","REQUEST","SUBSCRIBE","logRequest","WorkerClient","_getMessageContext","hasDeferOrStream","requestID","constructor","options","Map","data","context","method","result","type","_cacheMetadata","otherProps","response","pending","_pending","get","resolve","_eventEmitter","emit","errors","push","TypeError","cache","worker","length","_cache","_debugManager","debugManager","_worker","_addEventListener","mutate","request","_request","_getRequestContext","query","subscribe","_subscribe","addEventListener","_onMessage","operation","fieldTypeMap","operationName","queryFiltered","whitelistHash","Promise","postMessage","set","eventAsyncIterator","getIterator","error"],"mappings":"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","sourcesContent":["import WorkerCachemap from \"@cachemap/core-worker\";\nimport {\n DebugManagerDef,\n MUTATION,\n MaybeRequestContext,\n MaybeRequestResult,\n QUERY,\n RequestContext,\n RequestOptions,\n SUBSCRIPTION,\n ValidOperations,\n} from \"@graphql-box/core\";\nimport { EventAsyncIterator, deserializeErrors, hashRequest, rehydrateCacheMetadata } from \"@graphql-box/helpers\";\nimport EventEmitter from \"eventemitter3\";\nimport { castArray, isPlainObject } from \"lodash\";\nimport { v1 as uuid } from \"uuid\";\nimport { GRAPHQL_BOX, MESSAGE, REQUEST, SUBSCRIBE } from \"../consts\";\nimport logRequest from \"../debug/log-request\";\nimport { MessageContext, MessageResponsePayload, PendingResolver, PendingTracker, UserOptions } from \"../defs\";\n\nexport default class WorkerClient {\n private static _getMessageContext({ hasDeferOrStream = false, requestID }: RequestContext): MessageContext {\n return { hasDeferOrStream, requestID };\n }\n\n private _cache: WorkerCachemap;\n private _debugManager: DebugManagerDef | null;\n private _eventEmitter: EventEmitter;\n private _pending: PendingTracker = new Map();\n private _worker: Worker;\n\n constructor(options: UserOptions) {\n const errors: TypeError[] = [];\n\n if (!isPlainObject(options)) {\n errors.push(new TypeError(\"@graphql-box/client expected options to ba a plain object.\"));\n }\n\n if (!options.cache) {\n errors.push(new TypeError(\"@graphql-box/client expected options.cache.\"));\n }\n\n if (!options.worker) {\n errors.push(new TypeError(\"@graphql-box/client expected options.worker.\"));\n }\n\n if (errors.length) {\n throw errors;\n }\n\n this._cache = options.cache;\n this._debugManager = options.debugManager ? options.debugManager() : null;\n this._eventEmitter = new EventEmitter();\n this._worker = options.worker;\n this._addEventListener();\n }\n\n get cache(): WorkerCachemap {\n return this._cache;\n }\n\n public async mutate(request: string, options: RequestOptions = {}, context: MaybeRequestContext = {}) {\n return this._request(request, options, this._getRequestContext(MUTATION, request, context));\n }\n\n public async query(request: string, options: RequestOptions = {}, context: MaybeRequestContext = {}) {\n return this._request(request, options, this._getRequestContext(QUERY, request, context));\n }\n\n public async request(request: string, options: RequestOptions = {}, context: MaybeRequestContext = {}) {\n return this._request(request, options, this._getRequestContext(QUERY, request, context));\n }\n\n public async subscribe(request: string, options: RequestOptions = {}) {\n return this._subscribe(request, options, this._getRequestContext(SUBSCRIPTION, request));\n }\n\n private _addEventListener(): void {\n this._worker.addEventListener(MESSAGE, this._onMessage);\n }\n\n private _getRequestContext(\n operation: ValidOperations,\n request: string,\n context: MaybeRequestContext = {},\n ): RequestContext {\n return {\n debugManager: this._debugManager,\n fieldTypeMap: new Map(),\n operation,\n operationName: \"\",\n queryFiltered: false,\n request,\n requestID: uuid(),\n whitelistHash: hashRequest(request),\n ...context,\n };\n }\n\n private _onMessage = async ({ data }: MessageEvent): Promise<void> => {\n if (!isPlainObject(data)) {\n return;\n }\n\n const { context, method, result, type } = data as MessageResponsePayload;\n\n if (type !== GRAPHQL_BOX || !isPlainObject(result)) {\n return;\n }\n\n const { _cacheMetadata, ...otherProps } = result;\n const response: MaybeRequestResult = deserializeErrors({ ...otherProps, requestID: context.requestID });\n\n if (_cacheMetadata) {\n response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);\n }\n\n if (method === REQUEST) {\n const pending = this._pending.get(context.requestID);\n\n if (!pending) {\n return;\n }\n\n pending.resolve(response);\n } else if (method === SUBSCRIBE || context.hasDeferOrStream) {\n this._eventEmitter.emit(context.requestID, response);\n }\n };\n\n @logRequest()\n private async _request(request: string, options: RequestOptions, context: RequestContext) {\n try {\n if (!context.hasDeferOrStream) {\n return new Promise((resolve: PendingResolver) => {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: REQUEST,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n this._pending.set(context.requestID, { resolve });\n });\n }\n\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: REQUEST,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.requestID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return { errors: castArray(error) };\n }\n }\n\n @logRequest()\n private async _subscribe(request: string, options: RequestOptions, context: RequestContext) {\n try {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: SUBSCRIBE,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.requestID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return { errors: castArray(error) };\n }\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/main/index.ts"],"names":["MUTATION","QUERY","REQUEST_RESOLVED","SUBSCRIPTION","SUBSCRIPTION_RESOLVED","EventAsyncIterator","deserializeErrors","hashRequest","rehydrateCacheMetadata","EventEmitter","v1","uuid","GRAPHQL_BOX","MESSAGE","REQUEST","SUBSCRIBE","logRequest","logSubscription","WorkerClient","_getMessageContext","hasDeferOrStream","requestID","constructor","options","Map","data","context","method","result","type","_cacheMetadata","otherProps","response","_debugManager","log","stats","endTime","now","_eventEmitter","emit","pending","_pending","get","resolve","errors","push","TypeError","cache","worker","length","_cache","debugManager","_worker","_addEventListener","mutate","request","_request","_getRequestContext","query","subscribe","_subscribe","addEventListener","_onMessage","operation","fieldTypeMap","operationName","queryFiltered","whitelistHash","Promise","postMessage","set","eventAsyncIterator","getIterator","error"],"mappings":"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","sourcesContent":["import WorkerCachemap from \"@cachemap/core-worker\";\nimport {\n DebugManagerDef,\n MUTATION,\n MaybeRequestContext,\n MaybeRequestResult,\n QUERY,\n REQUEST_RESOLVED,\n RequestContext,\n RequestOptions,\n SUBSCRIPTION,\n SUBSCRIPTION_RESOLVED,\n ValidOperations,\n} from \"@graphql-box/core\";\nimport { EventAsyncIterator, deserializeErrors, hashRequest, rehydrateCacheMetadata } from \"@graphql-box/helpers\";\nimport EventEmitter from \"eventemitter3\";\nimport { castArray, isPlainObject } from \"lodash\";\nimport { v1 as uuid } from \"uuid\";\nimport { GRAPHQL_BOX, MESSAGE, REQUEST, SUBSCRIBE } from \"../consts\";\nimport logRequest from \"../debug/log-request\";\nimport logSubscription from \"../debug/log-subscription\";\nimport { MessageContext, MessageResponsePayload, PendingResolver, PendingTracker, UserOptions } from \"../defs\";\n\nexport default class WorkerClient {\n private static _getMessageContext({ hasDeferOrStream = false, requestID }: RequestContext): MessageContext {\n return { hasDeferOrStream, requestID };\n }\n\n private _cache: WorkerCachemap;\n private _debugManager: DebugManagerDef | null;\n private _eventEmitter: EventEmitter;\n private _pending: PendingTracker = new Map();\n private _worker: Worker;\n\n constructor(options: UserOptions) {\n const errors: TypeError[] = [];\n\n if (!isPlainObject(options)) {\n errors.push(new TypeError(\"@graphql-box/client expected options to ba a plain object.\"));\n }\n\n if (!options.cache) {\n errors.push(new TypeError(\"@graphql-box/client expected options.cache.\"));\n }\n\n if (!options.worker) {\n errors.push(new TypeError(\"@graphql-box/client expected options.worker.\"));\n }\n\n if (errors.length) {\n throw errors;\n }\n\n this._cache = options.cache;\n this._debugManager = options.debugManager ? options.debugManager() : null;\n this._eventEmitter = new EventEmitter();\n this._worker = options.worker;\n this._addEventListener();\n }\n\n get cache(): WorkerCachemap {\n return this._cache;\n }\n\n public async mutate(request: string, options: RequestOptions = {}, context: MaybeRequestContext = {}) {\n return this._request(request, options, this._getRequestContext(MUTATION, request, context));\n }\n\n public async query(request: string, options: RequestOptions = {}, context: MaybeRequestContext = {}) {\n return this._request(request, options, this._getRequestContext(QUERY, request, context));\n }\n\n public async request(request: string, options: RequestOptions = {}, context: MaybeRequestContext = {}) {\n return this._request(request, options, this._getRequestContext(QUERY, request, context));\n }\n\n public async subscribe(request: string, options: RequestOptions = {}) {\n return this._subscribe(request, options, this._getRequestContext(SUBSCRIPTION, request));\n }\n\n private _addEventListener(): void {\n this._worker.addEventListener(MESSAGE, this._onMessage);\n }\n\n private _getRequestContext(\n operation: ValidOperations,\n request: string,\n context: MaybeRequestContext = {},\n ): RequestContext {\n return {\n debugManager: this._debugManager,\n fieldTypeMap: new Map(),\n operation,\n operationName: \"\",\n queryFiltered: false,\n request,\n requestID: uuid(),\n whitelistHash: hashRequest(request),\n ...context,\n };\n }\n\n private _onMessage = async ({ data }: MessageEvent): Promise<void> => {\n if (!isPlainObject(data)) {\n return;\n }\n\n const { context, method, result, type } = data as MessageResponsePayload;\n\n if (type !== GRAPHQL_BOX || !isPlainObject(result)) {\n return;\n }\n\n const { _cacheMetadata, ...otherProps } = result;\n const response: MaybeRequestResult = deserializeErrors({ ...otherProps, requestID: context.requestID });\n\n if (_cacheMetadata) {\n response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);\n }\n\n if (method === SUBSCRIBE) {\n this._debugManager?.log(SUBSCRIPTION_RESOLVED, {\n context,\n result: response,\n stats: { endTime: this._debugManager?.now() },\n });\n\n this._eventEmitter.emit(context.requestID, response);\n } else if (context.hasDeferOrStream) {\n this._debugManager?.log(REQUEST_RESOLVED, {\n context,\n result: response,\n stats: { endTime: this._debugManager?.now() },\n });\n\n this._eventEmitter.emit(context.requestID, response);\n } else {\n const pending = this._pending.get(context.requestID);\n\n if (!pending) {\n return;\n }\n\n pending.resolve(response);\n }\n };\n\n @logRequest()\n private async _request(request: string, options: RequestOptions, context: RequestContext) {\n try {\n if (!context.hasDeferOrStream) {\n return new Promise((resolve: PendingResolver) => {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: REQUEST,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n this._pending.set(context.requestID, { resolve });\n });\n }\n\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: REQUEST,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.requestID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return { errors: castArray(error) };\n }\n }\n\n @logSubscription()\n private async _subscribe(request: string, options: RequestOptions, context: RequestContext) {\n try {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: SUBSCRIBE,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.requestID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return { errors: castArray(error) };\n }\n }\n}\n"],"file":"index.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/debug/log-request/index.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,UAAU,cAErB,GAAG,iBACG,MAAM,gDACyB,GAAG,EAAE,KAAK,QAAQ,GAAG,CAAC,MACnE,IAAI,CA2CR"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/debug/log-request/index.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,UAAU,UAAU,cAErB,GAAG,iBACG,MAAM,gDACyB,GAAG,EAAE,KAAK,QAAQ,GAAG,CAAC,MACnE,IAAI,CA6CR"}
@@ -0,0 +1,2 @@
1
+ export default function logSubscription(): (_target: any, _propertyName: string, descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise<any>>) => void;
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/debug/log-subscription/index.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,eAAe,cAE1B,GAAG,iBACG,MAAM,gDACyB,GAAG,EAAE,KAAK,QAAQ,GAAG,CAAC,MACnE,IAAI,CA+BR"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/main/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAGL,mBAAmB,EACnB,kBAAkB,EAGlB,cAAc,EAGf,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EAA2E,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/G,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAIjC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,WAAW;IA0BhC,IAAI,KAAK,IAAI,cAAc,CAE1B;IAEY,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,EAAE,OAAO,GAAE,mBAAwB;;;IAIvF,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,EAAE,OAAO,GAAE,mBAAwB;;;IAItF,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,EAAE,OAAO,GAAE,mBAAwB;;;IAIxF,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB;;;IAIpE,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,UAAU,CA6BhB;YAGY,QAAQ;YAgCR,UAAU;CAgBzB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/main/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAGL,mBAAmB,EACnB,kBAAkB,EAIlB,cAAc,EAIf,MAAM,mBAAmB,CAAC;AAQ3B,OAAO,EAA2E,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/G,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAIjC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,WAAW;IA0BhC,IAAI,KAAK,IAAI,cAAc,CAE1B;IAEY,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,EAAE,OAAO,GAAE,mBAAwB;;;IAIvF,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,EAAE,OAAO,GAAE,mBAAwB;;;IAItF,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,EAAE,OAAO,GAAE,mBAAwB;;;IAIxF,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB;;;IAIpE,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,UAAU,CA2ChB;YAGY,QAAQ;YAgCR,UAAU;CAgBzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@graphql-box/worker-client",
3
- "version": "3.7.0",
3
+ "version": "3.8.1",
4
4
  "description": "The GraphQL Box web worker client module.",
5
5
  "author": "Dylan Aubrey <dylanaubrey@gmail.com>",
6
6
  "license": "MIT",
@@ -1,4 +1,5 @@
1
1
  import { REQUEST_EXECUTED, REQUEST_RESOLVED, RequestContext } from "@graphql-box/core";
2
+ import { isAsyncIterable } from "iterall";
2
3
 
3
4
  export default function logRequest() {
4
5
  return (
@@ -12,7 +13,7 @@ export default function logRequest() {
12
13
  descriptor.value = async function descriptorValue(...args: any[]): Promise<any> {
13
14
  try {
14
15
  return new Promise(async resolve => {
15
- const { debugManager, requestID, ...otherContext } = args[2] as RequestContext;
16
+ const { debugManager, ...otherContext } = args[2] as RequestContext;
16
17
 
17
18
  if (!debugManager) {
18
19
  resolve(await method.apply(this, args));
@@ -21,11 +22,10 @@ export default function logRequest() {
21
22
 
22
23
  const startTime = debugManager.now();
23
24
 
24
- debugManager.emit(REQUEST_EXECUTED, {
25
+ debugManager.log(REQUEST_EXECUTED, {
25
26
  context: otherContext,
26
27
  options: args[1],
27
28
  request: args[0],
28
- requestID,
29
29
  stats: { startTime },
30
30
  });
31
31
 
@@ -34,11 +34,14 @@ export default function logRequest() {
34
34
  const duration = endTime - startTime;
35
35
  resolve(result);
36
36
 
37
- debugManager.emit(REQUEST_RESOLVED, {
37
+ if (isAsyncIterable(result)) {
38
+ return;
39
+ }
40
+
41
+ debugManager.log(REQUEST_RESOLVED, {
38
42
  context: otherContext,
39
43
  options: args[1],
40
44
  request: args[0],
41
- requestID,
42
45
  result,
43
46
  stats: { duration, endTime, startTime },
44
47
  });
@@ -0,0 +1,39 @@
1
+ import { RequestContext, SUBSCRIPTION_EXECUTED } from "@graphql-box/core";
2
+
3
+ export default function logSubscription() {
4
+ return (
5
+ _target: any,
6
+ _propertyName: string,
7
+ descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise<any>>,
8
+ ): void => {
9
+ const method = descriptor.value;
10
+ if (!method) return;
11
+
12
+ descriptor.value = async function descriptorValue(...args: any[]): Promise<any> {
13
+ try {
14
+ return new Promise(async resolve => {
15
+ const { debugManager, ...otherContext } = args[2] as RequestContext;
16
+
17
+ if (!debugManager) {
18
+ resolve(await method.apply(this, args));
19
+ return;
20
+ }
21
+
22
+ const startTime = debugManager.now();
23
+
24
+ debugManager.log(SUBSCRIPTION_EXECUTED, {
25
+ context: otherContext,
26
+ options: args[1],
27
+ request: args[0],
28
+ stats: { startTime },
29
+ });
30
+
31
+ const result = await method.apply(this, args);
32
+ resolve(result);
33
+ });
34
+ } catch (error) {
35
+ return Promise.reject(error);
36
+ }
37
+ };
38
+ };
39
+ }
package/src/main/index.ts CHANGED
@@ -5,9 +5,11 @@ import {
5
5
  MaybeRequestContext,
6
6
  MaybeRequestResult,
7
7
  QUERY,
8
+ REQUEST_RESOLVED,
8
9
  RequestContext,
9
10
  RequestOptions,
10
11
  SUBSCRIPTION,
12
+ SUBSCRIPTION_RESOLVED,
11
13
  ValidOperations,
12
14
  } from "@graphql-box/core";
13
15
  import { EventAsyncIterator, deserializeErrors, hashRequest, rehydrateCacheMetadata } from "@graphql-box/helpers";
@@ -16,6 +18,7 @@ import { castArray, isPlainObject } from "lodash";
16
18
  import { v1 as uuid } from "uuid";
17
19
  import { GRAPHQL_BOX, MESSAGE, REQUEST, SUBSCRIBE } from "../consts";
18
20
  import logRequest from "../debug/log-request";
21
+ import logSubscription from "../debug/log-subscription";
19
22
  import { MessageContext, MessageResponsePayload, PendingResolver, PendingTracker, UserOptions } from "../defs";
20
23
 
21
24
  export default class WorkerClient {
@@ -115,7 +118,23 @@ export default class WorkerClient {
115
118
  response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);
116
119
  }
117
120
 
118
- if (method === REQUEST) {
121
+ if (method === SUBSCRIBE) {
122
+ this._debugManager?.log(SUBSCRIPTION_RESOLVED, {
123
+ context,
124
+ result: response,
125
+ stats: { endTime: this._debugManager?.now() },
126
+ });
127
+
128
+ this._eventEmitter.emit(context.requestID, response);
129
+ } else if (context.hasDeferOrStream) {
130
+ this._debugManager?.log(REQUEST_RESOLVED, {
131
+ context,
132
+ result: response,
133
+ stats: { endTime: this._debugManager?.now() },
134
+ });
135
+
136
+ this._eventEmitter.emit(context.requestID, response);
137
+ } else {
119
138
  const pending = this._pending.get(context.requestID);
120
139
 
121
140
  if (!pending) {
@@ -123,8 +142,6 @@ export default class WorkerClient {
123
142
  }
124
143
 
125
144
  pending.resolve(response);
126
- } else if (method === SUBSCRIBE || context.hasDeferOrStream) {
127
- this._eventEmitter.emit(context.requestID, response);
128
145
  }
129
146
  };
130
147
 
@@ -160,7 +177,7 @@ export default class WorkerClient {
160
177
  }
161
178
  }
162
179
 
163
- @logRequest()
180
+ @logSubscription()
164
181
  private async _subscribe(request: string, options: RequestOptions, context: RequestContext) {
165
182
  try {
166
183
  this._worker.postMessage({