@graphql-box/worker-client 3.7.1 → 3.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/index.js +1 -1
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/production.analysis.txt +23 -14
- package/lib/main/debug/log-request/index.js +9 -5
- package/lib/main/debug/log-request/index.js.map +1 -1
- package/lib/main/debug/log-subscription/index.js +48 -0
- package/lib/main/debug/log-subscription/index.js.map +1 -0
- package/lib/main/main/index.js +28 -4
- package/lib/main/main/index.js.map +1 -1
- package/lib/module/debug/log-request/index.js +8 -5
- package/lib/module/debug/log-request/index.js.map +1 -1
- package/lib/module/debug/log-subscription/index.js +39 -0
- package/lib/module/debug/log-subscription/index.js.map +1 -0
- package/lib/module/main/index.js +28 -5
- package/lib/module/main/index.js.map +1 -1
- package/lib/types/debug/log-request/index.d.ts.map +1 -1
- package/lib/types/debug/log-subscription/index.d.ts +2 -0
- package/lib/types/debug/log-subscription/index.d.ts.map +1 -0
- package/lib/types/main/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/debug/log-request/index.ts +8 -5
- package/src/debug/log-subscription/index.ts +39 -0
- package/src/main/index.ts +21 -4
package/lib/browser/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"core-js/modules/es.object.keys.js";import"core-js/modules/es.symbol.js";import"core-js/modules/es.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
|
package/lib/browser/index.js.map
CHANGED
|
@@ -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":"28CAAO,UCEQ,SAASA,WACf,SACLC,EACAC,EACAC,SAEMC,EAASD,EAAWE,MACrBD,IAELD,EAAWE,mBAAQ,wHAAkCC,2BAAAA,4CAE1C,IAAIC,mCAAQ,WAAMC,2FAC8BF,EAAK,GAAlDG,IAAAA,aAAcC,IAAAA,UAAcC,oCAE/BF,8BACHD,WAAcJ,EAAOQ,MAAMC,EAAMP,6EAI7BQ,EAAYL,EAAaM,MAE/BN,EAAaO,KAAKC,EAAkB,CAClCC,QAASP,EACTQ,QAASb,EAAK,GACdc,QAASd,EAAK,GACdI,UAAAA,EACAW,MAAO,CAAEP,UAAAA,eAGUV,EAAOQ,MAAMC,EAAMP,WAAlCgB,SACAC,EAAUd,EAAaM,MACvBS,EAAWD,EAAUT,EAC3BN,EAAQc,GAERb,EAAaO,KAAKS,EAAkB,CAClCP,QAASP,EACTQ,QAASb,EAAK,GACdc,QAASd,EAAK,GACdI,UAAAA,EACAY,OAAAA,EACAD,MAAO,CAAEG,SAAAA,EAAUD,QAAAA,EAAST,UAAAA,kKAIzBP,QAAQmB,urBC1BFC,KA8GlB3B,MAgCAA,+BAnIWmB,kIAHuB,IAAIS,+DAuElB,sGAASC,IAAAA,KACvBC,EAAcD,uDAIXX,KAAkCW,GAAlCX,QAASd,IAAAA,OAAQkB,IAAAA,OFnGF,iBEmGUS,MAEJD,EAAcR,uDAInCU,EAAkCV,EAAlCU,eAAmBC,IAAeX,sBACpCY,EAA+BC,SAAuBF,OAAYvB,UAAWQ,EAAQR,aAEvFsB,IACFE,EAASF,eAAiBI,EAAuBJ,IFlHhC,YEqHf5B,sBACIiC,EAAUxB,EAAKyB,SAASC,IAAIrB,EAAQR,8DAM1C2B,EAAQ7B,QAAQ0B,4BF3HG,cE4HV9B,GAAwBc,EAAQsB,mBACzC3B,EAAK4B,cAAczB,KAAKE,EAAQR,UAAWwB,iGA9FvCQ,EAAsB,MAEvBZ,EAAcX,IACjBuB,EAAOC,KAAK,IAAIC,UAAU,+DAGvBzB,EAAQ0B,OACXH,EAAOC,KAAK,IAAIC,UAAU,gDAGvBzB,EAAQ2B,QACXJ,EAAOC,KAAK,IAAIC,UAAU,iDAGxBF,EAAOK,aACHL,OAGHM,OAAS7B,EAAQ0B,WACjBI,cAAgB9B,EAAQV,aAAeU,EAAQV,eAAiB,UAChEgC,cAAgB,IAAIS,OACpBC,QAAUhC,EAAQ2B,YAClBM,iEAGP,kBACSC,KAAKL,0CAGd,WAAoB5B,6FAAiBD,iCAA0B,GAAID,iCAA+B,qBACzFmC,KAAKC,SAASlC,EAASD,EAASkC,KAAKE,mBAAmBC,EAAUpC,EAASF,mIAGpF,WAAmBE,6FAAiBD,iCAA0B,GAAID,iCAA+B,qBACxFmC,KAAKC,SAASlC,EAASD,EAASkC,KAAKE,mBAAmBE,EAAOrC,EAASF,qIAGjF,WAAqBE,6FAAiBD,iCAA0B,GAAID,iCAA+B,qBAC1FmC,KAAKC,SAASlC,EAASD,EAASkC,KAAKE,mBAAmBE,EAAOrC,EAASF,uIAGjF,WAAuBE,2FAAiBD,iCAA0B,qBACzDkC,KAAKK,WAAWtC,EAASD,EAASkC,KAAKE,mBAAmBI,EAAcvC,kIAGjF,gBACO+B,QAAQS,iBF3EM,UE2EoBP,KAAKQ,8CAG9C,SACEC,EACA1C,OACAF,yDAA+B,aAG7BT,aAAc4C,KAAKJ,cACnBc,aAAc,IAAInC,IAClBkC,UAAAA,EACAE,cAAe,GACfC,eAAe,EACf7C,QAAAA,EACAV,UAAWwD,IACXC,cAAeC,EAAYhD,IACxBF,wCAmCP,WACuBE,EAAiBD,EAAyBD,2FAExDA,EAAQsB,0DACJ,IAAIjC,SAAQ,SAACC,GAClB6D,EAAKlB,QAAQmB,YAAY,CACvBpD,QAASS,EAAa4C,mBAAmBrD,GACzCd,OFzIW,UE0IXe,QAAAA,EACAC,QAAAA,EACAW,KFvIe,eE0IjBsC,EAAK/B,SAASkC,IAAItD,EAAQR,UAAW,CAAEF,QAAAA,2BAItC2C,QAAQmB,YAAY,CACvBpD,QAASS,EAAa4C,mBAAmBrD,GACzCd,OFrJe,UEsJfe,QAAAA,EACAC,QAAAA,EACAW,KFnJmB,eEsJf0C,EAAqB,IAAIC,EAAuCrB,KAAKZ,cAAevB,EAAQR,6BAC3F+D,EAAmBE,wEAEnB,CAAEjC,OAAQkC,0JAIrB,WACyBxD,EAAiBD,EAAyBD,6FAE1DiC,QAAQmB,YAAY,CACvBpD,QAASS,EAAa4C,mBAAmBrD,GACzCd,OFtKiB,YEuKjBe,QAAAA,EACAC,QAAAA,EACAW,KFrKmB,eEwKf0C,EAAqB,IAAIC,EAAuCrB,KAAKZ,cAAevB,EAAQR,6BAC3F+D,EAAmBE,wEAEnB,CAAEjC,OAAQkC,sJA3JrB,oBAAoCpC,uBAC3B,CAAEA,+BAAkB9B,YADiCA,iyBCZrBmE,KAAnCjB,IAAAA,iBAAkBU,IAAAA,4CAE1B,WACElD,EACAhB,EACAe,EACAD,EACA4D,gGAE4BA,EAAO1D,QAAQA,EAASD,EAASD,aAAvD6D,SAEDC,EAAgBD,0BACX/C,KAAkC+C,GAAlC/C,eAAmBC,0BACrBX,OAA6DW,GAE/DD,IACFV,EAAOU,eAAiBiD,EAAuBjD,IAGjDsC,EAAY,CAAEpD,QAAAA,EAASd,OAAAA,EAAQkB,OAAQ4D,EAAgB5D,GAASS,KHvBzC,yCG2BzBoD,EAAaJ,GAAe,gBAAG/C,IAAAA,eACvBV,gCAEFU,IACFV,EAAOU,eAAiBiD,EAAuBjD,IAGjDsC,EAAY,CAAEpD,QAAAA,EAASd,OAAAA,EAAQkB,OAAQ4D,EAAgB5D,GAASS,KHlCzC,qHGsC3B,WACEX,EACAhB,EACAe,EACAD,EACA4D,wFAE8BA,EAAOM,UAAUhE,EAASD,EAASD,aAA3DmE,SAEDL,EAAgBK,0BACnBf,EAAY,CAAEpD,QAAAA,EAASd,OAAAA,EAAQkB,OAAQ4D,EAAgBG,GAAwCtD,KHhDxE,yCGoDzBoD,EAAaE,GAAiB,gBAAGrD,IAAAA,eACzBV,gCAEFU,IACFV,EAAOU,eAAiBiD,EAAuBjD,IAGjDsC,EAAY,CAAEpD,QAAAA,EAASd,OAAAA,EAAQkB,OAAQ4D,EAAgB5D,GAASS,KH3DzC,oFG+DpB,SAASuD,EAAczD,EAA6BiD,SACXjD,EAAtCX,IAAAA,QAASd,IAAAA,OAAQe,IAAAA,QAASC,IAAAA,QHrEb,YGuEjBhB,8CACFmF,CAAcnE,EAAShB,EAAQe,EAASD,EAAS4D,GHvE5B,cGwEZ1E,+CACToF,CAAmBpE,EAAShB,EAAQe,EAASD,EAAS4D,YAI5BW,oEAAf,oBACJC,iEAAAA,kBAAY7D,IAAAA,QACdC,EAAcD,QAIXE,EAASF,EAATE,KH/Ee,eGiFnBA,EACFuD,EAAczD,EAAMiD,GHjFF,aGkFT/C,GAAqB+C,EAAOjC,OACrC8C,EAAsB9D,EAAMiD,EAAOjC,SAXMiC,IAAAA,OAe7ClB,EH1FqB,UG0FK8B"}
|
|
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:
|
|
5
|
-
original size:
|
|
4
|
+
bundle size: 28.786 KB
|
|
5
|
+
original size: 13.585 KB
|
|
6
6
|
code reduction: 0 %
|
|
7
|
-
module count:
|
|
7
|
+
module count: 7
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
10
10
|
file: /src/main/index.ts
|
|
11
|
-
bundle space:
|
|
12
|
-
rendered size:
|
|
13
|
-
original size:
|
|
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:
|
|
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:
|
|
30
|
-
rendered size: 4.
|
|
31
|
-
original size: 1.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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","
|
|
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"}
|
package/lib/main/main/index.js
CHANGED
|
@@ -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,
|
|
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.
|
|
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":";;;;;;;;;;;;;;;;;;;AACA;;AAWA;;AACA;;AAEA;;AACA;;AACA;;;;IAGqBA,Y,WA8GlB,0B,UAgCA,0B,YA9IY,MAAMA,YAAN,CAAmB;AACC,SAAlBC,kBAAkB,CAAC;AAAEC,IAAAA,gBAAgB,GAAG,KAArB;AAA4BC,IAAAA;AAA5B,GAAD,EAA0E;AACzG,WAAO;AAAED,MAAAA,gBAAF;AAAoBC,MAAAA;AAApB,KAAP;AACD;;AAQDC,EAAAA,WAAW,CAACC,OAAD,EAAuB;AAAA;AAAA;AAAA;AAAA,oDAHC,IAAIC,GAAJ,EAGD;AAAA;AAAA,sDAoEb,OAAO;AAAEC,MAAAA;AAAF,KAAP,KAAiD;AACpE,UAAI,CAAC,6BAAcA,IAAd,CAAL,EAA0B;AACxB;AACD;;AAED,YAAM;AAAEC,QAAAA,OAAF;AAAWC,QAAAA,MAAX;AAAmBC,QAAAA,MAAnB;AAA2BC,QAAAA;AAA3B,UAAoCJ,IAA1C;;AAEA,UAAII,IAAI,KAAKC,mBAAT,IAAwB,CAAC,6BAAcF,MAAd,CAA7B,EAAoD;AAClD;AACD;;AAED,YAAM;AAAEG,QAAAA,cAAF;AAAkB,WAAGC;AAArB,UAAoCJ,MAA1C;AACA,YAAMK,QAA4B,GAAG,gCAAkB,EAAE,GAAGD,UAAL;AAAiBX,QAAAA,SAAS,EAAEK,OAAO,CAACL;AAApC,OAAlB,CAArC;;AAEA,UAAIU,cAAJ,EAAoB;AAClBE,QAAAA,QAAQ,CAACF,cAAT,GAA0B,qCAAuBA,cAAvB,CAA1B;AACD;;AAED,UAAIJ,MAAM,KAAKO,eAAf,EAAwB;AACtB,cAAMC,OAAO,GAAG,KAAKC,QAAL,CAAcC,GAAd,CAAkBX,OAAO,CAACL,SAA1B,CAAhB;;AAEA,YAAI,CAACc,OAAL,EAAc;AACZ;AACD;;AAEDA,QAAAA,OAAO,CAACG,OAAR,CAAgBL,QAAhB;AACD,OARD,MAQO,IAAIN,MAAM,KAAKY,iBAAX,IAAwBb,OAAO,CAACN,gBAApC,EAAsD;AAC3D,aAAKoB,aAAL,CAAmBC,IAAnB,CAAwBf,OAAO,CAACL,SAAhC,EAA2CY,QAA3C;AACD;AACF,KAjGiC;AAChC,UAAMS,MAAmB,GAAG,EAA5B;;AAEA,QAAI,CAAC,6BAAcnB,OAAd,CAAL,EAA6B;AAC3BmB,MAAAA,MAAM,CAACC,IAAP,CAAY,IAAIC,SAAJ,CAAc,4DAAd,CAAZ;AACD;;AAED,QAAI,CAACrB,OAAO,CAACsB,KAAb,EAAoB;AAClBH,MAAAA,MAAM,CAACC,IAAP,CAAY,IAAIC,SAAJ,CAAc,6CAAd,CAAZ;AACD;;AAED,QAAI,CAACrB,OAAO,CAACuB,MAAb,EAAqB;AACnBJ,MAAAA,MAAM,CAACC,IAAP,CAAY,IAAIC,SAAJ,CAAc,8CAAd,CAAZ;AACD;;AAED,QAAIF,MAAM,CAACK,MAAX,EAAmB;AACjB,YAAML,MAAN;AACD;;AAED,SAAKM,MAAL,GAAczB,OAAO,CAACsB,KAAtB;AACA,SAAKI,aAAL,GAAqB1B,OAAO,CAAC2B,YAAR,GAAuB3B,OAAO,CAAC2B,YAAR,EAAvB,GAAgD,IAArE;AACA,SAAKV,aAAL,GAAqB,IAAIW,qBAAJ,EAArB;AACA,SAAKC,OAAL,GAAe7B,OAAO,CAACuB,MAAvB;;AACA,SAAKO,iBAAL;AACD;;AAEQ,MAALR,KAAK,GAAmB;AAC1B,WAAO,KAAKG,MAAZ;AACD;;AAEkB,QAANM,MAAM,CAACC,OAAD,EAAkBhC,OAAuB,GAAG,EAA5C,EAAgDG,OAA4B,GAAG,EAA/E,EAAmF;AACpG,WAAO,KAAK8B,QAAL,CAAcD,OAAd,EAAuBhC,OAAvB,EAAgC,KAAKkC,kBAAL,CAAwBC,cAAxB,EAAkCH,OAAlC,EAA2C7B,OAA3C,CAAhC,CAAP;AACD;;AAEiB,QAALiC,KAAK,CAACJ,OAAD,EAAkBhC,OAAuB,GAAG,EAA5C,EAAgDG,OAA4B,GAAG,EAA/E,EAAmF;AACnG,WAAO,KAAK8B,QAAL,CAAcD,OAAd,EAAuBhC,OAAvB,EAAgC,KAAKkC,kBAAL,CAAwBG,WAAxB,EAA+BL,OAA/B,EAAwC7B,OAAxC,CAAhC,CAAP;AACD;;AAEmB,QAAP6B,OAAO,CAACA,OAAD,EAAkBhC,OAAuB,GAAG,EAA5C,EAAgDG,OAA4B,GAAG,EAA/E,EAAmF;AACrG,WAAO,KAAK8B,QAAL,CAAcD,OAAd,EAAuBhC,OAAvB,EAAgC,KAAKkC,kBAAL,CAAwBG,WAAxB,EAA+BL,OAA/B,EAAwC7B,OAAxC,CAAhC,CAAP;AACD;;AAEqB,QAATmC,SAAS,CAACN,OAAD,EAAkBhC,OAAuB,GAAG,EAA5C,EAAgD;AACpE,WAAO,KAAKuC,UAAL,CAAgBP,OAAhB,EAAyBhC,OAAzB,EAAkC,KAAKkC,kBAAL,CAAwBM,kBAAxB,EAAsCR,OAAtC,CAAlC,CAAP;AACD;;AAEOF,EAAAA,iBAAiB,GAAS;AAChC,SAAKD,OAAL,CAAaY,gBAAb,CAA8BC,eAA9B,EAAuC,KAAKC,UAA5C;AACD;;AAEOT,EAAAA,kBAAkB,CACxBU,SADwB,EAExBZ,OAFwB,EAGxB7B,OAA4B,GAAG,EAHP,EAIR;AAChB,WAAO;AACLwB,MAAAA,YAAY,EAAE,KAAKD,aADd;AAELmB,MAAAA,YAAY,EAAE,IAAI5C,GAAJ,EAFT;AAGL2C,MAAAA,SAHK;AAILE,MAAAA,aAAa,EAAE,EAJV;AAKLC,MAAAA,aAAa,EAAE,KALV;AAMLf,MAAAA,OANK;AAOLlC,MAAAA,SAAS,EAAE,eAPN;AAQLkD,MAAAA,aAAa,EAAE,0BAAYhB,OAAZ,CARV;AASL,SAAG7B;AATE,KAAP;AAWD;;AAkCqB,QAAR8B,QAAQ,CAACD,OAAD,EAAkBhC,OAAlB,EAA2CG,OAA3C,EAAoE;AACxF,QAAI;AACF,UAAI,CAACA,OAAO,CAACN,gBAAb,EAA+B;AAC7B,eAAO,IAAIoD,OAAJ,CAAalC,OAAD,IAA8B;AAC/C,eAAKc,OAAL,CAAaqB,WAAb,CAAyB;AACvB/C,YAAAA,OAAO,EAAER,YAAY,CAACC,kBAAb,CAAgCO,OAAhC,CADc;AAEvBC,YAAAA,MAAM,EAAEO,eAFe;AAGvBX,YAAAA,OAHuB;AAIvBgC,YAAAA,OAJuB;AAKvB1B,YAAAA,IAAI,EAAEC;AALiB,WAAzB;;AAQA,eAAKM,QAAL,CAAcsC,GAAd,CAAkBhD,OAAO,CAACL,SAA1B,EAAqC;AAAEiB,YAAAA;AAAF,WAArC;AACD,SAVM,CAAP;AAWD;;AAED,WAAKc,OAAL,CAAaqB,WAAb,CAAyB;AACvB/C,QAAAA,OAAO,EAAER,YAAY,CAACC,kBAAb,CAAgCO,OAAhC,CADc;AAEvBC,QAAAA,MAAM,EAAEO,eAFe;AAGvBX,QAAAA,OAHuB;AAIvBgC,QAAAA,OAJuB;AAKvB1B,QAAAA,IAAI,EAAEC;AALiB,OAAzB;;AAQA,YAAM6C,kBAAkB,GAAG,IAAIC,2BAAJ,CAA2C,KAAKpC,aAAhD,EAA+Dd,OAAO,CAACL,SAAvE,CAA3B;AACA,aAAOsD,kBAAkB,CAACE,WAAnB,EAAP;AACD,KAzBD,CAyBE,OAAOC,KAAP,EAAc;AACd,aAAO;AAAEpC,QAAAA,MAAM,EAAE,yBAAUoC,KAAV;AAAV,OAAP;AACD;AACF;;AAGuB,QAAVhB,UAAU,CAACP,OAAD,EAAkBhC,OAAlB,EAA2CG,OAA3C,EAAoE;AAC1F,QAAI;AACF,WAAK0B,OAAL,CAAaqB,WAAb,CAAyB;AACvB/C,QAAAA,OAAO,EAAER,YAAY,CAACC,kBAAb,CAAgCO,OAAhC,CADc;AAEvBC,QAAAA,MAAM,EAAEY,iBAFe;AAGvBhB,QAAAA,OAHuB;AAIvBgC,QAAAA,OAJuB;AAKvB1B,QAAAA,IAAI,EAAEC;AALiB,OAAzB;;AAQA,YAAM6C,kBAAkB,GAAG,IAAIC,2BAAJ,CAA2C,KAAKpC,aAAhD,EAA+Dd,OAAO,CAACL,SAAvE,CAA3B;AACA,aAAOsD,kBAAkB,CAACE,WAAnB,EAAP;AACD,KAXD,CAWE,OAAOC,KAAP,EAAc;AACd,aAAO;AAAEpC,QAAAA,MAAM,EAAE,yBAAUoC,KAAV;AAAV,OAAP;AACD;AACF;;AA9J+B,C","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.
|
|
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
|
-
|
|
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","
|
|
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"}
|
package/lib/module/main/index.js
CHANGED
|
@@ -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
|
-
|
|
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 ===
|
|
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":"
|
|
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 @@
|
|
|
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,
|
|
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,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,
|
|
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.
|
|
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
|
-
|
|
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 ===
|
|
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
|
-
@
|
|
180
|
+
@logSubscription()
|
|
164
181
|
private async _subscribe(request: string, options: RequestOptions, context: RequestContext) {
|
|
165
182
|
try {
|
|
166
183
|
this._worker.postMessage({
|