@graphql-box/worker-client 4.1.3 → 4.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- import"core-js/modules/es.object.keys.js";import"core-js/modules/es.symbol.js";import"core-js/modules/es.array.filter.js";import"core-js/modules/web.dom-collections.for-each.js";import"core-js/modules/es.object.get-own-property-descriptors.js";import e from"@babel/runtime/helpers/objectWithoutProperties";import t from"@babel/runtime/helpers/asyncToGenerator";import r from"@babel/runtime/helpers/classCallCheck";import n from"@babel/runtime/helpers/createClass";import o from"@babel/runtime/helpers/defineProperty";import a from"@babel/runtime/helpers/applyDecoratedDescriptor";import s 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,SUBSCRIPTION_EXECUTED as l,MUTATION as h,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 j}from"@graphql-box/helpers";import x from"eventemitter3";import{v1 as O}from"uuid";import{isAsyncIterable as _,forAwaitEach as q}from"iterall";import"core-js/modules/es.regexp.exec.js";import{handleMessage as k}from"@cachemap/core-worker";var P,M,D,E=function(e){var t=/(query|mutation|subscription) ([A-Za-z]+)(\(| {)/.exec(e);return t?t[2]:""};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 I(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){o(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}function S(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 T(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?S(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):S(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function B(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 R(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?B(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):B(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var A=(P=function(r,n,o){var a,s=o.value;s&&(o.value=(a=t(u.mark((function r(){var n,o,a,c=this,l=arguments;return u.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:for(n=l.length,o=new Array(n),a=0;a<n;a++)o[a]=l[a];return r.prev=1,r.abrupt("return",new Promise(function(){var r=t(u.mark((function t(r){var n,a,l,h,f,b,m,d;return u.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=o[2],a=n.debugManager,l=e(n,["debugManager"]),a){t.next=8;break}return t.t0=r,t.next=5,s.apply(c,o);case 5:return t.t1=t.sent,(0,t.t0)(t.t1),t.abrupt("return");case 8:return h=E(o[0]),f=a.now(),a.log(p,{context:I(I({},l),{},{operationName:h}),options:o[1],request:o[0],stats:{startTime:f}}),t.next=13,s.apply(c,o);case 13:if(b=t.sent,m=a.now(),d=m-f,r(b),!_(b)){t.next=19;break}return t.abrupt("return");case 19:a.log(i,{context:I(I({},l),{},{operationName:h}),options:o[1],request:o[0],result:b,stats:{duration:d,endTime:m,startTime:f}});case 20: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 a.apply(this,arguments)}))},M=function(r,n,o){var a,s=o.value;s&&(o.value=(a=t(u.mark((function r(){var n,o,a,c=this,i=arguments;return u.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:for(n=i.length,o=new Array(n),a=0;a<n;a++)o[a]=i[a];return r.prev=1,r.abrupt("return",new Promise(function(){var r=t(u.mark((function t(r){var n,a,i,p,h,f;return u.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=o[2],a=n.debugManager,i=e(n,["debugManager"]),a){t.next=8;break}return t.t0=r,t.next=5,s.apply(c,o);case 5:return t.t1=t.sent,(0,t.t0)(t.t1),t.abrupt("return");case 8:return p=E(o[0]),h=a.now(),a.log(l,{context:T(T({},i),{},{operationName:p}),options:o[1],request:o[0],stats:{startTime:h}}),t.next=13,s.apply(c,o);case 13:f=t.sent,r(f);case 15: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 a.apply(this,arguments)}))},a((D=function(){function a(n){var c,p,l=this;r(this,a),o(this,"_cache",void 0),o(this,"_debugManager",void 0),o(this,"_eventEmitter",void 0),o(this,"_pending",new Map),o(this,"_worker",void 0),o(this,"_onMessage",(p=t(u.mark((function t(r){var n,o,a,c,p,h,f,b,d,g,w,j,x;return u.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=r.data,s(n)){t.next=3;break}return t.abrupt("return");case 3:if(a=(o=n).context,c=o.method,p=o.result,"graphqlBox"===o.type&&s(p)){t.next=6;break}return t.abrupt("return");case 6:if(h=p._cacheMetadata,f=e(p,["_cacheMetadata"]),b=v(R(R({},f),{},{requestID:a.requestID})),h&&(b._cacheMetadata=y(h)),"subscribe"!==c){t.next=14;break}null===(d=l._debugManager)||void 0===d||d.log(m,{context:a,result:b,stats:{endTime:null===(g=l._debugManager)||void 0===g?void 0:g.now()}}),l._eventEmitter.emit(a.requestID,b),t.next=23;break;case 14:if(!a.hasDeferOrStream){t.next=19;break}null===(w=l._debugManager)||void 0===w||w.log(i,{context:a,result:b,stats:{endTime:null===(j=l._debugManager)||void 0===j?void 0:j.now()}}),l._eventEmitter.emit(a.requestID,b),t.next=23;break;case 19:if(x=l._pending.get(a.requestID)){t.next=22;break}return t.abrupt("return");case 22:x.resolve(b);case 23:case"end":return t.stop()}}),t)}))),function(e){return p.apply(this,arguments)}));var h=[];if(s(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=null!==(c=n.debugManager)&&void 0!==c?c:null,this._eventEmitter=new x,this._worker=n.worker,this._addEventListener()}var p,l,w,j,_,q;return n(a,[{key:"cache",get:function(){return this._cache}},{key:"mutate",value:(q=t(u.mark((function e(t){var r,n,o=arguments;return u.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=o.length>1&&void 0!==o[1]?o[1]:{},n=o.length>2&&void 0!==o[2]?o[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 q.apply(this,arguments)})},{key:"query",value:(_=t(u.mark((function e(t){var r,n,o=arguments;return u.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=o.length>1&&void 0!==o[1]?o[1]:{},n=o.length>2&&void 0!==o[2]?o[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 _.apply(this,arguments)})},{key:"request",value:(j=t(u.mark((function e(t){var r,n,o=arguments;return u.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=o.length>1&&void 0!==o[1]?o[1]:{},n=o.length>2&&void 0!==o[2]?o[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 j.apply(this,arguments)})},{key:"subscribe",value:(w=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(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 R({debugManager:this._debugManager,fieldTypeMap:new Map,filteredRequest:"",operation:e,operationName:"",parsedRequest:"",queryFiltered:!1,request:t,requestComplexity:null,requestDepth:null,requestID:O(),whitelistHash:d(t)},r)}},{key:"_request",value:(l=t(u.mark((function e(t,r,n){var o,s=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){s._worker.postMessage({context:a._getMessageContext(n),method:"request",options:r,request:t,type:"graphqlBox"}),s._pending.set(n.requestID,{resolve:e})})));case 3:return this._worker.postMessage({context:a._getMessageContext(n),method:"request",options:r,request:t,type:"graphqlBox"}),o=new g(this._eventEmitter,n.requestID),e.abrupt("return",o.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 l.apply(this,arguments)})},{key:"_subscribe",value:(p=t(u.mark((function e(t,r,n){var o;return u.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,this._worker.postMessage({context:a._getMessageContext(n),method:"subscribe",options:r,request:t,type:"graphqlBox"}),o=new g(this._eventEmitter,n.requestID),e.abrupt("return",o.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 p.apply(this,arguments)})}],[{key:"_getMessageContext",value:function(e){var t=e.hasDeferOrStream;return{hasDeferOrStream:void 0!==t&&t,requestID:e.requestID}}}]),a}()).prototype,"_request",[P],Object.getOwnPropertyDescriptor(D.prototype,"_request"),D.prototype),a(D.prototype,"_subscribe",[M],Object.getOwnPropertyDescriptor(D.prototype,"_subscribe"),D.prototype),D);function L(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 N(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?L(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):L(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var z=self,F=z.addEventListener,G=z.postMessage;function H(){return(H=t(u.mark((function t(r,n,o,a,s){var c,i,p,l,h;return u.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,s.request(r,o,a);case 2:if(c=t.sent,_(c)){t.next=9;break}return p=(i=c)._cacheMetadata,l=e(i,["_cacheMetadata"]),h=N({},l),p&&(h._cacheMetadata=w(p)),G({context:a,method:n,result:j(h),type:"graphqlBox"}),t.abrupt("return");case 9:q(c,(function(t){var r=t._cacheMetadata,o=N({},e(t,["_cacheMetadata"]));r&&(o._cacheMetadata=w(r)),G({context:a,method:n,result:j(o),type:"graphqlBox"})}));case 10:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function W(){return(W=t(u.mark((function t(r,n,o,a,s){var c;return u.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,s.subscribe(r,o,a);case 2:if(c=t.sent,_(c)){t.next=6;break}return G({context:a,method:n,result:j(c),type:"graphqlBox"}),t.abrupt("return");case 6:q(c,(function(t){var r=t._cacheMetadata,o=N({},e(t,["_cacheMetadata"]));r&&(o._cacheMetadata=w(r)),G({context:a,method:n,result:j(o),type:"graphqlBox"})}));case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function Z(e,t){var r=e,n=r.context,o=r.method,a=r.options,s=r.request;"request"===o?function(e,t,r,n,o){H.apply(this,arguments)}(s,o,a,n,t):"subscribe"===o&&function(e,t,r,n,o){W.apply(this,arguments)}(s,o,a,n,t)}function J(e){return K.apply(this,arguments)}function K(){return(K=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(s(t)){var n=t.type;"graphqlBox"===n?Z(t,r):"cachemap"===n&&r.cache&&k(t,r.cache)}},r=t.client,F("message",n);case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}export default A;export{J 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 o from"@babel/runtime/helpers/defineProperty";import a from"@babel/runtime/helpers/applyDecoratedDescriptor";import s 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 l,MUTATION as f,QUERY as h,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 j from"eventemitter3";import{v1 as O}from"uuid";import{isAsyncIterable as _,forAwaitEach as q}from"iterall";import"core-js/modules/es.regexp.exec.js";import{handleMessage as k}from"@cachemap/core-worker";var P,D,M,E=function(e){var t=/(query|mutation|subscription) ([A-Za-z]+)(\(| {)/.exec(e);return t?t[2]:""};function S(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?S(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):S(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}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 T(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){o(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}function B(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 R(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?B(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):B(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var A=(P=function(r,n,o){var a,s=o.value;s&&(o.value=(a=t(c.mark((function r(){var n,o,a,u=this,l=arguments;return c.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:for(n=l.length,o=new Array(n),a=0;a<n;a++)o[a]=l[a];return r.prev=1,r.abrupt("return",new Promise(function(){var r=t(c.mark((function t(r){var n,a,l,f,h,b,m,d;return c.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=o[2],a=n.debugManager,l=e(n,["debugManager"]),a){t.next=8;break}return t.t0=r,t.next=5,s.apply(u,o);case 5:return t.t1=t.sent,(0,t.t0)(t.t1),t.abrupt("return");case 8:return f=E(o[0]),h=a.now(),a.log(p,{context:I(I({},l),{},{operationName:f}),options:o[1],request:o[0],stats:{startTime:h}}),t.next=13,s.apply(u,o);case 13:if(b=t.sent,m=a.now(),d=m-h,r(b),!_(b)){t.next=19;break}return t.abrupt("return");case 19:a.log(i,{context:I(I({},l),{},{operationName:f}),options:o[1],request:o[0],result:b,stats:{duration:d,endTime:m,startTime:h}});case 20: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 a.apply(this,arguments)}))},D=function(r,n,o){var a,s=o.value;s&&(o.value=(a=t(c.mark((function r(){var n,o,a,u=this,i=arguments;return c.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:for(n=i.length,o=new Array(n),a=0;a<n;a++)o[a]=i[a];return r.prev=1,r.abrupt("return",new Promise(function(){var r=t(c.mark((function t(r){var n,a,i,p,f,h;return c.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=o[2],a=n.debugManager,i=e(n,["debugManager"]),a){t.next=8;break}return t.t0=r,t.next=5,s.apply(u,o);case 5:return t.t1=t.sent,(0,t.t0)(t.t1),t.abrupt("return");case 8:return p=E(o[0]),f=a.now(),a.log(l,{context:T(T({},i),{},{operationName:p}),options:o[1],request:o[0],stats:{startTime:f}}),t.next=13,s.apply(u,o);case 13:h=t.sent,r(h);case 15: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 a.apply(this,arguments)}))},a((M=function(){function a(n){var u,p,l,f=this;r(this,a),o(this,"_cache",void 0),o(this,"_debugManager",void 0),o(this,"_eventEmitter",void 0),o(this,"_experimentalDeferStreamSupport",void 0),o(this,"_pending",new Map),o(this,"_worker",void 0),o(this,"_onMessage",(l=t(c.mark((function t(r){var n,o,a,u,p,l,h,b,d,w,x,j,O,_,q,k,P;return c.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=r.data,s(n)){t.next=3;break}return t.abrupt("return");case 3:if(a=(o=n).context,u=o.method,p=o.result,"graphqlBox"===o.type&&s(p)){t.next=6;break}return t.abrupt("return");case 6:if(l=p._cacheMetadata,h=e(p,["_cacheMetadata"]),b=v(R(R({},h),{},{requestID:a.requestID})),l&&(b._cacheMetadata=y(l)),"subscribe"!==u){t.next=14;break}null===(d=f._debugManager)||void 0===d||d.log(m,{context:a,result:b,stats:{endTime:null===(w=f._debugManager)||void 0===w?void 0:w.now()}}),f._eventEmitter.emit(a.requestID,b),t.next=26;break;case 14:if(!a.hasDeferOrStream){t.next=21;break}(O=f._pending.get(a.requestID))&&(_=new g(f._eventEmitter,a.requestID),O.resolve(_.getIterator())),null===(x=f._debugManager)||void 0===x||x.log(i,{context:a,result:b,stats:{endTime:null===(j=f._debugManager)||void 0===j?void 0:j.now()}}),f._eventEmitter.emit(a.requestID,b),t.next=26;break;case 21:if(P=f._pending.get(a.requestID)){t.next=24;break}return t.abrupt("return");case 24:null===(q=f._debugManager)||void 0===q||q.log(i,{context:a,result:b,stats:{endTime:null===(k=f._debugManager)||void 0===k?void 0:k.now()}}),P.resolve(b);case 26:case"end":return t.stop()}}),t)}))),function(e){return l.apply(this,arguments)}));var h=[];if(s(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=null!==(u=n.debugManager)&&void 0!==u?u:null,this._eventEmitter=new j,this._experimentalDeferStreamSupport=null!==(p=n.experimentalDeferStreamSupport)&&void 0!==p&&p,this._worker=n.worker,this._addEventListener()}var p,l,w,x,_,q;return n(a,[{key:"cache",get:function(){return this._cache}},{key:"mutate",value:(q=t(c.mark((function e(t){var r,n,o=arguments;return c.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=o.length>1&&void 0!==o[1]?o[1]:{},n=o.length>2&&void 0!==o[2]?o[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 q.apply(this,arguments)})},{key:"query",value:(_=t(c.mark((function e(t){var r,n,o=arguments;return c.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=o.length>1&&void 0!==o[1]?o[1]:{},n=o.length>2&&void 0!==o[2]?o[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:"request",value:(x=t(c.mark((function e(t){var r,n,o=arguments;return c.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=o.length>1&&void 0!==o[1]?o[1]:{},n=o.length>2&&void 0!==o[2]?o[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 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 R({debugManager:this._debugManager,experimentalDeferStreamSupport:this._experimentalDeferStreamSupport,fieldTypeMap:new Map,filteredRequest:"",operation:e,operationName:"",parsedRequest:"",queryFiltered:!1,request:t,requestComplexity:null,requestDepth:null,requestID:O(),whitelistHash:d(t)},r)}},{key:"_request",value:(l=t(c.mark((function e(t,r,n){var o=this;return c.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,new Promise((function(e){o._worker.postMessage({context:a._getMessageContext(n),method:"request",options:r,request:t,type:"graphqlBox"}),o._pending.set(n.requestID,{resolve:e})}));case 3:return e.abrupt("return",e.sent);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,null,[[0,6]])}))),function(e,t,r){return l.apply(this,arguments)})},{key:"_subscribe",value:(p=t(c.mark((function e(t,r,n){var o;return c.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,this._worker.postMessage({context:a._getMessageContext(n),method:"subscribe",options:r,request:t,type:"graphqlBox"}),o=new g(this._eventEmitter,n.requestID),e.abrupt("return",o.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}}}]),a}()).prototype,"_request",[P],Object.getOwnPropertyDescriptor(M.prototype,"_request"),M.prototype),a(M.prototype,"_subscribe",[D],Object.getOwnPropertyDescriptor(M.prototype,"_subscribe"),M.prototype),M);function L(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 N(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?L(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):L(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var z=self,F=z.addEventListener,G=z.postMessage;function H(){return(H=t(c.mark((function t(r,n,o,a,s){var u,i,p,l,f;return c.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,s.request(r,o,a);case 2:if(u=t.sent,_(u)){t.next=9;break}return p=(i=u)._cacheMetadata,l=e(i,["_cacheMetadata"]),f=N({},l),p&&(f._cacheMetadata=w(p)),G({context:a,method:n,result:x(f),type:"graphqlBox"}),t.abrupt("return");case 9:q(u,(function(t){var r=t._cacheMetadata,o=N({},e(t,["_cacheMetadata"]));r&&(o._cacheMetadata=w(r)),G({context:a,method:n,result:x(o),type:"graphqlBox"})}));case 10:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function W(){return(W=t(c.mark((function t(r,n,o,a,s){var u;return c.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,s.subscribe(r,o,a);case 2:if(u=t.sent,_(u)){t.next=6;break}return G({context:a,method:n,result:x(u),type:"graphqlBox"}),t.abrupt("return");case 6:q(u,(function(t){var r=t._cacheMetadata,o=N({},e(t,["_cacheMetadata"]));r&&(o._cacheMetadata=w(r)),G({context:a,method:n,result:x(o),type:"graphqlBox"})}));case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function Z(e,t){var r=e,n=r.context,o=r.method,a=r.options,s=r.request;"request"===o?function(e,t,r,n,o){H.apply(this,arguments)}(s,o,a,n,t):"subscribe"===o&&function(e,t,r,n,o){W.apply(this,arguments)}(s,o,a,n,t)}function J(e){return K.apply(this,arguments)}function K(){return(K=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(s(t)){var n=t.type;"graphqlBox"===n?Z(t,r):"cachemap"===n&&r.cache&&k(t,r.cache)}},r=t.client,F("message",n);case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}export default A;export{J as registerWorker};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../worker-client/src/consts/index.ts","../worker-client/src/helpers/operationNameRegex.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","export default (request: string) => {\n const output = /(query|mutation|subscription) ([A-Za-z]+)(\\(| {)/.exec(request);\n return output ? output[2] : \"\";\n};\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 ?? 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 filteredRequest: \"\",\n operation,\n operationName: \"\",\n parsedRequest: \"\",\n queryFiltered: false,\n request,\n requestComplexity: null,\n requestDepth: null,\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\";\nimport operationNameRegex from \"../../helpers/operationNameRegex\";\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 derivedOperationName = operationNameRegex(args[0]);\n const startTime = debugManager.now();\n\n debugManager.log(REQUEST_EXECUTED, {\n context: { ...otherContext, operationName: derivedOperationName },\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, operationName: derivedOperationName },\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\";\nimport operationNameRegex from \"../../helpers/operationNameRegex\";\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 derivedOperationName = operationNameRegex(args[0]);\n const startTime = debugManager.now();\n\n debugManager.log(SUBSCRIPTION_EXECUTED, {\n context: { ...otherContext, operationName: derivedOperationName },\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":["request","output","exec","WorkerClient","_target","_propertyName","descriptor","method","value","args","Promise","resolve","debugManager","otherContext","apply","_this","derivedOperationName","operationNameRegex","startTime","now","log","REQUEST_EXECUTED","context","operationName","options","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","filteredRequest","parsedRequest","queryFiltered","requestComplexity","requestDepth","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
+ {"version":3,"file":"index.js","sources":["../worker-client/src/consts/index.ts","../worker-client/src/helpers/operationNameRegex.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","export default (request: string) => {\n const output = /(query|mutation|subscription) ([A-Za-z]+)(\\(| {)/.exec(request);\n return output ? output[2] : \"\";\n};\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 _experimentalDeferStreamSupport: boolean;\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 ?? null;\n this._eventEmitter = new EventEmitter();\n this._experimentalDeferStreamSupport = options.experimentalDeferStreamSupport ?? false;\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 experimentalDeferStreamSupport: this._experimentalDeferStreamSupport,\n fieldTypeMap: new Map(),\n filteredRequest: \"\",\n operation,\n operationName: \"\",\n parsedRequest: \"\",\n queryFiltered: false,\n request,\n requestComplexity: null,\n requestDepth: null,\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 const pending = this._pending.get(context.requestID);\n\n if (pending) {\n const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.requestID);\n pending.resolve(eventAsyncIterator.getIterator());\n }\n\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 this._debugManager?.log(REQUEST_RESOLVED, {\n context,\n result: response,\n stats: { endTime: this._debugManager?.now() },\n });\n\n pending.resolve(response);\n }\n };\n\n @logRequest()\n private async _request(request: string, options: RequestOptions, context: RequestContext) {\n try {\n return await 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 } 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\";\nimport operationNameRegex from \"../../helpers/operationNameRegex\";\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 derivedOperationName = operationNameRegex(args[0]);\n const startTime = debugManager.now();\n\n debugManager.log(REQUEST_EXECUTED, {\n context: { ...otherContext, operationName: derivedOperationName },\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, operationName: derivedOperationName },\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\";\nimport operationNameRegex from \"../../helpers/operationNameRegex\";\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 derivedOperationName = operationNameRegex(args[0]);\n const startTime = debugManager.now();\n\n debugManager.log(SUBSCRIPTION_EXECUTED, {\n context: { ...otherContext, operationName: derivedOperationName },\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":["request","output","exec","WorkerClient","_target","_propertyName","descriptor","method","value","args","Promise","resolve","debugManager","otherContext","apply","_this","derivedOperationName","operationNameRegex","startTime","now","log","REQUEST_EXECUTED","context","operationName","options","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","pending","_pending","get","eventAsyncIterator","EventAsyncIterator","getIterator","_this$_debugManager4","_this$_debugManager6","errors","push","TypeError","cache","worker","length","_cache","EventEmitter","_experimentalDeferStreamSupport","experimentalDeferStreamSupport","_worker","_addEventListener","this","_request","_getRequestContext","MUTATION","QUERY","_subscribe","SUBSCRIPTION","addEventListener","_onMessage","operation","fieldTypeMap","filteredRequest","parsedRequest","queryFiltered","requestComplexity","requestDepth","uuid","whitelistHash","hashRequest","_this2","postMessage","_getMessageContext","set","_castArray","self","client","requestResult","dehydrateCacheMetadata","serializeErrors","forAwaitEach","subscribe","subscribeResult","handleMessage","handleRequest","handleSubscription","registerWorker","onMessage","handleCachemapMessage"],"mappings":"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"}
@@ -1,32 +1,32 @@
1
1
  -----------------------------
2
2
  Rollup File Analysis
3
3
  -----------------------------
4
- bundle size: 31.586 KB
5
- original size: 14.148 KB
4
+ bundle size: 32.224 KB
5
+ original size: 14.552 KB
6
6
  code reduction: 0 %
7
7
  module count: 8
8
8
 
9
9
  ███████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░
10
10
  file: /src/main/index.ts
11
- bundle space: 46.14 %
12
- rendered size: 14.573 KB
13
- original size: 6.129 KB
11
+ bundle space: 47.2 %
12
+ rendered size: 15.211 KB
13
+ original size: 6.362 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.15 %
20
+ bundle space: 19.76 %
21
21
  rendered size: 6.366 KB
22
22
  original size: 3.377 KB
23
23
  code reduction: 0 %
24
24
  dependents: 1
25
25
  - /src/index.ts
26
26
 
27
- █████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
27
+ ████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
28
28
  file: /src/debug/log-request/index.ts
29
- bundle space: 18.04 %
29
+ bundle space: 17.68 %
30
30
  rendered size: 5.698 KB
31
31
  original size: 1.762 KB
32
32
  code reduction: 0 %
@@ -35,7 +35,7 @@ dependents: 1
35
35
 
36
36
  ███████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
37
37
  file: /src/debug/log-subscription/index.ts
38
- bundle space: 14.71 %
38
+ bundle space: 14.42 %
39
39
  rendered size: 4.647 KB
40
40
  original size: 1.274 KB
41
41
  code reduction: 0 %
@@ -44,7 +44,7 @@ dependents: 1
44
44
 
45
45
  ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
46
46
  file: /src/helpers/operationNameRegex.ts
47
- bundle space: 0.52 %
47
+ bundle space: 0.51 %
48
48
  rendered size: 165 Bytes
49
49
  original size: 158 Bytes
50
50
  code reduction: 0 %
@@ -66,7 +66,7 @@ dependents: 2
66
66
  file: /src/defs/index.ts
67
67
  bundle space: 0 %
68
68
  rendered size: 0 Byte
69
- original size: 1.142 KB
69
+ original size: 1.313 KB
70
70
  code reduction: 100 %
71
71
  dependents: 1
72
72
  - /src/index.ts
@@ -45,11 +45,12 @@ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logSubscript
45
45
  }
46
46
 
47
47
  constructor(options) {
48
- var _options$debugManager;
48
+ var _options$debugManager, _options$experimental;
49
49
 
50
50
  (0, _defineProperty2.default)(this, "_cache", void 0);
51
51
  (0, _defineProperty2.default)(this, "_debugManager", void 0);
52
52
  (0, _defineProperty2.default)(this, "_eventEmitter", void 0);
53
+ (0, _defineProperty2.default)(this, "_experimentalDeferStreamSupport", void 0);
53
54
  (0, _defineProperty2.default)(this, "_pending", new Map());
54
55
  (0, _defineProperty2.default)(this, "_worker", void 0);
55
56
  (0, _defineProperty2.default)(this, "_onMessage", async ({
@@ -97,6 +98,13 @@ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logSubscript
97
98
  } else if (context.hasDeferOrStream) {
98
99
  var _this$_debugManager3, _this$_debugManager4;
99
100
 
101
+ const pending = this._pending.get(context.requestID);
102
+
103
+ if (pending) {
104
+ const eventAsyncIterator = new _helpers.EventAsyncIterator(this._eventEmitter, context.requestID);
105
+ pending.resolve(eventAsyncIterator.getIterator());
106
+ }
107
+
100
108
  (_this$_debugManager3 = this._debugManager) === null || _this$_debugManager3 === void 0 ? void 0 : _this$_debugManager3.log(_core.REQUEST_RESOLVED, {
101
109
  context,
102
110
  result: response,
@@ -107,12 +115,21 @@ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logSubscript
107
115
 
108
116
  this._eventEmitter.emit(context.requestID, response);
109
117
  } else {
118
+ var _this$_debugManager5, _this$_debugManager6;
119
+
110
120
  const pending = this._pending.get(context.requestID);
111
121
 
112
122
  if (!pending) {
113
123
  return;
114
124
  }
115
125
 
126
+ (_this$_debugManager5 = this._debugManager) === null || _this$_debugManager5 === void 0 ? void 0 : _this$_debugManager5.log(_core.REQUEST_RESOLVED, {
127
+ context,
128
+ result: response,
129
+ stats: {
130
+ endTime: (_this$_debugManager6 = this._debugManager) === null || _this$_debugManager6 === void 0 ? void 0 : _this$_debugManager6.now()
131
+ }
132
+ });
116
133
  pending.resolve(response);
117
134
  }
118
135
  });
@@ -137,6 +154,7 @@ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logSubscript
137
154
  this._cache = options.cache;
138
155
  this._debugManager = (_options$debugManager = options.debugManager) !== null && _options$debugManager !== void 0 ? _options$debugManager : null;
139
156
  this._eventEmitter = new _eventemitter.default();
157
+ this._experimentalDeferStreamSupport = (_options$experimental = options.experimentalDeferStreamSupport) !== null && _options$experimental !== void 0 ? _options$experimental : false;
140
158
  this._worker = options.worker;
141
159
 
142
160
  this._addEventListener();
@@ -169,6 +187,7 @@ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logSubscript
169
187
  _getRequestContext(operation, request, context = {}) {
170
188
  return {
171
189
  debugManager: this._debugManager,
190
+ experimentalDeferStreamSupport: this._experimentalDeferStreamSupport,
172
191
  fieldTypeMap: new Map(),
173
192
  filteredRequest: "",
174
193
  operation,
@@ -186,32 +205,19 @@ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logSubscript
186
205
 
187
206
  async _request(request, options, context) {
188
207
  try {
189
- if (!context.hasDeferOrStream) {
190
- return new Promise(resolve => {
191
- this._worker.postMessage({
192
- context: WorkerClient._getMessageContext(context),
193
- method: _consts.REQUEST,
194
- options,
195
- request,
196
- type: _consts.GRAPHQL_BOX
197
- });
198
-
199
- this._pending.set(context.requestID, {
200
- resolve
201
- });
208
+ return await new Promise(resolve => {
209
+ this._worker.postMessage({
210
+ context: WorkerClient._getMessageContext(context),
211
+ method: _consts.REQUEST,
212
+ options,
213
+ request,
214
+ type: _consts.GRAPHQL_BOX
202
215
  });
203
- }
204
216
 
205
- this._worker.postMessage({
206
- context: WorkerClient._getMessageContext(context),
207
- method: _consts.REQUEST,
208
- options,
209
- request,
210
- type: _consts.GRAPHQL_BOX
217
+ this._pending.set(context.requestID, {
218
+ resolve
219
+ });
211
220
  });
212
-
213
- const eventAsyncIterator = new _helpers.EventAsyncIterator(this._eventEmitter, context.requestID);
214
- return eventAsyncIterator.getIterator();
215
221
  } catch (error) {
216
222
  return {
217
223
  errors: (0, _castArray2.default)(error)
@@ -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","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","filteredRequest","operationName","parsedRequest","queryFiltered","requestComplexity","requestDepth","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 ?? 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 filteredRequest: \"\",\n operation,\n operationName: \"\",\n parsedRequest: \"\",\n queryFiltered: false,\n request,\n requestComplexity: null,\n requestDepth: null,\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
+ {"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","pending","_pending","get","eventAsyncIterator","EventAsyncIterator","resolve","getIterator","REQUEST_RESOLVED","errors","push","TypeError","cache","worker","length","_cache","debugManager","EventEmitter","_experimentalDeferStreamSupport","experimentalDeferStreamSupport","_worker","_addEventListener","mutate","request","_request","_getRequestContext","MUTATION","query","QUERY","subscribe","_subscribe","SUBSCRIPTION","addEventListener","MESSAGE","_onMessage","operation","fieldTypeMap","filteredRequest","operationName","parsedRequest","queryFiltered","requestComplexity","requestDepth","whitelistHash","Promise","postMessage","REQUEST","set","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 _experimentalDeferStreamSupport: boolean;\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 ?? null;\n this._eventEmitter = new EventEmitter();\n this._experimentalDeferStreamSupport = options.experimentalDeferStreamSupport ?? false;\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 experimentalDeferStreamSupport: this._experimentalDeferStreamSupport,\n fieldTypeMap: new Map(),\n filteredRequest: \"\",\n operation,\n operationName: \"\",\n parsedRequest: \"\",\n queryFiltered: false,\n request,\n requestComplexity: null,\n requestDepth: null,\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 const pending = this._pending.get(context.requestID);\n\n if (pending) {\n const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.requestID);\n pending.resolve(eventAsyncIterator.getIterator());\n }\n\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 this._debugManager?.log(REQUEST_RESOLVED, {\n context,\n result: response,\n stats: { endTime: this._debugManager?.now() },\n });\n\n pending.resolve(response);\n }\n };\n\n @logRequest()\n private async _request(request: string, options: RequestOptions, context: RequestContext) {\n try {\n return await 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 } 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"}
@@ -25,7 +25,7 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logSubscription(), (_class = cl
25
25
  }
26
26
 
27
27
  constructor(options) {
28
- var _options$debugManager;
28
+ var _options$debugManager, _options$experimental;
29
29
 
30
30
  _defineProperty(this, "_cache", void 0);
31
31
 
@@ -33,6 +33,8 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logSubscription(), (_class = cl
33
33
 
34
34
  _defineProperty(this, "_eventEmitter", void 0);
35
35
 
36
+ _defineProperty(this, "_experimentalDeferStreamSupport", void 0);
37
+
36
38
  _defineProperty(this, "_pending", new Map());
37
39
 
38
40
  _defineProperty(this, "_worker", void 0);
@@ -82,6 +84,13 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logSubscription(), (_class = cl
82
84
  } else if (context.hasDeferOrStream) {
83
85
  var _this$_debugManager3, _this$_debugManager4;
84
86
 
87
+ const pending = this._pending.get(context.requestID);
88
+
89
+ if (pending) {
90
+ const eventAsyncIterator = new EventAsyncIterator(this._eventEmitter, context.requestID);
91
+ pending.resolve(eventAsyncIterator.getIterator());
92
+ }
93
+
85
94
  (_this$_debugManager3 = this._debugManager) === null || _this$_debugManager3 === void 0 ? void 0 : _this$_debugManager3.log(REQUEST_RESOLVED, {
86
95
  context,
87
96
  result: response,
@@ -92,12 +101,21 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logSubscription(), (_class = cl
92
101
 
93
102
  this._eventEmitter.emit(context.requestID, response);
94
103
  } else {
104
+ var _this$_debugManager5, _this$_debugManager6;
105
+
95
106
  const pending = this._pending.get(context.requestID);
96
107
 
97
108
  if (!pending) {
98
109
  return;
99
110
  }
100
111
 
112
+ (_this$_debugManager5 = this._debugManager) === null || _this$_debugManager5 === void 0 ? void 0 : _this$_debugManager5.log(REQUEST_RESOLVED, {
113
+ context,
114
+ result: response,
115
+ stats: {
116
+ endTime: (_this$_debugManager6 = this._debugManager) === null || _this$_debugManager6 === void 0 ? void 0 : _this$_debugManager6.now()
117
+ }
118
+ });
101
119
  pending.resolve(response);
102
120
  }
103
121
  });
@@ -123,6 +141,7 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logSubscription(), (_class = cl
123
141
  this._cache = options.cache;
124
142
  this._debugManager = (_options$debugManager = options.debugManager) !== null && _options$debugManager !== void 0 ? _options$debugManager : null;
125
143
  this._eventEmitter = new EventEmitter();
144
+ this._experimentalDeferStreamSupport = (_options$experimental = options.experimentalDeferStreamSupport) !== null && _options$experimental !== void 0 ? _options$experimental : false;
126
145
  this._worker = options.worker;
127
146
 
128
147
  this._addEventListener();
@@ -155,6 +174,7 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logSubscription(), (_class = cl
155
174
  _getRequestContext(operation, request, context = {}) {
156
175
  return {
157
176
  debugManager: this._debugManager,
177
+ experimentalDeferStreamSupport: this._experimentalDeferStreamSupport,
158
178
  fieldTypeMap: new Map(),
159
179
  filteredRequest: "",
160
180
  operation,
@@ -172,32 +192,19 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logSubscription(), (_class = cl
172
192
 
173
193
  async _request(request, options, context) {
174
194
  try {
175
- if (!context.hasDeferOrStream) {
176
- return new Promise(resolve => {
177
- this._worker.postMessage({
178
- context: WorkerClient._getMessageContext(context),
179
- method: REQUEST,
180
- options,
181
- request,
182
- type: GRAPHQL_BOX
183
- });
184
-
185
- this._pending.set(context.requestID, {
186
- resolve
187
- });
195
+ return await new Promise(resolve => {
196
+ this._worker.postMessage({
197
+ context: WorkerClient._getMessageContext(context),
198
+ method: REQUEST,
199
+ options,
200
+ request,
201
+ type: GRAPHQL_BOX
188
202
  });
189
- }
190
203
 
191
- this._worker.postMessage({
192
- context: WorkerClient._getMessageContext(context),
193
- method: REQUEST,
194
- options,
195
- request,
196
- type: GRAPHQL_BOX
204
+ this._pending.set(context.requestID, {
205
+ resolve
206
+ });
197
207
  });
198
-
199
- const eventAsyncIterator = new EventAsyncIterator(this._eventEmitter, context.requestID);
200
- return eventAsyncIterator.getIterator();
201
208
  } catch (error) {
202
209
  return {
203
210
  errors: _castArray(error)
@@ -1 +1 @@
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","filteredRequest","operationName","parsedRequest","queryFiltered","requestComplexity","requestDepth","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 ?? 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 filteredRequest: \"\",\n operation,\n operationName: \"\",\n parsedRequest: \"\",\n queryFiltered: false,\n request,\n requestComplexity: null,\n requestDepth: null,\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
+ {"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","eventAsyncIterator","resolve","getIterator","errors","push","TypeError","cache","worker","length","_cache","debugManager","_experimentalDeferStreamSupport","experimentalDeferStreamSupport","_worker","_addEventListener","mutate","request","_request","_getRequestContext","query","subscribe","_subscribe","addEventListener","_onMessage","operation","fieldTypeMap","filteredRequest","operationName","parsedRequest","queryFiltered","requestComplexity","requestDepth","whitelistHash","Promise","postMessage","set","error"],"mappings":";;;;;;;;AACA,SAEEA,QAFF,EAKEC,KALF,EAMEC,gBANF,EASEC,YATF,EAUEC,qBAVF,QAYO,mBAZP;AAaA,SAASC,kBAAT,EAA6BC,iBAA7B,EAAgDC,WAAhD,EAA6DC,sBAA7D,QAA2F,sBAA3F;AACA,OAAOC,YAAP,MAAyB,eAAzB;AAEA,SAASC,EAAE,IAAIC,IAAf,QAA2B,MAA3B;AACA,SAASC,WAAT,EAAsBC,OAAtB,EAA+BC,OAA/B,EAAwCC,SAAxC,QAAyD,WAAzD;AACA,OAAOC,UAAP,MAAuB,sBAAvB;AACA,OAAOC,eAAP,MAA4B,2BAA5B;IAGqBC,Y,WAgJlBF,UAAU,E,UAmBVC,eAAe,E,YAnKH,MAAMC,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;;AASDC,EAAAA,WAAW,CAACC,OAAD,EAAuB;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA,sCAHC,IAAIC,GAAJ,EAGD;;AAAA;;AAAA,wCA0Eb,OAAO;AAAEC,MAAAA;AAAF,KAAP,KAAiD;AACpE,UAAI,CAAC,eAAcA,IAAd,CAAL,EAA0B;AACxB;AACD;;AAED,YAAM;AAAEC,QAAAA,OAAF;AAAWC,QAAAA,MAAX;AAAmBC,QAAAA,MAAnB;AAA2BC,QAAAA;AAA3B,UAAoCJ,IAA1C;;AAEA,UAAII,IAAI,KAAKjB,WAAT,IAAwB,CAAC,eAAcgB,MAAd,CAA7B,EAAoD;AAClD;AACD;;AAED,YAAM;AAAEE,QAAAA,cAAF;AAAkB,WAAGC;AAArB,UAAoCH,MAA1C;AACA,YAAMI,QAA4B,GAAG1B,iBAAiB,CAAC,EAAE,GAAGyB,UAAL;AAAiBV,QAAAA,SAAS,EAAEK,OAAO,CAACL;AAApC,OAAD,CAAtD;;AAEA,UAAIS,cAAJ,EAAoB;AAClBE,QAAAA,QAAQ,CAACF,cAAT,GAA0BtB,sBAAsB,CAACsB,cAAD,CAAhD;AACD;;AAED,UAAIH,MAAM,KAAKZ,SAAf,EAA0B;AAAA;;AACxB,oCAAKkB,aAAL,4EAAoBC,GAApB,CAAwB9B,qBAAxB,EAA+C;AAC7CsB,UAAAA,OAD6C;AAE7CE,UAAAA,MAAM,EAAEI,QAFqC;AAG7CG,UAAAA,KAAK,EAAE;AAAEC,YAAAA,OAAO,0BAAE,KAAKH,aAAP,yDAAE,qBAAoBI,GAApB;AAAX;AAHsC,SAA/C;;AAMA,aAAKC,aAAL,CAAmBC,IAAnB,CAAwBb,OAAO,CAACL,SAAhC,EAA2CW,QAA3C;AACD,OARD,MAQO,IAAIN,OAAO,CAACN,gBAAZ,EAA8B;AAAA;;AACnC,cAAMoB,OAAO,GAAG,KAAKC,QAAL,CAAcC,GAAd,CAAkBhB,OAAO,CAACL,SAA1B,CAAhB;;AAEA,YAAImB,OAAJ,EAAa;AACX,gBAAMG,kBAAkB,GAAG,IAAItC,kBAAJ,CAA2C,KAAKiC,aAAhD,EAA+DZ,OAAO,CAACL,SAAvE,CAA3B;AACAmB,UAAAA,OAAO,CAACI,OAAR,CAAgBD,kBAAkB,CAACE,WAAnB,EAAhB;AACD;;AAED,qCAAKZ,aAAL,8EAAoBC,GAApB,CAAwBhC,gBAAxB,EAA0C;AACxCwB,UAAAA,OADwC;AAExCE,UAAAA,MAAM,EAAEI,QAFgC;AAGxCG,UAAAA,KAAK,EAAE;AAAEC,YAAAA,OAAO,0BAAE,KAAKH,aAAP,yDAAE,qBAAoBI,GAApB;AAAX;AAHiC,SAA1C;;AAMA,aAAKC,aAAL,CAAmBC,IAAnB,CAAwBb,OAAO,CAACL,SAAhC,EAA2CW,QAA3C;AACD,OAfM,MAeA;AAAA;;AACL,cAAMQ,OAAO,GAAG,KAAKC,QAAL,CAAcC,GAAd,CAAkBhB,OAAO,CAACL,SAA1B,CAAhB;;AAEA,YAAI,CAACmB,OAAL,EAAc;AACZ;AACD;;AAED,qCAAKP,aAAL,8EAAoBC,GAApB,CAAwBhC,gBAAxB,EAA0C;AACxCwB,UAAAA,OADwC;AAExCE,UAAAA,MAAM,EAAEI,QAFgC;AAGxCG,UAAAA,KAAK,EAAE;AAAEC,YAAAA,OAAO,0BAAE,KAAKH,aAAP,yDAAE,qBAAoBI,GAApB;AAAX;AAHiC,SAA1C;AAMAG,QAAAA,OAAO,CAACI,OAAR,CAAgBZ,QAAhB;AACD;AACF,KAlIiC;;AAChC,UAAMc,MAAmB,GAAG,EAA5B;;AAEA,QAAI,CAAC,eAAcvB,OAAd,CAAL,EAA6B;AAC3BuB,MAAAA,MAAM,CAACC,IAAP,CAAY,IAAIC,SAAJ,CAAc,4DAAd,CAAZ;AACD;;AAED,QAAI,CAACzB,OAAO,CAAC0B,KAAb,EAAoB;AAClBH,MAAAA,MAAM,CAACC,IAAP,CAAY,IAAIC,SAAJ,CAAc,6CAAd,CAAZ;AACD;;AAED,QAAI,CAACzB,OAAO,CAAC2B,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,GAAc7B,OAAO,CAAC0B,KAAtB;AACA,SAAKhB,aAAL,4BAAqBV,OAAO,CAAC8B,YAA7B,yEAA6C,IAA7C;AACA,SAAKf,aAAL,GAAqB,IAAI7B,YAAJ,EAArB;AACA,SAAK6C,+BAAL,4BAAuC/B,OAAO,CAACgC,8BAA/C,yEAAiF,KAAjF;AACA,SAAKC,OAAL,GAAejC,OAAO,CAAC2B,MAAvB;;AACA,SAAKO,iBAAL;AACD;;AAEQ,MAALR,KAAK,GAAmB;AAC1B,WAAO,KAAKG,MAAZ;AACD;;AAEkB,QAANM,MAAM,CAACC,OAAD,EAAkBpC,OAAuB,GAAG,EAA5C,EAAgDG,OAA4B,GAAG,EAA/E,EAAmF;AACpG,WAAO,KAAKkC,QAAL,CAAcD,OAAd,EAAuBpC,OAAvB,EAAgC,KAAKsC,kBAAL,CAAwB7D,QAAxB,EAAkC2D,OAAlC,EAA2CjC,OAA3C,CAAhC,CAAP;AACD;;AAEiB,QAALoC,KAAK,CAACH,OAAD,EAAkBpC,OAAuB,GAAG,EAA5C,EAAgDG,OAA4B,GAAG,EAA/E,EAAmF;AACnG,WAAO,KAAKkC,QAAL,CAAcD,OAAd,EAAuBpC,OAAvB,EAAgC,KAAKsC,kBAAL,CAAwB5D,KAAxB,EAA+B0D,OAA/B,EAAwCjC,OAAxC,CAAhC,CAAP;AACD;;AAEmB,QAAPiC,OAAO,CAACA,OAAD,EAAkBpC,OAAuB,GAAG,EAA5C,EAAgDG,OAA4B,GAAG,EAA/E,EAAmF;AACrG,WAAO,KAAKkC,QAAL,CAAcD,OAAd,EAAuBpC,OAAvB,EAAgC,KAAKsC,kBAAL,CAAwB5D,KAAxB,EAA+B0D,OAA/B,EAAwCjC,OAAxC,CAAhC,CAAP;AACD;;AAEqB,QAATqC,SAAS,CAACJ,OAAD,EAAkBpC,OAAuB,GAAG,EAA5C,EAAgD;AACpE,WAAO,KAAKyC,UAAL,CAAgBL,OAAhB,EAAyBpC,OAAzB,EAAkC,KAAKsC,kBAAL,CAAwB1D,YAAxB,EAAsCwD,OAAtC,CAAlC,CAAP;AACD;;AAEOF,EAAAA,iBAAiB,GAAS;AAChC,SAAKD,OAAL,CAAaS,gBAAb,CAA8BpD,OAA9B,EAAuC,KAAKqD,UAA5C;AACD;;AAEOL,EAAAA,kBAAkB,CACxBM,SADwB,EAExBR,OAFwB,EAGxBjC,OAA4B,GAAG,EAHP,EAIR;AAChB,WAAO;AACL2B,MAAAA,YAAY,EAAE,KAAKpB,aADd;AAELsB,MAAAA,8BAA8B,EAAE,KAAKD,+BAFhC;AAGLc,MAAAA,YAAY,EAAE,IAAI5C,GAAJ,EAHT;AAIL6C,MAAAA,eAAe,EAAE,EAJZ;AAKLF,MAAAA,SALK;AAMLG,MAAAA,aAAa,EAAE,EANV;AAOLC,MAAAA,aAAa,EAAE,EAPV;AAQLC,MAAAA,aAAa,EAAE,KARV;AASLb,MAAAA,OATK;AAULc,MAAAA,iBAAiB,EAAE,IAVd;AAWLC,MAAAA,YAAY,EAAE,IAXT;AAYLrD,MAAAA,SAAS,EAAEV,IAAI,EAZV;AAaLgE,MAAAA,aAAa,EAAEpE,WAAW,CAACoD,OAAD,CAbrB;AAcL,SAAGjC;AAdE,KAAP;AAgBD;;AA6DqB,QAARkC,QAAQ,CAACD,OAAD,EAAkBpC,OAAlB,EAA2CG,OAA3C,EAAoE;AACxF,QAAI;AACF,aAAO,MAAM,IAAIkD,OAAJ,CAAahC,OAAD,IAA8B;AACrD,aAAKY,OAAL,CAAaqB,WAAb,CAAyB;AACvBnD,UAAAA,OAAO,EAAER,YAAY,CAACC,kBAAb,CAAgCO,OAAhC,CADc;AAEvBC,UAAAA,MAAM,EAAEb,OAFe;AAGvBS,UAAAA,OAHuB;AAIvBoC,UAAAA,OAJuB;AAKvB9B,UAAAA,IAAI,EAAEjB;AALiB,SAAzB;;AAQA,aAAK6B,QAAL,CAAcqC,GAAd,CAAkBpD,OAAO,CAACL,SAA1B,EAAqC;AAAEuB,UAAAA;AAAF,SAArC;AACD,OAVY,CAAb;AAWD,KAZD,CAYE,OAAOmC,KAAP,EAAc;AACd,aAAO;AAAEjC,QAAAA,MAAM,EAAE,WAAUiC,KAAV;AAAV,OAAP;AACD;AACF;;AAGuB,QAAVf,UAAU,CAACL,OAAD,EAAkBpC,OAAlB,EAA2CG,OAA3C,EAAoE;AAC1F,QAAI;AACF,WAAK8B,OAAL,CAAaqB,WAAb,CAAyB;AACvBnD,QAAAA,OAAO,EAAER,YAAY,CAACC,kBAAb,CAAgCO,OAAhC,CADc;AAEvBC,QAAAA,MAAM,EAAEZ,SAFe;AAGvBQ,QAAAA,OAHuB;AAIvBoC,QAAAA,OAJuB;AAKvB9B,QAAAA,IAAI,EAAEjB;AALiB,OAAzB;;AAQA,YAAM+B,kBAAkB,GAAG,IAAItC,kBAAJ,CAA2C,KAAKiC,aAAhD,EAA+DZ,OAAO,CAACL,SAAvE,CAA3B;AACA,aAAOsB,kBAAkB,CAACE,WAAnB,EAAP;AACD,KAXD,CAWE,OAAOkC,KAAP,EAAc;AACd,aAAO;AAAEjC,QAAAA,MAAM,EAAE,WAAUiC,KAAV;AAAV,OAAP;AACD;AACF;;AAnL+B,C;SAAb7D,Y","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 _experimentalDeferStreamSupport: boolean;\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 ?? null;\n this._eventEmitter = new EventEmitter();\n this._experimentalDeferStreamSupport = options.experimentalDeferStreamSupport ?? false;\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 experimentalDeferStreamSupport: this._experimentalDeferStreamSupport,\n fieldTypeMap: new Map(),\n filteredRequest: \"\",\n operation,\n operationName: \"\",\n parsedRequest: \"\",\n queryFiltered: false,\n request,\n requestComplexity: null,\n requestDepth: null,\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 const pending = this._pending.get(context.requestID);\n\n if (pending) {\n const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.requestID);\n pending.resolve(eventAsyncIterator.getIterator());\n }\n\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 this._debugManager?.log(REQUEST_RESOLVED, {\n context,\n result: response,\n stats: { endTime: this._debugManager?.now() },\n });\n\n pending.resolve(response);\n }\n };\n\n @logRequest()\n private async _request(request: string, options: RequestOptions, context: RequestContext) {\n try {\n return await 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 } 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"}
@@ -10,13 +10,17 @@ export interface UserOptions {
10
10
  * The debug manager.
11
11
  */
12
12
  debugManager?: DebugManagerDef;
13
+ /**
14
+ * Enable support for defer and stream directives.
15
+ */
16
+ experimentalDeferStreamSupport?: boolean;
13
17
  /**
14
18
  * The web worker instance.
15
19
  */
16
20
  worker: Worker;
17
21
  }
18
22
  export declare type MethodNames = "request" | "subscribe";
19
- export declare type PendingResolver = (value: MaybeRequestResult) => void;
23
+ export declare type PendingResolver = (value: MaybeRequestResult | AsyncIterableIterator<MaybeRequestResult | undefined>) => void;
20
24
  export interface PendingData {
21
25
  resolve: PendingResolver;
22
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/defs/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE3G,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,KAAK,EAAE,cAAc,CAAC;IAEtB;;OAEG;IACH,YAAY,CAAC,EAAE,eAAe,CAAC;IAE/B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,oBAAY,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAElD,oBAAY,eAAe,GAAG,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;AAElE,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,oBAAY,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,YAAY,GAAG,UAAU,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,YAAY,GAAG,UAAU,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/defs/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE3G,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,KAAK,EAAE,cAAc,CAAC;IAEtB;;OAEG;IACH,YAAY,CAAC,EAAE,eAAe,CAAC;IAE/B;;OAEG;IACH,8BAA8B,CAAC,EAAE,OAAO,CAAC;IAEzC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,oBAAY,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAElD,oBAAY,eAAe,GAAG,CAC5B,KAAK,EAAE,kBAAkB,GAAG,qBAAqB,CAAC,kBAAkB,GAAG,SAAS,CAAC,KAC9E,IAAI,CAAC;AAEV,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,oBAAY,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,YAAY,GAAG,UAAU,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,YAAY,GAAG,UAAU,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;CAChB"}
@@ -6,6 +6,7 @@ export default class WorkerClient {
6
6
  private _cache;
7
7
  private _debugManager;
8
8
  private _eventEmitter;
9
+ private _experimentalDeferStreamSupport;
9
10
  private _pending;
10
11
  private _worker;
11
12
  constructor(options: UserOptions);
@@ -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,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;IAsB1B,OAAO,CAAC,UAAU,CA2ChB;YAGY,QAAQ;YAgCR,UAAU;CAgBzB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/main/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAGL,mBAAmB,EACnB,kBAAkB,EAIlB,cAAc,EAIf,MAAM,mBAAmB,CAAC;AAQ3B,OAAO,EAA2E,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/G,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAIjC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,+BAA+B,CAAU;IACjD,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,WAAW;IA2BhC,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;IAuB1B,OAAO,CAAC,UAAU,CAwDhB;YAGY,QAAQ;YAmBR,UAAU;CAgBzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@graphql-box/worker-client",
3
- "version": "4.1.3",
3
+ "version": "4.1.4",
4
4
  "description": "The GraphQL Box web worker client module.",
5
5
  "author": "Dylan Aubrey <dylanaubrey@gmail.com>",
6
6
  "license": "MIT",
package/src/defs/index.ts CHANGED
@@ -13,6 +13,11 @@ export interface UserOptions {
13
13
  */
14
14
  debugManager?: DebugManagerDef;
15
15
 
16
+ /**
17
+ * Enable support for defer and stream directives.
18
+ */
19
+ experimentalDeferStreamSupport?: boolean;
20
+
16
21
  /**
17
22
  * The web worker instance.
18
23
  */
@@ -21,7 +26,9 @@ export interface UserOptions {
21
26
 
22
27
  export type MethodNames = "request" | "subscribe";
23
28
 
24
- export type PendingResolver = (value: MaybeRequestResult) => void;
29
+ export type PendingResolver = (
30
+ value: MaybeRequestResult | AsyncIterableIterator<MaybeRequestResult | undefined>,
31
+ ) => void;
25
32
 
26
33
  export interface PendingData {
27
34
  resolve: PendingResolver;
package/src/main/index.ts CHANGED
@@ -29,6 +29,7 @@ export default class WorkerClient {
29
29
  private _cache: WorkerCachemap;
30
30
  private _debugManager: DebugManagerDef | null;
31
31
  private _eventEmitter: EventEmitter;
32
+ private _experimentalDeferStreamSupport: boolean;
32
33
  private _pending: PendingTracker = new Map();
33
34
  private _worker: Worker;
34
35
 
@@ -54,6 +55,7 @@ export default class WorkerClient {
54
55
  this._cache = options.cache;
55
56
  this._debugManager = options.debugManager ?? null;
56
57
  this._eventEmitter = new EventEmitter();
58
+ this._experimentalDeferStreamSupport = options.experimentalDeferStreamSupport ?? false;
57
59
  this._worker = options.worker;
58
60
  this._addEventListener();
59
61
  }
@@ -89,6 +91,7 @@ export default class WorkerClient {
89
91
  ): RequestContext {
90
92
  return {
91
93
  debugManager: this._debugManager,
94
+ experimentalDeferStreamSupport: this._experimentalDeferStreamSupport,
92
95
  fieldTypeMap: new Map(),
93
96
  filteredRequest: "",
94
97
  operation,
@@ -131,6 +134,13 @@ export default class WorkerClient {
131
134
 
132
135
  this._eventEmitter.emit(context.requestID, response);
133
136
  } else if (context.hasDeferOrStream) {
137
+ const pending = this._pending.get(context.requestID);
138
+
139
+ if (pending) {
140
+ const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.requestID);
141
+ pending.resolve(eventAsyncIterator.getIterator());
142
+ }
143
+
134
144
  this._debugManager?.log(REQUEST_RESOLVED, {
135
145
  context,
136
146
  result: response,
@@ -145,6 +155,12 @@ export default class WorkerClient {
145
155
  return;
146
156
  }
147
157
 
158
+ this._debugManager?.log(REQUEST_RESOLVED, {
159
+ context,
160
+ result: response,
161
+ stats: { endTime: this._debugManager?.now() },
162
+ });
163
+
148
164
  pending.resolve(response);
149
165
  }
150
166
  };
@@ -152,30 +168,17 @@ export default class WorkerClient {
152
168
  @logRequest()
153
169
  private async _request(request: string, options: RequestOptions, context: RequestContext) {
154
170
  try {
155
- if (!context.hasDeferOrStream) {
156
- return new Promise((resolve: PendingResolver) => {
157
- this._worker.postMessage({
158
- context: WorkerClient._getMessageContext(context),
159
- method: REQUEST,
160
- options,
161
- request,
162
- type: GRAPHQL_BOX,
163
- });
164
-
165
- this._pending.set(context.requestID, { resolve });
171
+ return await new Promise((resolve: PendingResolver) => {
172
+ this._worker.postMessage({
173
+ context: WorkerClient._getMessageContext(context),
174
+ method: REQUEST,
175
+ options,
176
+ request,
177
+ type: GRAPHQL_BOX,
166
178
  });
167
- }
168
179
 
169
- this._worker.postMessage({
170
- context: WorkerClient._getMessageContext(context),
171
- method: REQUEST,
172
- options,
173
- request,
174
- type: GRAPHQL_BOX,
180
+ this._pending.set(context.requestID, { resolve });
175
181
  });
176
-
177
- const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.requestID);
178
- return eventAsyncIterator.getIterator();
179
182
  } catch (error) {
180
183
  return { errors: castArray(error) };
181
184
  }