@graphql-box/worker-client 2.5.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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 i 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{QUERY as u,SUBSCRIPTION as p}from"@graphql-box/core";import{EventAsyncIterator as h,rehydrateCacheMetadata as l,dehydrateCacheMetadata as b}from"@graphql-box/helpers";import f from"eventemitter3";import{v1 as m}from"uuid";import{handleMessage as d}from"@cachemap/core-worker";import{forAwaitEach as g,isAsyncIterable as v}from"iterall";var y,x,w,j="request_executed";function _(){return function(r,n,o){var a,s=o.value;s&&(o.value=(a=t(i.mark((function r(){var n,o,a,c=this,u=arguments;return i.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:for(n=u.length,o=new Array(n),a=0;a<n;a++)o[a]=u[a];return r.prev=1,r.abrupt("return",new Promise(function(){var r=t(i.mark((function t(r){var n,a,u,p,h,l,b;return i.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=o[2],a=n.debugManager,u=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=a.now(),t.next=11,s.apply(c,o);case 11:h=t.sent,l=a.now(),b=l-p,r(h),a.emit("request_executed",{context:u,options:o[1],request:o[0],result:h,stats:{duration:b,endTime:l,startTime:p}});case 16: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)}))}}function k(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 O(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?k(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):k(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var q=(y=_(),x=_(),a((w=function(){function a(n){var c,u=this,p=n.cache,h=n.debugManager,b=n.worker;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",(c=t(i.mark((function t(r){var n,o,a,c,p,h,b,f,m;return i.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,b=e(p,["_cacheMetadata"]),f=O(O({},b),{},{requestID:a.boxID}),h&&(f._cacheMetadata=l(h)),"request"!==c){t.next=16;break}if(m=u._pending.get(a.boxID)){t.next=13;break}return t.abrupt("return");case 13:m.resolve(f),t.next=17;break;case 16:("subscribe"===c||a.hasDeferOrStream)&&u._eventEmitter.emit(a.boxID,f);case 17:case"end":return t.stop()}}),t)}))),function(e){return c.apply(this,arguments)})),this._cache=p,this._debugManager=h||null,this._eventEmitter=new f,this._worker=b,this._addEventListener()}var b,d,g,v,y;return n(a,[{key:"cache",get:function(){return this._cache}},{key:"request",value:(y=t(i.mark((function e(t){var r,n,o=arguments;return i.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(u,t,n)));case 3:case"end":return e.stop()}}),e,this)}))),function(e){return y.apply(this,arguments)})},{key:"subscribe",value:(v=t(i.mark((function e(t){var r,n=arguments;return i.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(p,t)));case 2:case"end":return e.stop()}}),e,this)}))),function(e){return v.apply(this,arguments)})},{key:"_addEventListener",value:function(){this._worker.addEventListener("message",this._onMessage)}},{key:"_getRequestContext",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return O({boxID:m(),debugManager:this._debugManager,fieldTypeMap:new Map,operation:e,operationName:"",queryFiltered:!1,request:t},r)}},{key:"_request",value:(g=t(i.mark((function e(t,r,n){var o,s=this;return i.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.boxID,{resolve:e})})));case 3:return this._worker.postMessage({context:a._getMessageContext(n),method:"request",options:r,request:t,type:"graphqlBox"}),o=new h(this._eventEmitter,n.boxID),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 g.apply(this,arguments)})},{key:"_subscribe",value:(d=t(i.mark((function e(t,r,n){var o;return i.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 h(this._eventEmitter,n.boxID),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 d.apply(this,arguments)})}],[{key:"init",value:(b=t(i.mark((function e(t){var r,n;return i.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=[],s(t)||r.push(new TypeError("@graphql-box/client expected options to ba a plain object.")),t.cache||r.push(new TypeError("@graphql-box/client expected options.cache.")),t.worker||r.push(new TypeError("@graphql-box/client expected options.worker.")),n={cache:t.cache,worker:t.worker},e.prev=5,!t.debugManager){e.next=10;break}return e.next=9,t.debugManager();case 9:n.debugManager=e.sent;case 10:return e.abrupt("return",new a(n));case 13:return e.prev=13,e.t0=e.catch(5),e.abrupt("return",Promise.reject(e.t0));case 16:case"end":return e.stop()}}),e,null,[[5,13]])}))),function(e){return b.apply(this,arguments)})},{key:"_getMessageContext",value:function(e){var t=e.boxID,r=e.hasDeferOrStream;return{boxID:t,hasDeferOrStream:void 0!==r&&r}}}]),a}()).prototype,"_request",[y],Object.getOwnPropertyDescriptor(w.prototype,"_request"),w.prototype),a(w.prototype,"_subscribe",[x],Object.getOwnPropertyDescriptor(w.prototype,"_subscribe"),w.prototype),w);function M(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 D(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?M(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):M(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var P=self,E=P.addEventListener,I=P.postMessage;function C(){return(C=t(i.mark((function t(r,n,o,a,s){var c,u,p,h,l;return i.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,v(c)){t.next=9;break}return p=(u=c)._cacheMetadata,h=e(u,["_cacheMetadata"]),l=D({},h),p&&(l._cacheMetadata=b(p)),I({context:a,method:n,result:l,type:"graphqlBox"}),t.abrupt("return");case 9:g(c,(function(t){var r=t._cacheMetadata,o=D({},e(t,["_cacheMetadata"]));r&&(o._cacheMetadata=b(r)),I({context:a,method:n,result:o,type:"graphqlBox"})}));case 10:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function B(){return(B=t(i.mark((function t(r,n,o,a,s){var c;return i.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,s.subscribe(r,o,a);case 2:c=t.sent,v(c)?g(c,(function(t){var r=t._cacheMetadata,o=D({},e(t,["_cacheMetadata"]));r&&(o._cacheMetadata=b(r)),I({context:a,method:n,result:o,type:"graphqlBox"})})):I({context:a,method:n,result:void 0,type:"graphqlBox"});case 4:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function S(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){C.apply(this,arguments)}(s,o,a,n,t):"subscribe"===o&&function(e,t,r,n,o){B.apply(this,arguments)}(s,o,a,n,t)}function T(e){return L.apply(this,arguments)}function L(){return(L=t(i.mark((function e(t){var r,n;return i.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?S(t,r):"cachemap"===n&&r.cache&&d(t,r.cache)}},r=t.client,E("message",n);case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}export default q;export{j as REQUEST_EXECUTED,T 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 c from"lodash/castArray";import i 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{QUERY as u,SUBSCRIPTION as p}from"@graphql-box/core";import{EventAsyncIterator as h,rehydrateCacheMetadata as l,dehydrateCacheMetadata as b}from"@graphql-box/helpers";import f from"eventemitter3";import{v1 as m}from"uuid";import{handleMessage as d}from"@cachemap/core-worker";import{forAwaitEach as g,isAsyncIterable as v}from"iterall";var y,x,w,j="request_executed";function _(){return function(r,n,o){var a,s=o.value;s&&(o.value=(a=t(i.mark((function r(){var n,o,a,c=this,u=arguments;return i.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:for(n=u.length,o=new Array(n),a=0;a<n;a++)o[a]=u[a];return r.prev=1,r.abrupt("return",new Promise(function(){var r=t(i.mark((function t(r){var n,a,u,p,h,l,b;return i.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=o[2],a=n.debugManager,u=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=a.now(),t.next=11,s.apply(c,o);case 11:h=t.sent,l=a.now(),b=l-p,r(h),a.emit("request_executed",{context:u,options:o[1],request:o[0],result:h,stats:{duration:b,endTime:l,startTime:p}});case 16: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)}))}}function O(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 k(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?O(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):O(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var q=(y=_(),x=_(),a((w=function(){function a(n){var c,u=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",(c=t(i.mark((function t(r){var n,o,a,c,p,h,b,f,m;return i.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,b=e(p,["_cacheMetadata"]),f=k(k({},b),{},{requestID:a.boxID}),h&&(f._cacheMetadata=l(h)),"request"!==c){t.next=16;break}if(m=u._pending.get(a.boxID)){t.next=13;break}return t.abrupt("return");case 13:m.resolve(f),t.next=17;break;case 16:("subscribe"===c||a.hasDeferOrStream)&&u._eventEmitter.emit(a.boxID,f);case 17:case"end":return t.stop()}}),t)}))),function(e){return c.apply(this,arguments)}));var p=[];if(s(n)||p.push(new TypeError("@graphql-box/client expected options to ba a plain object.")),n.cache||p.push(new TypeError("@graphql-box/client expected options.cache.")),n.worker||p.push(new TypeError("@graphql-box/client expected options.worker.")),p.length)throw p;this._cache=n.cache,this._debugManager=n.debugManager?n.debugManager():null,this._eventEmitter=new f,this._worker=n.worker,this._addEventListener()}var b,d,g,v;return n(a,[{key:"cache",get:function(){return this._cache}},{key:"request",value:(v=t(i.mark((function e(t){var r,n,o=arguments;return i.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(u,t,n)));case 3:case"end":return e.stop()}}),e,this)}))),function(e){return v.apply(this,arguments)})},{key:"subscribe",value:(g=t(i.mark((function e(t){var r,n=arguments;return i.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(p,t)));case 2:case"end":return e.stop()}}),e,this)}))),function(e){return g.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 k({boxID:m(),debugManager:this._debugManager,fieldTypeMap:new Map,operation:e,operationName:"",queryFiltered:!1,request:t},r)}},{key:"_request",value:(d=t(i.mark((function e(t,r,n){var o,s=this;return i.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.boxID,{resolve:e})})));case 3:return this._worker.postMessage({context:a._getMessageContext(n),method:"request",options:r,request:t,type:"graphqlBox"}),o=new h(this._eventEmitter,n.boxID),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 d.apply(this,arguments)})},{key:"_subscribe",value:(b=t(i.mark((function e(t,r,n){var o;return i.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 h(this._eventEmitter,n.boxID),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 b.apply(this,arguments)})}],[{key:"_getMessageContext",value:function(e){var t=e.boxID,r=e.hasDeferOrStream;return{boxID:t,hasDeferOrStream:void 0!==r&&r}}}]),a}()).prototype,"_request",[y],Object.getOwnPropertyDescriptor(w.prototype,"_request"),w.prototype),a(w.prototype,"_subscribe",[x],Object.getOwnPropertyDescriptor(w.prototype,"_subscribe"),w.prototype),w);function M(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 D(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?M(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):M(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var P=self,E=P.addEventListener,I=P.postMessage;function C(){return(C=t(i.mark((function t(r,n,o,a,s){var c,u,p,h,l;return i.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,v(c)){t.next=9;break}return p=(u=c)._cacheMetadata,h=e(u,["_cacheMetadata"]),l=D({},h),p&&(l._cacheMetadata=b(p)),I({context:a,method:n,result:l,type:"graphqlBox"}),t.abrupt("return");case 9:g(c,(function(t){var r=t._cacheMetadata,o=D({},e(t,["_cacheMetadata"]));r&&(o._cacheMetadata=b(r)),I({context:a,method:n,result:o,type:"graphqlBox"})}));case 10:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function B(){return(B=t(i.mark((function t(r,n,o,a,s){var c;return i.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,s.subscribe(r,o,a);case 2:c=t.sent,v(c)?g(c,(function(t){var r=t._cacheMetadata,o=D({},e(t,["_cacheMetadata"]));r&&(o._cacheMetadata=b(r)),I({context:a,method:n,result:o,type:"graphqlBox"})})):I({context:a,method:n,result:void 0,type:"graphqlBox"});case 4:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function S(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){C.apply(this,arguments)}(s,o,a,n,t):"subscribe"===o&&function(e,t,r,n,o){B.apply(this,arguments)}(s,o,a,n,t)}function T(e){return L.apply(this,arguments)}function L(){return(L=t(i.mark((function e(t){var r,n;return i.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?S(t,r):"cachemap"===n&&r.cache&&d(t,r.cache)}},r=t.client,E("message",n);case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}export default q;export{j as REQUEST_EXECUTED,T as registerWorker};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../worker-client/src/consts/index.ts","../worker-client/src/debug/log-request/index.ts","../worker-client/src/main/index.ts","../worker-client/src/register-worker/index.ts"],"sourcesContent":["export const REQUEST_EXECUTED = \"request_executed\";\n\nexport const REQUEST = \"request\";\nexport const SUBSCRIBE = \"subscribe\";\n\nexport const MESSAGE = \"message\";\n\nexport const GRAPHQL_BOX = \"graphqlBox\";\nexport const CACHEMAP = \"cachemap\";\n","import { RequestContext } from \"@graphql-box/core\";\nimport { REQUEST_EXECUTED } from \"../../consts\";\n\nexport default function logRequest() {\n return (\n _target: any,\n _propertyName: string,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise<any>>,\n ): void => {\n const method = descriptor.value;\n if (!method) return;\n\n descriptor.value = async function descriptorValue(...args: any[]): Promise<any> {\n try {\n return new Promise(async resolve => {\n const { debugManager, ...otherContext } = args[2] as RequestContext;\n\n if (!debugManager) {\n resolve(await method.apply(this, args));\n return;\n }\n\n const startTime = debugManager.now();\n const result = await method.apply(this, args);\n const endTime = debugManager.now();\n const duration = endTime - startTime;\n resolve(result);\n\n debugManager.emit(REQUEST_EXECUTED, {\n context: otherContext,\n options: args[1],\n request: args[0],\n result,\n stats: { duration, endTime, startTime },\n });\n });\n } catch (error) {\n return Promise.reject(error);\n }\n };\n };\n}\n","import WorkerCachemap from \"@cachemap/core-worker\";\nimport {\n DebugManagerDef,\n MaybeRequestContext,\n MaybeRequestResult,\n QUERY,\n RequestContext,\n RequestOptions,\n SUBSCRIPTION,\n ValidOperations,\n} from \"@graphql-box/core\";\nimport { EventAsyncIterator, 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 {\n ConstructorOptions,\n MessageContext,\n MessageResponsePayload,\n PendingResolver,\n PendingTracker,\n UserOptions,\n} from \"../defs\";\n\nexport default class WorkerClient {\n public static async init(options: UserOptions): Promise<WorkerClient> {\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 const constructorOptions: ConstructorOptions = {\n cache: options.cache,\n worker: options.worker,\n };\n\n try {\n if (options.debugManager) {\n constructorOptions.debugManager = await options.debugManager();\n }\n\n return new WorkerClient(constructorOptions);\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n private static _getMessageContext({ boxID, hasDeferOrStream = false }: RequestContext): MessageContext {\n return { boxID, hasDeferOrStream };\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({ cache, debugManager, worker }: ConstructorOptions) {\n this._cache = cache;\n this._debugManager = debugManager || null;\n this._eventEmitter = new EventEmitter();\n this._worker = worker;\n this._addEventListener();\n }\n\n get cache(): WorkerCachemap {\n return this._cache;\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 boxID: uuid(),\n debugManager: this._debugManager,\n fieldTypeMap: new Map(),\n operation,\n operationName: \"\",\n queryFiltered: false,\n request,\n ...context,\n };\n }\n\n private _onMessage = async ({ data }: MessageEvent): Promise<void> => {\n if (!isPlainObject(data)) return;\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 = { ...otherProps, requestID: context.boxID };\n\n if (_cacheMetadata) {\n response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);\n }\n\n if (method === REQUEST) {\n const pending = this._pending.get(context.boxID);\n\n if (!pending) {\n return;\n }\n\n pending.resolve(response);\n } else if (method === SUBSCRIBE || context.hasDeferOrStream) {\n this._eventEmitter.emit(context.boxID, 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.boxID, { 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.boxID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return { errors: castArray(error) };\n }\n }\n\n @logRequest()\n private async _subscribe(request: string, options: RequestOptions, context: RequestContext) {\n try {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: SUBSCRIBE,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.boxID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return { errors: castArray(error) };\n }\n }\n}\n","import { handleMessage as handleCachemapMessage } from \"@cachemap/core-worker\";\nimport Client from \"@graphql-box/client\";\nimport { MaybeRequestResult, MaybeRequestResultWithDehydratedCacheMetadata, RequestOptions } from \"@graphql-box/core\";\nimport { dehydrateCacheMetadata } 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, 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, 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 forAwaitEach(subscribeResult, ({ _cacheMetadata, ...otherProps }: MaybeRequestResult) => {\n const result: MaybeRequestResultWithDehydratedCacheMetadata = { ...otherProps };\n if (_cacheMetadata) result._cacheMetadata = dehydrateCacheMetadata(_cacheMetadata);\n postMessage({ context, method, result, type: GRAPHQL_BOX });\n });\n } else {\n postMessage({ context, method, result: undefined, 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)) return;\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_EXECUTED","logRequest","_target","_propertyName","descriptor","method","value","args","Promise","resolve","debugManager","otherContext","apply","_this","startTime","now","result","endTime","duration","emit","context","options","request","stats","reject","WorkerClient","cache","worker","Map","data","_isPlainObject","type","_cacheMetadata","otherProps","response","requestID","boxID","rehydrateCacheMetadata","pending","_pending","get","hasDeferOrStream","_eventEmitter","_cache","_debugManager","EventEmitter","_worker","_addEventListener","this","_request","_getRequestContext","QUERY","_subscribe","SUBSCRIPTION","addEventListener","_onMessage","operation","uuid","fieldTypeMap","operationName","queryFiltered","_this2","postMessage","_getMessageContext","set","eventAsyncIterator","EventAsyncIterator","getIterator","errors","_castArray","push","TypeError","constructorOptions","self","client","requestResult","isAsyncIterable","dehydrateCacheMetadata","forAwaitEach","subscribe","subscribeResult","undefined","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/debug/log-request/index.ts","../worker-client/src/main/index.ts","../worker-client/src/register-worker/index.ts"],"sourcesContent":["export const REQUEST_EXECUTED = \"request_executed\";\n\nexport const REQUEST = \"request\";\nexport const SUBSCRIBE = \"subscribe\";\n\nexport const MESSAGE = \"message\";\n\nexport const GRAPHQL_BOX = \"graphqlBox\";\nexport const CACHEMAP = \"cachemap\";\n","import { RequestContext } from \"@graphql-box/core\";\nimport { REQUEST_EXECUTED } from \"../../consts\";\n\nexport default function logRequest() {\n return (\n _target: any,\n _propertyName: string,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise<any>>,\n ): void => {\n const method = descriptor.value;\n if (!method) return;\n\n descriptor.value = async function descriptorValue(...args: any[]): Promise<any> {\n try {\n return new Promise(async resolve => {\n const { debugManager, ...otherContext } = args[2] as RequestContext;\n\n if (!debugManager) {\n resolve(await method.apply(this, args));\n return;\n }\n\n const startTime = debugManager.now();\n const result = await method.apply(this, args);\n const endTime = debugManager.now();\n const duration = endTime - startTime;\n resolve(result);\n\n debugManager.emit(REQUEST_EXECUTED, {\n context: otherContext,\n options: args[1],\n request: args[0],\n result,\n stats: { duration, endTime, startTime },\n });\n });\n } catch (error) {\n return Promise.reject(error);\n }\n };\n };\n}\n","import WorkerCachemap from \"@cachemap/core-worker\";\nimport {\n DebugManagerDef,\n MaybeRequestContext,\n MaybeRequestResult,\n QUERY,\n RequestContext,\n RequestOptions,\n SUBSCRIPTION,\n ValidOperations,\n} from \"@graphql-box/core\";\nimport { EventAsyncIterator, rehydrateCacheMetadata } from \"@graphql-box/helpers\";\nimport EventEmitter from \"eventemitter3\";\nimport { castArray, isPlainObject } from \"lodash\";\nimport { v1 as uuid } from \"uuid\";\nimport { GRAPHQL_BOX, MESSAGE, REQUEST, SUBSCRIBE } from \"../consts\";\nimport logRequest from \"../debug/log-request\";\nimport { MessageContext, MessageResponsePayload, PendingResolver, PendingTracker, UserOptions } from \"../defs\";\n\nexport default class WorkerClient {\n private static _getMessageContext({ boxID, hasDeferOrStream = false }: RequestContext): MessageContext {\n return { boxID, hasDeferOrStream };\n }\n\n private _cache: WorkerCachemap;\n private _debugManager: DebugManagerDef | null;\n private _eventEmitter: EventEmitter;\n private _pending: PendingTracker = new Map();\n private _worker: Worker;\n\n constructor(options: UserOptions) {\n const errors: TypeError[] = [];\n\n if (!isPlainObject(options)) {\n errors.push(new TypeError(\"@graphql-box/client expected options to ba a plain object.\"));\n }\n\n if (!options.cache) {\n errors.push(new TypeError(\"@graphql-box/client expected options.cache.\"));\n }\n\n if (!options.worker) {\n errors.push(new TypeError(\"@graphql-box/client expected options.worker.\"));\n }\n\n if (errors.length) {\n throw errors;\n }\n\n this._cache = options.cache;\n this._debugManager = options.debugManager ? options.debugManager() : null;\n this._eventEmitter = new EventEmitter();\n this._worker = options.worker;\n this._addEventListener();\n }\n\n get cache(): WorkerCachemap {\n return this._cache;\n }\n\n public async 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 boxID: uuid(),\n debugManager: this._debugManager,\n fieldTypeMap: new Map(),\n operation,\n operationName: \"\",\n queryFiltered: false,\n request,\n ...context,\n };\n }\n\n private _onMessage = async ({ data }: MessageEvent): Promise<void> => {\n if (!isPlainObject(data)) return;\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 = { ...otherProps, requestID: context.boxID };\n\n if (_cacheMetadata) {\n response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);\n }\n\n if (method === REQUEST) {\n const pending = this._pending.get(context.boxID);\n\n if (!pending) {\n return;\n }\n\n pending.resolve(response);\n } else if (method === SUBSCRIBE || context.hasDeferOrStream) {\n this._eventEmitter.emit(context.boxID, 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.boxID, { 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.boxID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return { errors: castArray(error) };\n }\n }\n\n @logRequest()\n private async _subscribe(request: string, options: RequestOptions, context: RequestContext) {\n try {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: SUBSCRIBE,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.boxID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return { errors: castArray(error) };\n }\n }\n}\n","import { handleMessage as handleCachemapMessage } from \"@cachemap/core-worker\";\nimport Client from \"@graphql-box/client\";\nimport { MaybeRequestResult, MaybeRequestResultWithDehydratedCacheMetadata, RequestOptions } from \"@graphql-box/core\";\nimport { dehydrateCacheMetadata } 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, 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, 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 forAwaitEach(subscribeResult, ({ _cacheMetadata, ...otherProps }: MaybeRequestResult) => {\n const result: MaybeRequestResultWithDehydratedCacheMetadata = { ...otherProps };\n if (_cacheMetadata) result._cacheMetadata = dehydrateCacheMetadata(_cacheMetadata);\n postMessage({ context, method, result, type: GRAPHQL_BOX });\n });\n } else {\n postMessage({ context, method, result: undefined, 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)) return;\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_EXECUTED","logRequest","_target","_propertyName","descriptor","method","value","args","Promise","resolve","debugManager","otherContext","apply","_this","startTime","now","result","endTime","duration","emit","context","options","request","stats","reject","WorkerClient","Map","data","_isPlainObject","type","_cacheMetadata","otherProps","response","requestID","boxID","rehydrateCacheMetadata","pending","_pending","get","hasDeferOrStream","_eventEmitter","errors","push","TypeError","cache","worker","length","_cache","_debugManager","EventEmitter","_worker","_addEventListener","this","_request","_getRequestContext","QUERY","_subscribe","SUBSCRIPTION","addEventListener","_onMessage","operation","uuid","fieldTypeMap","operationName","queryFiltered","_this2","postMessage","_getMessageContext","set","eventAsyncIterator","EventAsyncIterator","getIterator","_castArray","self","client","requestResult","isAsyncIterable","dehydrateCacheMetadata","forAwaitEach","subscribe","subscribeResult","undefined","handleMessage","handleRequest","handleSubscription","registerWorker","onMessage","handleCachemapMessage"],"mappings":"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"}
@@ -1,23 +1,23 @@
1
1
  -----------------------------
2
2
  Rollup File Analysis
3
3
  -----------------------------
4
- bundle size: 22.738 KB
5
- original size: 11.79 KB
4
+ bundle size: 21.21 KB
5
+ original size: 11.136 KB
6
6
  code reduction: 0 %
7
7
  module count: 6
8
8
 
9
- ███████████████████████████░░░░░░░░░░░░░░░░░░░░░░░
9
+ ██████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░
10
10
  file: /src/main/index.ts
11
- bundle space: 55.48 %
12
- rendered size: 12.616 KB
13
- original size: 5.397 KB
11
+ bundle space: 52.28 %
12
+ rendered size: 11.088 KB
13
+ original size: 4.995 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: 27.07 %
20
+ bundle space: 29.02 %
21
21
  rendered size: 6.156 KB
22
22
  original size: 3.217 KB
23
23
  code reduction: 0 %
@@ -26,7 +26,7 @@ dependents: 1
26
26
 
27
27
  ████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
28
28
  file: /src/debug/log-request/index.ts
29
- bundle space: 16.65 %
29
+ bundle space: 17.85 %
30
30
  rendered size: 3.786 KB
31
31
  original size: 1.244 KB
32
32
  code reduction: 0 %
@@ -35,7 +35,7 @@ dependents: 1
35
35
 
36
36
  ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
37
37
  file: /src/consts/index.ts
38
- bundle space: 0.79 %
38
+ bundle space: 0.85 %
39
39
  rendered size: 180 Bytes
40
40
  original size: 238 Bytes
41
41
  code reduction: 24.37 %
@@ -49,7 +49,7 @@ dependents: 4
49
49
  file: /src/defs/index.ts
50
50
  bundle space: 0 %
51
51
  rendered size: 0 Byte
52
- original size: 1.528 KB
52
+ original size: 1.276 KB
53
53
  code reduction: 100 %
54
54
  dependents: 1
55
55
  - /src/index.ts
@@ -32,37 +32,6 @@ var _logRequest = _interopRequireDefault(require("../debug/log-request"));
32
32
  var _dec, _dec2, _class;
33
33
 
34
34
  let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logRequest.default)(), (_class = class WorkerClient {
35
- static async init(options) {
36
- const errors = [];
37
-
38
- if (!(0, _isPlainObject2.default)(options)) {
39
- errors.push(new TypeError("@graphql-box/client expected options to ba a plain object."));
40
- }
41
-
42
- if (!options.cache) {
43
- errors.push(new TypeError("@graphql-box/client expected options.cache."));
44
- }
45
-
46
- if (!options.worker) {
47
- errors.push(new TypeError("@graphql-box/client expected options.worker."));
48
- }
49
-
50
- const constructorOptions = {
51
- cache: options.cache,
52
- worker: options.worker
53
- };
54
-
55
- try {
56
- if (options.debugManager) {
57
- constructorOptions.debugManager = await options.debugManager();
58
- }
59
-
60
- return new WorkerClient(constructorOptions);
61
- } catch (error) {
62
- return Promise.reject(error);
63
- }
64
- }
65
-
66
35
  static _getMessageContext({
67
36
  boxID,
68
37
  hasDeferOrStream = false
@@ -73,11 +42,7 @@ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logRequest.d
73
42
  };
74
43
  }
75
44
 
76
- constructor({
77
- cache,
78
- debugManager,
79
- worker
80
- }) {
45
+ constructor(options) {
81
46
  (0, _defineProperty2.default)(this, "_cache", void 0);
82
47
  (0, _defineProperty2.default)(this, "_debugManager", void 0);
83
48
  (0, _defineProperty2.default)(this, "_eventEmitter", void 0);
@@ -122,10 +87,28 @@ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logRequest.d
122
87
  this._eventEmitter.emit(context.boxID, response);
123
88
  }
124
89
  });
125
- this._cache = cache;
126
- this._debugManager = debugManager || null;
90
+ const errors = [];
91
+
92
+ if (!(0, _isPlainObject2.default)(options)) {
93
+ errors.push(new TypeError("@graphql-box/client expected options to ba a plain object."));
94
+ }
95
+
96
+ if (!options.cache) {
97
+ errors.push(new TypeError("@graphql-box/client expected options.cache."));
98
+ }
99
+
100
+ if (!options.worker) {
101
+ errors.push(new TypeError("@graphql-box/client expected options.worker."));
102
+ }
103
+
104
+ if (errors.length) {
105
+ throw errors;
106
+ }
107
+
108
+ this._cache = options.cache;
109
+ this._debugManager = options.debugManager ? options.debugManager() : null;
127
110
  this._eventEmitter = new _eventemitter.default();
128
- this._worker = worker;
111
+ this._worker = options.worker;
129
112
 
130
113
  this._addEventListener();
131
114
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/main/index.ts"],"names":["WorkerClient","init","options","errors","push","TypeError","cache","worker","constructorOptions","debugManager","error","Promise","reject","_getMessageContext","boxID","hasDeferOrStream","constructor","Map","data","context","method","result","type","GRAPHQL_BOX","_cacheMetadata","otherProps","response","requestID","REQUEST","pending","_pending","get","resolve","SUBSCRIBE","_eventEmitter","emit","_cache","_debugManager","EventEmitter","_worker","_addEventListener","request","_request","_getRequestContext","QUERY","subscribe","_subscribe","SUBSCRIPTION","addEventListener","MESSAGE","_onMessage","operation","fieldTypeMap","operationName","queryFiltered","postMessage","set","eventAsyncIterator","EventAsyncIterator","getIterator"],"mappings":"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","sourcesContent":["import WorkerCachemap from \"@cachemap/core-worker\";\nimport {\n DebugManagerDef,\n MaybeRequestContext,\n MaybeRequestResult,\n QUERY,\n RequestContext,\n RequestOptions,\n SUBSCRIPTION,\n ValidOperations,\n} from \"@graphql-box/core\";\nimport { EventAsyncIterator, 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 {\n ConstructorOptions,\n MessageContext,\n MessageResponsePayload,\n PendingResolver,\n PendingTracker,\n UserOptions,\n} from \"../defs\";\n\nexport default class WorkerClient {\n public static async init(options: UserOptions): Promise<WorkerClient> {\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 const constructorOptions: ConstructorOptions = {\n cache: options.cache,\n worker: options.worker,\n };\n\n try {\n if (options.debugManager) {\n constructorOptions.debugManager = await options.debugManager();\n }\n\n return new WorkerClient(constructorOptions);\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n private static _getMessageContext({ boxID, hasDeferOrStream = false }: RequestContext): MessageContext {\n return { boxID, hasDeferOrStream };\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({ cache, debugManager, worker }: ConstructorOptions) {\n this._cache = cache;\n this._debugManager = debugManager || null;\n this._eventEmitter = new EventEmitter();\n this._worker = worker;\n this._addEventListener();\n }\n\n get cache(): WorkerCachemap {\n return this._cache;\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 boxID: uuid(),\n debugManager: this._debugManager,\n fieldTypeMap: new Map(),\n operation,\n operationName: \"\",\n queryFiltered: false,\n request,\n ...context,\n };\n }\n\n private _onMessage = async ({ data }: MessageEvent): Promise<void> => {\n if (!isPlainObject(data)) return;\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 = { ...otherProps, requestID: context.boxID };\n\n if (_cacheMetadata) {\n response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);\n }\n\n if (method === REQUEST) {\n const pending = this._pending.get(context.boxID);\n\n if (!pending) {\n return;\n }\n\n pending.resolve(response);\n } else if (method === SUBSCRIBE || context.hasDeferOrStream) {\n this._eventEmitter.emit(context.boxID, 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.boxID, { 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.boxID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return { errors: castArray(error) };\n }\n }\n\n @logRequest()\n private async _subscribe(request: string, options: RequestOptions, context: RequestContext) {\n try {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: SUBSCRIBE,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.boxID);\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","boxID","hasDeferOrStream","constructor","options","Map","data","context","method","result","type","GRAPHQL_BOX","_cacheMetadata","otherProps","response","requestID","REQUEST","pending","_pending","get","resolve","SUBSCRIBE","_eventEmitter","emit","errors","push","TypeError","cache","worker","length","_cache","_debugManager","debugManager","EventEmitter","_worker","_addEventListener","request","_request","_getRequestContext","QUERY","subscribe","_subscribe","SUBSCRIPTION","addEventListener","MESSAGE","_onMessage","operation","fieldTypeMap","operationName","queryFiltered","Promise","postMessage","set","eventAsyncIterator","EventAsyncIterator","getIterator","error"],"mappings":";;;;;;;;;;;;;;;;;;;AACA;;AAUA;;AACA;;AAEA;;AACA;;AACA;;;;IAGqBA,Y,WAmGlB,0B,UAgCA,0B,YAnIY,MAAMA,YAAN,CAAmB;AACC,SAAlBC,kBAAkB,CAAC;AAAEC,IAAAA,KAAF;AAASC,IAAAA,gBAAgB,GAAG;AAA5B,GAAD,EAAsE;AACrG,WAAO;AAAED,MAAAA,KAAF;AAASC,MAAAA;AAAT,KAAP;AACD;;AAQDC,EAAAA,WAAW,CAACC,OAAD,EAAuB;AAAA;AAAA;AAAA;AAAA,oDAHC,IAAIC,GAAJ,EAGD;AAAA;AAAA,sDA2Db,OAAO;AAAEC,MAAAA;AAAF,KAAP,KAAiD;AACpE,UAAI,CAAC,6BAAcA,IAAd,CAAL,EAA0B;AAE1B,YAAM;AAAEC,QAAAA,OAAF;AAAWC,QAAAA,MAAX;AAAmBC,QAAAA,MAAnB;AAA2BC,QAAAA;AAA3B,UAAoCJ,IAA1C;;AAEA,UAAII,IAAI,KAAKC,mBAAT,IAAwB,CAAC,6BAAcF,MAAd,CAA7B,EAAoD;AAClD;AACD;;AAED,YAAM;AAAEG,QAAAA,cAAF;AAAkB,WAAGC;AAArB,UAAoCJ,MAA1C;AACA,YAAMK,QAA4B,GAAG,EAAE,GAAGD,UAAL;AAAiBE,QAAAA,SAAS,EAAER,OAAO,CAACN;AAApC,OAArC;;AAEA,UAAIW,cAAJ,EAAoB;AAClBE,QAAAA,QAAQ,CAACF,cAAT,GAA0B,qCAAuBA,cAAvB,CAA1B;AACD;;AAED,UAAIJ,MAAM,KAAKQ,eAAf,EAAwB;AACtB,cAAMC,OAAO,GAAG,KAAKC,QAAL,CAAcC,GAAd,CAAkBZ,OAAO,CAACN,KAA1B,CAAhB;;AAEA,YAAI,CAACgB,OAAL,EAAc;AACZ;AACD;;AAEDA,QAAAA,OAAO,CAACG,OAAR,CAAgBN,QAAhB;AACD,OARD,MAQO,IAAIN,MAAM,KAAKa,iBAAX,IAAwBd,OAAO,CAACL,gBAApC,EAAsD;AAC3D,aAAKoB,aAAL,CAAmBC,IAAnB,CAAwBhB,OAAO,CAACN,KAAhC,EAAuCa,QAAvC;AACD;AACF,KAtFiC;AAChC,UAAMU,MAAmB,GAAG,EAA5B;;AAEA,QAAI,CAAC,6BAAcpB,OAAd,CAAL,EAA6B;AAC3BoB,MAAAA,MAAM,CAACC,IAAP,CAAY,IAAIC,SAAJ,CAAc,4DAAd,CAAZ;AACD;;AAED,QAAI,CAACtB,OAAO,CAACuB,KAAb,EAAoB;AAClBH,MAAAA,MAAM,CAACC,IAAP,CAAY,IAAIC,SAAJ,CAAc,6CAAd,CAAZ;AACD;;AAED,QAAI,CAACtB,OAAO,CAACwB,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,GAAc1B,OAAO,CAACuB,KAAtB;AACA,SAAKI,aAAL,GAAqB3B,OAAO,CAAC4B,YAAR,GAAuB5B,OAAO,CAAC4B,YAAR,EAAvB,GAAgD,IAArE;AACA,SAAKV,aAAL,GAAqB,IAAIW,qBAAJ,EAArB;AACA,SAAKC,OAAL,GAAe9B,OAAO,CAACwB,MAAvB;;AACA,SAAKO,iBAAL;AACD;;AAEQ,MAALR,KAAK,GAAmB;AAC1B,WAAO,KAAKG,MAAZ;AACD;;AAEmB,QAAPM,OAAO,CAACA,OAAD,EAAkBhC,OAAuB,GAAG,EAA5C,EAAgDG,OAA4B,GAAG,EAA/E,EAAmF;AACrG,WAAO,KAAK8B,QAAL,CAAcD,OAAd,EAAuBhC,OAAvB,EAAgC,KAAKkC,kBAAL,CAAwBC,WAAxB,EAA+BH,OAA/B,EAAwC7B,OAAxC,CAAhC,CAAP;AACD;;AAEqB,QAATiC,SAAS,CAACJ,OAAD,EAAkBhC,OAAuB,GAAG,EAA5C,EAAgD;AACpE,WAAO,KAAKqC,UAAL,CAAgBL,OAAhB,EAAyBhC,OAAzB,EAAkC,KAAKkC,kBAAL,CAAwBI,kBAAxB,EAAsCN,OAAtC,CAAlC,CAAP;AACD;;AAEOD,EAAAA,iBAAiB,GAAS;AAChC,SAAKD,OAAL,CAAaS,gBAAb,CAA8BC,eAA9B,EAAuC,KAAKC,UAA5C;AACD;;AAEOP,EAAAA,kBAAkB,CACxBQ,SADwB,EAExBV,OAFwB,EAGxB7B,OAA4B,GAAG,EAHP,EAIR;AAChB,WAAO;AACLN,MAAAA,KAAK,EAAE,eADF;AAEL+B,MAAAA,YAAY,EAAE,KAAKD,aAFd;AAGLgB,MAAAA,YAAY,EAAE,IAAI1C,GAAJ,EAHT;AAILyC,MAAAA,SAJK;AAKLE,MAAAA,aAAa,EAAE,EALV;AAMLC,MAAAA,aAAa,EAAE,KANV;AAOLb,MAAAA,OAPK;AAQL,SAAG7B;AARE,KAAP;AAUD;;AAgCqB,QAAR8B,QAAQ,CAACD,OAAD,EAAkBhC,OAAlB,EAA2CG,OAA3C,EAAoE;AACxF,QAAI;AACF,UAAI,CAACA,OAAO,CAACL,gBAAb,EAA+B;AAC7B,eAAO,IAAIgD,OAAJ,CAAa9B,OAAD,IAA8B;AAC/C,eAAKc,OAAL,CAAaiB,WAAb,CAAyB;AACvB5C,YAAAA,OAAO,EAAER,YAAY,CAACC,kBAAb,CAAgCO,OAAhC,CADc;AAEvBC,YAAAA,MAAM,EAAEQ,eAFe;AAGvBZ,YAAAA,OAHuB;AAIvBgC,YAAAA,OAJuB;AAKvB1B,YAAAA,IAAI,EAAEC;AALiB,WAAzB;;AAQA,eAAKO,QAAL,CAAckC,GAAd,CAAkB7C,OAAO,CAACN,KAA1B,EAAiC;AAAEmB,YAAAA;AAAF,WAAjC;AACD,SAVM,CAAP;AAWD;;AAED,WAAKc,OAAL,CAAaiB,WAAb,CAAyB;AACvB5C,QAAAA,OAAO,EAAER,YAAY,CAACC,kBAAb,CAAgCO,OAAhC,CADc;AAEvBC,QAAAA,MAAM,EAAEQ,eAFe;AAGvBZ,QAAAA,OAHuB;AAIvBgC,QAAAA,OAJuB;AAKvB1B,QAAAA,IAAI,EAAEC;AALiB,OAAzB;;AAQA,YAAM0C,kBAAkB,GAAG,IAAIC,2BAAJ,CAA2C,KAAKhC,aAAhD,EAA+Df,OAAO,CAACN,KAAvE,CAA3B;AACA,aAAOoD,kBAAkB,CAACE,WAAnB,EAAP;AACD,KAzBD,CAyBE,OAAOC,KAAP,EAAc;AACd,aAAO;AAAEhC,QAAAA,MAAM,EAAE,yBAAUgC,KAAV;AAAV,OAAP;AACD;AACF;;AAGuB,QAAVf,UAAU,CAACL,OAAD,EAAkBhC,OAAlB,EAA2CG,OAA3C,EAAoE;AAC1F,QAAI;AACF,WAAK2B,OAAL,CAAaiB,WAAb,CAAyB;AACvB5C,QAAAA,OAAO,EAAER,YAAY,CAACC,kBAAb,CAAgCO,OAAhC,CADc;AAEvBC,QAAAA,MAAM,EAAEa,iBAFe;AAGvBjB,QAAAA,OAHuB;AAIvBgC,QAAAA,OAJuB;AAKvB1B,QAAAA,IAAI,EAAEC;AALiB,OAAzB;;AAQA,YAAM0C,kBAAkB,GAAG,IAAIC,2BAAJ,CAA2C,KAAKhC,aAAhD,EAA+Df,OAAO,CAACN,KAAvE,CAA3B;AACA,aAAOoD,kBAAkB,CAACE,WAAnB,EAAP;AACD,KAXD,CAWE,OAAOC,KAAP,EAAc;AACd,aAAO;AAAEhC,QAAAA,MAAM,EAAE,yBAAUgC,KAAV;AAAV,OAAP;AACD;AACF;;AAnJ+B,C","sourcesContent":["import WorkerCachemap from \"@cachemap/core-worker\";\nimport {\n DebugManagerDef,\n MaybeRequestContext,\n MaybeRequestResult,\n QUERY,\n RequestContext,\n RequestOptions,\n SUBSCRIPTION,\n ValidOperations,\n} from \"@graphql-box/core\";\nimport { EventAsyncIterator, rehydrateCacheMetadata } from \"@graphql-box/helpers\";\nimport EventEmitter from \"eventemitter3\";\nimport { castArray, isPlainObject } from \"lodash\";\nimport { v1 as uuid } from \"uuid\";\nimport { GRAPHQL_BOX, MESSAGE, REQUEST, SUBSCRIBE } from \"../consts\";\nimport logRequest from \"../debug/log-request\";\nimport { MessageContext, MessageResponsePayload, PendingResolver, PendingTracker, UserOptions } from \"../defs\";\n\nexport default class WorkerClient {\n private static _getMessageContext({ boxID, hasDeferOrStream = false }: RequestContext): MessageContext {\n return { boxID, hasDeferOrStream };\n }\n\n private _cache: WorkerCachemap;\n private _debugManager: DebugManagerDef | null;\n private _eventEmitter: EventEmitter;\n private _pending: PendingTracker = new Map();\n private _worker: Worker;\n\n constructor(options: UserOptions) {\n const errors: TypeError[] = [];\n\n if (!isPlainObject(options)) {\n errors.push(new TypeError(\"@graphql-box/client expected options to ba a plain object.\"));\n }\n\n if (!options.cache) {\n errors.push(new TypeError(\"@graphql-box/client expected options.cache.\"));\n }\n\n if (!options.worker) {\n errors.push(new TypeError(\"@graphql-box/client expected options.worker.\"));\n }\n\n if (errors.length) {\n throw errors;\n }\n\n this._cache = options.cache;\n this._debugManager = options.debugManager ? options.debugManager() : null;\n this._eventEmitter = new EventEmitter();\n this._worker = options.worker;\n this._addEventListener();\n }\n\n get cache(): WorkerCachemap {\n return this._cache;\n }\n\n public async 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 boxID: uuid(),\n debugManager: this._debugManager,\n fieldTypeMap: new Map(),\n operation,\n operationName: \"\",\n queryFiltered: false,\n request,\n ...context,\n };\n }\n\n private _onMessage = async ({ data }: MessageEvent): Promise<void> => {\n if (!isPlainObject(data)) return;\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 = { ...otherProps, requestID: context.boxID };\n\n if (_cacheMetadata) {\n response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);\n }\n\n if (method === REQUEST) {\n const pending = this._pending.get(context.boxID);\n\n if (!pending) {\n return;\n }\n\n pending.resolve(response);\n } else if (method === SUBSCRIBE || context.hasDeferOrStream) {\n this._eventEmitter.emit(context.boxID, 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.boxID, { 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.boxID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return { errors: castArray(error) };\n }\n }\n\n @logRequest()\n private async _subscribe(request: string, options: RequestOptions, context: RequestContext) {\n try {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: SUBSCRIBE,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.boxID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return { errors: castArray(error) };\n }\n }\n}\n"],"file":"index.js"}
@@ -13,37 +13,6 @@ import { v1 as uuid } from "uuid";
13
13
  import { GRAPHQL_BOX, MESSAGE, REQUEST, SUBSCRIBE } from "../consts";
14
14
  import logRequest from "../debug/log-request";
15
15
  let WorkerClient = (_dec = logRequest(), _dec2 = logRequest(), (_class = class WorkerClient {
16
- static async init(options) {
17
- const errors = [];
18
-
19
- if (!_isPlainObject(options)) {
20
- errors.push(new TypeError("@graphql-box/client expected options to ba a plain object."));
21
- }
22
-
23
- if (!options.cache) {
24
- errors.push(new TypeError("@graphql-box/client expected options.cache."));
25
- }
26
-
27
- if (!options.worker) {
28
- errors.push(new TypeError("@graphql-box/client expected options.worker."));
29
- }
30
-
31
- const constructorOptions = {
32
- cache: options.cache,
33
- worker: options.worker
34
- };
35
-
36
- try {
37
- if (options.debugManager) {
38
- constructorOptions.debugManager = await options.debugManager();
39
- }
40
-
41
- return new WorkerClient(constructorOptions);
42
- } catch (error) {
43
- return Promise.reject(error);
44
- }
45
- }
46
-
47
16
  static _getMessageContext({
48
17
  boxID,
49
18
  hasDeferOrStream = false
@@ -54,11 +23,7 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logRequest(), (_class = class W
54
23
  };
55
24
  }
56
25
 
57
- constructor({
58
- cache,
59
- debugManager,
60
- worker
61
- }) {
26
+ constructor(options) {
62
27
  _defineProperty(this, "_cache", void 0);
63
28
 
64
29
  _defineProperty(this, "_debugManager", void 0);
@@ -109,10 +74,28 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logRequest(), (_class = class W
109
74
  }
110
75
  });
111
76
 
112
- this._cache = cache;
113
- this._debugManager = debugManager || null;
77
+ const errors = [];
78
+
79
+ if (!_isPlainObject(options)) {
80
+ errors.push(new TypeError("@graphql-box/client expected options to ba a plain object."));
81
+ }
82
+
83
+ if (!options.cache) {
84
+ errors.push(new TypeError("@graphql-box/client expected options.cache."));
85
+ }
86
+
87
+ if (!options.worker) {
88
+ errors.push(new TypeError("@graphql-box/client expected options.worker."));
89
+ }
90
+
91
+ if (errors.length) {
92
+ throw errors;
93
+ }
94
+
95
+ this._cache = options.cache;
96
+ this._debugManager = options.debugManager ? options.debugManager() : null;
114
97
  this._eventEmitter = new EventEmitter();
115
- this._worker = worker;
98
+ this._worker = options.worker;
116
99
 
117
100
  this._addEventListener();
118
101
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/main/index.ts"],"names":["QUERY","SUBSCRIPTION","EventAsyncIterator","rehydrateCacheMetadata","EventEmitter","v1","uuid","GRAPHQL_BOX","MESSAGE","REQUEST","SUBSCRIBE","logRequest","WorkerClient","init","options","errors","push","TypeError","cache","worker","constructorOptions","debugManager","error","Promise","reject","_getMessageContext","boxID","hasDeferOrStream","constructor","Map","data","context","method","result","type","_cacheMetadata","otherProps","response","requestID","pending","_pending","get","resolve","_eventEmitter","emit","_cache","_debugManager","_worker","_addEventListener","request","_request","_getRequestContext","subscribe","_subscribe","addEventListener","_onMessage","operation","fieldTypeMap","operationName","queryFiltered","postMessage","set","eventAsyncIterator","getIterator"],"mappings":"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","sourcesContent":["import WorkerCachemap from \"@cachemap/core-worker\";\nimport {\n DebugManagerDef,\n MaybeRequestContext,\n MaybeRequestResult,\n QUERY,\n RequestContext,\n RequestOptions,\n SUBSCRIPTION,\n ValidOperations,\n} from \"@graphql-box/core\";\nimport { EventAsyncIterator, 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 {\n ConstructorOptions,\n MessageContext,\n MessageResponsePayload,\n PendingResolver,\n PendingTracker,\n UserOptions,\n} from \"../defs\";\n\nexport default class WorkerClient {\n public static async init(options: UserOptions): Promise<WorkerClient> {\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 const constructorOptions: ConstructorOptions = {\n cache: options.cache,\n worker: options.worker,\n };\n\n try {\n if (options.debugManager) {\n constructorOptions.debugManager = await options.debugManager();\n }\n\n return new WorkerClient(constructorOptions);\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n private static _getMessageContext({ boxID, hasDeferOrStream = false }: RequestContext): MessageContext {\n return { boxID, hasDeferOrStream };\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({ cache, debugManager, worker }: ConstructorOptions) {\n this._cache = cache;\n this._debugManager = debugManager || null;\n this._eventEmitter = new EventEmitter();\n this._worker = worker;\n this._addEventListener();\n }\n\n get cache(): WorkerCachemap {\n return this._cache;\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 boxID: uuid(),\n debugManager: this._debugManager,\n fieldTypeMap: new Map(),\n operation,\n operationName: \"\",\n queryFiltered: false,\n request,\n ...context,\n };\n }\n\n private _onMessage = async ({ data }: MessageEvent): Promise<void> => {\n if (!isPlainObject(data)) return;\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 = { ...otherProps, requestID: context.boxID };\n\n if (_cacheMetadata) {\n response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);\n }\n\n if (method === REQUEST) {\n const pending = this._pending.get(context.boxID);\n\n if (!pending) {\n return;\n }\n\n pending.resolve(response);\n } else if (method === SUBSCRIBE || context.hasDeferOrStream) {\n this._eventEmitter.emit(context.boxID, 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.boxID, { 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.boxID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return { errors: castArray(error) };\n }\n }\n\n @logRequest()\n private async _subscribe(request: string, options: RequestOptions, context: RequestContext) {\n try {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: SUBSCRIBE,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.boxID);\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":["QUERY","SUBSCRIPTION","EventAsyncIterator","rehydrateCacheMetadata","EventEmitter","v1","uuid","GRAPHQL_BOX","MESSAGE","REQUEST","SUBSCRIBE","logRequest","WorkerClient","_getMessageContext","boxID","hasDeferOrStream","constructor","options","Map","data","context","method","result","type","_cacheMetadata","otherProps","response","requestID","pending","_pending","get","resolve","_eventEmitter","emit","errors","push","TypeError","cache","worker","length","_cache","_debugManager","debugManager","_worker","_addEventListener","request","_request","_getRequestContext","subscribe","_subscribe","addEventListener","_onMessage","operation","fieldTypeMap","operationName","queryFiltered","Promise","postMessage","set","eventAsyncIterator","getIterator","error"],"mappings":"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","sourcesContent":["import WorkerCachemap from \"@cachemap/core-worker\";\nimport {\n DebugManagerDef,\n MaybeRequestContext,\n MaybeRequestResult,\n QUERY,\n RequestContext,\n RequestOptions,\n SUBSCRIPTION,\n ValidOperations,\n} from \"@graphql-box/core\";\nimport { EventAsyncIterator, rehydrateCacheMetadata } from \"@graphql-box/helpers\";\nimport EventEmitter from \"eventemitter3\";\nimport { castArray, isPlainObject } from \"lodash\";\nimport { v1 as uuid } from \"uuid\";\nimport { GRAPHQL_BOX, MESSAGE, REQUEST, SUBSCRIBE } from \"../consts\";\nimport logRequest from \"../debug/log-request\";\nimport { MessageContext, MessageResponsePayload, PendingResolver, PendingTracker, UserOptions } from \"../defs\";\n\nexport default class WorkerClient {\n private static _getMessageContext({ boxID, hasDeferOrStream = false }: RequestContext): MessageContext {\n return { boxID, hasDeferOrStream };\n }\n\n private _cache: WorkerCachemap;\n private _debugManager: DebugManagerDef | null;\n private _eventEmitter: EventEmitter;\n private _pending: PendingTracker = new Map();\n private _worker: Worker;\n\n constructor(options: UserOptions) {\n const errors: TypeError[] = [];\n\n if (!isPlainObject(options)) {\n errors.push(new TypeError(\"@graphql-box/client expected options to ba a plain object.\"));\n }\n\n if (!options.cache) {\n errors.push(new TypeError(\"@graphql-box/client expected options.cache.\"));\n }\n\n if (!options.worker) {\n errors.push(new TypeError(\"@graphql-box/client expected options.worker.\"));\n }\n\n if (errors.length) {\n throw errors;\n }\n\n this._cache = options.cache;\n this._debugManager = options.debugManager ? options.debugManager() : null;\n this._eventEmitter = new EventEmitter();\n this._worker = options.worker;\n this._addEventListener();\n }\n\n get cache(): WorkerCachemap {\n return this._cache;\n }\n\n public async 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 boxID: uuid(),\n debugManager: this._debugManager,\n fieldTypeMap: new Map(),\n operation,\n operationName: \"\",\n queryFiltered: false,\n request,\n ...context,\n };\n }\n\n private _onMessage = async ({ data }: MessageEvent): Promise<void> => {\n if (!isPlainObject(data)) return;\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 = { ...otherProps, requestID: context.boxID };\n\n if (_cacheMetadata) {\n response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);\n }\n\n if (method === REQUEST) {\n const pending = this._pending.get(context.boxID);\n\n if (!pending) {\n return;\n }\n\n pending.resolve(response);\n } else if (method === SUBSCRIBE || context.hasDeferOrStream) {\n this._eventEmitter.emit(context.boxID, 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.boxID, { 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.boxID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return { errors: castArray(error) };\n }\n }\n\n @logRequest()\n private async _subscribe(request: string, options: RequestOptions, context: RequestContext) {\n try {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: SUBSCRIBE,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.boxID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return { errors: castArray(error) };\n }\n }\n}\n"],"file":"index.js"}
@@ -1,6 +1,6 @@
1
1
  import WorkerCachemap from "@cachemap/core-worker";
2
2
  import Client from "@graphql-box/client";
3
- import { DebugManagerDef, MaybeRequestResult, MaybeRequestResultWithDehydratedCacheMetadata, RequestOptions } from "@graphql-box/core";
3
+ import { MaybeRequestResult, MaybeRequestResultWithDehydratedCacheMetadata, RequestOptions } from "@graphql-box/core";
4
4
  import { DebugManagerInit } from "@graphql-box/debug-manager";
5
5
  export interface UserOptions {
6
6
  /**
@@ -16,20 +16,6 @@ export interface UserOptions {
16
16
  */
17
17
  worker: Worker;
18
18
  }
19
- export interface ConstructorOptions {
20
- /**
21
- * The cache.
22
- */
23
- cache: WorkerCachemap;
24
- /**
25
- * The debug manager.
26
- */
27
- debugManager?: DebugManagerDef;
28
- /**
29
- * The web worker instance.
30
- */
31
- worker: Worker;
32
- }
33
19
  export declare type MethodNames = "request" | "subscribe";
34
20
  export declare type PendingResolver = (value: MaybeRequestResult) => void;
35
21
  export interface PendingData {
@@ -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,EACL,eAAe,EACf,kBAAkB,EAClB,6CAA6C,EAC7C,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,KAAK,EAAE,cAAc,CAAC;IAEtB;;OAEG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAEhC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC;;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,6CAA6C,CAAC;IACtD,IAAI,EAAE,YAAY,GAAG,UAAU,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,OAAO,CAAC;CAC3B;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,kBAAkB,EAAE,6CAA6C,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtH,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,KAAK,EAAE,cAAc,CAAC;IAEtB;;OAEG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAEhC;;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,6CAA6C,CAAC;IACtD,IAAI,EAAE,YAAY,GAAG,UAAU,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;CAChB"}
@@ -1,15 +1,14 @@
1
1
  import WorkerCachemap from "@cachemap/core-worker";
2
2
  import { MaybeRequestContext, MaybeRequestResult, RequestOptions } from "@graphql-box/core";
3
- import { ConstructorOptions, UserOptions } from "../defs";
3
+ import { UserOptions } from "../defs";
4
4
  export default class WorkerClient {
5
- static init(options: UserOptions): Promise<WorkerClient>;
6
5
  private static _getMessageContext;
7
6
  private _cache;
8
7
  private _debugManager;
9
8
  private _eventEmitter;
10
9
  private _pending;
11
10
  private _worker;
12
- constructor({ cache, debugManager, worker }: ConstructorOptions);
11
+ constructor(options: UserOptions);
13
12
  get cache(): WorkerCachemap;
14
13
  request(request: string, options?: RequestOptions, context?: MaybeRequestContext): Promise<MaybeRequestResult | AsyncIterableIterator<MaybeRequestResult | undefined> | {
15
14
  errors: any[];
@@ -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,EAEL,mBAAmB,EACnB,kBAAkB,EAGlB,cAAc,EAGf,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EACL,kBAAkB,EAKlB,WAAW,EACZ,MAAM,SAAS,CAAC;AAEjB,MAAM,CAAC,OAAO,OAAO,YAAY;WACX,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA+BrE,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,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,kBAAkB;IAQ/D,IAAI,KAAK,IAAI,cAAc,CAE1B;IAEY,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;IAiB1B,OAAO,CAAC,UAAU,CA2BhB;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,EAEL,mBAAmB,EACnB,kBAAkB,EAGlB,cAAc,EAGf,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EAA2E,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/G,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAIjC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,WAAW;IA0BhC,IAAI,KAAK,IAAI,cAAc,CAE1B;IAEY,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;IAiB1B,OAAO,CAAC,UAAU,CA2BhB;YAGY,QAAQ;YAgCR,UAAU;CAgBzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@graphql-box/worker-client",
3
- "version": "2.5.1",
3
+ "version": "3.0.0",
4
4
  "description": "The GraphQL Box web worker client module.",
5
5
  "author": "Dylan Aubrey <dylanaubrey@gmail.com>",
6
6
  "license": "MIT",
@@ -54,8 +54,8 @@
54
54
  "uuid": "^7.0.1"
55
55
  },
56
56
  "devDependencies": {
57
- "@graphql-box/client": "^2.0.0",
58
- "@graphql-box/debug-manager": "^2.0.0",
59
- "@graphql-box/test-utils": "^2.0.0"
57
+ "@graphql-box/client": "^3.0.0",
58
+ "@graphql-box/debug-manager": "^3.0.0",
59
+ "@graphql-box/test-utils": "^3.0.0"
60
60
  }
61
61
  }
package/src/defs/index.ts CHANGED
@@ -1,11 +1,6 @@
1
1
  import WorkerCachemap from "@cachemap/core-worker";
2
2
  import Client from "@graphql-box/client";
3
- import {
4
- DebugManagerDef,
5
- MaybeRequestResult,
6
- MaybeRequestResultWithDehydratedCacheMetadata,
7
- RequestOptions,
8
- } from "@graphql-box/core";
3
+ import { MaybeRequestResult, MaybeRequestResultWithDehydratedCacheMetadata, RequestOptions } from "@graphql-box/core";
9
4
  import { DebugManagerInit } from "@graphql-box/debug-manager";
10
5
 
11
6
  export interface UserOptions {
@@ -25,23 +20,6 @@ export interface UserOptions {
25
20
  worker: Worker;
26
21
  }
27
22
 
28
- export interface ConstructorOptions {
29
- /**
30
- * The cache.
31
- */
32
- cache: WorkerCachemap;
33
-
34
- /**
35
- * The debug manager.
36
- */
37
- debugManager?: DebugManagerDef;
38
-
39
- /**
40
- * The web worker instance.
41
- */
42
- worker: Worker;
43
- }
44
-
45
23
  export type MethodNames = "request" | "subscribe";
46
24
 
47
25
  export type PendingResolver = (value: MaybeRequestResult) => void;
package/src/main/index.ts CHANGED
@@ -15,17 +15,20 @@ import { castArray, isPlainObject } from "lodash";
15
15
  import { v1 as uuid } from "uuid";
16
16
  import { GRAPHQL_BOX, MESSAGE, REQUEST, SUBSCRIBE } from "../consts";
17
17
  import logRequest from "../debug/log-request";
18
- import {
19
- ConstructorOptions,
20
- MessageContext,
21
- MessageResponsePayload,
22
- PendingResolver,
23
- PendingTracker,
24
- UserOptions,
25
- } from "../defs";
18
+ import { MessageContext, MessageResponsePayload, PendingResolver, PendingTracker, UserOptions } from "../defs";
26
19
 
27
20
  export default class WorkerClient {
28
- public static async init(options: UserOptions): Promise<WorkerClient> {
21
+ private static _getMessageContext({ boxID, hasDeferOrStream = false }: RequestContext): MessageContext {
22
+ return { boxID, hasDeferOrStream };
23
+ }
24
+
25
+ private _cache: WorkerCachemap;
26
+ private _debugManager: DebugManagerDef | null;
27
+ private _eventEmitter: EventEmitter;
28
+ private _pending: PendingTracker = new Map();
29
+ private _worker: Worker;
30
+
31
+ constructor(options: UserOptions) {
29
32
  const errors: TypeError[] = [];
30
33
 
31
34
  if (!isPlainObject(options)) {
@@ -40,37 +43,14 @@ export default class WorkerClient {
40
43
  errors.push(new TypeError("@graphql-box/client expected options.worker."));
41
44
  }
42
45
 
43
- const constructorOptions: ConstructorOptions = {
44
- cache: options.cache,
45
- worker: options.worker,
46
- };
47
-
48
- try {
49
- if (options.debugManager) {
50
- constructorOptions.debugManager = await options.debugManager();
51
- }
52
-
53
- return new WorkerClient(constructorOptions);
54
- } catch (error) {
55
- return Promise.reject(error);
46
+ if (errors.length) {
47
+ throw errors;
56
48
  }
57
- }
58
-
59
- private static _getMessageContext({ boxID, hasDeferOrStream = false }: RequestContext): MessageContext {
60
- return { boxID, hasDeferOrStream };
61
- }
62
-
63
- private _cache: WorkerCachemap;
64
- private _debugManager: DebugManagerDef | null;
65
- private _eventEmitter: EventEmitter;
66
- private _pending: PendingTracker = new Map();
67
- private _worker: Worker;
68
49
 
69
- constructor({ cache, debugManager, worker }: ConstructorOptions) {
70
- this._cache = cache;
71
- this._debugManager = debugManager || null;
50
+ this._cache = options.cache;
51
+ this._debugManager = options.debugManager ? options.debugManager() : null;
72
52
  this._eventEmitter = new EventEmitter();
73
- this._worker = worker;
53
+ this._worker = options.worker;
74
54
  this._addEventListener();
75
55
  }
76
56