@graphql-box/worker-client 2.1.1 → 2.1.5
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 +10 -10
- package/lib/main/main/index.js +7 -5
- package/lib/main/main/index.js.map +1 -1
- package/lib/module/main/index.js +7 -4
- package/lib/module/main/index.js.map +1 -1
- package/lib/types/defs/index.d.ts +9 -0
- package/lib/types/defs/index.d.ts.map +1 -1
- package/lib/types/main/index.d.ts +1 -1
- package/lib/types/main/index.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/defs/index.ts +11 -0
- package/src/main/index.ts +7 -2
package/lib/browser/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"core-js/modules/es.object.keys.js";import"core-js/modules/es.symbol.js";import"core-js/modules/es.array.filter.js";import"core-js/modules/web.dom-collections.for-each.js";import"core-js/modules/es.object.get-own-property-descriptors.js";import e from"@babel/runtime/helpers/objectWithoutProperties";import t from"@babel/runtime/helpers/asyncToGenerator";import r from"@babel/runtime/helpers/classCallCheck";import n from"@babel/runtime/helpers/createClass";import o from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/applyDecoratedDescriptor";import a from"lodash/isPlainObject";import c from"@babel/runtime/regenerator";import"core-js/modules/es.array.iterator.js";import"core-js/modules/es.map.js";import"core-js/modules/es.object.to-string.js";import"core-js/modules/es.string.iterator.js";import"core-js/modules/web.dom-collections.iterator.js";import"core-js/modules/es.promise.js";import"core-js/modules/es.object.get-own-property-descriptor.js";import
|
|
1
|
+
import"core-js/modules/es.object.keys.js";import"core-js/modules/es.symbol.js";import"core-js/modules/es.array.filter.js";import"core-js/modules/web.dom-collections.for-each.js";import"core-js/modules/es.object.get-own-property-descriptors.js";import e from"@babel/runtime/helpers/objectWithoutProperties";import t from"@babel/runtime/helpers/asyncToGenerator";import r from"@babel/runtime/helpers/classCallCheck";import n from"@babel/runtime/helpers/createClass";import o from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/applyDecoratedDescriptor";import a from"lodash/isPlainObject";import c from"@babel/runtime/regenerator";import"core-js/modules/es.array.iterator.js";import"core-js/modules/es.map.js";import"core-js/modules/es.object.to-string.js";import"core-js/modules/es.string.iterator.js";import"core-js/modules/web.dom-collections.iterator.js";import"core-js/modules/es.promise.js";import"core-js/modules/es.object.get-own-property-descriptor.js";import{QUERY as u,SUBSCRIPTION as i}from"@graphql-box/core";import{EventAsyncIterator as p,rehydrateCacheMetadata as h,dehydrateCacheMetadata as l}from"@graphql-box/helpers";import b from"eventemitter3";import{v1 as f}from"uuid";import{handleMessage as m}from"@cachemap/core-worker";import{isAsyncIterable as d,forAwaitEach as v}from"iterall";var g,y,w,x="request_executed";function j(){return function(r,n,o){var s,a=o.value;a&&(o.value=(s=t(c.mark((function r(){var n,o,s,u=this,i=arguments;return c.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:for(n=i.length,o=new Array(n),s=0;s<n;s++)o[s]=i[s];return r.prev=1,r.abrupt("return",new Promise(function(){var r=t(c.mark((function t(r){var n,s,i,p,h,l,b;return c.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=o[2],s=n.debugManager,i=e(n,["debugManager"]),s){t.next=8;break}return t.t0=r,t.next=5,a.apply(u,o);case 5:return t.t1=t.sent,(0,t.t0)(t.t1),t.abrupt("return");case 8:return p=s.now(),t.next=11,a.apply(u,o);case 11:h=t.sent,l=s.now(),b=l-p,r(h),s.emit("request_executed",{context:i,options:o[1],request:o[0],result:h,stats:{duration:b,endTime:l,startTime:p}});case 16:case"end":return t.stop()}}),t)})));return function(e){return r.apply(this,arguments)}}()));case 5:return r.prev=5,r.t0=r.catch(1),r.abrupt("return",Promise.reject(r.t0));case 8:case"end":return r.stop()}}),r,null,[[1,5]])}))),function(){return s.apply(this,arguments)}))}}function _(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function k(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?_(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):_(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var O=(g=j(),y=j(),s((w=function(){function s(n){var u,i=this,p=n.cache,l=n.debugManager,f=n.worker;r(this,s),o(this,"_cache",void 0),o(this,"_debugManager",void 0),o(this,"_eventEmitter",void 0),o(this,"_pending",new Map),o(this,"_worker",void 0),o(this,"_onMessage",(u=t(c.mark((function t(r){var n,o,s,u,p,l,b,f,m;return c.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=r.data,a(n)){t.next=3;break}return t.abrupt("return");case 3:if(s=(o=n).context,u=o.method,p=o.result,"graphqlBox"===o.type&&a(p)){t.next=6;break}return t.abrupt("return");case 6:if(l=p._cacheMetadata,b=e(p,["_cacheMetadata"]),f=k({},b),l&&(f._cacheMetadata=h(l)),"request"!==u){t.next=16;break}if(m=i._pending.get(s.boxID)){t.next=13;break}return t.abrupt("return");case 13:m.resolve(f),t.next=17;break;case 16:"subscribe"===u&&i._eventEmitter.emit(s.boxID,f);case 17:case"end":return t.stop()}}),t)}))),function(e){return u.apply(this,arguments)})),this._cache=p,this._debugManager=l||null,this._eventEmitter=new b,this._worker=f,this._addEventListener()}var l,m,d,v,g;return n(s,[{key:"cache",get:function(){return this._cache}},{key:"request",value:(g=t(c.mark((function e(t){var r,n=arguments;return c.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=n.length>1&&void 0!==n[1]?n[1]:{},e.prev=1,e.abrupt("return",this._request(t,r,this._getRequestContext(u,t)));case 5:return e.prev=5,e.t0=e.catch(1),e.abrupt("return",{errors:e.t0});case 8:case"end":return e.stop()}}),e,this,[[1,5]])}))),function(e){return g.apply(this,arguments)})},{key:"subscribe",value:(v=t(c.mark((function e(t){var r,n=arguments;return c.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=n.length>1&&void 0!==n[1]?n[1]:{},e.prev=1,e.next=4,this._subscribe(t,r,this._getRequestContext(i,t));case 4:return e.abrupt("return",e.sent);case 7:return e.prev=7,e.t0=e.catch(1),e.abrupt("return",Promise.reject(e.t0));case 10:case"end":return e.stop()}}),e,this,[[1,7]])}))),function(e){return v.apply(this,arguments)})},{key:"_addEventListener",value:function(){this._worker.addEventListener("message",this._onMessage)}},{key:"_getRequestContext",value:function(e,t){return{boxID:f(),debugManager:this._debugManager,fieldTypeMap:new Map,operation:e,operationName:"",queryFiltered:!1,request:t}}},{key:"_request",value:(d=t(c.mark((function e(t,r,n){var o=this;return c.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.abrupt("return",new Promise((function(e){o._worker.postMessage({context:s._getMessageContext(n),method:"request",options:r,request:t,type:"graphqlBox"}),o._pending.set(n.boxID,{resolve:e})})));case 4:return e.prev=4,e.t0=e.catch(0),e.abrupt("return",{errors:e.t0});case 7:case"end":return e.stop()}}),e,null,[[0,4]])}))),function(e,t,r){return d.apply(this,arguments)})},{key:"_subscribe",value:(m=t(c.mark((function e(t,r,n){var o;return c.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,this._worker.postMessage({context:s._getMessageContext(n),method:"subscribe",options:r,request:t,type:"graphqlBox"}),o=new p(this._eventEmitter,n.boxID),e.abrupt("return",o.getIterator());case 6:return e.prev=6,e.t0=e.catch(0),e.abrupt("return",Promise.reject(e.t0));case 9:case"end":return e.stop()}}),e,this,[[0,6]])}))),function(e,t,r){return m.apply(this,arguments)})}],[{key:"init",value:(l=t(c.mark((function e(t){var r,n;return c.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=[],a(t)||r.push(new TypeError("@graphql-box/client expected options to ba a plain object.")),t.cache||r.push(new TypeError("@graphql-box/client expected options.cache.")),t.worker||r.push(new TypeError("@graphql-box/client expected options.worker.")),n={cache:t.cache,worker:t.worker},e.prev=5,!t.debugManager){e.next=10;break}return e.next=9,t.debugManager();case 9:n.debugManager=e.sent;case 10:return e.abrupt("return",new s(n));case 13:return e.prev=13,e.t0=e.catch(5),e.abrupt("return",Promise.reject(e.t0));case 16:case"end":return e.stop()}}),e,null,[[5,13]])}))),function(e){return l.apply(this,arguments)})},{key:"_getMessageContext",value:function(e){return{boxID:e.boxID}}}]),s}()).prototype,"_request",[g],Object.getOwnPropertyDescriptor(w.prototype,"_request"),w.prototype),s(w.prototype,"_subscribe",[y],Object.getOwnPropertyDescriptor(w.prototype,"_subscribe"),w.prototype),w);function q(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function M(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?q(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):q(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var P=self,D=P.addEventListener,E=P.postMessage;function C(){return(C=t(c.mark((function t(r,n,o,s,a){var u,i,p,h;return c.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,a.request(r,o,s);case 2:u=t.sent,i=u._cacheMetadata,p=e(u,["_cacheMetadata"]),h=M({},p),i&&(h._cacheMetadata=l(i)),E({context:s,method:n,result:h,type:"graphqlBox"});case 8:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function I(){return(I=t(c.mark((function t(r,n,o,s,a){var u;return c.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,a.subscribe(r,o,s);case 2:u=t.sent,d(u)&&v(u,(function(t){var r=t._cacheMetadata,o=M({},e(t,["_cacheMetadata"]));r&&(o._cacheMetadata=l(r)),E({context:s,method:n,result:o,type:"graphqlBox"})}));case 4:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function T(e,t){var r=e,n=r.context,o=r.method,s=r.options,a=r.request;"request"===o?function(e,t,r,n,o){C.apply(this,arguments)}(a,o,s,n,t):"subscribe"===o&&function(e,t,r,n,o){I.apply(this,arguments)}(a,o,s,n,t)}function B(e){return L.apply(this,arguments)}function L(){return(L=t(c.mark((function e(t){var r,n;return c.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=function(e){var t=e.data;if(a(t)){var n=t.type;"graphqlBox"===n?T(t,r):"cachemap"===n&&r.cache&&m(t,r.cache)}},r=t.client,D("message",n);case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}export default O;export{x as REQUEST_EXECUTED,B as registerWorker};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/browser/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../worker-client/src/consts/index.ts","../worker-client/src/debug/log-request/index.ts","../worker-client/src/main/index.ts","../worker-client/src/register-worker/index.ts"],"sourcesContent":["export const REQUEST_EXECUTED = \"request_executed\";\n\nexport const REQUEST = \"request\";\nexport const SUBSCRIBE = \"subscribe\";\n\nexport const MESSAGE = \"message\";\n\nexport const GRAPHQL_BOX = \"graphqlBox\";\nexport const CACHEMAP = \"cachemap\";\n","import { RequestContext } from \"@graphql-box/core\";\nimport { REQUEST_EXECUTED } from \"../../consts\";\n\nexport default function logRequest() {\n return (\n _target: any,\n _propertyName: string,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise<any>>,\n ): void => {\n const method = descriptor.value;\n if (!method) return;\n\n descriptor.value = async function descriptorValue(...args: any[]): Promise<any> {\n try {\n return new Promise(async resolve => {\n const { debugManager, ...otherContext } = args[2] as RequestContext;\n\n if (!debugManager) {\n resolve(await method.apply(this, args));\n return;\n }\n\n const startTime = debugManager.now();\n const result = await method.apply(this, args);\n const endTime = debugManager.now();\n const duration = endTime - startTime;\n resolve(result);\n\n debugManager.emit(REQUEST_EXECUTED, {\n context: otherContext,\n options: args[1],\n request: args[0],\n result,\n stats: { duration, endTime, startTime },\n });\n });\n } catch (error) {\n return Promise.reject(error);\n }\n };\n };\n}\n","import WorkerCachemap from \"@cachemap/core-worker\";\nimport {\n DebugManagerDef,\n MaybeRequestResult,\n QUERY,\n RequestContext,\n RequestOptions,\n SUBSCRIPTION,\n ValidOperations,\n} from \"@graphql-box/core\";\nimport { EventAsyncIterator, rehydrateCacheMetadata } from \"@graphql-box/helpers\";\nimport EventEmitter from \"eventemitter3\";\nimport { isPlainObject } from \"lodash\";\nimport { v1 as uuid } from \"uuid\";\nimport { GRAPHQL_BOX, MESSAGE, REQUEST, SUBSCRIBE } from \"../consts\";\nimport logRequest from \"../debug/log-request\";\nimport {\n ConstructorOptions,\n MessageContext,\n MessageResponsePayload,\n PendingResolver,\n PendingTracker,\n UserOptions,\n} from \"../defs\";\n\nexport default class WorkerClient {\n public static async init(options: UserOptions): Promise<WorkerClient> {\n const errors: TypeError[] = [];\n\n if (!isPlainObject(options)) {\n errors.push(new TypeError(\"@graphql-box/client expected options to ba a plain object.\"));\n }\n\n if (!options.worker) {\n errors.push(new TypeError(\"@graphql-box/client expected options.worker.\"));\n }\n\n const constructorOptions: ConstructorOptions = {\n worker: options.worker,\n };\n\n try {\n if (options.debugManager) {\n constructorOptions.debugManager = await options.debugManager();\n }\n\n return new WorkerClient(constructorOptions);\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n private static _getMessageContext({ boxID }: RequestContext): MessageContext {\n return { boxID };\n }\n\n private _cache: WorkerCachemap;\n private _debugManager: DebugManagerDef | null;\n private _eventEmitter: EventEmitter;\n private _pending: PendingTracker = new Map();\n private _worker: Worker;\n\n constructor({ debugManager, worker }: ConstructorOptions) {\n this._cache = new WorkerCachemap({ worker });\n this._debugManager = debugManager || null;\n this._eventEmitter = new EventEmitter();\n this._worker = worker;\n this._addEventListener();\n }\n\n get cache(): WorkerCachemap {\n return this._cache;\n }\n\n public async request(request: string, options: RequestOptions = {}): Promise<MaybeRequestResult> {\n try {\n return this._request(request, options, this._getRequestContext(QUERY, request)) as MaybeRequestResult;\n } catch (error) {\n return { errors: error };\n }\n }\n\n public async subscribe(\n request: string,\n options: RequestOptions = {},\n ): Promise<AsyncIterator<MaybeRequestResult | undefined>> {\n try {\n return (await this._subscribe(request, options, this._getRequestContext(SUBSCRIPTION, request))) as AsyncIterator<\n MaybeRequestResult | undefined\n >;\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n private _addEventListener(): void {\n this._worker.addEventListener(MESSAGE, this._onMessage);\n }\n\n private _getRequestContext(operation: ValidOperations, request: string): RequestContext {\n return {\n boxID: uuid(),\n debugManager: this._debugManager,\n fieldTypeMap: new Map(),\n operation,\n operationName: \"\",\n queryFiltered: false,\n request,\n };\n }\n\n private _onMessage = async ({ data }: MessageEvent): Promise<void> => {\n if (!isPlainObject(data)) return;\n\n const { context, method, result, type } = data as MessageResponsePayload;\n if (type !== GRAPHQL_BOX || !isPlainObject(result)) return;\n\n const { _cacheMetadata, ...otherProps } = result;\n const response: MaybeRequestResult = { ...otherProps };\n if (_cacheMetadata) response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);\n\n if (method === REQUEST) {\n const pending = this._pending.get(context.boxID);\n if (!pending) return;\n\n pending.resolve(response);\n } else if (method === SUBSCRIBE) {\n this._eventEmitter.emit(context.boxID, response);\n }\n };\n\n @logRequest()\n private async _request(\n request: string,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<MaybeRequestResult> {\n try {\n return new Promise((resolve: PendingResolver) => {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: REQUEST,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n this._pending.set(context.boxID, { resolve });\n });\n } catch (errors) {\n return { errors };\n }\n }\n\n @logRequest()\n private async _subscribe(\n request: string,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<AsyncIterator<MaybeRequestResult | undefined>> {\n try {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: SUBSCRIBE,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n const eventAsyncIterator = new EventAsyncIterator(this._eventEmitter, context.boxID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return Promise.reject(error);\n }\n }\n}\n","import { handleMessage as handleCachemapMessage } from \"@cachemap/core-worker\";\nimport Client from \"@graphql-box/client\";\nimport { MaybeRequestResult, MaybeRequestResultWithDehydratedCacheMetadata, RequestOptions } from \"@graphql-box/core\";\nimport { dehydrateCacheMetadata } from \"@graphql-box/helpers\";\nimport { forAwaitEach, isAsyncIterable } from \"iterall\";\nimport { isPlainObject } from \"lodash\";\nimport { CACHEMAP, GRAPHQL_BOX, MESSAGE, REQUEST, SUBSCRIBE } from \"../consts\";\nimport { MessageContext, MessageRequestPayload, MethodNames, RegisterWorkerOptions } from \"../defs\";\n\nconst { addEventListener, postMessage } = (self as unknown) as DedicatedWorkerGlobalScope;\n\nasync function handleRequest(\n request: string,\n method: MethodNames,\n options: RequestOptions,\n context: MessageContext,\n client: Client,\n): Promise<void> {\n const { _cacheMetadata, ...otherProps } = await client.request(request, options, context);\n const result: MaybeRequestResultWithDehydratedCacheMetadata = { ...otherProps };\n if (_cacheMetadata) result._cacheMetadata = dehydrateCacheMetadata(_cacheMetadata);\n postMessage({ context, method, result, type: GRAPHQL_BOX });\n}\n\nasync function handleSubscription(\n request: string,\n method: MethodNames,\n options: RequestOptions,\n context: MessageContext,\n client: Client,\n): Promise<void> {\n const subscribeResult = await client.subscribe(request, options, context);\n\n if (isAsyncIterable(subscribeResult)) {\n forAwaitEach(subscribeResult, ({ _cacheMetadata, ...otherProps }: MaybeRequestResult) => {\n const result: MaybeRequestResultWithDehydratedCacheMetadata = { ...otherProps };\n if (_cacheMetadata) result._cacheMetadata = dehydrateCacheMetadata(_cacheMetadata);\n postMessage({ context, method, result, type: GRAPHQL_BOX });\n });\n }\n}\n\nexport function handleMessage(data: MessageRequestPayload, client: Client): void {\n const { context, method, options, request } = data as MessageRequestPayload;\n\n if (method === REQUEST) {\n handleRequest(request, method, options, context, client);\n } else if (method === SUBSCRIBE) {\n handleSubscription(request, method, options, context, client);\n }\n}\n\nexport default async function registerWorker({ client }: RegisterWorkerOptions): Promise<void> {\n function onMessage({ data }: MessageEvent): void {\n if (!isPlainObject(data)) return;\n\n const { type } = data as MessageRequestPayload;\n\n if (type === GRAPHQL_BOX) {\n handleMessage(data, client);\n } else if (type === CACHEMAP && client.cache) {\n handleCachemapMessage(data, client.cache);\n }\n }\n\n addEventListener(MESSAGE, onMessage);\n}\n"],"names":["REQUEST_EXECUTED","logRequest","_target","_propertyName","descriptor","method","value","args","Promise","resolve","debugManager","otherContext","apply","_this","startTime","now","result","endTime","duration","emit","context","options","request","stats","reject","WorkerClient","worker","Map","data","_isPlainObject","type","_cacheMetadata","otherProps","response","rehydrateCacheMetadata","pending","_pending","get","boxID","_eventEmitter","_cache","WorkerCachemap","_debugManager","EventEmitter","_worker","_addEventListener","this","_request","_getRequestContext","QUERY","errors","_subscribe","SUBSCRIPTION","addEventListener","_onMessage","operation","uuid","fieldTypeMap","operationName","queryFiltered","_this2","postMessage","_getMessageContext","set","eventAsyncIterator","EventAsyncIterator","getIterator","push","TypeError","constructorOptions","self","client","dehydrateCacheMetadata","subscribe","subscribeResult","isAsyncIterable","forAwaitEach","handleMessage","handleRequest","handleSubscription","registerWorker","onMessage","cache","handleCachemapMessage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../worker-client/src/consts/index.ts","../worker-client/src/debug/log-request/index.ts","../worker-client/src/main/index.ts","../worker-client/src/register-worker/index.ts"],"sourcesContent":["export const REQUEST_EXECUTED = \"request_executed\";\n\nexport const REQUEST = \"request\";\nexport const SUBSCRIBE = \"subscribe\";\n\nexport const MESSAGE = \"message\";\n\nexport const GRAPHQL_BOX = \"graphqlBox\";\nexport const CACHEMAP = \"cachemap\";\n","import { RequestContext } from \"@graphql-box/core\";\nimport { REQUEST_EXECUTED } from \"../../consts\";\n\nexport default function logRequest() {\n return (\n _target: any,\n _propertyName: string,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise<any>>,\n ): void => {\n const method = descriptor.value;\n if (!method) return;\n\n descriptor.value = async function descriptorValue(...args: any[]): Promise<any> {\n try {\n return new Promise(async resolve => {\n const { debugManager, ...otherContext } = args[2] as RequestContext;\n\n if (!debugManager) {\n resolve(await method.apply(this, args));\n return;\n }\n\n const startTime = debugManager.now();\n const result = await method.apply(this, args);\n const endTime = debugManager.now();\n const duration = endTime - startTime;\n resolve(result);\n\n debugManager.emit(REQUEST_EXECUTED, {\n context: otherContext,\n options: args[1],\n request: args[0],\n result,\n stats: { duration, endTime, startTime },\n });\n });\n } catch (error) {\n return Promise.reject(error);\n }\n };\n };\n}\n","import WorkerCachemap from \"@cachemap/core-worker\";\nimport {\n DebugManagerDef,\n MaybeRequestResult,\n QUERY,\n RequestContext,\n RequestOptions,\n SUBSCRIPTION,\n ValidOperations,\n} from \"@graphql-box/core\";\nimport { EventAsyncIterator, rehydrateCacheMetadata } from \"@graphql-box/helpers\";\nimport EventEmitter from \"eventemitter3\";\nimport { isPlainObject } from \"lodash\";\nimport { v1 as uuid } from \"uuid\";\nimport { GRAPHQL_BOX, MESSAGE, REQUEST, SUBSCRIBE } from \"../consts\";\nimport logRequest from \"../debug/log-request\";\nimport {\n ConstructorOptions,\n MessageContext,\n MessageResponsePayload,\n PendingResolver,\n PendingTracker,\n UserOptions,\n} from \"../defs\";\n\nexport default class WorkerClient {\n public static async init(options: UserOptions): Promise<WorkerClient> {\n const errors: TypeError[] = [];\n\n if (!isPlainObject(options)) {\n errors.push(new TypeError(\"@graphql-box/client expected options to ba a plain object.\"));\n }\n\n if (!options.cache) {\n errors.push(new TypeError(\"@graphql-box/client expected options.cache.\"));\n }\n\n if (!options.worker) {\n errors.push(new TypeError(\"@graphql-box/client expected options.worker.\"));\n }\n\n const constructorOptions: ConstructorOptions = {\n cache: options.cache,\n worker: options.worker,\n };\n\n try {\n if (options.debugManager) {\n constructorOptions.debugManager = await options.debugManager();\n }\n\n return new WorkerClient(constructorOptions);\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n private static _getMessageContext({ boxID }: RequestContext): MessageContext {\n return { boxID };\n }\n\n private _cache: WorkerCachemap;\n private _debugManager: DebugManagerDef | null;\n private _eventEmitter: EventEmitter;\n private _pending: PendingTracker = new Map();\n private _worker: Worker;\n\n constructor({ cache, debugManager, worker }: ConstructorOptions) {\n this._cache = cache;\n this._debugManager = debugManager || null;\n this._eventEmitter = new EventEmitter();\n this._worker = worker;\n this._addEventListener();\n }\n\n get cache(): WorkerCachemap {\n return this._cache;\n }\n\n public async request(request: string, options: RequestOptions = {}): Promise<MaybeRequestResult> {\n try {\n return this._request(request, options, this._getRequestContext(QUERY, request)) as MaybeRequestResult;\n } catch (error) {\n return { errors: error };\n }\n }\n\n public async subscribe(\n request: string,\n options: RequestOptions = {},\n ): Promise<AsyncIterator<MaybeRequestResult | undefined>> {\n try {\n return (await this._subscribe(request, options, this._getRequestContext(SUBSCRIPTION, request))) as AsyncIterator<\n MaybeRequestResult | undefined\n >;\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n private _addEventListener(): void {\n this._worker.addEventListener(MESSAGE, this._onMessage);\n }\n\n private _getRequestContext(operation: ValidOperations, request: string): RequestContext {\n return {\n boxID: uuid(),\n debugManager: this._debugManager,\n fieldTypeMap: new Map(),\n operation,\n operationName: \"\",\n queryFiltered: false,\n request,\n };\n }\n\n private _onMessage = async ({ data }: MessageEvent): Promise<void> => {\n if (!isPlainObject(data)) return;\n\n const { context, method, result, type } = data as MessageResponsePayload;\n if (type !== GRAPHQL_BOX || !isPlainObject(result)) return;\n\n const { _cacheMetadata, ...otherProps } = result;\n const response: MaybeRequestResult = { ...otherProps };\n if (_cacheMetadata) response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);\n\n if (method === REQUEST) {\n const pending = this._pending.get(context.boxID);\n if (!pending) return;\n\n pending.resolve(response);\n } else if (method === SUBSCRIBE) {\n this._eventEmitter.emit(context.boxID, response);\n }\n };\n\n @logRequest()\n private async _request(\n request: string,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<MaybeRequestResult> {\n try {\n return new Promise((resolve: PendingResolver) => {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: REQUEST,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n this._pending.set(context.boxID, { resolve });\n });\n } catch (errors) {\n return { errors };\n }\n }\n\n @logRequest()\n private async _subscribe(\n request: string,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<AsyncIterator<MaybeRequestResult | undefined>> {\n try {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: SUBSCRIBE,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n const eventAsyncIterator = new EventAsyncIterator(this._eventEmitter, context.boxID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return Promise.reject(error);\n }\n }\n}\n","import { handleMessage as handleCachemapMessage } from \"@cachemap/core-worker\";\nimport Client from \"@graphql-box/client\";\nimport { MaybeRequestResult, MaybeRequestResultWithDehydratedCacheMetadata, RequestOptions } from \"@graphql-box/core\";\nimport { dehydrateCacheMetadata } from \"@graphql-box/helpers\";\nimport { forAwaitEach, isAsyncIterable } from \"iterall\";\nimport { isPlainObject } from \"lodash\";\nimport { CACHEMAP, GRAPHQL_BOX, MESSAGE, REQUEST, SUBSCRIBE } from \"../consts\";\nimport { MessageContext, MessageRequestPayload, MethodNames, RegisterWorkerOptions } from \"../defs\";\n\nconst { addEventListener, postMessage } = (self as unknown) as DedicatedWorkerGlobalScope;\n\nasync function handleRequest(\n request: string,\n method: MethodNames,\n options: RequestOptions,\n context: MessageContext,\n client: Client,\n): Promise<void> {\n const { _cacheMetadata, ...otherProps } = await client.request(request, options, context);\n const result: MaybeRequestResultWithDehydratedCacheMetadata = { ...otherProps };\n if (_cacheMetadata) result._cacheMetadata = dehydrateCacheMetadata(_cacheMetadata);\n postMessage({ context, method, result, type: GRAPHQL_BOX });\n}\n\nasync function handleSubscription(\n request: string,\n method: MethodNames,\n options: RequestOptions,\n context: MessageContext,\n client: Client,\n): Promise<void> {\n const subscribeResult = await client.subscribe(request, options, context);\n\n if (isAsyncIterable(subscribeResult)) {\n forAwaitEach(subscribeResult, ({ _cacheMetadata, ...otherProps }: MaybeRequestResult) => {\n const result: MaybeRequestResultWithDehydratedCacheMetadata = { ...otherProps };\n if (_cacheMetadata) result._cacheMetadata = dehydrateCacheMetadata(_cacheMetadata);\n postMessage({ context, method, result, type: GRAPHQL_BOX });\n });\n }\n}\n\nexport function handleMessage(data: MessageRequestPayload, client: Client): void {\n const { context, method, options, request } = data as MessageRequestPayload;\n\n if (method === REQUEST) {\n handleRequest(request, method, options, context, client);\n } else if (method === SUBSCRIBE) {\n handleSubscription(request, method, options, context, client);\n }\n}\n\nexport default async function registerWorker({ client }: RegisterWorkerOptions): Promise<void> {\n function onMessage({ data }: MessageEvent): void {\n if (!isPlainObject(data)) return;\n\n const { type } = data as MessageRequestPayload;\n\n if (type === GRAPHQL_BOX) {\n handleMessage(data, client);\n } else if (type === CACHEMAP && client.cache) {\n handleCachemapMessage(data, client.cache);\n }\n }\n\n addEventListener(MESSAGE, onMessage);\n}\n"],"names":["REQUEST_EXECUTED","logRequest","_target","_propertyName","descriptor","method","value","args","Promise","resolve","debugManager","otherContext","apply","_this","startTime","now","result","endTime","duration","emit","context","options","request","stats","reject","WorkerClient","cache","worker","Map","data","_isPlainObject","type","_cacheMetadata","otherProps","response","rehydrateCacheMetadata","pending","_pending","get","boxID","_eventEmitter","_cache","_debugManager","EventEmitter","_worker","_addEventListener","this","_request","_getRequestContext","QUERY","errors","_subscribe","SUBSCRIPTION","addEventListener","_onMessage","operation","uuid","fieldTypeMap","operationName","queryFiltered","_this2","postMessage","_getMessageContext","set","eventAsyncIterator","EventAsyncIterator","getIterator","push","TypeError","constructorOptions","self","client","dehydrateCacheMetadata","subscribe","subscribeResult","isAsyncIterable","forAwaitEach","handleMessage","handleRequest","handleSubscription","registerWorker","onMessage","handleCachemapMessage"],"mappings":"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"}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
-----------------------------
|
|
2
2
|
Rollup File Analysis
|
|
3
3
|
-----------------------------
|
|
4
|
-
bundle size:
|
|
5
|
-
original size: 10.
|
|
4
|
+
bundle size: 21.088 KB
|
|
5
|
+
original size: 10.884 KB
|
|
6
6
|
code reduction: 0 %
|
|
7
7
|
module count: 6
|
|
8
8
|
|
|
9
9
|
████████████████████████████░░░░░░░░░░░░░░░░░░░░░░
|
|
10
10
|
file: /src/main/index.ts
|
|
11
|
-
bundle space: 56.
|
|
12
|
-
rendered size: 11.
|
|
13
|
-
original size:
|
|
11
|
+
bundle space: 56.64 %
|
|
12
|
+
rendered size: 11.945 KB
|
|
13
|
+
original size: 5.102 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: 24.
|
|
20
|
+
bundle space: 24.55 %
|
|
21
21
|
rendered size: 5.177 KB
|
|
22
22
|
original size: 2.635 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.95 %
|
|
30
30
|
rendered size: 3.786 KB
|
|
31
31
|
original size: 1.244 KB
|
|
32
32
|
code reduction: 0 %
|
|
@@ -35,7 +35,7 @@ dependents: 1
|
|
|
35
35
|
|
|
36
36
|
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
37
37
|
file: /src/consts/index.ts
|
|
38
|
-
bundle space: 0.
|
|
38
|
+
bundle space: 0.85 %
|
|
39
39
|
rendered size: 180 Bytes
|
|
40
40
|
original size: 238 Bytes
|
|
41
41
|
code reduction: 24.37 %
|
|
@@ -49,7 +49,7 @@ dependents: 4
|
|
|
49
49
|
file: /src/defs/index.ts
|
|
50
50
|
bundle space: 0 %
|
|
51
51
|
rendered size: 0 Byte
|
|
52
|
-
original size: 1.
|
|
52
|
+
original size: 1.499 KB
|
|
53
53
|
code reduction: 100 %
|
|
54
54
|
dependents: 1
|
|
55
55
|
- /src/index.ts
|
package/lib/main/main/index.js
CHANGED
|
@@ -15,8 +15,6 @@ var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime/
|
|
|
15
15
|
|
|
16
16
|
var _isPlainObject2 = _interopRequireDefault(require("lodash/isPlainObject"));
|
|
17
17
|
|
|
18
|
-
var _coreWorker = _interopRequireDefault(require("@cachemap/core-worker"));
|
|
19
|
-
|
|
20
18
|
var _core = require("@graphql-box/core");
|
|
21
19
|
|
|
22
20
|
var _helpers = require("@graphql-box/helpers");
|
|
@@ -39,11 +37,16 @@ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logRequest.d
|
|
|
39
37
|
errors.push(new TypeError("@graphql-box/client expected options to ba a plain object."));
|
|
40
38
|
}
|
|
41
39
|
|
|
40
|
+
if (!options.cache) {
|
|
41
|
+
errors.push(new TypeError("@graphql-box/client expected options.cache."));
|
|
42
|
+
}
|
|
43
|
+
|
|
42
44
|
if (!options.worker) {
|
|
43
45
|
errors.push(new TypeError("@graphql-box/client expected options.worker."));
|
|
44
46
|
}
|
|
45
47
|
|
|
46
48
|
const constructorOptions = {
|
|
49
|
+
cache: options.cache,
|
|
47
50
|
worker: options.worker
|
|
48
51
|
};
|
|
49
52
|
|
|
@@ -67,6 +70,7 @@ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logRequest.d
|
|
|
67
70
|
}
|
|
68
71
|
|
|
69
72
|
constructor({
|
|
73
|
+
cache,
|
|
70
74
|
debugManager,
|
|
71
75
|
worker
|
|
72
76
|
}) {
|
|
@@ -103,9 +107,7 @@ let WorkerClient = (_dec = (0, _logRequest.default)(), _dec2 = (0, _logRequest.d
|
|
|
103
107
|
this._eventEmitter.emit(context.boxID, response);
|
|
104
108
|
}
|
|
105
109
|
});
|
|
106
|
-
this._cache =
|
|
107
|
-
worker
|
|
108
|
-
});
|
|
110
|
+
this._cache = cache;
|
|
109
111
|
this._debugManager = debugManager || null;
|
|
110
112
|
this._eventEmitter = new _eventemitter.default();
|
|
111
113
|
this._worker = worker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/main/index.ts"],"names":["WorkerClient","init","options","errors","push","TypeError","worker","constructorOptions","debugManager","error","Promise","reject","_getMessageContext","boxID","constructor","Map","data","context","method","result","type","GRAPHQL_BOX","_cacheMetadata","otherProps","response","REQUEST","pending","_pending","get","resolve","SUBSCRIBE","_eventEmitter","emit","_cache","
|
|
1
|
+
{"version":3,"sources":["../../../src/main/index.ts"],"names":["WorkerClient","init","options","errors","push","TypeError","cache","worker","constructorOptions","debugManager","error","Promise","reject","_getMessageContext","boxID","constructor","Map","data","context","method","result","type","GRAPHQL_BOX","_cacheMetadata","otherProps","response","REQUEST","pending","_pending","get","resolve","SUBSCRIBE","_eventEmitter","emit","_cache","_debugManager","EventEmitter","_worker","_addEventListener","request","_request","_getRequestContext","QUERY","subscribe","_subscribe","SUBSCRIPTION","addEventListener","MESSAGE","_onMessage","operation","fieldTypeMap","operationName","queryFiltered","postMessage","set","eventAsyncIterator","EventAsyncIterator","getIterator"],"mappings":"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","sourcesContent":["import WorkerCachemap from \"@cachemap/core-worker\";\nimport {\n DebugManagerDef,\n MaybeRequestResult,\n QUERY,\n RequestContext,\n RequestOptions,\n SUBSCRIPTION,\n ValidOperations,\n} from \"@graphql-box/core\";\nimport { EventAsyncIterator, rehydrateCacheMetadata } from \"@graphql-box/helpers\";\nimport EventEmitter from \"eventemitter3\";\nimport { isPlainObject } from \"lodash\";\nimport { v1 as uuid } from \"uuid\";\nimport { GRAPHQL_BOX, MESSAGE, REQUEST, SUBSCRIBE } from \"../consts\";\nimport logRequest from \"../debug/log-request\";\nimport {\n ConstructorOptions,\n MessageContext,\n MessageResponsePayload,\n PendingResolver,\n PendingTracker,\n UserOptions,\n} from \"../defs\";\n\nexport default class WorkerClient {\n public static async init(options: UserOptions): Promise<WorkerClient> {\n const errors: TypeError[] = [];\n\n if (!isPlainObject(options)) {\n errors.push(new TypeError(\"@graphql-box/client expected options to ba a plain object.\"));\n }\n\n if (!options.cache) {\n errors.push(new TypeError(\"@graphql-box/client expected options.cache.\"));\n }\n\n if (!options.worker) {\n errors.push(new TypeError(\"@graphql-box/client expected options.worker.\"));\n }\n\n const constructorOptions: ConstructorOptions = {\n cache: options.cache,\n worker: options.worker,\n };\n\n try {\n if (options.debugManager) {\n constructorOptions.debugManager = await options.debugManager();\n }\n\n return new WorkerClient(constructorOptions);\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n private static _getMessageContext({ boxID }: RequestContext): MessageContext {\n return { boxID };\n }\n\n private _cache: WorkerCachemap;\n private _debugManager: DebugManagerDef | null;\n private _eventEmitter: EventEmitter;\n private _pending: PendingTracker = new Map();\n private _worker: Worker;\n\n constructor({ cache, debugManager, worker }: ConstructorOptions) {\n this._cache = cache;\n this._debugManager = debugManager || null;\n this._eventEmitter = new EventEmitter();\n this._worker = worker;\n this._addEventListener();\n }\n\n get cache(): WorkerCachemap {\n return this._cache;\n }\n\n public async request(request: string, options: RequestOptions = {}): Promise<MaybeRequestResult> {\n try {\n return this._request(request, options, this._getRequestContext(QUERY, request)) as MaybeRequestResult;\n } catch (error) {\n return { errors: error };\n }\n }\n\n public async subscribe(\n request: string,\n options: RequestOptions = {},\n ): Promise<AsyncIterator<MaybeRequestResult | undefined>> {\n try {\n return (await this._subscribe(request, options, this._getRequestContext(SUBSCRIPTION, request))) as AsyncIterator<\n MaybeRequestResult | undefined\n >;\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n private _addEventListener(): void {\n this._worker.addEventListener(MESSAGE, this._onMessage);\n }\n\n private _getRequestContext(operation: ValidOperations, request: string): RequestContext {\n return {\n boxID: uuid(),\n debugManager: this._debugManager,\n fieldTypeMap: new Map(),\n operation,\n operationName: \"\",\n queryFiltered: false,\n request,\n };\n }\n\n private _onMessage = async ({ data }: MessageEvent): Promise<void> => {\n if (!isPlainObject(data)) return;\n\n const { context, method, result, type } = data as MessageResponsePayload;\n if (type !== GRAPHQL_BOX || !isPlainObject(result)) return;\n\n const { _cacheMetadata, ...otherProps } = result;\n const response: MaybeRequestResult = { ...otherProps };\n if (_cacheMetadata) response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);\n\n if (method === REQUEST) {\n const pending = this._pending.get(context.boxID);\n if (!pending) return;\n\n pending.resolve(response);\n } else if (method === SUBSCRIBE) {\n this._eventEmitter.emit(context.boxID, response);\n }\n };\n\n @logRequest()\n private async _request(\n request: string,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<MaybeRequestResult> {\n try {\n return new Promise((resolve: PendingResolver) => {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: REQUEST,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n this._pending.set(context.boxID, { resolve });\n });\n } catch (errors) {\n return { errors };\n }\n }\n\n @logRequest()\n private async _subscribe(\n request: string,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<AsyncIterator<MaybeRequestResult | undefined>> {\n try {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: SUBSCRIBE,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n const eventAsyncIterator = new EventAsyncIterator(this._eventEmitter, context.boxID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return Promise.reject(error);\n }\n }\n}\n"],"file":"index.js"}
|
package/lib/module/main/index.js
CHANGED
|
@@ -5,7 +5,6 @@ import _isPlainObject from "lodash/isPlainObject";
|
|
|
5
5
|
var _dec, _dec2, _class;
|
|
6
6
|
|
|
7
7
|
import "core-js/modules/es.promise.js";
|
|
8
|
-
import WorkerCachemap from "@cachemap/core-worker";
|
|
9
8
|
import { QUERY, SUBSCRIPTION } from "@graphql-box/core";
|
|
10
9
|
import { EventAsyncIterator, rehydrateCacheMetadata } from "@graphql-box/helpers";
|
|
11
10
|
import EventEmitter from "eventemitter3";
|
|
@@ -20,11 +19,16 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logRequest(), (_class = class W
|
|
|
20
19
|
errors.push(new TypeError("@graphql-box/client expected options to ba a plain object."));
|
|
21
20
|
}
|
|
22
21
|
|
|
22
|
+
if (!options.cache) {
|
|
23
|
+
errors.push(new TypeError("@graphql-box/client expected options.cache."));
|
|
24
|
+
}
|
|
25
|
+
|
|
23
26
|
if (!options.worker) {
|
|
24
27
|
errors.push(new TypeError("@graphql-box/client expected options.worker."));
|
|
25
28
|
}
|
|
26
29
|
|
|
27
30
|
const constructorOptions = {
|
|
31
|
+
cache: options.cache,
|
|
28
32
|
worker: options.worker
|
|
29
33
|
};
|
|
30
34
|
|
|
@@ -48,6 +52,7 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logRequest(), (_class = class W
|
|
|
48
52
|
}
|
|
49
53
|
|
|
50
54
|
constructor({
|
|
55
|
+
cache,
|
|
51
56
|
debugManager,
|
|
52
57
|
worker
|
|
53
58
|
}) {
|
|
@@ -90,9 +95,7 @@ let WorkerClient = (_dec = logRequest(), _dec2 = logRequest(), (_class = class W
|
|
|
90
95
|
}
|
|
91
96
|
});
|
|
92
97
|
|
|
93
|
-
this._cache =
|
|
94
|
-
worker
|
|
95
|
-
});
|
|
98
|
+
this._cache = cache;
|
|
96
99
|
this._debugManager = debugManager || null;
|
|
97
100
|
this._eventEmitter = new EventEmitter();
|
|
98
101
|
this._worker = worker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/main/index.ts"],"names":["WorkerCachemap","QUERY","SUBSCRIPTION","EventAsyncIterator","rehydrateCacheMetadata","EventEmitter","v1","uuid","GRAPHQL_BOX","MESSAGE","REQUEST","SUBSCRIBE","logRequest","WorkerClient","init","options","errors","push","TypeError","worker","constructorOptions","debugManager","error","Promise","reject","_getMessageContext","boxID","constructor","Map","data","context","method","result","type","_cacheMetadata","otherProps","response","pending","_pending","get","resolve","_eventEmitter","emit","_cache","_debugManager","_worker","_addEventListener","cache","request","_request","_getRequestContext","subscribe","_subscribe","addEventListener","_onMessage","operation","fieldTypeMap","operationName","queryFiltered","postMessage","set","eventAsyncIterator","getIterator"],"mappings":"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","sourcesContent":["import WorkerCachemap from \"@cachemap/core-worker\";\nimport {\n DebugManagerDef,\n MaybeRequestResult,\n QUERY,\n RequestContext,\n RequestOptions,\n SUBSCRIPTION,\n ValidOperations,\n} from \"@graphql-box/core\";\nimport { EventAsyncIterator, rehydrateCacheMetadata } from \"@graphql-box/helpers\";\nimport EventEmitter from \"eventemitter3\";\nimport { isPlainObject } from \"lodash\";\nimport { v1 as uuid } from \"uuid\";\nimport { GRAPHQL_BOX, MESSAGE, REQUEST, SUBSCRIBE } from \"../consts\";\nimport logRequest from \"../debug/log-request\";\nimport {\n ConstructorOptions,\n MessageContext,\n MessageResponsePayload,\n PendingResolver,\n PendingTracker,\n UserOptions,\n} from \"../defs\";\n\nexport default class WorkerClient {\n public static async init(options: UserOptions): Promise<WorkerClient> {\n const errors: TypeError[] = [];\n\n if (!isPlainObject(options)) {\n errors.push(new TypeError(\"@graphql-box/client expected options to ba a plain object.\"));\n }\n\n if (!options.worker) {\n errors.push(new TypeError(\"@graphql-box/client expected options.worker.\"));\n }\n\n const constructorOptions: ConstructorOptions = {\n worker: options.worker,\n };\n\n try {\n if (options.debugManager) {\n constructorOptions.debugManager = await options.debugManager();\n }\n\n return new WorkerClient(constructorOptions);\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n private static _getMessageContext({ boxID }: RequestContext): MessageContext {\n return { boxID };\n }\n\n private _cache: WorkerCachemap;\n private _debugManager: DebugManagerDef | null;\n private _eventEmitter: EventEmitter;\n private _pending: PendingTracker = new Map();\n private _worker: Worker;\n\n constructor({ debugManager, worker }: ConstructorOptions) {\n this._cache = new WorkerCachemap({ worker });\n this._debugManager = debugManager || null;\n this._eventEmitter = new EventEmitter();\n this._worker = worker;\n this._addEventListener();\n }\n\n get cache(): WorkerCachemap {\n return this._cache;\n }\n\n public async request(request: string, options: RequestOptions = {}): Promise<MaybeRequestResult> {\n try {\n return this._request(request, options, this._getRequestContext(QUERY, request)) as MaybeRequestResult;\n } catch (error) {\n return { errors: error };\n }\n }\n\n public async subscribe(\n request: string,\n options: RequestOptions = {},\n ): Promise<AsyncIterator<MaybeRequestResult | undefined>> {\n try {\n return (await this._subscribe(request, options, this._getRequestContext(SUBSCRIPTION, request))) as AsyncIterator<\n MaybeRequestResult | undefined\n >;\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n private _addEventListener(): void {\n this._worker.addEventListener(MESSAGE, this._onMessage);\n }\n\n private _getRequestContext(operation: ValidOperations, request: string): RequestContext {\n return {\n boxID: uuid(),\n debugManager: this._debugManager,\n fieldTypeMap: new Map(),\n operation,\n operationName: \"\",\n queryFiltered: false,\n request,\n };\n }\n\n private _onMessage = async ({ data }: MessageEvent): Promise<void> => {\n if (!isPlainObject(data)) return;\n\n const { context, method, result, type } = data as MessageResponsePayload;\n if (type !== GRAPHQL_BOX || !isPlainObject(result)) return;\n\n const { _cacheMetadata, ...otherProps } = result;\n const response: MaybeRequestResult = { ...otherProps };\n if (_cacheMetadata) response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);\n\n if (method === REQUEST) {\n const pending = this._pending.get(context.boxID);\n if (!pending) return;\n\n pending.resolve(response);\n } else if (method === SUBSCRIBE) {\n this._eventEmitter.emit(context.boxID, response);\n }\n };\n\n @logRequest()\n private async _request(\n request: string,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<MaybeRequestResult> {\n try {\n return new Promise((resolve: PendingResolver) => {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: REQUEST,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n this._pending.set(context.boxID, { resolve });\n });\n } catch (errors) {\n return { errors };\n }\n }\n\n @logRequest()\n private async _subscribe(\n request: string,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<AsyncIterator<MaybeRequestResult | undefined>> {\n try {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: SUBSCRIBE,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n const eventAsyncIterator = new EventAsyncIterator(this._eventEmitter, context.boxID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return Promise.reject(error);\n }\n }\n}\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/main/index.ts"],"names":["QUERY","SUBSCRIPTION","EventAsyncIterator","rehydrateCacheMetadata","EventEmitter","v1","uuid","GRAPHQL_BOX","MESSAGE","REQUEST","SUBSCRIBE","logRequest","WorkerClient","init","options","errors","push","TypeError","cache","worker","constructorOptions","debugManager","error","Promise","reject","_getMessageContext","boxID","constructor","Map","data","context","method","result","type","_cacheMetadata","otherProps","response","pending","_pending","get","resolve","_eventEmitter","emit","_cache","_debugManager","_worker","_addEventListener","request","_request","_getRequestContext","subscribe","_subscribe","addEventListener","_onMessage","operation","fieldTypeMap","operationName","queryFiltered","postMessage","set","eventAsyncIterator","getIterator"],"mappings":"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","sourcesContent":["import WorkerCachemap from \"@cachemap/core-worker\";\nimport {\n DebugManagerDef,\n MaybeRequestResult,\n QUERY,\n RequestContext,\n RequestOptions,\n SUBSCRIPTION,\n ValidOperations,\n} from \"@graphql-box/core\";\nimport { EventAsyncIterator, rehydrateCacheMetadata } from \"@graphql-box/helpers\";\nimport EventEmitter from \"eventemitter3\";\nimport { isPlainObject } from \"lodash\";\nimport { v1 as uuid } from \"uuid\";\nimport { GRAPHQL_BOX, MESSAGE, REQUEST, SUBSCRIBE } from \"../consts\";\nimport logRequest from \"../debug/log-request\";\nimport {\n ConstructorOptions,\n MessageContext,\n MessageResponsePayload,\n PendingResolver,\n PendingTracker,\n UserOptions,\n} from \"../defs\";\n\nexport default class WorkerClient {\n public static async init(options: UserOptions): Promise<WorkerClient> {\n const errors: TypeError[] = [];\n\n if (!isPlainObject(options)) {\n errors.push(new TypeError(\"@graphql-box/client expected options to ba a plain object.\"));\n }\n\n if (!options.cache) {\n errors.push(new TypeError(\"@graphql-box/client expected options.cache.\"));\n }\n\n if (!options.worker) {\n errors.push(new TypeError(\"@graphql-box/client expected options.worker.\"));\n }\n\n const constructorOptions: ConstructorOptions = {\n cache: options.cache,\n worker: options.worker,\n };\n\n try {\n if (options.debugManager) {\n constructorOptions.debugManager = await options.debugManager();\n }\n\n return new WorkerClient(constructorOptions);\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n private static _getMessageContext({ boxID }: RequestContext): MessageContext {\n return { boxID };\n }\n\n private _cache: WorkerCachemap;\n private _debugManager: DebugManagerDef | null;\n private _eventEmitter: EventEmitter;\n private _pending: PendingTracker = new Map();\n private _worker: Worker;\n\n constructor({ cache, debugManager, worker }: ConstructorOptions) {\n this._cache = cache;\n this._debugManager = debugManager || null;\n this._eventEmitter = new EventEmitter();\n this._worker = worker;\n this._addEventListener();\n }\n\n get cache(): WorkerCachemap {\n return this._cache;\n }\n\n public async request(request: string, options: RequestOptions = {}): Promise<MaybeRequestResult> {\n try {\n return this._request(request, options, this._getRequestContext(QUERY, request)) as MaybeRequestResult;\n } catch (error) {\n return { errors: error };\n }\n }\n\n public async subscribe(\n request: string,\n options: RequestOptions = {},\n ): Promise<AsyncIterator<MaybeRequestResult | undefined>> {\n try {\n return (await this._subscribe(request, options, this._getRequestContext(SUBSCRIPTION, request))) as AsyncIterator<\n MaybeRequestResult | undefined\n >;\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n private _addEventListener(): void {\n this._worker.addEventListener(MESSAGE, this._onMessage);\n }\n\n private _getRequestContext(operation: ValidOperations, request: string): RequestContext {\n return {\n boxID: uuid(),\n debugManager: this._debugManager,\n fieldTypeMap: new Map(),\n operation,\n operationName: \"\",\n queryFiltered: false,\n request,\n };\n }\n\n private _onMessage = async ({ data }: MessageEvent): Promise<void> => {\n if (!isPlainObject(data)) return;\n\n const { context, method, result, type } = data as MessageResponsePayload;\n if (type !== GRAPHQL_BOX || !isPlainObject(result)) return;\n\n const { _cacheMetadata, ...otherProps } = result;\n const response: MaybeRequestResult = { ...otherProps };\n if (_cacheMetadata) response._cacheMetadata = rehydrateCacheMetadata(_cacheMetadata);\n\n if (method === REQUEST) {\n const pending = this._pending.get(context.boxID);\n if (!pending) return;\n\n pending.resolve(response);\n } else if (method === SUBSCRIBE) {\n this._eventEmitter.emit(context.boxID, response);\n }\n };\n\n @logRequest()\n private async _request(\n request: string,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<MaybeRequestResult> {\n try {\n return new Promise((resolve: PendingResolver) => {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: REQUEST,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n this._pending.set(context.boxID, { resolve });\n });\n } catch (errors) {\n return { errors };\n }\n }\n\n @logRequest()\n private async _subscribe(\n request: string,\n options: RequestOptions,\n context: RequestContext,\n ): Promise<AsyncIterator<MaybeRequestResult | undefined>> {\n try {\n this._worker.postMessage({\n context: WorkerClient._getMessageContext(context),\n method: SUBSCRIBE,\n options,\n request,\n type: GRAPHQL_BOX,\n });\n\n const eventAsyncIterator = new EventAsyncIterator(this._eventEmitter, context.boxID);\n return eventAsyncIterator.getIterator();\n } catch (error) {\n return Promise.reject(error);\n }\n }\n}\n"],"file":"index.js"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
import WorkerCachemap from "@cachemap/core-worker";
|
|
1
2
|
import Client from "@graphql-box/client";
|
|
2
3
|
import { DebugManagerDef, MaybeRequestResult, MaybeRequestResultWithDehydratedCacheMetadata, RequestOptions } from "@graphql-box/core";
|
|
3
4
|
import { DebugManagerInit } from "@graphql-box/debug-manager";
|
|
4
5
|
export interface UserOptions {
|
|
6
|
+
/**
|
|
7
|
+
* The cache.
|
|
8
|
+
*/
|
|
9
|
+
cache: WorkerCachemap;
|
|
5
10
|
/**
|
|
6
11
|
* The curried function to initialize the debug manager.
|
|
7
12
|
*/
|
|
@@ -12,6 +17,10 @@ export interface UserOptions {
|
|
|
12
17
|
worker: Worker;
|
|
13
18
|
}
|
|
14
19
|
export interface ConstructorOptions {
|
|
20
|
+
/**
|
|
21
|
+
* The cache.
|
|
22
|
+
*/
|
|
23
|
+
cache: WorkerCachemap;
|
|
15
24
|
/**
|
|
16
25
|
* The debug manager.
|
|
17
26
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/defs/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,6CAA6C,EAC7C,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAEhC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,YAAY,CAAC,EAAE,eAAe,CAAC;IAE/B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,oBAAY,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAElD,oBAAY,eAAe,GAAG,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;AAElE,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,oBAAY,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,YAAY,GAAG,UAAU,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,6CAA6C,CAAC;IACtD,IAAI,EAAE,YAAY,GAAG,UAAU,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/defs/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,6CAA6C,EAC7C,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,KAAK,EAAE,cAAc,CAAC;IAEtB;;OAEG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAEhC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,KAAK,EAAE,cAAc,CAAC;IAEtB;;OAEG;IACH,YAAY,CAAC,EAAE,eAAe,CAAC;IAE/B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,oBAAY,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAElD,oBAAY,eAAe,GAAG,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;AAElE,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,oBAAY,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,YAAY,GAAG,UAAU,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,6CAA6C,CAAC;IACtD,IAAI,EAAE,YAAY,GAAG,UAAU,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -9,7 +9,7 @@ export default class WorkerClient {
|
|
|
9
9
|
private _eventEmitter;
|
|
10
10
|
private _pending;
|
|
11
11
|
private _worker;
|
|
12
|
-
constructor({ debugManager, worker }: ConstructorOptions);
|
|
12
|
+
constructor({ cache, debugManager, worker }: ConstructorOptions);
|
|
13
13
|
get cache(): WorkerCachemap;
|
|
14
14
|
request(request: string, options?: RequestOptions): Promise<MaybeRequestResult>;
|
|
15
15
|
subscribe(request: string, options?: RequestOptions): Promise<AsyncIterator<MaybeRequestResult | undefined>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/main/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAEL,kBAAkB,EAGlB,cAAc,EAGf,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EACL,kBAAkB,EAKlB,WAAW,EACZ,MAAM,SAAS,CAAC;AAEjB,MAAM,CAAC,OAAO,OAAO,YAAY;WACX,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/main/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAEL,kBAAkB,EAGlB,cAAc,EAGf,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EACL,kBAAkB,EAKlB,WAAW,EACZ,MAAM,SAAS,CAAC;AAEjB,MAAM,CAAC,OAAO,OAAO,YAAY;WACX,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA+BrE,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAIjC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,OAAO,CAAS;gBAEZ,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,kBAAkB;IAQ/D,IAAI,KAAK,IAAI,cAAc,CAE1B;IAEY,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAQnF,SAAS,CACpB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;IAUzD,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,UAAU,CAkBhB;YAGY,QAAQ;YAuBR,UAAU;CAoBzB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@graphql-box/worker-client",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.5",
|
|
4
4
|
"description": "The GraphQL Box web worker client module.",
|
|
5
5
|
"author": "Dylan Aubrey <dylanaubrey@gmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -46,9 +46,9 @@
|
|
|
46
46
|
"lodash": "< 5"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@cachemap/constants": "
|
|
50
|
-
"@cachemap/core": "
|
|
51
|
-
"@cachemap/core-worker": "
|
|
49
|
+
"@cachemap/constants": "3.2.0",
|
|
50
|
+
"@cachemap/core": "3.2.1",
|
|
51
|
+
"@cachemap/core-worker": "3.2.1",
|
|
52
52
|
"eventemitter3": "^4.0.0",
|
|
53
53
|
"iterall": "^1.3.0",
|
|
54
54
|
"uuid": "^7.0.1"
|
package/src/defs/index.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import WorkerCachemap from "@cachemap/core-worker";
|
|
1
2
|
import Client from "@graphql-box/client";
|
|
2
3
|
import {
|
|
3
4
|
DebugManagerDef,
|
|
@@ -8,6 +9,11 @@ import {
|
|
|
8
9
|
import { DebugManagerInit } from "@graphql-box/debug-manager";
|
|
9
10
|
|
|
10
11
|
export interface UserOptions {
|
|
12
|
+
/**
|
|
13
|
+
* The cache.
|
|
14
|
+
*/
|
|
15
|
+
cache: WorkerCachemap;
|
|
16
|
+
|
|
11
17
|
/**
|
|
12
18
|
* The curried function to initialize the debug manager.
|
|
13
19
|
*/
|
|
@@ -20,6 +26,11 @@ export interface UserOptions {
|
|
|
20
26
|
}
|
|
21
27
|
|
|
22
28
|
export interface ConstructorOptions {
|
|
29
|
+
/**
|
|
30
|
+
* The cache.
|
|
31
|
+
*/
|
|
32
|
+
cache: WorkerCachemap;
|
|
33
|
+
|
|
23
34
|
/**
|
|
24
35
|
* The debug manager.
|
|
25
36
|
*/
|
package/src/main/index.ts
CHANGED
|
@@ -31,11 +31,16 @@ export default class WorkerClient {
|
|
|
31
31
|
errors.push(new TypeError("@graphql-box/client expected options to ba a plain object."));
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
if (!options.cache) {
|
|
35
|
+
errors.push(new TypeError("@graphql-box/client expected options.cache."));
|
|
36
|
+
}
|
|
37
|
+
|
|
34
38
|
if (!options.worker) {
|
|
35
39
|
errors.push(new TypeError("@graphql-box/client expected options.worker."));
|
|
36
40
|
}
|
|
37
41
|
|
|
38
42
|
const constructorOptions: ConstructorOptions = {
|
|
43
|
+
cache: options.cache,
|
|
39
44
|
worker: options.worker,
|
|
40
45
|
};
|
|
41
46
|
|
|
@@ -60,8 +65,8 @@ export default class WorkerClient {
|
|
|
60
65
|
private _pending: PendingTracker = new Map();
|
|
61
66
|
private _worker: Worker;
|
|
62
67
|
|
|
63
|
-
constructor({ debugManager, worker }: ConstructorOptions) {
|
|
64
|
-
this._cache =
|
|
68
|
+
constructor({ cache, debugManager, worker }: ConstructorOptions) {
|
|
69
|
+
this._cache = cache;
|
|
65
70
|
this._debugManager = debugManager || null;
|
|
66
71
|
this._eventEmitter = new EventEmitter();
|
|
67
72
|
this._worker = worker;
|