@graphql-box/worker-client 2.4.4 → 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.
- package/lib/browser/index.js +1 -1
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/production.analysis.txt +11 -11
- package/lib/main/main/index.js +31 -54
- package/lib/main/main/index.js.map +1 -1
- package/lib/module/main/index.js +30 -54
- package/lib/module/main/index.js.map +1 -1
- package/lib/types/defs/index.d.ts +1 -15
- package/lib/types/defs/index.d.ts.map +1 -1
- package/lib/types/main/index.d.ts +6 -5
- package/lib/types/main/index.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/defs/index.ts +1 -23
- package/src/main/index.ts +25 -62
package/lib/browser/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"core-js/modules/es.object.keys.js";import"core-js/modules/es.symbol.js";import"core-js/modules/es.array.filter.js";import"core-js/modules/web.dom-collections.for-each.js";import"core-js/modules/es.object.get-own-property-descriptors.js";import e from"@babel/runtime/helpers/objectWithoutProperties";import t from"@babel/runtime/helpers/asyncToGenerator";import r from"@babel/runtime/helpers/classCallCheck";import n from"@babel/runtime/helpers/createClass";import o from"@babel/runtime/helpers/defineProperty";import a from"@babel/runtime/helpers/applyDecoratedDescriptor";import s from"lodash/isPlainObject";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{QUERY as u,SUBSCRIPTION as i}from"@graphql-box/core";import{EventAsyncIterator as p,rehydrateCacheMetadata as h,dehydrateCacheMetadata as l}from"@graphql-box/helpers";import b from"eventemitter3";import{v1 as f}from"uuid";import{handleMessage as m}from"@cachemap/core-worker";import{forAwaitEach as d,isAsyncIterable as v}from"iterall";var g,y,x,w="request_executed";function j(){return 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,h,l,b;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=a.now(),t.next=11,s.apply(u,o);case 11:h=t.sent,l=a.now(),b=l-p,r(h),a.emit("request_executed",{context:i,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 _(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?_(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):_(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var O=(g=j(),y=j(),a((x=function(){function a(n){var u,i=this,p=n.cache,l=n.debugManager,f=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",(u=t(c.mark((function t(r){var n,o,a,u,p,l,b,f,m;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,b=e(p,["_cacheMetadata"]),f=k(k({},b),{},{requestID:a.boxID}),l&&(f._cacheMetadata=h(l)),"request"!==u){t.next=16;break}if(m=i._pending.get(a.boxID)){t.next=13;break}return t.abrupt("return");case 13:m.resolve(f),t.next=17;break;case 16:("subscribe"===u||a.hasDeferOrStream)&&i._eventEmitter.emit(a.boxID,f);case 17:case"end":return t.stop()}}),t)}))),function(e){return u.apply(this,arguments)})),this._cache=p,this._debugManager=l||null,this._eventEmitter=new b,this._worker=f,this._addEventListener()}var l,m,d,v,g;return n(a,[{key:"cache",get:function(){return this._cache}},{key:"request",value:(g=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.prev=2,e.abrupt("return",this._request(t,r,this._getRequestContext(u,t,n)));case 6:return e.prev=6,e.t0=e.catch(2),e.abrupt("return",{errors:e.t0});case 9:case"end":return e.stop()}}),e,this,[[2,6]])}))),function(e){return g.apply(this,arguments)})},{key:"subscribe",value:(v=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.prev=1,e.next=4,this._subscribe(t,r,this._getRequestContext(i,t));case 4:return e.abrupt("return",e.sent);case 7:return e.prev=7,e.t0=e.catch(1),e.abrupt("return",Promise.reject(e.t0));case 10:case"end":return e.stop()}}),e,this,[[1,7]])}))),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 k({boxID:f(),debugManager:this._debugManager,fieldTypeMap:new Map,operation:e,operationName:"",queryFiltered:!1,request:t},r)}},{key:"_request",value:(d=t(c.mark((function e(t,r,n){var o,s=this;return c.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,n.hasDeferOrStream){e.next=3;break}return e.abrupt("return",new Promise((function(e){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 p(this._eventEmitter,n.boxID),e.abrupt("return",o.getIterator());case 8:return e.prev=8,e.t0=e.catch(0),e.abrupt("return",{errors: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:(m=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 p(this._eventEmitter,n.boxID),e.abrupt("return",o.getIterator());case 6:return e.prev=6,e.t0=e.catch(0),e.abrupt("return",Promise.reject(e.t0));case 9:case"end":return e.stop()}}),e,this,[[0,6]])}))),function(e,t,r){return m.apply(this,arguments)})}],[{key:"init",value:(l=t(c.mark((function e(t){var r,n;return c.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 l.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",[g],Object.getOwnPropertyDescriptor(x.prototype,"_request"),x.prototype),a(x.prototype,"_subscribe",[y],Object.getOwnPropertyDescriptor(x.prototype,"_subscribe"),x.prototype),x);function q(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 M(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?q(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):q(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var P=self,D=P.addEventListener,E=P.postMessage;function I(){return(I=t(c.mark((function t(r,n,o,a,s){var u,i,p,h,b;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,v(u)){t.next=9;break}return p=(i=u)._cacheMetadata,h=e(i,["_cacheMetadata"]),b=M({},h),p&&(b._cacheMetadata=l(p)),E({context:a,method:n,result:b,type:"graphqlBox"}),t.abrupt("return");case 9:d(u,(function(t){var r=t._cacheMetadata,o=M({},e(t,["_cacheMetadata"]));r&&(o._cacheMetadata=l(r)),E({context:a,method:n,result:o,type:"graphqlBox"})}));case 10:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function C(){return(C=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:u=t.sent,v(u)?d(u,(function(t){var r=t._cacheMetadata,o=M({},e(t,["_cacheMetadata"]));r&&(o._cacheMetadata=l(r)),E({context:a,method:n,result:o,type:"graphqlBox"})})):E({context:a,method:n,result:void 0,type:"graphqlBox"});case 4:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function B(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){I.apply(this,arguments)}(s,o,a,n,t):"subscribe"===o&&function(e,t,r,n,o){C.apply(this,arguments)}(s,o,a,n,t)}function S(e){return T.apply(this,arguments)}function T(){return(T=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?B(t,r):"cachemap"===n&&r.cache&&m(t,r.cache)}},r=t.client,D("message",n);case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}export default O;export{w as REQUEST_EXECUTED,S 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
|
package/lib/browser/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../worker-client/src/consts/index.ts","../worker-client/src/debug/log-request/index.ts","../worker-client/src/main/index.ts","../worker-client/src/register-worker/index.ts"],"sourcesContent":["export const REQUEST_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 { 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 try {\n return this._request(request, options, this._getRequestContext(QUERY, request, context));\n } catch (error) {\n return { errors: error };\n }\n }\n\n public async subscribe(\n request: string,\n options: RequestOptions = {},\n ): Promise<AsyncIterator<MaybeRequestResult | undefined>> {\n try {\n return (await this._subscribe(request, options, this._getRequestContext(SUBSCRIPTION, request))) as AsyncIterator<\n MaybeRequestResult | undefined\n >;\n } catch (error) {\n return Promise.reject(error);\n }\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 (errors) {\n return { errors };\n }\n }\n\n @logRequest()\n private async _subscribe(\n request: string,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<AsyncIterator<MaybeRequestResult | undefined>> {\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 Promise.reject(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","errors","_subscribe","SUBSCRIPTION","addEventListener","_onMessage","operation","uuid","fieldTypeMap","operationName","queryFiltered","_this2","postMessage","_getMessageContext","set","eventAsyncIterator","EventAsyncIterator","getIterator","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:
|
|
5
|
-
original size:
|
|
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:
|
|
12
|
-
rendered size:
|
|
13
|
-
original size:
|
|
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:
|
|
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:
|
|
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.
|
|
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.
|
|
52
|
+
original size: 1.276 KB
|
|
53
53
|
code reduction: 100 %
|
|
54
54
|
dependents: 1
|
|
55
55
|
- /src/index.ts
|
package/lib/main/main/index.js
CHANGED
|
@@ -15,6 +15,8 @@ var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime/
|
|
|
15
15
|
|
|
16
16
|
var _isPlainObject2 = _interopRequireDefault(require("lodash/isPlainObject"));
|
|
17
17
|
|
|
18
|
+
var _castArray2 = _interopRequireDefault(require("lodash/castArray"));
|
|
19
|
+
|
|
18
20
|
var _core = require("@graphql-box/core");
|
|
19
21
|
|
|
20
22
|
var _helpers = require("@graphql-box/helpers");
|
|
@@ -30,37 +32,6 @@ var _logRequest = _interopRequireDefault(require("../debug/log-request"));
|
|
|
30
32
|
var _dec, _dec2, _class;
|
|
31
33
|
|
|
32
34
|
let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logRequest.default)(), (_class = class WorkerClient {
|
|
33
|
-
static async init(options) {
|
|
34
|
-
const errors = [];
|
|
35
|
-
|
|
36
|
-
if (!(0, _isPlainObject2.default)(options)) {
|
|
37
|
-
errors.push(new TypeError("@graphql-box/client expected options to ba a plain object."));
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
if (!options.cache) {
|
|
41
|
-
errors.push(new TypeError("@graphql-box/client expected options.cache."));
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
if (!options.worker) {
|
|
45
|
-
errors.push(new TypeError("@graphql-box/client expected options.worker."));
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const constructorOptions = {
|
|
49
|
-
cache: options.cache,
|
|
50
|
-
worker: options.worker
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
try {
|
|
54
|
-
if (options.debugManager) {
|
|
55
|
-
constructorOptions.debugManager = await options.debugManager();
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
return new WorkerClient(constructorOptions);
|
|
59
|
-
} catch (error) {
|
|
60
|
-
return Promise.reject(error);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
35
|
static _getMessageContext({
|
|
65
36
|
boxID,
|
|
66
37
|
hasDeferOrStream = false
|
|
@@ -71,11 +42,7 @@ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logRequest.d
|
|
|
71
42
|
};
|
|
72
43
|
}
|
|
73
44
|
|
|
74
|
-
constructor({
|
|
75
|
-
cache,
|
|
76
|
-
debugManager,
|
|
77
|
-
worker
|
|
78
|
-
}) {
|
|
45
|
+
constructor(options) {
|
|
79
46
|
(0, _defineProperty2.default)(this, "_cache", void 0);
|
|
80
47
|
(0, _defineProperty2.default)(this, "_debugManager", void 0);
|
|
81
48
|
(0, _defineProperty2.default)(this, "_eventEmitter", void 0);
|
|
@@ -120,10 +87,28 @@ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logRequest.d
|
|
|
120
87
|
this._eventEmitter.emit(context.boxID, response);
|
|
121
88
|
}
|
|
122
89
|
});
|
|
123
|
-
|
|
124
|
-
|
|
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;
|
|
125
110
|
this._eventEmitter = new _eventemitter.default();
|
|
126
|
-
this._worker = worker;
|
|
111
|
+
this._worker = options.worker;
|
|
127
112
|
|
|
128
113
|
this._addEventListener();
|
|
129
114
|
}
|
|
@@ -133,21 +118,11 @@ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logRequest.d
|
|
|
133
118
|
}
|
|
134
119
|
|
|
135
120
|
async request(request, options = {}, context = {}) {
|
|
136
|
-
|
|
137
|
-
return this._request(request, options, this._getRequestContext(_core.QUERY, request, context));
|
|
138
|
-
} catch (error) {
|
|
139
|
-
return {
|
|
140
|
-
errors: error
|
|
141
|
-
};
|
|
142
|
-
}
|
|
121
|
+
return this._request(request, options, this._getRequestContext(_core.QUERY, request, context));
|
|
143
122
|
}
|
|
144
123
|
|
|
145
124
|
async subscribe(request, options = {}) {
|
|
146
|
-
|
|
147
|
-
return await this._subscribe(request, options, this._getRequestContext(_core.SUBSCRIPTION, request));
|
|
148
|
-
} catch (error) {
|
|
149
|
-
return Promise.reject(error);
|
|
150
|
-
}
|
|
125
|
+
return this._subscribe(request, options, this._getRequestContext(_core.SUBSCRIPTION, request));
|
|
151
126
|
}
|
|
152
127
|
|
|
153
128
|
_addEventListener() {
|
|
@@ -195,9 +170,9 @@ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logRequest.d
|
|
|
195
170
|
|
|
196
171
|
const eventAsyncIterator = new _helpers.EventAsyncIterator(this._eventEmitter, context.boxID);
|
|
197
172
|
return eventAsyncIterator.getIterator();
|
|
198
|
-
} catch (
|
|
173
|
+
} catch (error) {
|
|
199
174
|
return {
|
|
200
|
-
errors
|
|
175
|
+
errors: (0, _castArray2.default)(error)
|
|
201
176
|
};
|
|
202
177
|
}
|
|
203
178
|
}
|
|
@@ -215,7 +190,9 @@ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logRequest.d
|
|
|
215
190
|
const eventAsyncIterator = new _helpers.EventAsyncIterator(this._eventEmitter, context.boxID);
|
|
216
191
|
return eventAsyncIterator.getIterator();
|
|
217
192
|
} catch (error) {
|
|
218
|
-
return
|
|
193
|
+
return {
|
|
194
|
+
errors: (0, _castArray2.default)(error)
|
|
195
|
+
};
|
|
219
196
|
}
|
|
220
197
|
}
|
|
221
198
|
|
|
@@ -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 { 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 try {\n return this._request(request, options, this._getRequestContext(QUERY, request, context));\n } catch (error) {\n return { errors: error };\n }\n }\n\n public async subscribe(\n request: string,\n options: RequestOptions = {},\n ): Promise<AsyncIterator<MaybeRequestResult | undefined>> {\n try {\n return (await this._subscribe(request, options, this._getRequestContext(SUBSCRIPTION, request))) as AsyncIterator<\n MaybeRequestResult | undefined\n >;\n } catch (error) {\n return Promise.reject(error);\n }\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 (errors) {\n return { errors };\n }\n }\n\n @logRequest()\n private async _subscribe(\n request: string,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<AsyncIterator<MaybeRequestResult | undefined>> {\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 Promise.reject(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":"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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"}
|
package/lib/module/main/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
2
|
import _applyDecoratedDescriptor from "@babel/runtime/helpers/applyDecoratedDescriptor";
|
|
3
3
|
import _isPlainObject from "lodash/isPlainObject";
|
|
4
|
+
import _castArray from "lodash/castArray";
|
|
4
5
|
|
|
5
6
|
var _dec, _dec2, _class;
|
|
6
7
|
|
|
@@ -12,37 +13,6 @@ import { v1 as uuid } from "uuid";
|
|
|
12
13
|
import { GRAPHQL_BOX, MESSAGE, REQUEST, SUBSCRIBE } from "../consts";
|
|
13
14
|
import logRequest from "../debug/log-request";
|
|
14
15
|
let WorkerClient = (_dec = logRequest(), _dec2 = logRequest(), (_class = class WorkerClient {
|
|
15
|
-
static async init(options) {
|
|
16
|
-
const errors = [];
|
|
17
|
-
|
|
18
|
-
if (!_isPlainObject(options)) {
|
|
19
|
-
errors.push(new TypeError("@graphql-box/client expected options to ba a plain object."));
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
if (!options.cache) {
|
|
23
|
-
errors.push(new TypeError("@graphql-box/client expected options.cache."));
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
if (!options.worker) {
|
|
27
|
-
errors.push(new TypeError("@graphql-box/client expected options.worker."));
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const constructorOptions = {
|
|
31
|
-
cache: options.cache,
|
|
32
|
-
worker: options.worker
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
try {
|
|
36
|
-
if (options.debugManager) {
|
|
37
|
-
constructorOptions.debugManager = await options.debugManager();
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return new WorkerClient(constructorOptions);
|
|
41
|
-
} catch (error) {
|
|
42
|
-
return Promise.reject(error);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
16
|
static _getMessageContext({
|
|
47
17
|
boxID,
|
|
48
18
|
hasDeferOrStream = false
|
|
@@ -53,11 +23,7 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logRequest(), (_class = class W
|
|
|
53
23
|
};
|
|
54
24
|
}
|
|
55
25
|
|
|
56
|
-
constructor({
|
|
57
|
-
cache,
|
|
58
|
-
debugManager,
|
|
59
|
-
worker
|
|
60
|
-
}) {
|
|
26
|
+
constructor(options) {
|
|
61
27
|
_defineProperty(this, "_cache", void 0);
|
|
62
28
|
|
|
63
29
|
_defineProperty(this, "_debugManager", void 0);
|
|
@@ -108,10 +74,28 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logRequest(), (_class = class W
|
|
|
108
74
|
}
|
|
109
75
|
});
|
|
110
76
|
|
|
111
|
-
|
|
112
|
-
|
|
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;
|
|
113
97
|
this._eventEmitter = new EventEmitter();
|
|
114
|
-
this._worker = worker;
|
|
98
|
+
this._worker = options.worker;
|
|
115
99
|
|
|
116
100
|
this._addEventListener();
|
|
117
101
|
}
|
|
@@ -121,21 +105,11 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logRequest(), (_class = class W
|
|
|
121
105
|
}
|
|
122
106
|
|
|
123
107
|
async request(request, options = {}, context = {}) {
|
|
124
|
-
|
|
125
|
-
return this._request(request, options, this._getRequestContext(QUERY, request, context));
|
|
126
|
-
} catch (error) {
|
|
127
|
-
return {
|
|
128
|
-
errors: error
|
|
129
|
-
};
|
|
130
|
-
}
|
|
108
|
+
return this._request(request, options, this._getRequestContext(QUERY, request, context));
|
|
131
109
|
}
|
|
132
110
|
|
|
133
111
|
async subscribe(request, options = {}) {
|
|
134
|
-
|
|
135
|
-
return await this._subscribe(request, options, this._getRequestContext(SUBSCRIPTION, request));
|
|
136
|
-
} catch (error) {
|
|
137
|
-
return Promise.reject(error);
|
|
138
|
-
}
|
|
112
|
+
return this._subscribe(request, options, this._getRequestContext(SUBSCRIPTION, request));
|
|
139
113
|
}
|
|
140
114
|
|
|
141
115
|
_addEventListener() {
|
|
@@ -183,9 +157,9 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logRequest(), (_class = class W
|
|
|
183
157
|
|
|
184
158
|
const eventAsyncIterator = new EventAsyncIterator(this._eventEmitter, context.boxID);
|
|
185
159
|
return eventAsyncIterator.getIterator();
|
|
186
|
-
} catch (
|
|
160
|
+
} catch (error) {
|
|
187
161
|
return {
|
|
188
|
-
errors
|
|
162
|
+
errors: _castArray(error)
|
|
189
163
|
};
|
|
190
164
|
}
|
|
191
165
|
}
|
|
@@ -203,7 +177,9 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logRequest(), (_class = class W
|
|
|
203
177
|
const eventAsyncIterator = new EventAsyncIterator(this._eventEmitter, context.boxID);
|
|
204
178
|
return eventAsyncIterator.getIterator();
|
|
205
179
|
} catch (error) {
|
|
206
|
-
return
|
|
180
|
+
return {
|
|
181
|
+
errors: _castArray(error)
|
|
182
|
+
};
|
|
207
183
|
}
|
|
208
184
|
}
|
|
209
185
|
|
|
@@ -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 { 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 try {\n return this._request(request, options, this._getRequestContext(QUERY, request, context));\n } catch (error) {\n return { errors: error };\n }\n }\n\n public async subscribe(\n request: string,\n options: RequestOptions = {},\n ): Promise<AsyncIterator<MaybeRequestResult | undefined>> {\n try {\n return (await this._subscribe(request, options, this._getRequestContext(SUBSCRIPTION, request))) as AsyncIterator<\n MaybeRequestResult | undefined\n >;\n } catch (error) {\n return Promise.reject(error);\n }\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 (errors) {\n return { errors };\n }\n }\n\n @logRequest()\n private async _subscribe(\n request: string,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<AsyncIterator<MaybeRequestResult | undefined>> {\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 Promise.reject(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 {
|
|
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,
|
|
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,20 +1,21 @@
|
|
|
1
1
|
import WorkerCachemap from "@cachemap/core-worker";
|
|
2
2
|
import { MaybeRequestContext, MaybeRequestResult, RequestOptions } from "@graphql-box/core";
|
|
3
|
-
import {
|
|
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(
|
|
11
|
+
constructor(options: UserOptions);
|
|
13
12
|
get cache(): WorkerCachemap;
|
|
14
13
|
request(request: string, options?: RequestOptions, context?: MaybeRequestContext): Promise<MaybeRequestResult | AsyncIterableIterator<MaybeRequestResult | undefined> | {
|
|
15
|
-
errors: any;
|
|
14
|
+
errors: any[];
|
|
15
|
+
}>;
|
|
16
|
+
subscribe(request: string, options?: RequestOptions): Promise<AsyncIterableIterator<MaybeRequestResult | undefined> | {
|
|
17
|
+
errors: any[];
|
|
16
18
|
}>;
|
|
17
|
-
subscribe(request: string, options?: RequestOptions): Promise<AsyncIterator<MaybeRequestResult | undefined>>;
|
|
18
19
|
private _addEventListener;
|
|
19
20
|
private _getRequestContext;
|
|
20
21
|
private _onMessage;
|
|
@@ -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,
|
|
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": "
|
|
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": "^
|
|
58
|
-
"@graphql-box/debug-manager": "^
|
|
59
|
-
"@graphql-box/test-utils": "^
|
|
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
|
@@ -11,21 +11,24 @@ import {
|
|
|
11
11
|
} from "@graphql-box/core";
|
|
12
12
|
import { EventAsyncIterator, rehydrateCacheMetadata } from "@graphql-box/helpers";
|
|
13
13
|
import EventEmitter from "eventemitter3";
|
|
14
|
-
import { isPlainObject } from "lodash";
|
|
14
|
+
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
|
-
|
|
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
|
-
|
|
44
|
-
|
|
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
49
|
|
|
59
|
-
|
|
60
|
-
|
|
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
|
-
|
|
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
|
|
|
@@ -79,24 +59,11 @@ export default class WorkerClient {
|
|
|
79
59
|
}
|
|
80
60
|
|
|
81
61
|
public async request(request: string, options: RequestOptions = {}, context: MaybeRequestContext = {}) {
|
|
82
|
-
|
|
83
|
-
return this._request(request, options, this._getRequestContext(QUERY, request, context));
|
|
84
|
-
} catch (error) {
|
|
85
|
-
return { errors: error };
|
|
86
|
-
}
|
|
62
|
+
return this._request(request, options, this._getRequestContext(QUERY, request, context));
|
|
87
63
|
}
|
|
88
64
|
|
|
89
|
-
public async subscribe(
|
|
90
|
-
request
|
|
91
|
-
options: RequestOptions = {},
|
|
92
|
-
): Promise<AsyncIterator<MaybeRequestResult | undefined>> {
|
|
93
|
-
try {
|
|
94
|
-
return (await this._subscribe(request, options, this._getRequestContext(SUBSCRIPTION, request))) as AsyncIterator<
|
|
95
|
-
MaybeRequestResult | undefined
|
|
96
|
-
>;
|
|
97
|
-
} catch (error) {
|
|
98
|
-
return Promise.reject(error);
|
|
99
|
-
}
|
|
65
|
+
public async subscribe(request: string, options: RequestOptions = {}) {
|
|
66
|
+
return this._subscribe(request, options, this._getRequestContext(SUBSCRIPTION, request));
|
|
100
67
|
}
|
|
101
68
|
|
|
102
69
|
private _addEventListener(): void {
|
|
@@ -176,17 +143,13 @@ export default class WorkerClient {
|
|
|
176
143
|
|
|
177
144
|
const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.boxID);
|
|
178
145
|
return eventAsyncIterator.getIterator();
|
|
179
|
-
} catch (
|
|
180
|
-
return { errors };
|
|
146
|
+
} catch (error) {
|
|
147
|
+
return { errors: castArray(error) };
|
|
181
148
|
}
|
|
182
149
|
}
|
|
183
150
|
|
|
184
151
|
@logRequest()
|
|
185
|
-
private async _subscribe(
|
|
186
|
-
request: string,
|
|
187
|
-
options: RequestOptions,
|
|
188
|
-
context: RequestContext,
|
|
189
|
-
): Promise<AsyncIterator<MaybeRequestResult | undefined>> {
|
|
152
|
+
private async _subscribe(request: string, options: RequestOptions, context: RequestContext) {
|
|
190
153
|
try {
|
|
191
154
|
this._worker.postMessage({
|
|
192
155
|
context: WorkerClient._getMessageContext(context),
|
|
@@ -199,7 +162,7 @@ export default class WorkerClient {
|
|
|
199
162
|
const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.boxID);
|
|
200
163
|
return eventAsyncIterator.getIterator();
|
|
201
164
|
} catch (error) {
|
|
202
|
-
return
|
|
165
|
+
return { errors: castArray(error) };
|
|
203
166
|
}
|
|
204
167
|
}
|
|
205
168
|
}
|