@graphql-box/worker-client 2.1.3 → 2.2.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 +12 -12
- package/lib/main/main/index.js +33 -17
- package/lib/main/main/index.js.map +1 -1
- package/lib/main/register-worker/index.js +45 -10
- package/lib/main/register-worker/index.js.map +1 -1
- package/lib/module/main/index.js +33 -17
- package/lib/module/main/index.js.map +1 -1
- package/lib/module/register-worker/index.js +45 -10
- package/lib/module/register-worker/index.js.map +1 -1
- package/lib/types/debug/log-request/index.d.ts.map +1 -1
- package/lib/types/defs/index.d.ts +1 -0
- package/lib/types/defs/index.d.ts.map +1 -1
- package/lib/types/main/index.d.ts +4 -2
- package/lib/types/main/index.d.ts.map +1 -1
- package/lib/types/register-worker/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/defs/index.ts +1 -0
- package/src/main/index.ts +35 -20
- package/src/register-worker/index.ts +25 -4
package/lib/browser/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"core-js/modules/es.object.keys.js";import"core-js/modules/es.symbol.js";import"core-js/modules/es.array.filter.js";import"core-js/modules/web.dom-collections.for-each.js";import"core-js/modules/es.object.get-own-property-descriptors.js";import e from"@babel/runtime/helpers/objectWithoutProperties";import t from"@babel/runtime/helpers/asyncToGenerator";import r from"@babel/runtime/helpers/classCallCheck";import n from"@babel/runtime/helpers/createClass";import o from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/applyDecoratedDescriptor";import a 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{isAsyncIterable as d,forAwaitEach as v}from"iterall";var g,y,w,x="request_executed";function j(){return function(r,n,o){var s,a=o.value;a&&(o.value=(s=t(c.mark((function r(){var n,o,s,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),s=0;s<n;s++)o[s]=i[s];return r.prev=1,r.abrupt("return",new Promise(function(){var r=t(c.mark((function t(r){var n,s,i,p,h,l,b;return c.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=o[2],s=n.debugManager,i=e(n,["debugManager"]),s){t.next=8;break}return t.t0=r,t.next=5,a.apply(u,o);case 5:return t.t1=t.sent,(0,t.t0)(t.t1),t.abrupt("return");case 8:return p=s.now(),t.next=11,a.apply(u,o);case 11:h=t.sent,l=s.now(),b=l-p,r(h),s.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 s.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(),s((w=function(){function s(n){var u,i=this,p=n.cache,l=n.debugManager,f=n.worker;r(this,s),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,s,u,p,l,b,f,m;return c.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=r.data,a(n)){t.next=3;break}return t.abrupt("return");case 3:if(s=(o=n).context,u=o.method,p=o.result,"graphqlBox"===o.type&&a(p)){t.next=6;break}return t.abrupt("return");case 6:if(l=p._cacheMetadata,b=e(p,["_cacheMetadata"]),f=k({},b),l&&(f._cacheMetadata=h(l)),"request"!==u){t.next=16;break}if(m=i._pending.get(s.boxID)){t.next=13;break}return t.abrupt("return");case 13:m.resolve(f),t.next=17;break;case 16:"subscribe"===u&&i._eventEmitter.emit(s.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(s,[{key:"cache",get:function(){return this._cache}},{key:"request",value:(g=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.abrupt("return",this._request(t,r,this._getRequestContext(u,t)));case 5:return e.prev=5,e.t0=e.catch(1),e.abrupt("return",{errors:e.t0});case 8:case"end":return e.stop()}}),e,this,[[1,5]])}))),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){return{boxID:f(),debugManager:this._debugManager,fieldTypeMap:new Map,operation:e,operationName:"",queryFiltered:!1,request:t}}},{key:"_request",value:(d=t(c.mark((function e(t,r,n){var o=this;return c.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.abrupt("return",new Promise((function(e){o._worker.postMessage({context:s._getMessageContext(n),method:"request",options:r,request:t,type:"graphqlBox"}),o._pending.set(n.boxID,{resolve:e})})));case 4:return e.prev=4,e.t0=e.catch(0),e.abrupt("return",{errors:e.t0});case 7:case"end":return e.stop()}}),e,null,[[0,4]])}))),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:s._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=[],a(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 s(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){return{boxID:e.boxID}}}]),s}()).prototype,"_request",[g],Object.getOwnPropertyDescriptor(w.prototype,"_request"),w.prototype),s(w.prototype,"_subscribe",[y],Object.getOwnPropertyDescriptor(w.prototype,"_subscribe"),w.prototype),w);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 C(){return(C=t(c.mark((function t(r,n,o,s,a){var u,i,p,h;return c.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,a.request(r,o,s);case 2:u=t.sent,i=u._cacheMetadata,p=e(u,["_cacheMetadata"]),h=M({},p),i&&(h._cacheMetadata=l(i)),E({context:s,method:n,result:h,type:"graphqlBox"});case 8:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function I(){return(I=t(c.mark((function t(r,n,o,s,a){var u;return c.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,a.subscribe(r,o,s);case 2:u=t.sent,d(u)&&v(u,(function(t){var r=t._cacheMetadata,o=M({},e(t,["_cacheMetadata"]));r&&(o._cacheMetadata=l(r)),E({context:s,method:n,result:o,type:"graphqlBox"})}));case 4:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function T(e,t){var r=e,n=r.context,o=r.method,s=r.options,a=r.request;"request"===o?function(e,t,r,n,o){C.apply(this,arguments)}(a,o,s,n,t):"subscribe"===o&&function(e,t,r,n,o){I.apply(this,arguments)}(a,o,s,n,t)}function B(e){return L.apply(this,arguments)}function L(){return(L=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(a(t)){var n=t.type;"graphqlBox"===n?T(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{x as REQUEST_EXECUTED,B 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"@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({},b),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 C(){return(C=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 I(){return(I=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){C.apply(this,arguments)}(s,o,a,n,t):"subscribe"===o&&function(e,t,r,n,o){I.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};
|
|
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 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 }: RequestContext): MessageContext {\n return { boxID };\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 = {}): Promise<MaybeRequestResult> {\n try {\n return this._request(request, options, this._getRequestContext(QUERY, request)) as MaybeRequestResult;\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(operation: ValidOperations, request: string): RequestContext {\n return {\n boxID: uuid(),\n debugManager: this._debugManager,\n fieldTypeMap: new Map(),\n operation,\n operationName: \"\",\n queryFiltered: false,\n request,\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 if (type !== GRAPHQL_BOX || !isPlainObject(result)) return;\n\n const { _cacheMetadata, ...otherProps } = result;\n const response: MaybeRequestResult = { ...otherProps };\n if (_cacheMetadata) response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);\n\n if (method === REQUEST) {\n const pending = this._pending.get(context.boxID);\n if (!pending) return;\n\n pending.resolve(response);\n } else if (method === SUBSCRIBE) {\n this._eventEmitter.emit(context.boxID, response);\n }\n };\n\n @logRequest()\n private async _request(\n request: string,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<MaybeRequestResult> {\n try {\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 } 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(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 { _cacheMetadata, ...otherProps } = await client.request(request, options, context);\n const result: MaybeRequestResultWithDehydratedCacheMetadata = { ...otherProps };\n if (_cacheMetadata) result._cacheMetadata = dehydrateCacheMetadata(_cacheMetadata);\n postMessage({ context, method, result, type: GRAPHQL_BOX });\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 }\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","rehydrateCacheMetadata","pending","_pending","get","boxID","_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","dehydrateCacheMetadata","subscribe","subscribeResult","isAsyncIterable","forAwaitEach","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 { 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 if (type !== GRAPHQL_BOX || !isPlainObject(result)) return;\n\n const { _cacheMetadata, ...otherProps } = result;\n const response: MaybeRequestResult = { ...otherProps };\n if (_cacheMetadata) response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);\n\n if (method === REQUEST) {\n const pending = this._pending.get(context.boxID);\n if (!pending) return;\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","rehydrateCacheMetadata","pending","_pending","get","boxID","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,32 +1,32 @@
|
|
|
1
1
|
-----------------------------
|
|
2
2
|
Rollup File Analysis
|
|
3
3
|
-----------------------------
|
|
4
|
-
bundle size:
|
|
5
|
-
original size:
|
|
4
|
+
bundle size: 23.171 KB
|
|
5
|
+
original size: 12.043 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: 56.
|
|
12
|
-
rendered size:
|
|
13
|
-
original size: 5.
|
|
11
|
+
bundle space: 56.32 %
|
|
12
|
+
rendered size: 13.049 KB
|
|
13
|
+
original size: 5.65 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:
|
|
21
|
-
rendered size:
|
|
22
|
-
original size:
|
|
20
|
+
bundle space: 26.57 %
|
|
21
|
+
rendered size: 6.156 KB
|
|
22
|
+
original size: 3.217 KB
|
|
23
23
|
code reduction: 0 %
|
|
24
24
|
dependents: 1
|
|
25
25
|
- /src/index.ts
|
|
26
26
|
|
|
27
27
|
████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
28
28
|
file: /src/debug/log-request/index.ts
|
|
29
|
-
bundle space:
|
|
29
|
+
bundle space: 16.34 %
|
|
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.78 %
|
|
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.528 KB
|
|
53
53
|
code reduction: 100 %
|
|
54
54
|
dependents: 1
|
|
55
55
|
- /src/index.ts
|
package/lib/main/main/index.js
CHANGED
|
@@ -62,10 +62,12 @@ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logRequest.d
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
static _getMessageContext({
|
|
65
|
-
boxID
|
|
65
|
+
boxID,
|
|
66
|
+
hasDeferOrStream = false
|
|
66
67
|
}) {
|
|
67
68
|
return {
|
|
68
|
-
boxID
|
|
69
|
+
boxID,
|
|
70
|
+
hasDeferOrStream
|
|
69
71
|
};
|
|
70
72
|
}
|
|
71
73
|
|
|
@@ -103,7 +105,7 @@ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logRequest.d
|
|
|
103
105
|
|
|
104
106
|
if (!pending) return;
|
|
105
107
|
pending.resolve(response);
|
|
106
|
-
} else if (method === _consts.SUBSCRIBE) {
|
|
108
|
+
} else if (method === _consts.SUBSCRIBE || context.hasDeferOrStream) {
|
|
107
109
|
this._eventEmitter.emit(context.boxID, response);
|
|
108
110
|
}
|
|
109
111
|
});
|
|
@@ -119,9 +121,9 @@ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logRequest.d
|
|
|
119
121
|
return this._cache;
|
|
120
122
|
}
|
|
121
123
|
|
|
122
|
-
async request(request, options = {}) {
|
|
124
|
+
async request(request, options = {}, context = {}) {
|
|
123
125
|
try {
|
|
124
|
-
return this._request(request, options, this._getRequestContext(_core.QUERY, request));
|
|
126
|
+
return this._request(request, options, this._getRequestContext(_core.QUERY, request, context));
|
|
125
127
|
} catch (error) {
|
|
126
128
|
return {
|
|
127
129
|
errors: error
|
|
@@ -141,7 +143,7 @@ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logRequest.d
|
|
|
141
143
|
this._worker.addEventListener(_consts.MESSAGE, this._onMessage);
|
|
142
144
|
}
|
|
143
145
|
|
|
144
|
-
_getRequestContext(operation, request) {
|
|
146
|
+
_getRequestContext(operation, request, context = {}) {
|
|
145
147
|
return {
|
|
146
148
|
boxID: (0, _uuid.v1)(),
|
|
147
149
|
debugManager: this._debugManager,
|
|
@@ -149,25 +151,39 @@ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logRequest.d
|
|
|
149
151
|
operation,
|
|
150
152
|
operationName: "",
|
|
151
153
|
queryFiltered: false,
|
|
152
|
-
request
|
|
154
|
+
request,
|
|
155
|
+
...context
|
|
153
156
|
};
|
|
154
157
|
}
|
|
155
158
|
|
|
156
159
|
async _request(request, options, context) {
|
|
157
160
|
try {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
161
|
+
if (!context.hasDeferOrStream) {
|
|
162
|
+
return new Promise(resolve => {
|
|
163
|
+
this._worker.postMessage({
|
|
164
|
+
context: WorkerClient._getMessageContext(context),
|
|
165
|
+
method: _consts.REQUEST,
|
|
166
|
+
options,
|
|
167
|
+
request,
|
|
168
|
+
type: _consts.GRAPHQL_BOX
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
this._pending.set(context.boxID, {
|
|
172
|
+
resolve
|
|
173
|
+
});
|
|
165
174
|
});
|
|
175
|
+
}
|
|
166
176
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
177
|
+
this._worker.postMessage({
|
|
178
|
+
context: WorkerClient._getMessageContext(context),
|
|
179
|
+
method: _consts.REQUEST,
|
|
180
|
+
options,
|
|
181
|
+
request,
|
|
182
|
+
type: _consts.GRAPHQL_BOX
|
|
170
183
|
});
|
|
184
|
+
|
|
185
|
+
const eventAsyncIterator = new _helpers.EventAsyncIterator(this._eventEmitter, context.boxID);
|
|
186
|
+
return eventAsyncIterator.getIterator();
|
|
171
187
|
} catch (errors) {
|
|
172
188
|
return {
|
|
173
189
|
errors
|
|
@@ -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","constructor","Map","data","context","method","result","type","GRAPHQL_BOX","_cacheMetadata","otherProps","response","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 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 }: RequestContext): MessageContext {\n return { boxID };\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 = {}): Promise<MaybeRequestResult> {\n try {\n return this._request(request, options, this._getRequestContext(QUERY, request)) as MaybeRequestResult;\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(operation: ValidOperations, request: string): RequestContext {\n return {\n boxID: uuid(),\n debugManager: this._debugManager,\n fieldTypeMap: new Map(),\n operation,\n operationName: \"\",\n queryFiltered: false,\n request,\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 if (type !== GRAPHQL_BOX || !isPlainObject(result)) return;\n\n const { _cacheMetadata, ...otherProps } = result;\n const response: MaybeRequestResult = { ...otherProps };\n if (_cacheMetadata) response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);\n\n if (method === REQUEST) {\n const pending = this._pending.get(context.boxID);\n if (!pending) return;\n\n pending.resolve(response);\n } else if (method === SUBSCRIBE) {\n this._eventEmitter.emit(context.boxID, response);\n }\n };\n\n @logRequest()\n private async _request(\n request: string,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<MaybeRequestResult> {\n try {\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 } 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(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","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","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 if (type !== GRAPHQL_BOX || !isPlainObject(result)) return;\n\n const { _cacheMetadata, ...otherProps } = result;\n const response: MaybeRequestResult = { ...otherProps };\n if (_cacheMetadata) response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);\n\n if (method === REQUEST) {\n const pending = this._pending.get(context.boxID);\n if (!pending) return;\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"}
|
|
@@ -26,18 +26,46 @@ const {
|
|
|
26
26
|
} = self;
|
|
27
27
|
|
|
28
28
|
async function handleRequest(request, method, options, context, client) {
|
|
29
|
-
const
|
|
29
|
+
const requestResult = await client.request(request, options, context);
|
|
30
|
+
|
|
31
|
+
if (!(0, _iterall.isAsyncIterable)(requestResult)) {
|
|
32
|
+
const {
|
|
33
|
+
_cacheMetadata,
|
|
34
|
+
...otherProps
|
|
35
|
+
} = requestResult;
|
|
36
|
+
const result = { ...otherProps
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
if (_cacheMetadata) {
|
|
40
|
+
result._cacheMetadata = (0, _helpers.dehydrateCacheMetadata)(_cacheMetadata);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
postMessage({
|
|
44
|
+
context,
|
|
45
|
+
method,
|
|
46
|
+
result,
|
|
47
|
+
type: _consts.GRAPHQL_BOX
|
|
48
|
+
});
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
(0, _iterall.forAwaitEach)(requestResult, ({
|
|
30
53
|
_cacheMetadata,
|
|
31
54
|
...otherProps
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
55
|
+
}) => {
|
|
56
|
+
const result = { ...otherProps
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
if (_cacheMetadata) {
|
|
60
|
+
result._cacheMetadata = (0, _helpers.dehydrateCacheMetadata)(_cacheMetadata);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
postMessage({
|
|
64
|
+
context,
|
|
65
|
+
method,
|
|
66
|
+
result,
|
|
67
|
+
type: _consts.GRAPHQL_BOX
|
|
68
|
+
});
|
|
41
69
|
});
|
|
42
70
|
}
|
|
43
71
|
|
|
@@ -59,6 +87,13 @@ async function handleSubscription(request, method, options, context, client) {
|
|
|
59
87
|
type: _consts.GRAPHQL_BOX
|
|
60
88
|
});
|
|
61
89
|
});
|
|
90
|
+
} else {
|
|
91
|
+
postMessage({
|
|
92
|
+
context,
|
|
93
|
+
method,
|
|
94
|
+
result: undefined,
|
|
95
|
+
type: _consts.GRAPHQL_BOX
|
|
96
|
+
});
|
|
62
97
|
}
|
|
63
98
|
}
|
|
64
99
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/register-worker/index.ts"],"names":["addEventListener","postMessage","self","handleRequest","request","method","options","context","client","_cacheMetadata","otherProps","result","type","GRAPHQL_BOX","handleSubscription","subscribeResult","subscribe","handleMessage","data","REQUEST","SUBSCRIBE","registerWorker","onMessage","CACHEMAP","cache","MESSAGE"],"mappings":";;;;;;;;;;;;;;AAAA;;AAGA;;AACA;;AAEA;;AAGA,MAAM;AAAEA,EAAAA,gBAAF;AAAoBC,EAAAA;AAApB,IAAqCC,IAA3C;;AAEA,eAAeC,aAAf,CACEC,OADF,EAEEC,MAFF,EAGEC,OAHF,EAIEC,OAJF,EAKEC,MALF,EAMiB;AACf,
|
|
1
|
+
{"version":3,"sources":["../../../src/register-worker/index.ts"],"names":["addEventListener","postMessage","self","handleRequest","request","method","options","context","client","requestResult","_cacheMetadata","otherProps","result","type","GRAPHQL_BOX","handleSubscription","subscribeResult","subscribe","undefined","handleMessage","data","REQUEST","SUBSCRIBE","registerWorker","onMessage","CACHEMAP","cache","MESSAGE"],"mappings":"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","sourcesContent":["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"],"file":"index.js"}
|
package/lib/module/main/index.js
CHANGED
|
@@ -44,10 +44,12 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logRequest(), (_class = class W
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
static _getMessageContext({
|
|
47
|
-
boxID
|
|
47
|
+
boxID,
|
|
48
|
+
hasDeferOrStream = false
|
|
48
49
|
}) {
|
|
49
50
|
return {
|
|
50
|
-
boxID
|
|
51
|
+
boxID,
|
|
52
|
+
hasDeferOrStream
|
|
51
53
|
};
|
|
52
54
|
}
|
|
53
55
|
|
|
@@ -90,7 +92,7 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logRequest(), (_class = class W
|
|
|
90
92
|
|
|
91
93
|
if (!pending) return;
|
|
92
94
|
pending.resolve(response);
|
|
93
|
-
} else if (method === SUBSCRIBE) {
|
|
95
|
+
} else if (method === SUBSCRIBE || context.hasDeferOrStream) {
|
|
94
96
|
this._eventEmitter.emit(context.boxID, response);
|
|
95
97
|
}
|
|
96
98
|
});
|
|
@@ -107,9 +109,9 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logRequest(), (_class = class W
|
|
|
107
109
|
return this._cache;
|
|
108
110
|
}
|
|
109
111
|
|
|
110
|
-
async request(request, options = {}) {
|
|
112
|
+
async request(request, options = {}, context = {}) {
|
|
111
113
|
try {
|
|
112
|
-
return this._request(request, options, this._getRequestContext(QUERY, request));
|
|
114
|
+
return this._request(request, options, this._getRequestContext(QUERY, request, context));
|
|
113
115
|
} catch (error) {
|
|
114
116
|
return {
|
|
115
117
|
errors: error
|
|
@@ -129,7 +131,7 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logRequest(), (_class = class W
|
|
|
129
131
|
this._worker.addEventListener(MESSAGE, this._onMessage);
|
|
130
132
|
}
|
|
131
133
|
|
|
132
|
-
_getRequestContext(operation, request) {
|
|
134
|
+
_getRequestContext(operation, request, context = {}) {
|
|
133
135
|
return {
|
|
134
136
|
boxID: uuid(),
|
|
135
137
|
debugManager: this._debugManager,
|
|
@@ -137,25 +139,39 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logRequest(), (_class = class W
|
|
|
137
139
|
operation,
|
|
138
140
|
operationName: "",
|
|
139
141
|
queryFiltered: false,
|
|
140
|
-
request
|
|
142
|
+
request,
|
|
143
|
+
...context
|
|
141
144
|
};
|
|
142
145
|
}
|
|
143
146
|
|
|
144
147
|
async _request(request, options, context) {
|
|
145
148
|
try {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
149
|
+
if (!context.hasDeferOrStream) {
|
|
150
|
+
return new Promise(resolve => {
|
|
151
|
+
this._worker.postMessage({
|
|
152
|
+
context: WorkerClient._getMessageContext(context),
|
|
153
|
+
method: REQUEST,
|
|
154
|
+
options,
|
|
155
|
+
request,
|
|
156
|
+
type: GRAPHQL_BOX
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
this._pending.set(context.boxID, {
|
|
160
|
+
resolve
|
|
161
|
+
});
|
|
153
162
|
});
|
|
163
|
+
}
|
|
154
164
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
165
|
+
this._worker.postMessage({
|
|
166
|
+
context: WorkerClient._getMessageContext(context),
|
|
167
|
+
method: REQUEST,
|
|
168
|
+
options,
|
|
169
|
+
request,
|
|
170
|
+
type: GRAPHQL_BOX
|
|
158
171
|
});
|
|
172
|
+
|
|
173
|
+
const eventAsyncIterator = new EventAsyncIterator(this._eventEmitter, context.boxID);
|
|
174
|
+
return eventAsyncIterator.getIterator();
|
|
159
175
|
} catch (errors) {
|
|
160
176
|
return {
|
|
161
177
|
errors
|
|
@@ -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","constructor","Map","data","context","method","result","type","_cacheMetadata","otherProps","response","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":";;;;;;;AACA,SAGEA,KAHF,EAMEC,YANF,QAQO,mBARP;AASA,SAASC,kBAAT,EAA6BC,sBAA7B,QAA2D,sBAA3D;AACA,OAAOC,YAAP,MAAyB,eAAzB;AAEA,SAASC,EAAE,IAAIC,IAAf,QAA2B,MAA3B;AACA,SAASC,WAAT,EAAsBC,OAAtB,EAA+BC,OAA/B,EAAwCC,SAAxC,QAAyD,WAAzD;AACA,OAAOC,UAAP,MAAuB,sBAAvB;IAUqBC,Y,WA+GlBD,UAAU,E,UAuBVA,UAAU,E,YAtIE,MAAMC,YAAN,CAAmB;AACR,eAAJC,IAAI,CAACC,OAAD,EAA8C;AACpE,UAAMC,MAAmB,GAAG,EAA5B;;AAEA,QAAI,CAAC,eAAcD,OAAd,CAAL,EAA6B;AAC3BC,MAAAA,MAAM,CAACC,IAAP,CAAY,IAAIC,SAAJ,CAAc,4DAAd,CAAZ;AACD;;AAED,QAAI,CAACH,OAAO,CAACI,KAAb,EAAoB;AAClBH,MAAAA,MAAM,CAACC,IAAP,CAAY,IAAIC,SAAJ,CAAc,6CAAd,CAAZ;AACD;;AAED,QAAI,CAACH,OAAO,CAACK,MAAb,EAAqB;AACnBJ,MAAAA,MAAM,CAACC,IAAP,CAAY,IAAIC,SAAJ,CAAc,8CAAd,CAAZ;AACD;;AAED,UAAMG,kBAAsC,GAAG;AAC7CF,MAAAA,KAAK,EAAEJ,OAAO,CAACI,KAD8B;AAE7CC,MAAAA,MAAM,EAAEL,OAAO,CAACK;AAF6B,KAA/C;;AAKA,QAAI;AACF,UAAIL,OAAO,CAACO,YAAZ,EAA0B;AACxBD,QAAAA,kBAAkB,CAACC,YAAnB,GAAkC,MAAMP,OAAO,CAACO,YAAR,EAAxC;AACD;;AAED,aAAO,IAAIT,YAAJ,CAAiBQ,kBAAjB,CAAP;AACD,KAND,CAME,OAAOE,KAAP,EAAc;AACd,aAAOC,OAAO,CAACC,MAAR,CAAeF,KAAf,CAAP;AACD;AACF;;AAEgC,SAAlBG,kBAAkB,CAAC;AAAEC,IAAAA;AAAF,GAAD,EAA4C;AAC3E,WAAO;AAAEA,MAAAA;AAAF,KAAP;AACD;;AAQDC,EAAAA,WAAW,CAAC;AAAET,IAAAA,KAAF;AAASG,IAAAA,YAAT;AAAuBF,IAAAA;AAAvB,GAAD,EAAsD;AAAA;;AAAA;;AAAA;;AAAA,sCAH9B,IAAIS,GAAJ,EAG8B;;AAAA;;AAAA,wCAiD5C,OAAO;AAAEC,MAAAA;AAAF,KAAP,KAAiD;AACpE,UAAI,CAAC,eAAcA,IAAd,CAAL,EAA0B;AAE1B,YAAM;AAAEC,QAAAA,OAAF;AAAWC,QAAAA,MAAX;AAAmBC,QAAAA,MAAnB;AAA2BC,QAAAA;AAA3B,UAAoCJ,IAA1C;AACA,UAAII,IAAI,KAAK1B,WAAT,IAAwB,CAAC,eAAcyB,MAAd,CAA7B,EAAoD;AAEpD,YAAM;AAAEE,QAAAA,cAAF;AAAkB,WAAGC;AAArB,UAAoCH,MAA1C;AACA,YAAMI,QAA4B,GAAG,EAAE,GAAGD;AAAL,OAArC;AACA,UAAID,cAAJ,EAAoBE,QAAQ,CAACF,cAAT,GAA0B/B,sBAAsB,CAAC+B,cAAD,CAAhD;;AAEpB,UAAIH,MAAM,KAAKtB,OAAf,EAAwB;AACtB,cAAM4B,OAAO,GAAG,KAAKC,QAAL,CAAcC,GAAd,CAAkBT,OAAO,CAACJ,KAA1B,CAAhB;;AACA,YAAI,CAACW,OAAL,EAAc;AAEdA,QAAAA,OAAO,CAACG,OAAR,CAAgBJ,QAAhB;AACD,OALD,MAKO,IAAIL,MAAM,KAAKrB,SAAf,EAA0B;AAC/B,aAAK+B,aAAL,CAAmBC,IAAnB,CAAwBZ,OAAO,CAACJ,KAAhC,EAAuCU,QAAvC;AACD;AACF,KAnEgE;;AAC/D,SAAKO,MAAL,GAAczB,KAAd;AACA,SAAK0B,aAAL,GAAqBvB,YAAY,IAAI,IAArC;AACA,SAAKoB,aAAL,GAAqB,IAAIrC,YAAJ,EAArB;AACA,SAAKyC,OAAL,GAAe1B,MAAf;;AACA,SAAK2B,iBAAL;AACD;;AAEQ,MAAL5B,KAAK,GAAmB;AAC1B,WAAO,KAAKyB,MAAZ;AACD;;AAEmB,QAAPI,OAAO,CAACA,OAAD,EAAkBjC,OAAuB,GAAG,EAA5C,EAA6E;AAC/F,QAAI;AACF,aAAO,KAAKkC,QAAL,CAAcD,OAAd,EAAuBjC,OAAvB,EAAgC,KAAKmC,kBAAL,CAAwBjD,KAAxB,EAA+B+C,OAA/B,CAAhC,CAAP;AACD,KAFD,CAEE,OAAOzB,KAAP,EAAc;AACd,aAAO;AAAEP,QAAAA,MAAM,EAAEO;AAAV,OAAP;AACD;AACF;;AAEqB,QAAT4B,SAAS,CACpBH,OADoB,EAEpBjC,OAAuB,GAAG,EAFN,EAGoC;AACxD,QAAI;AACF,aAAQ,MAAM,KAAKqC,UAAL,CAAgBJ,OAAhB,EAAyBjC,OAAzB,EAAkC,KAAKmC,kBAAL,CAAwBhD,YAAxB,EAAsC8C,OAAtC,CAAlC,CAAd;AAGD,KAJD,CAIE,OAAOzB,KAAP,EAAc;AACd,aAAOC,OAAO,CAACC,MAAR,CAAeF,KAAf,CAAP;AACD;AACF;;AAEOwB,EAAAA,iBAAiB,GAAS;AAChC,SAAKD,OAAL,CAAaO,gBAAb,CAA8B5C,OAA9B,EAAuC,KAAK6C,UAA5C;AACD;;AAEOJ,EAAAA,kBAAkB,CAACK,SAAD,EAA6BP,OAA7B,EAA8D;AACtF,WAAO;AACLrB,MAAAA,KAAK,EAAEpB,IAAI,EADN;AAELe,MAAAA,YAAY,EAAE,KAAKuB,aAFd;AAGLW,MAAAA,YAAY,EAAE,IAAI3B,GAAJ,EAHT;AAIL0B,MAAAA,SAJK;AAKLE,MAAAA,aAAa,EAAE,EALV;AAMLC,MAAAA,aAAa,EAAE,KANV;AAOLV,MAAAA;AAPK,KAAP;AASD;;AAuBqB,QAARC,QAAQ,CACpBD,OADoB,EAEpBjC,OAFoB,EAGpBgB,OAHoB,EAIS;AAC7B,QAAI;AACF,aAAO,IAAIP,OAAJ,CAAaiB,OAAD,IAA8B;AAC/C,aAAKK,OAAL,CAAaa,WAAb,CAAyB;AACvB5B,UAAAA,OAAO,EAAElB,YAAY,CAACa,kBAAb,CAAgCK,OAAhC,CADc;AAEvBC,UAAAA,MAAM,EAAEtB,OAFe;AAGvBK,UAAAA,OAHuB;AAIvBiC,UAAAA,OAJuB;AAKvBd,UAAAA,IAAI,EAAE1B;AALiB,SAAzB;;AAQA,aAAK+B,QAAL,CAAcqB,GAAd,CAAkB7B,OAAO,CAACJ,KAA1B,EAAiC;AAAEc,UAAAA;AAAF,SAAjC;AACD,OAVM,CAAP;AAWD,KAZD,CAYE,OAAOzB,MAAP,EAAe;AACf,aAAO;AAAEA,QAAAA;AAAF,OAAP;AACD;AACF;;AAGuB,QAAVoC,UAAU,CACtBJ,OADsB,EAEtBjC,OAFsB,EAGtBgB,OAHsB,EAIkC;AACxD,QAAI;AACF,WAAKe,OAAL,CAAaa,WAAb,CAAyB;AACvB5B,QAAAA,OAAO,EAAElB,YAAY,CAACa,kBAAb,CAAgCK,OAAhC,CADc;AAEvBC,QAAAA,MAAM,EAAErB,SAFe;AAGvBI,QAAAA,OAHuB;AAIvBiC,QAAAA,OAJuB;AAKvBd,QAAAA,IAAI,EAAE1B;AALiB,OAAzB;;AAQA,YAAMqD,kBAAkB,GAAG,IAAI1D,kBAAJ,CAAuB,KAAKuC,aAA5B,EAA2CX,OAAO,CAACJ,KAAnD,CAA3B;AACA,aAAOkC,kBAAkB,CAACC,WAAnB,EAAP;AACD,KAXD,CAWE,OAAOvC,KAAP,EAAc;AACd,aAAOC,OAAO,CAACC,MAAR,CAAeF,KAAf,CAAP;AACD;AACF;;AA1J+B,C;SAAbV,Y","sourcesContent":["import WorkerCachemap from \"@cachemap/core-worker\";\nimport {\n DebugManagerDef,\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 }: RequestContext): MessageContext {\n return { boxID };\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 = {}): Promise<MaybeRequestResult> {\n try {\n return this._request(request, options, this._getRequestContext(QUERY, request)) as MaybeRequestResult;\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(operation: ValidOperations, request: string): RequestContext {\n return {\n boxID: uuid(),\n debugManager: this._debugManager,\n fieldTypeMap: new Map(),\n operation,\n operationName: \"\",\n queryFiltered: false,\n request,\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 if (type !== GRAPHQL_BOX || !isPlainObject(result)) return;\n\n const { _cacheMetadata, ...otherProps } = result;\n const response: MaybeRequestResult = { ...otherProps };\n if (_cacheMetadata) response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);\n\n if (method === REQUEST) {\n const pending = this._pending.get(context.boxID);\n if (!pending) return;\n\n pending.resolve(response);\n } else if (method === SUBSCRIBE) {\n this._eventEmitter.emit(context.boxID, response);\n }\n };\n\n @logRequest()\n private async _request(\n request: string,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<MaybeRequestResult> {\n try {\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 } 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(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","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","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 if (type !== GRAPHQL_BOX || !isPlainObject(result)) return;\n\n const { _cacheMetadata, ...otherProps } = result;\n const response: MaybeRequestResult = { ...otherProps };\n if (_cacheMetadata) response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);\n\n if (method === REQUEST) {\n const pending = this._pending.get(context.boxID);\n if (!pending) return;\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"}
|
|
@@ -10,18 +10,46 @@ const {
|
|
|
10
10
|
} = self;
|
|
11
11
|
|
|
12
12
|
async function handleRequest(request, method, options, context, client) {
|
|
13
|
-
const
|
|
13
|
+
const requestResult = await client.request(request, options, context);
|
|
14
|
+
|
|
15
|
+
if (!isAsyncIterable(requestResult)) {
|
|
16
|
+
const {
|
|
17
|
+
_cacheMetadata,
|
|
18
|
+
...otherProps
|
|
19
|
+
} = requestResult;
|
|
20
|
+
const result = { ...otherProps
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
if (_cacheMetadata) {
|
|
24
|
+
result._cacheMetadata = dehydrateCacheMetadata(_cacheMetadata);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
postMessage({
|
|
28
|
+
context,
|
|
29
|
+
method,
|
|
30
|
+
result,
|
|
31
|
+
type: GRAPHQL_BOX
|
|
32
|
+
});
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
forAwaitEach(requestResult, ({
|
|
14
37
|
_cacheMetadata,
|
|
15
38
|
...otherProps
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
39
|
+
}) => {
|
|
40
|
+
const result = { ...otherProps
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
if (_cacheMetadata) {
|
|
44
|
+
result._cacheMetadata = dehydrateCacheMetadata(_cacheMetadata);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
postMessage({
|
|
48
|
+
context,
|
|
49
|
+
method,
|
|
50
|
+
result,
|
|
51
|
+
type: GRAPHQL_BOX
|
|
52
|
+
});
|
|
25
53
|
});
|
|
26
54
|
}
|
|
27
55
|
|
|
@@ -43,6 +71,13 @@ async function handleSubscription(request, method, options, context, client) {
|
|
|
43
71
|
type: GRAPHQL_BOX
|
|
44
72
|
});
|
|
45
73
|
});
|
|
74
|
+
} else {
|
|
75
|
+
postMessage({
|
|
76
|
+
context,
|
|
77
|
+
method,
|
|
78
|
+
result: undefined,
|
|
79
|
+
type: GRAPHQL_BOX
|
|
80
|
+
});
|
|
46
81
|
}
|
|
47
82
|
}
|
|
48
83
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/register-worker/index.ts"],"names":["handleMessage","handleCachemapMessage","dehydrateCacheMetadata","forAwaitEach","isAsyncIterable","CACHEMAP","GRAPHQL_BOX","MESSAGE","REQUEST","SUBSCRIBE","addEventListener","postMessage","self","handleRequest","request","method","options","context","client","_cacheMetadata","otherProps","result","type","handleSubscription","subscribeResult","subscribe","data","registerWorker","onMessage","cache"],"mappings":";;AAAA,SAASA,aAAa,IAAIC,qBAA1B,QAAuD,uBAAvD;AAGA,SAASC,sBAAT,QAAuC,sBAAvC;AACA,SAASC,YAAT,EAAuBC,eAAvB,QAA8C,SAA9C;AAEA,SAASC,QAAT,EAAmBC,WAAnB,EAAgCC,OAAhC,EAAyCC,OAAzC,EAAkDC,SAAlD,QAAmE,WAAnE;AAGA,MAAM;AAAEC,EAAAA,gBAAF;AAAoBC,EAAAA;AAApB,IAAqCC,IAA3C;;AAEA,eAAeC,aAAf,CACEC,OADF,EAEEC,MAFF,EAGEC,OAHF,EAIEC,OAJF,EAKEC,MALF,EAMiB;AACf,
|
|
1
|
+
{"version":3,"sources":["../../../src/register-worker/index.ts"],"names":["handleMessage","handleCachemapMessage","dehydrateCacheMetadata","forAwaitEach","isAsyncIterable","CACHEMAP","GRAPHQL_BOX","MESSAGE","REQUEST","SUBSCRIBE","addEventListener","postMessage","self","handleRequest","request","method","options","context","client","requestResult","_cacheMetadata","otherProps","result","type","handleSubscription","subscribeResult","subscribe","undefined","data","registerWorker","onMessage","cache"],"mappings":"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","sourcesContent":["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"],"file":"index.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/debug/log-request/index.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,UAAU,UAAU,cAErB,GAAG,iBACG,MAAM,gDACyB,GAAG,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/debug/log-request/index.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,UAAU,UAAU,cAErB,GAAG,iBACG,MAAM,gDACyB,GAAG,EAAE,KAAK,QAAQ,GAAG,CAAC,MACnE,IAAI,CAiCR"}
|
|
@@ -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;
|
|
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,5 +1,5 @@
|
|
|
1
1
|
import WorkerCachemap from "@cachemap/core-worker";
|
|
2
|
-
import { MaybeRequestResult, RequestOptions } from "@graphql-box/core";
|
|
2
|
+
import { MaybeRequestContext, MaybeRequestResult, RequestOptions } from "@graphql-box/core";
|
|
3
3
|
import { ConstructorOptions, UserOptions } from "../defs";
|
|
4
4
|
export default class WorkerClient {
|
|
5
5
|
static init(options: UserOptions): Promise<WorkerClient>;
|
|
@@ -11,7 +11,9 @@ export default class WorkerClient {
|
|
|
11
11
|
private _worker;
|
|
12
12
|
constructor({ cache, debugManager, worker }: ConstructorOptions);
|
|
13
13
|
get cache(): WorkerCachemap;
|
|
14
|
-
request(request: string, options?: RequestOptions): Promise<MaybeRequestResult
|
|
14
|
+
request(request: string, options?: RequestOptions, context?: MaybeRequestContext): Promise<MaybeRequestResult | AsyncIterableIterator<MaybeRequestResult | undefined> | {
|
|
15
|
+
errors: any;
|
|
16
|
+
}>;
|
|
15
17
|
subscribe(request: string, options?: RequestOptions): Promise<AsyncIterator<MaybeRequestResult | undefined>>;
|
|
16
18
|
private _addEventListener;
|
|
17
19
|
private _getRequestContext;
|
|
@@ -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,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,
|
|
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;;;IAQxF,SAAS,CACpB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;IAUzD,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,UAAU,CAkBhB;YAGY,QAAQ;YAgCR,UAAU;CAoBzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/register-worker/index.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,qBAAqB,CAAC;AAMzC,OAAO,EAAkB,qBAAqB,EAAe,qBAAqB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/register-worker/index.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,qBAAqB,CAAC;AAMzC,OAAO,EAAkB,qBAAqB,EAAe,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAwDpG,wBAAgB,aAAa,CAAC,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAQ/E;AAED,wBAA8B,cAAc,CAAC,EAAE,MAAM,EAAE,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAc7F"}
|
package/package.json
CHANGED
package/src/defs/index.ts
CHANGED
package/src/main/index.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import WorkerCachemap from "@cachemap/core-worker";
|
|
2
2
|
import {
|
|
3
3
|
DebugManagerDef,
|
|
4
|
+
MaybeRequestContext,
|
|
4
5
|
MaybeRequestResult,
|
|
5
6
|
QUERY,
|
|
6
7
|
RequestContext,
|
|
@@ -55,8 +56,8 @@ export default class WorkerClient {
|
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
58
|
|
|
58
|
-
private static _getMessageContext({ boxID }: RequestContext): MessageContext {
|
|
59
|
-
return { boxID };
|
|
59
|
+
private static _getMessageContext({ boxID, hasDeferOrStream = false }: RequestContext): MessageContext {
|
|
60
|
+
return { boxID, hasDeferOrStream };
|
|
60
61
|
}
|
|
61
62
|
|
|
62
63
|
private _cache: WorkerCachemap;
|
|
@@ -77,9 +78,9 @@ export default class WorkerClient {
|
|
|
77
78
|
return this._cache;
|
|
78
79
|
}
|
|
79
80
|
|
|
80
|
-
public async request(request: string, options: RequestOptions = {}
|
|
81
|
+
public async request(request: string, options: RequestOptions = {}, context: MaybeRequestContext = {}) {
|
|
81
82
|
try {
|
|
82
|
-
return this._request(request, options, this._getRequestContext(QUERY, request))
|
|
83
|
+
return this._request(request, options, this._getRequestContext(QUERY, request, context));
|
|
83
84
|
} catch (error) {
|
|
84
85
|
return { errors: error };
|
|
85
86
|
}
|
|
@@ -102,7 +103,11 @@ export default class WorkerClient {
|
|
|
102
103
|
this._worker.addEventListener(MESSAGE, this._onMessage);
|
|
103
104
|
}
|
|
104
105
|
|
|
105
|
-
private _getRequestContext(
|
|
106
|
+
private _getRequestContext(
|
|
107
|
+
operation: ValidOperations,
|
|
108
|
+
request: string,
|
|
109
|
+
context: MaybeRequestContext = {},
|
|
110
|
+
): RequestContext {
|
|
106
111
|
return {
|
|
107
112
|
boxID: uuid(),
|
|
108
113
|
debugManager: this._debugManager,
|
|
@@ -111,6 +116,7 @@ export default class WorkerClient {
|
|
|
111
116
|
operationName: "",
|
|
112
117
|
queryFiltered: false,
|
|
113
118
|
request,
|
|
119
|
+
...context,
|
|
114
120
|
};
|
|
115
121
|
}
|
|
116
122
|
|
|
@@ -129,29 +135,38 @@ export default class WorkerClient {
|
|
|
129
135
|
if (!pending) return;
|
|
130
136
|
|
|
131
137
|
pending.resolve(response);
|
|
132
|
-
} else if (method === SUBSCRIBE) {
|
|
138
|
+
} else if (method === SUBSCRIBE || context.hasDeferOrStream) {
|
|
133
139
|
this._eventEmitter.emit(context.boxID, response);
|
|
134
140
|
}
|
|
135
141
|
};
|
|
136
142
|
|
|
137
143
|
@logRequest()
|
|
138
|
-
private async _request(
|
|
139
|
-
request: string,
|
|
140
|
-
options: RequestOptions,
|
|
141
|
-
context: RequestContext,
|
|
142
|
-
): Promise<MaybeRequestResult> {
|
|
144
|
+
private async _request(request: string, options: RequestOptions, context: RequestContext) {
|
|
143
145
|
try {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
146
|
+
if (!context.hasDeferOrStream) {
|
|
147
|
+
return new Promise((resolve: PendingResolver) => {
|
|
148
|
+
this._worker.postMessage({
|
|
149
|
+
context: WorkerClient._getMessageContext(context),
|
|
150
|
+
method: REQUEST,
|
|
151
|
+
options,
|
|
152
|
+
request,
|
|
153
|
+
type: GRAPHQL_BOX,
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
this._pending.set(context.boxID, { resolve });
|
|
151
157
|
});
|
|
158
|
+
}
|
|
152
159
|
|
|
153
|
-
|
|
160
|
+
this._worker.postMessage({
|
|
161
|
+
context: WorkerClient._getMessageContext(context),
|
|
162
|
+
method: REQUEST,
|
|
163
|
+
options,
|
|
164
|
+
request,
|
|
165
|
+
type: GRAPHQL_BOX,
|
|
154
166
|
});
|
|
167
|
+
|
|
168
|
+
const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.boxID);
|
|
169
|
+
return eventAsyncIterator.getIterator();
|
|
155
170
|
} catch (errors) {
|
|
156
171
|
return { errors };
|
|
157
172
|
}
|
|
@@ -172,7 +187,7 @@ export default class WorkerClient {
|
|
|
172
187
|
type: GRAPHQL_BOX,
|
|
173
188
|
});
|
|
174
189
|
|
|
175
|
-
const eventAsyncIterator = new EventAsyncIterator(this._eventEmitter, context.boxID);
|
|
190
|
+
const eventAsyncIterator = new EventAsyncIterator<MaybeRequestResult>(this._eventEmitter, context.boxID);
|
|
176
191
|
return eventAsyncIterator.getIterator();
|
|
177
192
|
} catch (error) {
|
|
178
193
|
return Promise.reject(error);
|
|
@@ -16,10 +16,29 @@ async function handleRequest(
|
|
|
16
16
|
context: MessageContext,
|
|
17
17
|
client: Client,
|
|
18
18
|
): Promise<void> {
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
if (
|
|
22
|
-
|
|
19
|
+
const requestResult = await client.request(request, options, context);
|
|
20
|
+
|
|
21
|
+
if (!isAsyncIterable(requestResult)) {
|
|
22
|
+
const { _cacheMetadata, ...otherProps } = requestResult as MaybeRequestResult;
|
|
23
|
+
const result: MaybeRequestResultWithDehydratedCacheMetadata = { ...otherProps };
|
|
24
|
+
|
|
25
|
+
if (_cacheMetadata) {
|
|
26
|
+
result._cacheMetadata = dehydrateCacheMetadata(_cacheMetadata);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
postMessage({ context, method, result, type: GRAPHQL_BOX });
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
forAwaitEach(requestResult, ({ _cacheMetadata, ...otherProps }: MaybeRequestResult) => {
|
|
34
|
+
const result: MaybeRequestResultWithDehydratedCacheMetadata = { ...otherProps };
|
|
35
|
+
|
|
36
|
+
if (_cacheMetadata) {
|
|
37
|
+
result._cacheMetadata = dehydrateCacheMetadata(_cacheMetadata);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
postMessage({ context, method, result, type: GRAPHQL_BOX });
|
|
41
|
+
});
|
|
23
42
|
}
|
|
24
43
|
|
|
25
44
|
async function handleSubscription(
|
|
@@ -37,6 +56,8 @@ async function handleSubscription(
|
|
|
37
56
|
if (_cacheMetadata) result._cacheMetadata = dehydrateCacheMetadata(_cacheMetadata);
|
|
38
57
|
postMessage({ context, method, result, type: GRAPHQL_BOX });
|
|
39
58
|
});
|
|
59
|
+
} else {
|
|
60
|
+
postMessage({ context, method, result: undefined, type: GRAPHQL_BOX });
|
|
40
61
|
}
|
|
41
62
|
}
|
|
42
63
|
|