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