diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js b/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js index 4fb8081d9458827666c8557415f79b6391db060d..270aaf850fee6c5baa6e9913796b43a6c83e4817 100644 --- a/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js +++ b/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlWsClient=e()}(this,(function(){"use strict";var t=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 406},r.name.get=function(){return"Jsonql406Error"},Object.defineProperties(e,r),e}(Error),e=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 500},r.name.get=function(){return"Jsonql500Error"},Object.defineProperties(e,r),e}(Error),r=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 403},r.name.get=function(){return"JsonqlForbiddenError"},Object.defineProperties(e,r),e}(Error),n=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 401},r.name.get=function(){return"JsonqlAuthorisationError"},Object.defineProperties(e,r),e}(Error),o=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 401},r.name.get=function(){return"JsonqlContractAuthError"},Object.defineProperties(e,r),e}(Error),a=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 500},r.name.get=function(){return"JsonqlResolverAppError"},Object.defineProperties(e,r),e}(Error),i=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 404},r.name.get=function(){return"JsonqlResolverNotFoundError"},Object.defineProperties(e,r),e}(Error),u=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlEnumError"},Object.defineProperties(e,r),e}(Error),c=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlTypeError"},Object.defineProperties(e,r),e}(Error),f=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),s=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlValidationError"},Object.defineProperties(e,r),e}(Error),l="data",p="error",h="jsonql",v="query",g="mutation",d="socket",y="TS",b="type",_="optional",m="enumv",w="args",j="checker",S="alias",O="__checked__",k="No message",E="__login__",$="__logout__",T="emit",A="acknowledge",P="error",z="nspSet",N="publicNamespace",C="onMessage",x="onResult",q="onError",R="onReady",M="onLogin",F="message",W="result",L="error",J="ready",I="login",U="token",D=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0},statusCode:{configurable:!0}};return r.name.get=function(){return"JsonqlError"},r.statusCode.get=function(){return-1},Object.defineProperties(e,r),e}(Error),V=function(t){function e(r,n){t.call(this,n),this.statusCode=r,this.className=e.name}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlServerError"},Object.defineProperties(e,r),e}(Error);function H(l){if(Array.isArray(l))throw new s("",l);var p=l.message||k,h=l.detail||l;switch(!0){case l instanceof t:throw new t(p,h);case l instanceof e:throw new e(p,h);case l instanceof r:throw new r(p,h);case l instanceof n:throw new n(p,h);case l instanceof o:throw new o(p,h);case l instanceof a:throw new a(p,h);case l instanceof i:throw new i(p,h);case l instanceof u:throw new u(p,h);case l instanceof c:throw new c(p,h);case l instanceof f:throw new f(p,h);case l instanceof s:throw new s(p,h);case l instanceof V:throw new V(p,h);default:throw new D(p,h)}}var B="socket.io",Y=T,G="UKNNOWN RESULT!",K="on",Q="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},X="object"==typeof Q&&Q&&Q.Object===Object&&Q,Z="object"==typeof self&&self&&self.Object===Object&&self,tt=X||Z||Function("return this")(),et=tt.Symbol;function rt(t,e){for(var r=-1,n=null==t?0:t.length,o=Array(n);++r=n?t:function(t,e,r){var n=-1,o=t.length;e<0&&(e=-e>o?0:o+e),(r=r>o?o:r)<0&&(r+=o),o=e>r?0:r-e>>>0,e>>>=0;for(var a=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&jt(e,t[r],0)>-1;);return r}(n,o)+1).join("")}var Ft=function(t){return!!nt(t)||null!=t&&""!==Mt(t)},Wt="[object Number]";function Lt(t){return function(t){return"number"==typeof t||ht(t)&&pt(t)==Wt}(t)&&t!=+t}var Jt="[object String]";function It(t){return"string"==typeof t||!nt(t)&&ht(t)&&pt(t)==Jt}var Ut=function(t){return!It(t)&&!Lt(parseFloat(t))},Dt=function(t){return""!==Mt(t)&&It(t)},Vt=function(t){return null!=t&&"boolean"==typeof t},Ht=function(t,e){return void 0===e&&(e=!0),void 0!==t&&""!==t&&""!==Mt(t)&&(!1===e||!0===e&&null!==t)},Bt=b,Yt=_,Gt=m,Kt=w,Qt=j,Xt=S,Zt="continue",te=function(t){switch(t){case"number":return Ut;case"string":return Dt;case"boolean":return Vt;default:return Ht}},ee=function(t,e){return void 0===e&&(e=""),!!nt(t)&&(""===e||""===Mt(e)||!(t.filter((function(t){return!te(e)(t)})).length>0))},re=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},ne=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!te(e)(t)})).length)})).length:e.length>e.filter((function(t){return!ee(r,t)})).length};function oe(t,e){return function(r){return t(e(r))}}var ae=oe(Object.getPrototypeOf,Object),ie="[object Object]",ue=Function.prototype,ce=Object.prototype,fe=ue.toString,se=ce.hasOwnProperty,le=fe.call(Object);function pe(t){if(!ht(t)||pt(t)!=ie)return!1;var e=ae(t);if(null===e)return!0;var r=se.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&fe.call(r)==le}var he,ve=function(t,e,r){for(var n=-1,o=Object(t),a=r(t),i=a.length;i--;){var u=a[he?i:++n];if(!1===e(o[u],u,o))break}return t};var ge="[object Arguments]";function de(t){return ht(t)&&pt(t)==ge}var ye=Object.prototype,be=ye.hasOwnProperty,_e=ye.propertyIsEnumerable,me=de(function(){return arguments}())?de:function(t){return ht(t)&&be.call(t,"callee")&&!_e.call(t,"callee")};var we="object"==typeof exports&&exports&&!exports.nodeType&&exports,je=we&&"object"==typeof module&&module&&!module.nodeType&&module,Se=je&&je.exports===we?tt.Buffer:void 0,Oe=(Se?Se.isBuffer:void 0)||function(){return!1},ke=9007199254740991,Ee=/^(?:0|[1-9]\d*)$/;function $e(t,e){var r=typeof t;return!!(e=null==e?ke:e)&&("number"==r||"symbol"!=r&&Ee.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Te}var Pe={};Pe["[object Float32Array]"]=Pe["[object Float64Array]"]=Pe["[object Int8Array]"]=Pe["[object Int16Array]"]=Pe["[object Int32Array]"]=Pe["[object Uint8Array]"]=Pe["[object Uint8ClampedArray]"]=Pe["[object Uint16Array]"]=Pe["[object Uint32Array]"]=!0,Pe["[object Arguments]"]=Pe["[object Array]"]=Pe["[object ArrayBuffer]"]=Pe["[object Boolean]"]=Pe["[object DataView]"]=Pe["[object Date]"]=Pe["[object Error]"]=Pe["[object Function]"]=Pe["[object Map]"]=Pe["[object Number]"]=Pe["[object Object]"]=Pe["[object RegExp]"]=Pe["[object Set]"]=Pe["[object String]"]=Pe["[object WeakMap]"]=!1;var ze,Ne="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ce=Ne&&"object"==typeof module&&module&&!module.nodeType&&module,xe=Ce&&Ce.exports===Ne&&X.process,qe=function(){try{var t=Ce&&Ce.require&&Ce.require("util").types;return t||xe&&xe.binding&&xe.binding("util")}catch(t){}}(),Re=qe&&qe.isTypedArray,Me=Re?(ze=Re,function(t){return ze(t)}):function(t){return ht(t)&&Ae(t.length)&&!!Pe[pt(t)]},Fe=Object.prototype.hasOwnProperty;function We(t,e){var r=nt(t),n=!r&&me(t),o=!r&&!n&&Oe(t),a=!r&&!n&&!o&&Me(t),i=r||n||o||a,u=i?function(t,e){for(var r=-1,n=Array(t);++r-1},rr.prototype.set=function(t,e){var r=this.__data__,n=tr(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var nr,or=tt["__core-js_shared__"],ar=(nr=/[^.]+$/.exec(or&&or.keys&&or.keys.IE_PROTO||""))?"Symbol(src)_1."+nr:"";var ir=Function.prototype.toString;function ur(t){if(null!=t){try{return ir.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var cr=/^\[object .+?Constructor\]$/,fr=Function.prototype,sr=Object.prototype,lr=fr.toString,pr=sr.hasOwnProperty,hr=RegExp("^"+lr.call(pr).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function vr(t){return!(!De(t)||function(t){return!!ar&&ar in t}(t))&&(Ge(t)?hr:cr).test(ur(t))}function gr(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return vr(r)?r:void 0}var dr=gr(tt,"Map"),yr=gr(Object,"create");var br="__lodash_hash_undefined__",_r=Object.prototype.hasOwnProperty;var mr=Object.prototype.hasOwnProperty;var wr="__lodash_hash_undefined__";function jr(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var f=a.get(t);if(f&&a.get(e))return f==e;var s=-1,l=!0,p=r&zr?new Tr:void 0;for(a.set(t,e),a.set(e,t);++se.type.filter((function(t){var e;return void 0===r||(!1!==(e=re(t))?!ne({arg:r},e):!te(t)(r))})).length)})).length}return!1},Xn=function(t,e){var r,n,o,a,i;switch(!0){case"object"===t:return o=(n=e).arg,a=n.param,i=[o],Array.isArray(a.keys)&&a.keys.length&&i.push(a.keys),!Reflect.apply(Qn,null,i);case"array"===t:return!ee(e.arg);case!1!==(r=re(t)):return!ne(e,r);default:return!te(t)(e.arg)}},Zn=function(t,e){return void 0!==t?t:!0===e.optional&&void 0!==e.defaultvalue?e.defaultvalue:null},to=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!ee(e))throw new D("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!ee(t))throw new D("args is not an array! You might want to do: ES6 Array.from(arguments) or ES5 Array.prototype.slice.call(arguments)");switch(!0){case t.length==e.length:return t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:var r=e[0].type;return t.map((function(t,n){return{arg:t,index:n,param:e[n]||{type:r,name:"_"}}}));case t.lengthe.length:var n=e.length,o=["any"];return t.map((function(t,r){var a=r>=n||!!e[r].optional,i=e[r]||{type:o,name:"_"+r};return{arg:a?Zn(t,i):t,index:r,param:i,optional:a}}));default:throw new D("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),a=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!Ft(e)&&!(r.type.length>r.type.filter((function(e){return Xn(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Xn(e,t)})).length)}));return r?((n={})[p]=a,n[l]=o.map((function(t){return t.arg})),n):a},eo=function(){try{var t=gr(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();function ro(t,e,r){"__proto__"==e&&eo?eo(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}function no(t,e,r){(void 0===r||Ze(t[e],r))&&(void 0!==r||e in t)||ro(t,e,r)}var oo="object"==typeof exports&&exports&&!exports.nodeType&&exports,ao=oo&&"object"==typeof module&&module&&!module.nodeType&&module,io=ao&&ao.exports===oo?tt.Buffer:void 0,uo=io?io.allocUnsafe:void 0;function co(t,e){var r,n,o=e?(r=t.buffer,n=new r.constructor(r.byteLength),new Cr(n).set(new Cr(r)),n):t.buffer;return new t.constructor(o,t.byteOffset,t.length)}var fo=Object.create,so=function(){function t(){}return function(e){if(!De(e))return{};if(fo)return fo(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();function lo(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var po=Object.prototype.hasOwnProperty;function ho(t,e,r){var n=t[e];po.call(t,e)&&Ze(n,r)&&(void 0!==r||e in t)||ro(t,e,r)}var vo=Object.prototype.hasOwnProperty;function go(t){if(!De(t))return function(t){var e=[];if(null!=t)for(var r in Object(t))e.push(r);return e}(t);var e=Je(t),r=[];for(var n in t)("constructor"!=n||!e&&vo.call(t,n))&&r.push(n);return r}function yo(t){return Ke(t)?We(t,!0):go(t)}function bo(t){return function(t,e,r,n){var o=!r;r||(r={});for(var a=-1,i=e.length;++a0){if(++e>=Oo)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(So);function To(t,e){return $o(function(t,e,r){return e=jo(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,a=jo(n.length-e,0),i=Array(a);++o1?e[n-1]:void 0,a=n>2?e[2]:void 0;for(o=Ao.length>3&&"function"==typeof o?(n--,o):void 0,a&&function(t,e,r){if(!De(r))return!1;var n=typeof e;return!!("number"==n?Ke(r)&&$e(e,r.length):"string"==n&&e in r)&&Ze(r[e],t)}(e[0],e[1],a)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0;)e[r]=arguments[r+1];return function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];return e.reduce((function(t,e){return Reflect.apply(e,null,Zo(t))}),Reflect.apply(t,null,r))}};function oa(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];return function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];return e.reduce((function(t,e){return t.then((function(t){return e(t)}))}),Reflect.apply(t,null,r))}}function aa(t,e,r,n){return void 0===n&&(n=null),void 0===Object.getOwnPropertyDescriptor(t,e)&&Object.defineProperty(t,e,{set:r,get:null===n?function(){return null}:n}),t}function ia(t,e){var r=Object.getOwnPropertyDescriptor(t,e);return void 0!==r&&r.value?r.value:r}function ua(t,e,r,n){void 0===n&&(n=!1);var o=ia(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}function ca(t){return!!ta(t,"socket")&&t.socket}var fa=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},sa=function(t){var e;return(e={}).args=t,e};function la(t,e,r){if(void 0===e&&(e=[]),void 0===r&&(r=!1),It(t)&&nt(e)){var n=sa(e);return!0===r?n:function(t,e){var r;return(r={})[t]=e,r[y]=[fa()],r}(t,n)}throw new s("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}var pa=new WeakMap,ha=new WeakMap;var va=function(){this.__suspend__=null,this.queueStore=new Set},ga={$suspend:{configurable:!0},$queues:{configurable:!0}};ga.$suspend.set=function(t){var e=this;if("boolean"!=typeof t)throw new Error("$suspend only accept Boolean value!");var r=this.__suspend__;this.__suspend__=t,this.logger("($suspend)","Change from "+r+" --\x3e "+t),!0===r&&!1===t&&setTimeout((function(){e.release()}),1)},va.prototype.$queue=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return!0===this.__suspend__&&(this.logger("($queue)","added to $queue",t),this.queueStore.add(t)),this.__suspend__},ga.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},va.prototype.release=function(){var t=this,e=this.queueStore.size;if(this.logger("(release)","Release was called "+e),e>0){var r=Array.from(this.queueStore);this.queueStore.clear(),this.logger("queue",r),r.forEach((function(e){t.logger(e),Reflect.apply(t.$trigger,t,e)})),this.logger("Release size "+this.queueStore.size)}},Object.defineProperties(va.prototype,ga);var da=function(t){function e(e){if("function"!=typeof e)throw new Error("Just die here the logger is not a function!");t.call(this,{logger:e})}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"jsonql-ws-client-core"},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){void 0===e&&(e={}),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={$done:{configurable:!0}};return e.prototype.logger=function(){},e.prototype.$on=function(t,e,r){var n=this;void 0===r&&(r=null);this.validate(t,e);var o=this.takeFromStore(t);if(!1===o)return this.logger("($on)",t+" callback is not in lazy store"),this.addToNormalStore(t,"on",e,r);this.logger("($on)",t+" found in lazy store");var a=0;return o.forEach((function(o){var i=o[0],u=o[1],c=o[2];if(c&&"on"!==c)throw new Error("You are trying to register an event already been taken by other type: "+c);n.logger("($on)","call run on "+t),n.run(e,i,r||u),a+=n.addToNormalStore(t,"on",e,r||u)})),a},e.prototype.$once=function(t,e,r){void 0===r&&(r=null),this.validate(t,e);var n=this.takeFromStore(t);this.normalStore;if(!1===n)return this.logger("($once)",t+" not in the lazy store"),this.addToNormalStore(t,"once",e,r);this.logger("($once)",n);var o=Array.from(n)[0],a=o[0],i=o[1],u=o[2];if(u&&"once"!==u)throw new Error("You are trying to register an event already been taken by other type: "+u);this.logger("($once)","call run for "+t),this.run(e,a,r||i),this.$off(t)},e.prototype.$only=function(t,e,r){var n=this;void 0===r&&(r=null),this.validate(t,e);var o=!1,a=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==a)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(a).forEach((function(o){var a=o[0],i=o[1],u=o[2];if(u&&"only"!==u)throw new Error("You are trying to register an event already been taken by other type: "+u);n.logger("($only)","call run for "+t),n.run(e,a,r||i)})));return o},e.prototype.$onlyOnce=function(t,e,r){void 0===r&&(r=null),this.validate(t,e);var n=!1,o=this.takeFromStore(t);if(this.normalStore.has(t)||(this.logger("($onlyOnce)",t+" add to store"),n=this.addToNormalStore(t,"onlyOnce",e,r)),!1!==o){this.logger("($onlyOnce)",o);var a=Array.from(o)[0],i=a[0],u=a[1],c=a[2];if(c&&"onlyOnce"!==c)throw new Error("You are trying to register an event already been taken by other type: "+c);this.logger("($onlyOnce)","call run for "+t),this.run(e,i,r||u),this.$off(t)}return n},e.prototype.$replace=function(t,e,r,n){if(void 0===r&&(r=null),void 0===n&&(n="on"),this.validateType(n)){this.$off(t);var o=this["$"+n];return this.logger("($replace)",t,e),Reflect.apply(o,this,[t,e,r])}throw new Error(n+" is not supported!")},e.prototype.$trigger=function(t,e,r,n){void 0===e&&(e=[]),void 0===r&&(r=null),void 0===n&&(n=!1),this.validateEvt(t);var o=0,a=this.normalStore;if(this.logger("($trigger)","normalStore",a),a.has(t)){var i=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",i),!0===i)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(a.get(t)),c=u.length,f=!1,s=0;s0;)n[o]=arguments[o+2];if(t.has(e)?(this.logger("(addToStore)",e+" existed"),r=t.get(e)):(this.logger("(addToStore)","create new Set for "+e),r=new Set),n.length>2)if(Array.isArray(n[0])){var a=n[2];this.checkTypeInLazyStore(e,a)||r.add(n)}else this.checkContentExist(n,r)||(this.logger("(addToStore)","insert new",n),r.add(n));else r.add(n);return t.set(e,r),[t,r.size]},e.prototype.checkContentExist=function(t,e){return!!Array.from(e).filter((function(e){return e[0]===t[0]})).length},e.prototype.checkTypeInStore=function(t,e){this.validateEvt(t,e);var r=this.$get(t,!0);return!1===r||!r.filter((function(t){var r=t[3];return e!==r})).length},e.prototype.checkTypeInLazyStore=function(t,e){this.validateEvt(t,e);var r=this.lazyStore.get(t);return this.logger("(checkTypeInLazyStore)",r),!!r&&!!Array.from(r).filter((function(t){return t[2]!==e})).length},e.prototype.addToNormalStore=function(t,e,r,n){if(void 0===n&&(n=null),this.logger("(addToNormalStore)",t,e,"try to add to normal store"),this.checkTypeInStore(t,e)){this.logger("(addToNormalStore)",e+" can add to "+t+" normal store");var o=this.hashFnToKey(r),a=[this.normalStore,t,o,r,n,e],i=Reflect.apply(this.addToStore,this,a),u=i[0],c=i[1];return this.normalStore=u,c}return!1},e.prototype.addToLazyStore=function(t,e,r,n){void 0===e&&(e=[]),void 0===r&&(r=null),void 0===n&&(n=!1);var o=[this.lazyStore,t,this.toArray(e),r];n&&o.push(n);var a=Reflect.apply(this.addToStore,this,o),i=a[0],u=a[1];return this.lazyStore=i,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){pa.set(this,t)},r.normalStore.get=function(){return pa.get(this)},r.lazyStore.set=function(t){ha.set(this,t)},r.lazyStore.get=function(){return ha.get(this)},e.prototype.hashFnToKey=function(t){return function(t){return t.split("").reduce((function(t,e){return(t=(t<<5)-t+e.charCodeAt(0))&t}),0)}(t.toString())+""},Object.defineProperties(e.prototype,r),e}(va))),ya=function(t){var e=ca(t);if(!1!==e)return e;throw new i("Missing property in contract!")};function ba(t){var e,r,n=t.contract;return t.enableAuth?function(t,e){void 0===e&&(e=!1);var r=ca(t);if(!1===r){if(e)return t;throw new D("socket not found in contract!")}var n,o={},a=0;for(var i in r){var u=r[i],c=u.namespace;c&&(o[c]||(++a,o[c]={}),o[c][i]=u,n||u.public&&(n=c))}return{size:a,nspSet:o,publicNamespace:n}}(n):((r={})[z]=((e={})[h]=ya(n),e),r[N]=h,r)}var _a=function(t,e){return"ws"===e?t.replace("http://","ws://"):t},ma=function(){try{return[window.location.protocol,window.location.host].join("//")}catch(t){throw new JsonqlValidationError(t)}},wa=function(t,e){Zo(e).forEach((function(e){t.$off(ea(e,T))}))};function ja(t,e,r){ta(t,p)?r(t[p]):ta(t,l)?e(t[l]):r({message:G,error:t})}function Sa(t,e,r,n,o){void 0===o&&(o=[]);var a=ea(e,T),i=n?W:x;return t.$trigger(a,[r,Zo(o)]),new Promise((function(n,o){t.$on(ea(e,r,i),(function(t){ja(t,n,o)}))}))}var Oa=function(t,e,r,n,o,a){return aa(t,"send",(function(t){var i=a?L:q;Ko(Zo(t),o.params,!0).then((function(o){if(!o[p]||!o[p].length)return Sa(e,r,n,a,t);e.$call(ea(r,n,i),[new s(n,o[p])])})).catch((function(t){e.$call(ea(r,n,i),[new s(n,t)])}))}),(function(){return function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];return Ko(t,o.params,!0).then((function(t){return Sa(e,r,n,a,t)})).catch(H)}}))};function ka(t,e,r,n,o){return[ua(t,K,(function(t,o){if(Go(t)&&ra(o))switch(t){case W:e.$on(ea(r,n,x),(function(t){ja(t,o,(function(t){e.$trigger(ea(r,n,q),t)}))}));break;case F:e.$only(ea(r,n,C),(function(t){ja(t,o,(function(t){e.$trigger(ea(r,n,q),t)}))}));break;case J:e.$only(ea(r,n,q),o);break;default:e.$trigger(ea(r,n,q),new D(n,"Unknown event name "+t+"!"))}})),e,r,n,o]}var Ea=function(t,e,r,n,o,a){return[ua(t,"myNamespace",r),e,r,n,o,a]},$a=function(t,e,r,n,o,a){return[aa(t,x,(function(t){ra(t)&&e.$on(ea(r,n,x),(function(o){ja(o,t,(function(t){e.$trigger(ea(r,n,q),t)}))}))})),e,r,n,o,a]},Ta=function(t,e,r,n,o,a){return[aa(t,C,(function(t){if(ra(t)){e.$only(ea(r,n,C),(function(o){ja(o,t,(function(t){e.$trigger(ea(r,n,q),t)}))}))}})),e,r,n,o,a]},Aa=function(t,e,r,n,o,a){return[aa(t,q,(function(t){ra(t)&&e.$only(ea(r,n,q),t)})),e,r,n,o,a]};function Pa(t,e,r,n,o,a){var i=[Ea];a?i.push(ka):i.push($a,Ta,Aa),i.push(Oa);var u=Reflect.apply(na,null,i);return Reflect.apply(u,null,[n,o,t,e,r,a])}function za(t,e,r,n,o){return function(){for(var a=[],i=arguments.length;i--;)a[i]=arguments[i];return Ko(a,n.params,!0).then((function(n){return Sa(t,e,r,o,n)})).catch(H)}}var Na,Ca,xa=function(t,e,r){return[ua(t,r.loginHandlerName,(function(t){if(t&&Go(t))return e.$trigger(E,[t]);throw new s(r.loginHandlerName,"Unexpected token "+t)})),e,r]},qa=function(t,e,r){return ua(t,r.logoutHandlerName,(function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger($,t)}))};function Ra(t,e,r){var n={},o=e.nspSet,a=t.useCallbackStyle;for(var i in o){var u=o[i];for(var c in u){var f=u[c];n=ua(n,c,Pa(i,c,f,za(r,i,c,f,a),r,a))}}return n.devHelpers={getNsp:function(){return Object.keys(o)},getVer:function(){return t.version||"NOT SET"}},Promise.resolve(n)}function Ma(t,e,r){var n=e.nspSet,o=t.useCallbackStyle,a=t.enableAuth,i=[Ra];return o?i.push((function(t){return function(t,e,r,n){return ua(t,K,(function(t,n){if(Go(t)&&ra(n))switch(t){case L:for(var o in r)e.$on(ea(o,L),n);break;case I:e.$only(I,n);break;case J:e.$on(J,n);break;default:e.$trigger(L,new D(K,"Unknown event name "+t+"!"))}}))}(t,r,n)})):(i.push((function(t){return function(t,e,r){return aa(t,q,(function(t){if(ra(t))for(var n in r)e.$on(ea(n,q),t)}))}(t,r,n)}),(function(t){return function(t,e,r){return aa(t,R,(function(t){ra(t)&&e.$on(R,t)}))}(t,r)})),a&&i.push((function(e){return function(t,e,r){return r.enableAuth?aa(t,M,(function(t){ra(t)&&e.$only(M,t)})):t}(e,r,t)}))),a&&i.push((function(e){return function(t,e,r){return r.enableAuth?na(xa,qa)(t,e,r):t}(e,r,t)})),Reflect.apply(oa,null,i)(t,e,r)}var Fa=["roundtip","handshake"],Wa={useCallbackStyle:Qo(!1,["boolean"]),loginHandlerName:Qo("login",["string"]),logoutHandlerName:Qo("logout",["string"]),loginMethod:Qo("handshake",["string"],(Na={},Na[m]=Fa,Na)),useJwt:Qo(!0,["boolean","string"]),hostname:Qo(!1,["string"]),namespace:Qo(h,["string"]),wsOptions:Qo({},["object"]),contract:Qo({},["object"],(Ca={},Ca[j]=function(t){return!!function(t){return pe(t)&&(ta(t,v)||ta(t,g)||ta(t,d))}(t)&&t},Ca)),enableAuth:Qo(!1,["boolean"]),token:Qo(!1,["string"])},La={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};function Ja(t,e){return function(t,e,r){return ia(t,O)?(console.info("[jsonql-ws-client-core] found CHECKED_KEY passed"),Promise.resolve(Object.assign(t,r))):Xo(t,e,r)}(t,Wa,Object.assign(La,e)).then((function(t){return t.hostname||(t.hostname=ma()),t.wssPath=_a([t.hostname,t.namespace].join("/"),t.serverType),t}))}var Ia=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];Reflect.apply(console.info,console,["[jsonql-ws-client-core]"].concat(t))},Ua=function(t){var e=t.log;return t.eventEmitter?(e("eventEmitter is:",eventEmitter.name),t.eventEmitter):(e("Create a new Event Emitter"),new da(t.log))};var Da={version:"version: 1.0.4 module: umd",serverType:"ws"},Va=null;"undefined"!=typeof WebSocket?Va=WebSocket:"undefined"!=typeof MozWebSocket?Va=MozWebSocket:void 0!==Q?Va=Q.WebSocket||Q.MozWebSocket:"undefined"!=typeof window?Va=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Va=self.WebSocket||self.MozWebSocket);var Ha=function(t){var e=t.toLowerCase();return e.indexOf("http")>-1?e.indexOf("https")>-1?e.replace("https","wss"):e.replace("http","ws"):e};function Ba(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(Ha(e))}:function(e,r){var n=Ha(e),o=r&&"string"==typeof r?n+"?"+U+"="+r:n;try{return new t(o)}catch(t){return console.error("WebSocket Connection Error",t),!1}}}function Ya(t,e){var r=e.hostname,n=e.wssPath,o=e.wsOptions;return(0,e.nspClient)(t?[r,t].join("/"):n,o)}var Ga=function(t,e,r){var n=r.useCallbackStyle,o=r.log,a=n?L:q,i=n?W:x;e.$only(ea(t,Y),(function(r,n){o("[notLoginHandler] hijack the ws call",t,r,n);var u={message:"NOT LOGIN"};e.$call(ea(t,r,a),[u]),e.$call(ea(t,r,i),[{error:u}])}))},Ka=function(t){return t.length>1&&t[0]};function Qa(t,e,r,n,o,a){var i=Ka(o),u=!1,c=t.log;o.forEach((function(o){if(u=i===o,a[o]){c("[call bindWsHandler]",u,o);var f=[o,a[o],r,u,t];if(t.serverType===B){var s=e.nspSet;f.push(s[o])}Reflect.apply(n,null,f)}else Ga(o,r,t)})),r.$on($,(function(){c("LOGOUT_EVENT_NAME"),function(t,e,r,n){void 0===n&&(n={});var o=n.useCallbackStyle?L:q;e.forEach((function(e){t.$call(ea(e,o),[{message:r,namespace:e}])}))}(r,o,$),o.forEach((function(e){wa(r,e),a[e]=!1,Ga(e,r,t)}))}))}var Xa=["__reply__","__event__","__data__"],Za=function(t){var e,r=t.data;if(!1!==(e=function(t){var e=t.data;return!!e&&(Xa.filter((function(t){return ta(e,t)})).length===Xa.length&&e)}(Go(r)?JSON.parse(r):r)))return{resolverName:e.__event__,data:e.__data__,type:e.__reply__};throw new D("payload can not be decoded",t)},ti=function(t,e,r,n,o){var a=[e];r&&a.push(r),a.push(o);var i=Reflect.apply(ea,null,a),u=n.data||n;t.$trigger(i,[u])};function ei(t,e,r,n,o){var a=o.useCallbackStyle,i=o.log;i("wsMainHandler log test");var u=a?J:R,c=a?I:M,f=a?F:C,s=a?W:x,l=a?L:q;e.onopen=function(){i("ws.onopen listened"),r.$call(u,t),n&&(i("isPrivate and fire the "+c),r.$call(c,t)),r.$only(ea(t,T),(function(t,r){i("calling server",t,r),e.send(function(t,e,r){return void 0===e&&(e=[]),void 0===r&&(r=!1),JSON.stringify(la(t,e,r))}(t,r))}))},e.onmessage=function(e){try{var n=Za(e),o=n.resolverName,a=n.type;switch(i("Hear from server",a,n),a){case T:var u=ea(t,o,f),c=r.$trigger(u,[n]);i("EMIT_REPLY_TYPE",u,c);break;case A:var p=ea(t,o,s);r.$trigger(p,[n]);break;case P:i("ERROR_TYPE"),ti(r,t,o,n,l);break;default:i("Unhandled event!",n),ti(r,t,o,n,l)}}catch(e){console.error("ws.onmessage error",e),ti(r,t,!1,e,l)}},e.onclose=function(){i("ws.onclose callback")},r.$on($,(function(){try{i("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}var ri=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth)i=!0,c=(u=function(t,e){var r=[];for(var n in t)n===e?r[1]=n:r[0]=n;return r}(o,a)).map((function(e,n){var o,a,i;return 0===n?r?(t.token=r,(o={})[e]=function(t,e){var r=e.hostname,n=e.wssPath,o=e.token,a=e.wsOptions,i=e.nspAuthClient,u=t?[r,t].join("/"):n;if(o&&"string"!=typeof o)throw new Error("Expect token to be string, but got "+o);return i(u,o,a)}(e,t),o):((a={})[e]=!1,a):((i={})[e]=Ya(e,t),i)})).reduce((function(t,e){return Object.assign(t,e)}),{});else{var f=(n=o,Object.keys(n)[0]);u.push(f),c[f]=Ya(!1,t)}return{nsps:c,namespaces:u,login:i}};var ni=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];Reflect.apply(console.info,console,["local log"].concat(t))};return function(t,e){return void 0===e&&(e={}),function(r){return Ja(r,e).then((function(t){var e=t.log;return e&&"function"==typeof e||(t.log=Ia),t.log("--- wsClientCore config opts ---",t),t})).then((function(t){return{opts:t,nspMap:ba(t),ee:Ua(t)}})).then((function(e){var r=e.opts,n=e.nspMap,o=e.ee;return t(r,n,o)})).then((function(t){return Ma(t.opts,t.nspMap,t.ee)})).catch((function(t){console.error("jsonql-ws-client init error",t)}))}}(function(t){var e=Ba(t),r=Ba(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,t.log&&"function"==typeof t.log||(console.info("No log provided!"),t.log=ni),t.log("@jsonql/ws ee",o.name),t.log("@jsonql/ws createClientResolver",t),function(t,e,r){var n=[t,e,r,ei],o=t.token,a=t.log,i=ri(t,e,o),u=i.nsps,c=i.namespaces,f=i.login;return Reflect.apply(Qa,null,n.concat([c,u])),f&&r.$only(E,(function(o){a("createClient LOGIN_EVENT_NAME"),wa(r,c);var i=ri(t,e,o);Reflect.apply(Qa,null,n.concat([i.namespaces,i.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(Va),Da)})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).jsonqlWsClient=e()}(this,(function(){"use strict";var t=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 406},r.name.get=function(){return"Jsonql406Error"},Object.defineProperties(e,r),e}(Error),e=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 500},r.name.get=function(){return"Jsonql500Error"},Object.defineProperties(e,r),e}(Error),r=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 403},r.name.get=function(){return"JsonqlForbiddenError"},Object.defineProperties(e,r),e}(Error),n=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 401},r.name.get=function(){return"JsonqlAuthorisationError"},Object.defineProperties(e,r),e}(Error),o=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 401},r.name.get=function(){return"JsonqlContractAuthError"},Object.defineProperties(e,r),e}(Error),a=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 500},r.name.get=function(){return"JsonqlResolverAppError"},Object.defineProperties(e,r),e}(Error),i=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 404},r.name.get=function(){return"JsonqlResolverNotFoundError"},Object.defineProperties(e,r),e}(Error),u=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlEnumError"},Object.defineProperties(e,r),e}(Error),c=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlTypeError"},Object.defineProperties(e,r),e}(Error),f=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),s=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlValidationError"},Object.defineProperties(e,r),e}(Error),l="data",p="error",h="jsonql",v="query",g="mutation",d="socket",y="TS",b="type",_="optional",m="enumv",w="args",j="checker",S="alias",O="__checked__",k="No message",E="__login__",$="__logout__",T="emit",A="acknowledge",P="error",z="nspSet",N="publicNamespace",C="onMessage",x="onResult",q="onError",R="onReady",M="onLogin",F="message",W="result",L="error",J="ready",I="login",U="token",D=function(t){function e(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t.apply(this,r),this.message=r[0],this.detail=r[1],this.className=e.name,t.captureStackTrace&&t.captureStackTrace(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0},statusCode:{configurable:!0}};return r.name.get=function(){return"JsonqlError"},r.statusCode.get=function(){return-1},Object.defineProperties(e,r),e}(Error),V=function(t){function e(r,n){t.call(this,n),this.statusCode=r,this.className=e.name}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlServerError"},Object.defineProperties(e,r),e}(Error);function H(l){if(Array.isArray(l))throw new s("",l);var p=l.message||k,h=l.detail||l;switch(!0){case l instanceof t:throw new t(p,h);case l instanceof e:throw new e(p,h);case l instanceof r:throw new r(p,h);case l instanceof n:throw new n(p,h);case l instanceof o:throw new o(p,h);case l instanceof a:throw new a(p,h);case l instanceof i:throw new i(p,h);case l instanceof u:throw new u(p,h);case l instanceof c:throw new c(p,h);case l instanceof f:throw new f(p,h);case l instanceof s:throw new s(p,h);case l instanceof V:throw new V(p,h);default:throw new D(p,h)}}var B="socket.io",Y=T,G="UKNNOWN RESULT!",K="on",Q="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},X="object"==typeof Q&&Q&&Q.Object===Object&&Q,Z="object"==typeof self&&self&&self.Object===Object&&self,tt=X||Z||Function("return this")(),et=tt.Symbol;function rt(t,e){for(var r=-1,n=null==t?0:t.length,o=Array(n);++r=n?t:function(t,e,r){var n=-1,o=t.length;e<0&&(e=-e>o?0:o+e),(r=r>o?o:r)<0&&(r+=o),o=e>r?0:r-e>>>0,e>>>=0;for(var a=Array(o);++n-1;);return r}(n,o),function(t,e){for(var r=t.length;r--&&jt(e,t[r],0)>-1;);return r}(n,o)+1).join("")}var Ft=function(t){return!!nt(t)||null!=t&&""!==Mt(t)},Wt="[object Number]";function Lt(t){return function(t){return"number"==typeof t||ht(t)&&pt(t)==Wt}(t)&&t!=+t}var Jt="[object String]";function It(t){return"string"==typeof t||!nt(t)&&ht(t)&&pt(t)==Jt}var Ut=function(t){return!It(t)&&!Lt(parseFloat(t))},Dt=function(t){return""!==Mt(t)&&It(t)},Vt=function(t){return null!=t&&"boolean"==typeof t},Ht=function(t,e){return void 0===e&&(e=!0),void 0!==t&&""!==t&&""!==Mt(t)&&(!1===e||!0===e&&null!==t)},Bt=b,Yt=_,Gt=m,Kt=w,Qt=j,Xt=S,Zt="continue",te=function(t){switch(t){case"number":return Ut;case"string":return Dt;case"boolean":return Vt;default:return Ht}},ee=function(t,e){return void 0===e&&(e=""),!!nt(t)&&(""===e||""===Mt(e)||!(t.filter((function(t){return!te(e)(t)})).length>0))},re=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},ne=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!te(e)(t)})).length)})).length:e.length>e.filter((function(t){return!ee(r,t)})).length};function oe(t,e){return function(r){return t(e(r))}}var ae=oe(Object.getPrototypeOf,Object),ie="[object Object]",ue=Function.prototype,ce=Object.prototype,fe=ue.toString,se=ce.hasOwnProperty,le=fe.call(Object);function pe(t){if(!ht(t)||pt(t)!=ie)return!1;var e=ae(t);if(null===e)return!0;var r=se.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&fe.call(r)==le}var he,ve=function(t,e,r){for(var n=-1,o=Object(t),a=r(t),i=a.length;i--;){var u=a[he?i:++n];if(!1===e(o[u],u,o))break}return t};var ge="[object Arguments]";function de(t){return ht(t)&&pt(t)==ge}var ye=Object.prototype,be=ye.hasOwnProperty,_e=ye.propertyIsEnumerable,me=de(function(){return arguments}())?de:function(t){return ht(t)&&be.call(t,"callee")&&!_e.call(t,"callee")};var we="object"==typeof exports&&exports&&!exports.nodeType&&exports,je=we&&"object"==typeof module&&module&&!module.nodeType&&module,Se=je&&je.exports===we?tt.Buffer:void 0,Oe=(Se?Se.isBuffer:void 0)||function(){return!1},ke=9007199254740991,Ee=/^(?:0|[1-9]\d*)$/;function $e(t,e){var r=typeof t;return!!(e=null==e?ke:e)&&("number"==r||"symbol"!=r&&Ee.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Te}var Pe={};Pe["[object Float32Array]"]=Pe["[object Float64Array]"]=Pe["[object Int8Array]"]=Pe["[object Int16Array]"]=Pe["[object Int32Array]"]=Pe["[object Uint8Array]"]=Pe["[object Uint8ClampedArray]"]=Pe["[object Uint16Array]"]=Pe["[object Uint32Array]"]=!0,Pe["[object Arguments]"]=Pe["[object Array]"]=Pe["[object ArrayBuffer]"]=Pe["[object Boolean]"]=Pe["[object DataView]"]=Pe["[object Date]"]=Pe["[object Error]"]=Pe["[object Function]"]=Pe["[object Map]"]=Pe["[object Number]"]=Pe["[object Object]"]=Pe["[object RegExp]"]=Pe["[object Set]"]=Pe["[object String]"]=Pe["[object WeakMap]"]=!1;var ze,Ne="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ce=Ne&&"object"==typeof module&&module&&!module.nodeType&&module,xe=Ce&&Ce.exports===Ne&&X.process,qe=function(){try{var t=Ce&&Ce.require&&Ce.require("util").types;return t||xe&&xe.binding&&xe.binding("util")}catch(t){}}(),Re=qe&&qe.isTypedArray,Me=Re?(ze=Re,function(t){return ze(t)}):function(t){return ht(t)&&Ae(t.length)&&!!Pe[pt(t)]},Fe=Object.prototype.hasOwnProperty;function We(t,e){var r=nt(t),n=!r&&me(t),o=!r&&!n&&Oe(t),a=!r&&!n&&!o&&Me(t),i=r||n||o||a,u=i?function(t,e){for(var r=-1,n=Array(t);++r-1},rr.prototype.set=function(t,e){var r=this.__data__,n=tr(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var nr,or=tt["__core-js_shared__"],ar=(nr=/[^.]+$/.exec(or&&or.keys&&or.keys.IE_PROTO||""))?"Symbol(src)_1."+nr:"";var ir=Function.prototype.toString;function ur(t){if(null!=t){try{return ir.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var cr=/^\[object .+?Constructor\]$/,fr=Function.prototype,sr=Object.prototype,lr=fr.toString,pr=sr.hasOwnProperty,hr=RegExp("^"+lr.call(pr).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function vr(t){return!(!De(t)||function(t){return!!ar&&ar in t}(t))&&(Ge(t)?hr:cr).test(ur(t))}function gr(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return vr(r)?r:void 0}var dr=gr(tt,"Map"),yr=gr(Object,"create");var br="__lodash_hash_undefined__",_r=Object.prototype.hasOwnProperty;var mr=Object.prototype.hasOwnProperty;var wr="__lodash_hash_undefined__";function jr(t){var e=-1,r=null==t?0:t.length;for(this.clear();++eu))return!1;var f=a.get(t);if(f&&a.get(e))return f==e;var s=-1,l=!0,p=r&zr?new Tr:void 0;for(a.set(t,e),a.set(e,t);++se.type.filter((function(t){var e;return void 0===r||(!1!==(e=re(t))?!ne({arg:r},e):!te(t)(r))})).length)})).length}return!1},Xn=function(t,e){var r,n,o,a,i;switch(!0){case"object"===t:return o=(n=e).arg,a=n.param,i=[o],Array.isArray(a.keys)&&a.keys.length&&i.push(a.keys),!Reflect.apply(Qn,null,i);case"array"===t:return!ee(e.arg);case!1!==(r=re(t)):return!ne(e,r);default:return!te(t)(e.arg)}},Zn=function(t,e){return void 0!==t?t:!0===e.optional&&void 0!==e.defaultvalue?e.defaultvalue:null},to=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!ee(e))throw new D("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!ee(t))throw new D("args is not an array! You might want to do: ES6 Array.from(arguments) or ES5 Array.prototype.slice.call(arguments)");switch(!0){case t.length==e.length:return t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:var r=e[0].type;return t.map((function(t,n){return{arg:t,index:n,param:e[n]||{type:r,name:"_"}}}));case t.lengthe.length:var n=e.length,o=["any"];return t.map((function(t,r){var a=r>=n||!!e[r].optional,i=e[r]||{type:o,name:"_"+r};return{arg:a?Zn(t,i):t,index:r,param:i,optional:a}}));default:throw new D("Could not understand your arguments and parameter structure!",{args:t,params:e})}}(t,e),a=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var e=t.arg,r=t.param;return!!Ft(e)&&!(r.type.length>r.type.filter((function(e){return Xn(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Xn(e,t)})).length)}));return r?((n={})[p]=a,n[l]=o.map((function(t){return t.arg})),n):a},eo=function(){try{var t=gr(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();function ro(t,e,r){"__proto__"==e&&eo?eo(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}function no(t,e,r){(void 0===r||Ze(t[e],r))&&(void 0!==r||e in t)||ro(t,e,r)}var oo="object"==typeof exports&&exports&&!exports.nodeType&&exports,ao=oo&&"object"==typeof module&&module&&!module.nodeType&&module,io=ao&&ao.exports===oo?tt.Buffer:void 0,uo=io?io.allocUnsafe:void 0;function co(t,e){var r,n,o=e?(r=t.buffer,n=new r.constructor(r.byteLength),new Cr(n).set(new Cr(r)),n):t.buffer;return new t.constructor(o,t.byteOffset,t.length)}var fo=Object.create,so=function(){function t(){}return function(e){if(!De(e))return{};if(fo)return fo(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();function lo(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var po=Object.prototype.hasOwnProperty;function ho(t,e,r){var n=t[e];po.call(t,e)&&Ze(n,r)&&(void 0!==r||e in t)||ro(t,e,r)}var vo=Object.prototype.hasOwnProperty;function go(t){if(!De(t))return function(t){var e=[];if(null!=t)for(var r in Object(t))e.push(r);return e}(t);var e=Je(t),r=[];for(var n in t)("constructor"!=n||!e&&vo.call(t,n))&&r.push(n);return r}function yo(t){return Ke(t)?We(t,!0):go(t)}function bo(t){return function(t,e,r,n){var o=!r;r||(r={});for(var a=-1,i=e.length;++a0){if(++e>=Oo)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(So);function To(t,e){return $o(function(t,e,r){return e=jo(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,a=jo(n.length-e,0),i=Array(a);++o1?e[n-1]:void 0,a=n>2?e[2]:void 0;for(o=Ao.length>3&&"function"==typeof o?(n--,o):void 0,a&&function(t,e,r){if(!De(r))return!1;var n=typeof e;return!!("number"==n?Ke(r)&&$e(e,r.length):"string"==n&&e in r)&&Ze(r[e],t)}(e[0],e[1],a)&&(o=n<3?void 0:o,n=1),t=Object(t);++r0;)e[r]=arguments[r+1];return function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];return e.reduce((function(t,e){return Reflect.apply(e,null,Xo(t))}),Reflect.apply(t,null,r))}};function na(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];return function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];return e.reduce((function(t,e){return t.then((function(t){return e(t)}))}),Reflect.apply(t,null,r))}}function oa(t,e,r,n){return void 0===n&&(n=null),void 0===Object.getOwnPropertyDescriptor(t,e)&&Object.defineProperty(t,e,{set:r,get:null===n?function(){return null}:n}),t}function aa(t,e){var r=Object.getOwnPropertyDescriptor(t,e);return void 0!==r&&r.value?r.value:r}function ia(t,e,r,n){void 0===n&&(n=!1);var o=aa(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}function ua(t){return!!Zo(t,"socket")&&t.socket}var ca=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},fa=function(t){var e;return(e={}).args=t,e};function sa(t,e,r){if(void 0===e&&(e=[]),void 0===r&&(r=!1),It(t)&&nt(e)){var n=fa(e);return!0===r?n:function(t,e){var r;return(r={})[t]=e,r[y]=[ca()],r}(t,n)}throw new s("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}function la(t,e){for(var r=[],n=arguments.length-2;n-- >0;)r[n]=arguments[n+2];var o=Reflect.apply(ra,null,r.concat([function(t){return ia(t,O,ca())}]));return function(r){return void 0===r&&(r={}),o(r,t,e)}}function pa(t,e){for(var r=[],n=arguments.length-2;n-- >0;)r[n]=arguments[n+2];return function(n){if(void 0===n&&(n={}),aa(n,O))return Promise.resolve(Po({},n,e));var o=Reflect.apply(la,null,[t,e].concat(r));return Promise.resolve(o(n))}}var ha=new WeakMap,va=new WeakMap;var ga=function(){this.__suspend__=null,this.queueStore=new Set},da={$suspend:{configurable:!0},$queues:{configurable:!0}};da.$suspend.set=function(t){var e=this;if("boolean"!=typeof t)throw new Error("$suspend only accept Boolean value!");var r=this.__suspend__;this.__suspend__=t,this.logger("($suspend)","Change from "+r+" --\x3e "+t),!0===r&&!1===t&&setTimeout((function(){e.release()}),1)},ga.prototype.$queue=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return!0===this.__suspend__&&(this.logger("($queue)","added to $queue",t),this.queueStore.add(t)),this.__suspend__},da.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},ga.prototype.release=function(){var t=this,e=this.queueStore.size;if(this.logger("(release)","Release was called "+e),e>0){var r=Array.from(this.queueStore);this.queueStore.clear(),this.logger("queue",r),r.forEach((function(e){t.logger(e),Reflect.apply(t.$trigger,t,e)})),this.logger("Release size "+this.queueStore.size)}},Object.defineProperties(ga.prototype,da);var ya=function(t){function e(e){if("function"!=typeof e)throw new Error("Just die here the logger is not a function!");t.call(this,{logger:e})}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={name:{configurable:!0}};return r.name.get=function(){return"jsonql-ws-client-core"},Object.defineProperties(e.prototype,r),e}(function(t){function e(e){void 0===e&&(e={}),t.call(this,e)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={$done:{configurable:!0}};return e.prototype.logger=function(){},e.prototype.$on=function(t,e,r){var n=this;void 0===r&&(r=null);this.validate(t,e);var o=this.takeFromStore(t);if(!1===o)return this.logger("($on)",t+" callback is not in lazy store"),this.addToNormalStore(t,"on",e,r);this.logger("($on)",t+" found in lazy store");var a=0;return o.forEach((function(o){var i=o[0],u=o[1],c=o[2];if(c&&"on"!==c)throw new Error("You are trying to register an event already been taken by other type: "+c);n.logger("($on)","call run on "+t),n.run(e,i,r||u),a+=n.addToNormalStore(t,"on",e,r||u)})),a},e.prototype.$once=function(t,e,r){void 0===r&&(r=null),this.validate(t,e);var n=this.takeFromStore(t);this.normalStore;if(!1===n)return this.logger("($once)",t+" not in the lazy store"),this.addToNormalStore(t,"once",e,r);this.logger("($once)",n);var o=Array.from(n)[0],a=o[0],i=o[1],u=o[2];if(u&&"once"!==u)throw new Error("You are trying to register an event already been taken by other type: "+u);this.logger("($once)","call run for "+t),this.run(e,a,r||i),this.$off(t)},e.prototype.$only=function(t,e,r){var n=this;void 0===r&&(r=null),this.validate(t,e);var o=!1,a=this.takeFromStore(t);(this.normalStore.has(t)||(this.logger("($only)",t+" add to store"),o=this.addToNormalStore(t,"only",e,r)),!1!==a)&&(this.logger("($only)",t+" found data in lazy store to execute"),Array.from(a).forEach((function(o){var a=o[0],i=o[1],u=o[2];if(u&&"only"!==u)throw new Error("You are trying to register an event already been taken by other type: "+u);n.logger("($only)","call run for "+t),n.run(e,a,r||i)})));return o},e.prototype.$onlyOnce=function(t,e,r){void 0===r&&(r=null),this.validate(t,e);var n=!1,o=this.takeFromStore(t);if(this.normalStore.has(t)||(this.logger("($onlyOnce)",t+" add to store"),n=this.addToNormalStore(t,"onlyOnce",e,r)),!1!==o){this.logger("($onlyOnce)",o);var a=Array.from(o)[0],i=a[0],u=a[1],c=a[2];if(c&&"onlyOnce"!==c)throw new Error("You are trying to register an event already been taken by other type: "+c);this.logger("($onlyOnce)","call run for "+t),this.run(e,i,r||u),this.$off(t)}return n},e.prototype.$replace=function(t,e,r,n){if(void 0===r&&(r=null),void 0===n&&(n="on"),this.validateType(n)){this.$off(t);var o=this["$"+n];return this.logger("($replace)",t,e),Reflect.apply(o,this,[t,e,r])}throw new Error(n+" is not supported!")},e.prototype.$trigger=function(t,e,r,n){void 0===e&&(e=[]),void 0===r&&(r=null),void 0===n&&(n=!1),this.validateEvt(t);var o=0,a=this.normalStore;if(this.logger("($trigger)","normalStore",a),a.has(t)){var i=this.$queue(t,e,r,n);if(this.logger("($trigger)",t,"found; add to queue: ",i),!0===i)return this.logger("($trigger)",t,"not executed. Exit now."),!1;for(var u=Array.from(a.get(t)),c=u.length,f=!1,s=0;s0;)n[o]=arguments[o+2];if(t.has(e)?(this.logger("(addToStore)",e+" existed"),r=t.get(e)):(this.logger("(addToStore)","create new Set for "+e),r=new Set),n.length>2)if(Array.isArray(n[0])){var a=n[2];this.checkTypeInLazyStore(e,a)||r.add(n)}else this.checkContentExist(n,r)||(this.logger("(addToStore)","insert new",n),r.add(n));else r.add(n);return t.set(e,r),[t,r.size]},e.prototype.checkContentExist=function(t,e){return!!Array.from(e).filter((function(e){return e[0]===t[0]})).length},e.prototype.checkTypeInStore=function(t,e){this.validateEvt(t,e);var r=this.$get(t,!0);return!1===r||!r.filter((function(t){var r=t[3];return e!==r})).length},e.prototype.checkTypeInLazyStore=function(t,e){this.validateEvt(t,e);var r=this.lazyStore.get(t);return this.logger("(checkTypeInLazyStore)",r),!!r&&!!Array.from(r).filter((function(t){return t[2]!==e})).length},e.prototype.addToNormalStore=function(t,e,r,n){if(void 0===n&&(n=null),this.logger("(addToNormalStore)",t,e,"try to add to normal store"),this.checkTypeInStore(t,e)){this.logger("(addToNormalStore)",e+" can add to "+t+" normal store");var o=this.hashFnToKey(r),a=[this.normalStore,t,o,r,n,e],i=Reflect.apply(this.addToStore,this,a),u=i[0],c=i[1];return this.normalStore=u,c}return!1},e.prototype.addToLazyStore=function(t,e,r,n){void 0===e&&(e=[]),void 0===r&&(r=null),void 0===n&&(n=!1);var o=[this.lazyStore,t,this.toArray(e),r];n&&o.push(n);var a=Reflect.apply(this.addToStore,this,o),i=a[0],u=a[1];return this.lazyStore=i,u},e.prototype.toArray=function(t){return Array.isArray(t)?t:[t]},r.normalStore.set=function(t){ha.set(this,t)},r.normalStore.get=function(){return ha.get(this)},r.lazyStore.set=function(t){va.set(this,t)},r.lazyStore.get=function(){return va.get(this)},e.prototype.hashFnToKey=function(t){return function(t){return t.split("").reduce((function(t,e){return(t=(t<<5)-t+e.charCodeAt(0))&t}),0)}(t.toString())+""},Object.defineProperties(e.prototype,r),e}(ga))),ba=function(t){var e=ua(t);if(!1!==e)return e;throw new i("Missing property in contract!")};function _a(t){var e,r,n=t.contract;return t.enableAuth?function(t,e){void 0===e&&(e=!1);var r=ua(t);if(!1===r){if(e)return t;throw new D("socket not found in contract!")}var n,o={},a=0;for(var i in r){var u=r[i],c=u.namespace;c&&(o[c]||(++a,o[c]={}),o[c][i]=u,n||u.public&&(n=c))}return{size:a,nspSet:o,publicNamespace:n}}(n):((r={})[z]=((e={})[h]=ba(n),e),r[N]=h,r)}var ma=function(t,e){return"ws"===e?t.replace("http://","ws://"):t},wa=function(){try{return[window.location.protocol,window.location.host].join("//")}catch(t){throw new s(t)}},ja=function(t,e){Xo(e).forEach((function(e){t.$off(ta(e,T))}))};function Sa(t,e,r){Zo(t,p)?r(t[p]):Zo(t,l)?e(t[l]):r({message:G,error:t})}function Oa(t,e,r,n,o){void 0===o&&(o=[]);var a=ta(e,T),i=n?W:x;return t.$trigger(a,[r,Xo(o)]),new Promise((function(n,o){t.$on(ta(e,r,i),(function(t){Sa(t,n,o)}))}))}var ka=function(t,e,r,n,o,a){return oa(t,"send",(function(t){var i=a?L:q;Go(Xo(t),o.params,!0).then((function(o){if(!o[p]||!o[p].length)return Oa(e,r,n,a,t);e.$call(ta(r,n,i),[new s(n,o[p])])})).catch((function(t){e.$call(ta(r,n,i),[new s(n,t)])}))}),(function(){return function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];return Go(t,o.params,!0).then((function(t){return Oa(e,r,n,a,t)})).catch(H)}}))};function Ea(t,e,r,n,o){return[ia(t,K,(function(t,o){if(Yo(t)&&ea(o))switch(t){case W:e.$on(ta(r,n,x),(function(t){Sa(t,o,(function(t){e.$trigger(ta(r,n,q),t)}))}));break;case F:e.$only(ta(r,n,C),(function(t){Sa(t,o,(function(t){e.$trigger(ta(r,n,q),t)}))}));break;case J:e.$only(ta(r,n,q),o);break;default:e.$trigger(ta(r,n,q),new D(n,"Unknown event name "+t+"!"))}})),e,r,n,o]}var $a=function(t,e,r,n,o,a){return[ia(t,"myNamespace",r),e,r,n,o,a]},Ta=function(t,e,r,n,o,a){return[oa(t,x,(function(t){ea(t)&&e.$on(ta(r,n,x),(function(o){Sa(o,t,(function(t){e.$trigger(ta(r,n,q),t)}))}))})),e,r,n,o,a]},Aa=function(t,e,r,n,o,a){return[oa(t,C,(function(t){if(ea(t)){e.$only(ta(r,n,C),(function(o){Sa(o,t,(function(t){e.$trigger(ta(r,n,q),t)}))}))}})),e,r,n,o,a]},Pa=function(t,e,r,n,o,a){return[oa(t,q,(function(t){ea(t)&&e.$only(ta(r,n,q),t)})),e,r,n,o,a]};function za(t,e,r,n,o,a){var i=[$a];a?i.push(Ea):i.push(Ta,Aa,Pa),i.push(ka);var u=Reflect.apply(ra,null,i);return Reflect.apply(u,null,[n,o,t,e,r,a])}function Na(t,e,r,n,o){return function(){for(var a=[],i=arguments.length;i--;)a[i]=arguments[i];return Go(a,n.params,!0).then((function(n){return Oa(t,e,r,o,n)})).catch(H)}}var Ca,xa,qa=function(t,e,r){return[ia(t,r.loginHandlerName,(function(t){if(t&&Yo(t))return e.$trigger(E,[t]);throw new s(r.loginHandlerName,"Unexpected token "+t)})),e,r]},Ra=function(t,e,r){return ia(t,r.logoutHandlerName,(function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger($,t)}))};function Ma(t,e,r){var n={},o=e.nspSet,a=t.useCallbackStyle;for(var i in o){var u=o[i];for(var c in u){var f=u[c];n=ia(n,c,za(i,c,f,Na(r,i,c,f,a),r,a))}}return n.devHelpers={getNsp:function(){return Object.keys(o)},getVer:function(){return t.version||"NOT SET"}},Promise.resolve(n)}function Fa(t,e,r){var n=e.nspSet,o=t.useCallbackStyle,a=t.enableAuth,i=[Ma];return o?i.push((function(t){return function(t,e,r,n){return ia(t,K,(function(t,n){if(Yo(t)&&ea(n))switch(t){case L:for(var o in r)e.$on(ta(o,L),n);break;case I:e.$only(I,n);break;case J:e.$on(J,n);break;default:e.$trigger(L,new D(K,"Unknown event name "+t+"!"))}}))}(t,r,n)})):(i.push((function(t){return function(t,e,r){return oa(t,q,(function(t){if(ea(t))for(var n in r)e.$on(ta(n,q),t)}))}(t,r,n)}),(function(t){return function(t,e,r){return oa(t,R,(function(t){ea(t)&&e.$on(R,t)}))}(t,r)})),a&&i.push((function(e){return function(t,e,r){return r.enableAuth?oa(t,M,(function(t){ea(t)&&e.$only(M,t)})):t}(e,r,t)}))),a&&i.push((function(e){return function(t,e,r){return r.enableAuth?ra(qa,Ra)(t,e,r):t}(e,r,t)})),Reflect.apply(na,null,i)(t,e,r)}var Wa=["roundtip","handshake"],La={useCallbackStyle:Ko(!1,["boolean"]),loginHandlerName:Ko("login",["string"]),logoutHandlerName:Ko("logout",["string"]),loginMethod:Ko("handshake",["string"],(Ca={},Ca[m]=Wa,Ca)),useJwt:Ko(!0,["boolean","string"]),hostname:Ko(!1,["string"]),namespace:Ko(h,["string"]),wsOptions:Ko({},["object"]),contract:Ko({},["object"],(xa={},xa[j]=function(t){return!!function(t){return pe(t)&&(Zo(t,v)||Zo(t,g)||Zo(t,d))}(t)&&t},xa)),enableAuth:Ko(!1,["boolean"]),token:Ko(!1,["string"])},Ja={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};function Ia(t,e){return function(t,e){var r=Object.assign(Ja,e);return pa(La,r,Qo)(t)}(t,e).then((function(t){return t.hostname||(t.hostname=wa()),t.wssPath=ma([t.hostname,t.namespace].join("/"),t.serverType),t}))}var Ua=La,Da=Ja,Va=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];Reflect.apply(console.info,console,["[jsonql-ws-client-core]"].concat(t))},Ha=function(t){var e=t.log;return t.eventEmitter?(e("eventEmitter is:",t.eventEmitter.name),t.eventEmitter):(e("Create a new Event Emitter"),new ya(t.log))};var Ba=null;"undefined"!=typeof WebSocket?Ba=WebSocket:"undefined"!=typeof MozWebSocket?Ba=MozWebSocket:void 0!==Q?Ba=Q.WebSocket||Q.MozWebSocket:"undefined"!=typeof window?Ba=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Ba=self.WebSocket||self.MozWebSocket);var Ya=function(t){var e=t.toLowerCase();return e.indexOf("http")>-1?e.indexOf("https")>-1?e.replace("https","wss"):e.replace("http","ws"):e};function Ga(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(Ya(e))}:function(e,r){var n=Ya(e),o=r&&"string"==typeof r?n+"?"+U+"="+r:n;try{return new t(o)}catch(t){return console.error("WebSocket Connection Error",t),!1}}}function Ka(t,e){var r=e.hostname,n=e.wssPath,o=e.wsOptions;return(0,e.nspClient)(t?[r,t].join("/"):n,o)}var Qa=function(t,e,r){var n=r.useCallbackStyle,o=r.log,a=n?L:q,i=n?W:x;e.$only(ta(t,Y),(function(r,n){o("[notLoginHandler] hijack the ws call",t,r,n);var u={message:"NOT LOGIN"};e.$call(ta(t,r,a),[u]),e.$call(ta(t,r,i),[{error:u}])}))},Xa=function(t){return t.length>1&&t[0]};function Za(t,e,r,n,o,a){var i=Xa(o),u=!1,c=t.log;o.forEach((function(o){if(u=i===o,a[o]){c("[call bindWsHandler]",u,o);var f=[o,a[o],r,u,t];if(t.serverType===B){var s=e.nspSet;f.push(s[o])}Reflect.apply(n,null,f)}else Qa(o,r,t)})),r.$on($,(function(){c("LOGOUT_EVENT_NAME"),function(t,e,r,n){void 0===n&&(n={});var o=n.useCallbackStyle?L:q;e.forEach((function(e){t.$call(ta(e,o),[{message:r,namespace:e}])}))}(r,o,$),o.forEach((function(e){ja(r,e),a[e]=!1,Qa(e,r,t)}))}))}var ti=["__reply__","__event__","__data__"],ei=function(t){var e,r=t.data;if(!1!==(e=function(t){var e=t.data;return!!e&&(ti.filter((function(t){return Zo(e,t)})).length===ti.length&&e)}(Yo(r)?JSON.parse(r):r)))return{resolverName:e.__event__,data:e.__data__,type:e.__reply__};throw new D("payload can not be decoded",t)},ri=function(t,e,r,n,o){var a=[e];r&&a.push(r),a.push(o);var i=Reflect.apply(ta,null,a),u=n.data||n;t.$trigger(i,[u])};function ni(t,e,r,n,o){var a=o.useCallbackStyle,i=o.log;i("wsMainHandler log test");var u=a?J:R,c=a?I:M,f=a?F:C,s=a?W:x,l=a?L:q;e.onopen=function(){i("ws.onopen listened"),r.$call(u,t),n&&(i("isPrivate and fire the "+c),r.$call(c,t)),r.$only(ta(t,T),(function(t,r){i("calling server",t,r),e.send(function(t,e,r){return void 0===e&&(e=[]),void 0===r&&(r=!1),JSON.stringify(sa(t,e,r))}(t,r))}))},e.onmessage=function(e){try{var n=ei(e),o=n.resolverName,a=n.type;switch(i("Hear from server",a,n),a){case T:var u=ta(t,o,f),c=r.$trigger(u,[n]);i("EMIT_REPLY_TYPE",u,c);break;case A:var p=ta(t,o,s);r.$trigger(p,[n]);break;case P:i("ERROR_TYPE"),ri(r,t,o,n,l);break;default:i("Unhandled event!",n),ri(r,t,o,n,l)}}catch(e){console.error("ws.onmessage error",e),ri(r,t,!1,e,l)}},e.onclose=function(){i("ws.onclose callback")},r.$on($,(function(){try{i("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}var oi=function(t,e,r){var n,o=e.nspSet,a=e.publicNamespace,i=!1,u=[],c={};if(t.enableAuth)i=!0,c=(u=function(t,e){var r=[];for(var n in t)n===e?r[1]=n:r[0]=n;return r}(o,a)).map((function(e,n){var o,a,i;return 0===n?r?(t.token=r,(o={})[e]=function(t,e){var r=e.hostname,n=e.wssPath,o=e.token,a=e.wsOptions,i=e.nspAuthClient,u=t?[r,t].join("/"):n;if(o&&"string"!=typeof o)throw new Error("Expect token to be string, but got "+o);return i(u,o,a)}(e,t),o):((a={})[e]=!1,a):((i={})[e]=Ka(e,t),i)})).reduce((function(t,e){return Object.assign(t,e)}),{});else{var f=(n=o,Object.keys(n)[0]);u.push(f),c[f]=Ka(!1,t)}return{nsps:c,namespaces:u,login:i}};var ai=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];Reflect.apply(console.info,console,["local log"].concat(t))};var ii=function(t){var e=Ga(t),r=Ga(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,t.log&&"function"==typeof t.log||(console.info("No log provided!"),t.log=ai),t.log("@jsonql/ws ee",o.name),t.log("@jsonql/ws createClientResolver",t),function(t,e,r){var n=[t,e,r,ni],o=t.token,a=t.log,i=oi(t,e,o),u=i.nsps,c=i.namespaces,f=i.login;return Reflect.apply(Za,null,n.concat([c,u])),f&&r.$only(E,(function(o){a("createClient LOGIN_EVENT_NAME"),ja(r,c);var i=oi(t,e,o);Reflect.apply(Za,null,n.concat([i.namespaces,i.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(Ba),ui={version:"version: 1.0.6 module: umd",serverType:"ws"};return function(t,e){return void 0===t&&(t={}),void 0===e&&(e={}),function(t,e){void 0===e&&(e={});var r=Object.assign(Da,ui,e);return pa(Ua,r,Qo)(t)}(t,e).then(function(t,e){return void 0===e&&(e={}),function(r){return Ia(r,e).then((function(t){var e=t.log;return e&&"function"==typeof e||(t.log=Va),t.log("--- wsClientCore config opts ---",t),t})).then((function(t){return{opts:t,nspMap:_a(t),ee:Ha(t)}})).then((function(e){var r=e.opts,n=e.nspMap,o=e.ee;return t(r,n,o)})).then((function(t){return Fa(t.opts,t.nspMap,t.ee)})).catch((function(t){console.error("jsonql-ws-client init error",t)}))}}(ii))}})); //# sourceMappingURL=jsonql-ws-client.umd.js.map diff --git a/packages/@jsonql/ws/index.js b/packages/@jsonql/ws/index.js index 174c5bdba993c4fff1dd8f33f1065166a391cbe0..2204296f304736022a5c7265d0ba6e93564474e2 100644 --- a/packages/@jsonql/ws/index.js +++ b/packages/@jsonql/ws/index.js @@ -1,8 +1,11 @@ // this is the module entry point for ES6 for client // the main will point to the node.js server side setup import { jsonqlWsClientCore } from 'jsonql-ws-client-core' -import { constProps } from './src/options' import wsClientResolver from './src/ws-client-resolver' +import { checkWsClientOptions } from './src/options' // export back the function and that's it -export default jsonqlWsClientCore(wsClientResolver, constProps) +export default function wsClient(config = {}, constProps = {}) { + return checkWsClientOptions(config, constProps) + .then(jsonqlWsClientCore(wsClientResolver)) +} diff --git a/packages/@jsonql/ws/node.js b/packages/@jsonql/ws/node.js index c6742437b899bf1dbac8ee60454f8df161c523d1..dc9aff9ab518e61d3d35c422695427b3323f76d3 100644 --- a/packages/@jsonql/ws/node.js +++ b/packages/@jsonql/ws/node.js @@ -1,2 +1,2 @@ -"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var WebSocket=_interopDefault(require("ws")),debug=_interopDefault(require("debug")),Jsonql406Error=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={statusCode:{configurable:!0},name:{configurable:!0}};return t.statusCode.get=function(){return 406},t.name.get=function(){return"Jsonql406Error"},Object.defineProperties(r,t),r}(Error),Jsonql500Error=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={statusCode:{configurable:!0},name:{configurable:!0}};return t.statusCode.get=function(){return 500},t.name.get=function(){return"Jsonql500Error"},Object.defineProperties(r,t),r}(Error),JsonqlForbiddenError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={statusCode:{configurable:!0},name:{configurable:!0}};return t.statusCode.get=function(){return 403},t.name.get=function(){return"JsonqlForbiddenError"},Object.defineProperties(r,t),r}(Error),JsonqlAuthorisationError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={statusCode:{configurable:!0},name:{configurable:!0}};return t.statusCode.get=function(){return 401},t.name.get=function(){return"JsonqlAuthorisationError"},Object.defineProperties(r,t),r}(Error),JsonqlContractAuthError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={statusCode:{configurable:!0},name:{configurable:!0}};return t.statusCode.get=function(){return 401},t.name.get=function(){return"JsonqlContractAuthError"},Object.defineProperties(r,t),r}(Error),JsonqlResolverAppError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={statusCode:{configurable:!0},name:{configurable:!0}};return t.statusCode.get=function(){return 500},t.name.get=function(){return"JsonqlResolverAppError"},Object.defineProperties(r,t),r}(Error),JsonqlResolverNotFoundError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={statusCode:{configurable:!0},name:{configurable:!0}};return t.statusCode.get=function(){return 404},t.name.get=function(){return"JsonqlResolverNotFoundError"},Object.defineProperties(r,t),r}(Error),JsonqlEnumError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={name:{configurable:!0}};return t.name.get=function(){return"JsonqlEnumError"},Object.defineProperties(r,t),r}(Error),JsonqlTypeError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={name:{configurable:!0}};return t.name.get=function(){return"JsonqlTypeError"},Object.defineProperties(r,t),r}(Error),JsonqlCheckerError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={name:{configurable:!0}};return t.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(r,t),r}(Error),JsonqlValidationError$1=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={name:{configurable:!0}};return t.name.get=function(){return"JsonqlValidationError"},Object.defineProperties(r,t),r}(Error),DATA_KEY="data",ERROR_KEY="error",JSONQL_PATH="jsonql",DEFAULT_TYPE="any",QUERY_NAME="query",MUTATION_NAME="mutation",SOCKET_NAME="socket",QUERY_ARG_NAME="args",TIMESTAMP_PARAM_NAME="TS",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",CHECKED_KEY="__checked__",LOGIN_NAME="login",ISSUER_NAME=LOGIN_NAME,LOGOUT_NAME="logout",OR_SEPERATOR="|",STRING_TYPE="string",BOOLEAN_TYPE="boolean",ARRAY_TYPE="array",OBJECT_TYPE="object",NUMBER_TYPE="number",ARRAY_TYPE_LFT="array.<",ARRAY_TYPE_RGT=">",NO_ERROR_MSG="No message",NO_STATUS_CODE=-1,LOGIN_EVENT_NAME="__login__",LOGOUT_EVENT_NAME="__logout__",WS_REPLY_TYPE="__reply__",WS_EVT_NAME="__event__",WS_DATA_NAME="__data__",EMIT_REPLY_TYPE="emit",ACKNOWLEDGE_REPLY_TYPE="acknowledge",ERROR_TYPE="error",NSP_SET="nspSet",PUBLIC_NAMESPACE="publicNamespace",JS_WS_SOCKET_IO_NAME="socket.io",JS_WS_NAME="ws",ON_MESSAGE_PROP_NAME="onMessage",ON_RESULT_PROP_NAME="onResult",ON_ERROR_PROP_NAME="onError",ON_READY_PROP_NAME="onReady",ON_LOGIN_PROP_NAME="onLogin",SEND_MSG_PROP_NAME="send",MESSAGE_PROP_NAME="message",RESULT_PROP_NAME="result",ERROR_PROP_NAME="error",READY_PROP_NAME="ready",LOGIN_PROP_NAME="login",NOT_LOGIN_ERR_MSG="NOT LOGIN",TOKEN_PARAM_NAME="token",IO_ROUNDTRIP_LOGIN="roundtip",IO_HANDSHAKE_LOGIN="handshake",JsonqlError=function(e){function r(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];e.apply(this,t),this.message=t[0],this.detail=t[1],this.className=r.name,e.captureStackTrace&&e.captureStackTrace(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={name:{configurable:!0},statusCode:{configurable:!0}};return t.name.get=function(){return"JsonqlError"},t.statusCode.get=function(){return NO_STATUS_CODE},Object.defineProperties(r,t),r}(Error),JsonqlServerError=function(e){function r(t,n){e.call(this,n),this.statusCode=t,this.className=r.name}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={name:{configurable:!0}};return t.name.get=function(){return"JsonqlServerError"},Object.defineProperties(r,t),r}(Error);function finalCatch(e){if(Array.isArray(e))throw new JsonqlValidationError$1("",e);var r=e.message||NO_ERROR_MSG,t=e.detail||e;switch(!0){case e instanceof Jsonql406Error:throw new Jsonql406Error(r,t);case e instanceof Jsonql500Error:throw new Jsonql500Error(r,t);case e instanceof JsonqlForbiddenError:throw new JsonqlForbiddenError(r,t);case e instanceof JsonqlAuthorisationError:throw new JsonqlAuthorisationError(r,t);case e instanceof JsonqlContractAuthError:throw new JsonqlContractAuthError(r,t);case e instanceof JsonqlResolverAppError:throw new JsonqlResolverAppError(r,t);case e instanceof JsonqlResolverNotFoundError:throw new JsonqlResolverNotFoundError(r,t);case e instanceof JsonqlEnumError:throw new JsonqlEnumError(r,t);case e instanceof JsonqlTypeError:throw new JsonqlTypeError(r,t);case e instanceof JsonqlCheckerError:throw new JsonqlCheckerError(r,t);case e instanceof JsonqlValidationError$1:throw new JsonqlValidationError$1(r,t);case e instanceof JsonqlServerError:throw new JsonqlServerError(r,t);default:throw new JsonqlError(r,t)}}var SOCKET_IO=JS_WS_SOCKET_IO_NAME,MISSING_PROP_ERR="Missing property in contract!",EMIT_EVT=EMIT_REPLY_TYPE,UNKNOWN_RESULT="UKNNOWN RESULT!",MY_NAMESPACE="myNamespace",CB_FN_NAME="on",global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},freeGlobal="object"==typeof global$1&&global$1&&global$1.Object===Object&&global$1,freeSelf="object"==typeof self&&self&&self.Object===Object&&self,root=freeGlobal||freeSelf||Function("return this")(),Symbol=root.Symbol;function arrayMap(e,r){for(var t=-1,n=null==e?0:e.length,o=Array(n);++to?0:o+r),(t=t>o?o:t)<0&&(t+=o),o=r>t?0:t-r>>>0,r>>>=0;for(var a=Array(o);++n=n?e:baseSlice(e,r,t)}function baseFindIndex(e,r,t,n){for(var o=e.length,a=t+(n?1:-1);n?a--:++a-1;);return t}function charsStartIndex(e,r){for(var t=-1,n=e.length;++t-1;);return t}function asciiToArray(e){return e.split("")}var rsAstralRange="\\ud800-\\udfff",rsComboMarksRange="\\u0300-\\u036f",reComboHalfMarksRange="\\ufe20-\\ufe2f",rsComboSymbolsRange="\\u20d0-\\u20ff",rsComboRange=rsComboMarksRange+reComboHalfMarksRange+rsComboSymbolsRange,rsVarRange="\\ufe0e\\ufe0f",rsZWJ="\\u200d",reHasUnicode=RegExp("["+rsZWJ+rsAstralRange+rsComboRange+rsVarRange+"]");function hasUnicode(e){return reHasUnicode.test(e)}var rsAstralRange$1="\\ud800-\\udfff",rsComboMarksRange$1="\\u0300-\\u036f",reComboHalfMarksRange$1="\\ufe20-\\ufe2f",rsComboSymbolsRange$1="\\u20d0-\\u20ff",rsComboRange$1=rsComboMarksRange$1+reComboHalfMarksRange$1+rsComboSymbolsRange$1,rsVarRange$1="\\ufe0e\\ufe0f",rsAstral="["+rsAstralRange$1+"]",rsCombo="["+rsComboRange$1+"]",rsFitz="\\ud83c[\\udffb-\\udfff]",rsModifier="(?:"+rsCombo+"|"+rsFitz+")",rsNonAstral="[^"+rsAstralRange$1+"]",rsRegional="(?:\\ud83c[\\udde6-\\uddff]){2}",rsSurrPair="[\\ud800-\\udbff][\\udc00-\\udfff]",rsZWJ$1="\\u200d",reOptMod=rsModifier+"?",rsOptVar="["+rsVarRange$1+"]?",rsOptJoin="(?:"+rsZWJ$1+"(?:"+[rsNonAstral,rsRegional,rsSurrPair].join("|")+")"+rsOptVar+reOptMod+")*",rsSeq=rsOptVar+reOptMod+rsOptJoin,rsSymbol="(?:"+[rsNonAstral+rsCombo+"?",rsCombo,rsRegional,rsSurrPair,rsAstral].join("|")+")",reUnicode=RegExp(rsFitz+"(?="+rsFitz+")|"+rsSymbol+rsSeq,"g");function unicodeToArray(e){return e.match(reUnicode)||[]}function stringToArray(e){return hasUnicode(e)?unicodeToArray(e):asciiToArray(e)}function toString(e){return null==e?"":baseToString(e)}var reTrim=/^\s+|\s+$/g;function trim(e,r,t){if((e=toString(e))&&(t||void 0===r))return e.replace(reTrim,"");if(!e||!(r=baseToString(r)))return e;var n=stringToArray(e),o=stringToArray(r);return castSlice(n,charsStartIndex(n,o),charsEndIndex(n,o)+1).join("")}var isNotEmpty=function(e){return!!isArray(e)||null!=e&&""!==trim(e)},numberTag="[object Number]";function isNumber(e){return"number"==typeof e||isObjectLike(e)&&baseGetTag(e)==numberTag}function isNaN(e){return isNumber(e)&&e!=+e}var stringTag="[object String]";function isString(e){return"string"==typeof e||!isArray(e)&&isObjectLike(e)&&baseGetTag(e)==stringTag}var checkIsNumber=function(e){return!isString(e)&&!isNaN(parseFloat(e))},checkIsString=function(e){return""!==trim(e)&&isString(e)},checkIsBoolean=function(e){return null!=e&&"boolean"==typeof e},checkIsAny=function(e,r){return void 0===r&&(r=!0),void 0!==e&&""!==e&&""!==trim(e)&&(!1===r||!0===r&&null!==e)},ARGS_NOT_ARRAY_ERR="args is not an array! You might want to do: ES6 Array.from(arguments) or ES5 Array.prototype.slice.call(arguments)",PARAMS_NOT_ARRAY_ERR="params is not an array! Did something gone wrong when you generate the contract.json?",EXCEPTION_CASE_ERR="Could not understand your arguments and parameter structure!",DEFAULT_TYPE$1=DEFAULT_TYPE,ARRAY_TYPE_LFT$1=ARRAY_TYPE_LFT,ARRAY_TYPE_RGT$1=ARRAY_TYPE_RGT,TYPE_KEY$1=TYPE_KEY,OPTIONAL_KEY$1=OPTIONAL_KEY,ENUM_KEY$1=ENUM_KEY,ARGS_KEY$1=ARGS_KEY,CHECKER_KEY$1=CHECKER_KEY,ALIAS_KEY$1=ALIAS_KEY,ARRAY_TYPE$1=ARRAY_TYPE,OBJECT_TYPE$1=OBJECT_TYPE,STRING_TYPE$1=STRING_TYPE,BOOLEAN_TYPE$1=BOOLEAN_TYPE,NUMBER_TYPE$1=NUMBER_TYPE,KEY_WORD$1=KEY_WORD,OR_SEPERATOR$1=OR_SEPERATOR,combineFn=function(e){switch(e){case NUMBER_TYPE$1:return checkIsNumber;case STRING_TYPE$1:return checkIsString;case BOOLEAN_TYPE$1:return checkIsBoolean;default:return checkIsAny}},checkIsArray=function(e,r){return void 0===r&&(r=""),!!isArray(e)&&(""===r||""===trim(r)||!(e.filter((function(e){return!combineFn(r)(e)})).length>0))},isArrayLike=function(e){if(e.indexOf(ARRAY_TYPE_LFT$1)>-1&&e.indexOf(ARRAY_TYPE_RGT$1)>-1){var r=e.replace(ARRAY_TYPE_LFT$1,"").replace(ARRAY_TYPE_RGT$1,"");return r.indexOf(OR_SEPERATOR$1)?r.split(OR_SEPERATOR$1):[r]}return!1},arrayTypeHandler=function(e,r){var t=e.arg;return r.length>1?!t.filter((function(e){return!(r.length>r.filter((function(r){return!combineFn(r)(e)})).length)})).length:r.length>r.filter((function(e){return!checkIsArray(t,e)})).length};function overArg(e,r){return function(t){return e(r(t))}}var getPrototype=overArg(Object.getPrototypeOf,Object),objectTag="[object Object]",funcProto=Function.prototype,objectProto$2=Object.prototype,funcToString=funcProto.toString,hasOwnProperty$1=objectProto$2.hasOwnProperty,objectCtorString=funcToString.call(Object);function isPlainObject(e){if(!isObjectLike(e)||baseGetTag(e)!=objectTag)return!1;var r=getPrototype(e);if(null===r)return!0;var t=hasOwnProperty$1.call(r,"constructor")&&r.constructor;return"function"==typeof t&&t instanceof t&&funcToString.call(t)==objectCtorString}function arrayFilter(e,r){for(var t=-1,n=null==e?0:e.length,o=0,a=[];++t-1&&e%1==0&&e-1&&e%1==0&&e<=MAX_SAFE_INTEGER$1}var argsTag$1="[object Arguments]",arrayTag="[object Array]",boolTag="[object Boolean]",dateTag="[object Date]",errorTag="[object Error]",funcTag="[object Function]",mapTag="[object Map]",numberTag$1="[object Number]",objectTag$1="[object Object]",regexpTag="[object RegExp]",setTag="[object Set]",stringTag$1="[object String]",weakMapTag="[object WeakMap]",arrayBufferTag="[object ArrayBuffer]",dataViewTag="[object DataView]",float32Tag="[object Float32Array]",float64Tag="[object Float64Array]",int8Tag="[object Int8Array]",int16Tag="[object Int16Array]",int32Tag="[object Int32Array]",uint8Tag="[object Uint8Array]",uint8ClampedTag="[object Uint8ClampedArray]",uint16Tag="[object Uint16Array]",uint32Tag="[object Uint32Array]",typedArrayTags={};function baseIsTypedArray(e){return isObjectLike(e)&&isLength(e.length)&&!!typedArrayTags[baseGetTag(e)]}function baseUnary(e){return function(r){return e(r)}}typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=!0,typedArrayTags[argsTag$1]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dataViewTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag]=typedArrayTags[mapTag]=typedArrayTags[numberTag$1]=typedArrayTags[objectTag$1]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag$1]=typedArrayTags[weakMapTag]=!1;var freeExports$1="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule$1=freeExports$1&&"object"==typeof module&&module&&!module.nodeType&&module,moduleExports$1=freeModule$1&&freeModule$1.exports===freeExports$1,freeProcess=moduleExports$1&&freeGlobal.process,nodeUtil=function(){try{var e=freeModule$1&&freeModule$1.require&&freeModule$1.require("util").types;return e||freeProcess&&freeProcess.binding&&freeProcess.binding("util")}catch(e){}}(),nodeIsTypedArray=nodeUtil&&nodeUtil.isTypedArray,isTypedArray=nodeIsTypedArray?baseUnary(nodeIsTypedArray):baseIsTypedArray,objectProto$4=Object.prototype,hasOwnProperty$3=objectProto$4.hasOwnProperty;function arrayLikeKeys(e,r){var t=isArray(e),n=!t&&isArguments(e),o=!t&&!n&&isBuffer(e),a=!t&&!n&&!o&&isTypedArray(e),i=t||n||o||a,s=i?baseTimes(e.length,String):[],c=s.length;for(var u in e)!r&&!hasOwnProperty$3.call(e,u)||i&&("length"==u||o&&("offset"==u||"parent"==u)||a&&("buffer"==u||"byteLength"==u||"byteOffset"==u)||isIndex(u,c))||s.push(u);return s}var objectProto$5=Object.prototype;function isPrototype(e){var r=e&&e.constructor;return e===("function"==typeof r&&r.prototype||objectProto$5)}var nativeKeys=overArg(Object.keys,Object),objectProto$6=Object.prototype,hasOwnProperty$4=objectProto$6.hasOwnProperty;function baseKeys(e){if(!isPrototype(e))return nativeKeys(e);var r=[];for(var t in Object(e))hasOwnProperty$4.call(e,t)&&"constructor"!=t&&r.push(t);return r}function isObject(e){var r=typeof e;return null!=e&&("object"==r||"function"==r)}var asyncTag="[object AsyncFunction]",funcTag$1="[object Function]",genTag="[object GeneratorFunction]",proxyTag="[object Proxy]";function isFunction(e){if(!isObject(e))return!1;var r=baseGetTag(e);return r==funcTag$1||r==genTag||r==asyncTag||r==proxyTag}function isArrayLike$1(e){return null!=e&&isLength(e.length)&&!isFunction(e)}function keys(e){return isArrayLike$1(e)?arrayLikeKeys(e):baseKeys(e)}function baseForOwn(e,r){return e&&baseFor(e,r,keys)}function listCacheClear(){this.__data__=[],this.size=0}function eq(e,r){return e===r||e!=e&&r!=r}function assocIndexOf(e,r){for(var t=e.length;t--;)if(eq(e[t][0],r))return t;return-1}var arrayProto=Array.prototype,splice=arrayProto.splice;function listCacheDelete(e){var r=this.__data__,t=assocIndexOf(r,e);return!(t<0)&&(t==r.length-1?r.pop():splice.call(r,t,1),--this.size,!0)}function listCacheGet(e){var r=this.__data__,t=assocIndexOf(r,e);return t<0?void 0:r[t][1]}function listCacheHas(e){return assocIndexOf(this.__data__,e)>-1}function listCacheSet(e,r){var t=this.__data__,n=assocIndexOf(t,e);return n<0?(++this.size,t.push([e,r])):t[n][1]=r,this}function ListCache(e){var r=-1,t=null==e?0:e.length;for(this.clear();++rs))return!1;var u=a.get(e);if(u&&a.get(r))return u==r;var l=-1,f=!0,p=t&COMPARE_UNORDERED_FLAG?new SetCache:void 0;for(a.set(e,r),a.set(r,e);++lr.type.filter((function(e){var r;return void 0===t||(!1!==(r=isArrayLike(e))?!arrayTypeHandler({arg:t},r):!combineFn(e)(t))})).length)})).length}return!1},objectTypeHandler=function(e){var r=e.arg,t=e.param,n=[r];return Array.isArray(t.keys)&&t.keys.length&&n.push(t.keys),Reflect.apply(checkIsObject,null,n)},optionalHandler=function(e){var r=e.arg,t=e.param;return!!isNotEmpty(r)&&!(t.type.length>t.type.filter((function(r){return validateHandler(r,e)})).length)},validateHandler=function(e,r){var t;switch(!0){case e===OBJECT_TYPE$1:return!objectTypeHandler(r);case e===ARRAY_TYPE$1:return!checkIsArray(r.arg);case!1!==(t=isArrayLike(e)):return!arrayTypeHandler(r,t);default:return!combineFn(e)(r.arg)}},getOptionalValue=function(e,r){return void 0!==e?e:!0===r.optional&&void 0!==r.defaultvalue?r.defaultvalue:null},normalizeArgs=function(e,r){if(!checkIsArray(r))throw new JsonqlError(PARAMS_NOT_ARRAY_ERR);if(0===r.length)return[];if(!checkIsArray(e))throw new JsonqlError(ARGS_NOT_ARRAY_ERR);switch(!0){case e.length==r.length:return e.map((function(e,t){return{arg:e,index:t,param:r[t]}}));case!0===r[0].variable:var t=r[0].type;return e.map((function(e,n){return{arg:e,index:n,param:r[n]||{type:t,name:"_"}}}));case e.lengthr.length:var n=r.length,o=[DEFAULT_TYPE$1];return e.map((function(e,t){var a=t>=n||!!r[t].optional,i=r[t]||{type:o,name:"_"+t};return{arg:a?getOptionalValue(e,i):e,index:t,param:i,optional:a}}));default:throw new JsonqlError(EXCEPTION_CASE_ERR,{args:e,params:r})}},processReturn=function(e){return e.map((function(e){return e.arg}))},validateSync=function(e,r,t){var n;void 0===t&&(t=!1);var o=normalizeArgs(e,r),a=o.filter((function(e){return!0===e.optional||!0===e.param.optional?optionalHandler(e):!(e.param.type.length>e.param.type.filter((function(r){return validateHandler(r,e)})).length)}));return t?((n={})[ERROR_KEY]=a,n[DATA_KEY]=processReturn(o),n):a},validateAsync=function(e,r,t){return void 0===t&&(t=!1),new Promise((function(n,o){var a=validateSync(e,r,t);return t?a[ERROR_KEY].length?o(a[ERROR_KEY]):n(a[DATA_KEY]):a.length?o(a):n([])}))},defineProperty=function(){try{var e=getNative(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();function baseAssignValue(e,r,t){"__proto__"==r&&defineProperty?defineProperty(e,r,{configurable:!0,enumerable:!0,value:t,writable:!0}):e[r]=t}function assignMergeValue(e,r,t){(void 0===t||eq(e[r],t))&&(void 0!==t||r in e)||baseAssignValue(e,r,t)}var freeExports$2="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule$2=freeExports$2&&"object"==typeof module&&module&&!module.nodeType&&module,moduleExports$2=freeModule$2&&freeModule$2.exports===freeExports$2,Buffer$1=moduleExports$2?root.Buffer:void 0,allocUnsafe=Buffer$1?Buffer$1.allocUnsafe:void 0;function cloneBuffer(e,r){if(r)return e.slice();var t=e.length,n=allocUnsafe?allocUnsafe(t):new e.constructor(t);return e.copy(n),n}function cloneArrayBuffer(e){var r=new e.constructor(e.byteLength);return new Uint8Array(r).set(new Uint8Array(e)),r}function cloneTypedArray(e,r){var t=r?cloneArrayBuffer(e.buffer):e.buffer;return new e.constructor(t,e.byteOffset,e.length)}function copyArray(e,r){var t=-1,n=e.length;for(r||(r=Array(n));++t0){if(++r>=HOT_COUNT)return arguments[0]}else r=0;return e.apply(void 0,arguments)}}var setToString=shortOut(baseSetToString);function baseRest(e,r){return setToString(overRest(e,r,identity),e+"")}function isIterateeCall(e,r,t){if(!isObject(t))return!1;var n=typeof r;return!!("number"==n?isArrayLike$1(t)&&isIndex(r,t.length):"string"==n&&r in t)&&eq(t[r],e)}function createAssigner(e){return baseRest((function(r,t){var n=-1,o=t.length,a=o>1?t[o-1]:void 0,i=o>2?t[2]:void 0;for(a=e.length>3&&"function"==typeof a?(o--,a):void 0,i&&isIterateeCall(t[0],t[1],i)&&(a=o<3?void 0:a,o=1),r=Object(r);++n0;)r[t]=arguments[t+1];return function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];return r.reduce((function(e,r){return Reflect.apply(r,null,toArray$1(e))}),Reflect.apply(e,null,t))}};function chainProcessPromises(e){for(var r=[],t=arguments.length-1;t-- >0;)r[t]=arguments[t+1];return function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];return r.reduce((function(e,r){return e.then((function(e){return r(e)}))}),Reflect.apply(e,null,t))}}function objDefineProps(e,r,t,n){return void 0===n&&(n=null),void 0===Object.getOwnPropertyDescriptor(e,r)&&Object.defineProperty(e,r,{set:t,get:null===n?function(){return null}:n}),e}function objHasProp(e,r){var t=Object.getOwnPropertyDescriptor(e,r);return void 0!==t&&t.value?t.value:t}function injectToFn(e,r,t,n){void 0===n&&(n=!1);var o=objHasProp(e,r);return!1===n&&void 0!==o?e:(Object.defineProperty(e,r,{value:t,writable:n}),e)}function checkIsContract(e){return isPlainObject(e)&&(isObjectHasKey$1(e,QUERY_NAME)||isObjectHasKey$1(e,MUTATION_NAME)||isObjectHasKey$1(e,SOCKET_NAME))}function isContract(e){return!!checkIsContract(e)&&e}function extractSocketPart(e){return!!isObjectHasKey$1(e,"socket")&&e.socket}function groupByNamespace(e,r){void 0===r&&(r=!1);var t=extractSocketPart(e);if(!1===t){if(r)return e;throw new JsonqlError("socket not found in contract!")}var n,o={},a=0;for(var i in t){var s=t[i],c=s.namespace;c&&(o[c]||(++a,o[c]={}),o[c][i]=s,n||s.public&&(n=c))}return{size:a,nspSet:o,publicNamespace:n}}function getNamespaceInOrder(e,r){var t=[];for(var n in e)n===r?t[1]=n:t[0]=n;return t}var timestamp=function(e){void 0===e&&(e=!1);var r=Date.now();return e?Math.floor(r/1e3):r},formatPayload=function(e){var r;return(r={})[QUERY_ARG_NAME]=e,r};function getNameFromPayload(e){return Object.keys(e)[0]}function createDeliverable(e,r){var t;return(t={})[e]=r,t[TIMESTAMP_PARAM_NAME]=[timestamp()],t}function createQuery(e,r,t){if(void 0===r&&(r=[]),void 0===t&&(t=!1),isString(e)&&isArray(r)){var n=formatPayload(r);return!0===t?n:createDeliverable(e,n)}throw new JsonqlValidationError$1("[createQuery] expect resolverName to be string and args to be array!",{resolverName:e,args:r})}function createQueryStr(e,r,t){return void 0===r&&(r=[]),void 0===t&&(t=!1),JSON.stringify(createQuery(e,r,t))}var NB_EVENT_SERVICE_PRIVATE_STORE=new WeakMap,NB_EVENT_SERVICE_PRIVATE_LAZY=new WeakMap;function hashCode(e){return e.split("").reduce((function(e,r){return(e=(e<<5)-e+r.charCodeAt(0))&e}),0)}function hashCode2Str(e){return hashCode(e)+""}var SuspendClass=function(){this.__suspend__=null,this.queueStore=new Set},prototypeAccessors={$suspend:{configurable:!0},$queues:{configurable:!0}};prototypeAccessors.$suspend.set=function(e){var r=this;if("boolean"!=typeof e)throw new Error("$suspend only accept Boolean value!");var t=this.__suspend__;this.__suspend__=e,this.logger("($suspend)","Change from "+t+" --\x3e "+e),!0===t&&!1===e&&setTimeout((function(){r.release()}),1)},SuspendClass.prototype.$queue=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return!0===this.__suspend__&&(this.logger("($queue)","added to $queue",e),this.queueStore.add(e)),this.__suspend__},prototypeAccessors.$queues.get=function(){var e=this.queueStore.size;return this.logger("($queues)","size: "+e),e>0?Array.from(this.queueStore):[]},SuspendClass.prototype.release=function(){var e=this,r=this.queueStore.size;if(this.logger("(release)","Release was called "+r),r>0){var t=Array.from(this.queueStore);this.queueStore.clear(),this.logger("queue",t),t.forEach((function(r){e.logger(r),Reflect.apply(e.$trigger,e,r)})),this.logger("Release size "+this.queueStore.size)}},Object.defineProperties(SuspendClass.prototype,prototypeAccessors);var NbEventServiceBase=function(e){function r(r){void 0===r&&(r={}),e.call(this),r.logger&&"function"==typeof r.logger&&(this.logger=r.logger),this.keep=r.keep,this.result=r.keep?[]:null,this.normalStore=new Map,this.lazyStore=new Map}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={is:{configurable:!0},normalStore:{configurable:!0},lazyStore:{configurable:!0}};return t.is.get=function(){return"nb-event-service"},r.prototype.validateEvt=function(){for(var e=this,r=[],t=arguments.length;t--;)r[t]=arguments[t];return r.forEach((function(r){if("string"!=typeof r)throw e.logger("(validateEvt)",r),new Error("event name must be string type!")})),!0},r.prototype.validate=function(e,r){if(this.validateEvt(e)&&"function"==typeof r)return!0;throw new Error("callback required to be function type!")},r.prototype.validateType=function(e){return!!["on","only","once","onlyOnce"].filter((function(r){return e===r})).length},r.prototype.run=function(e,r,t){this.logger("(run)",e,r,t),this.$done=Reflect.apply(e,t,this.toArray(r))},r.prototype.takeFromStore=function(e,r){void 0===r&&(r="lazyStore");var t=this[r];if(t){if(this.logger("(takeFromStore)",r,t),t.has(e)){var n=t.get(e);return this.logger("(takeFromStore)","has "+e,n),t.delete(e),n}return!1}throw new Error(r+" is not supported!")},r.prototype.addToStore=function(e,r){for(var t,n=[],o=arguments.length-2;o-- >0;)n[o]=arguments[o+2];if(e.has(r)?(this.logger("(addToStore)",r+" existed"),t=e.get(r)):(this.logger("(addToStore)","create new Set for "+r),t=new Set),n.length>2)if(Array.isArray(n[0])){var a=n[2];this.checkTypeInLazyStore(r,a)||t.add(n)}else this.checkContentExist(n,t)||(this.logger("(addToStore)","insert new",n),t.add(n));else t.add(n);return e.set(r,t),[e,t.size]},r.prototype.checkContentExist=function(e,r){return!!Array.from(r).filter((function(r){return r[0]===e[0]})).length},r.prototype.checkTypeInStore=function(e,r){this.validateEvt(e,r);var t=this.$get(e,!0);return!1===t||!t.filter((function(e){var t=e[3];return r!==t})).length},r.prototype.checkTypeInLazyStore=function(e,r){this.validateEvt(e,r);var t=this.lazyStore.get(e);return this.logger("(checkTypeInLazyStore)",t),!!t&&!!Array.from(t).filter((function(e){return e[2]!==r})).length},r.prototype.addToNormalStore=function(e,r,t,n){if(void 0===n&&(n=null),this.logger("(addToNormalStore)",e,r,"try to add to normal store"),this.checkTypeInStore(e,r)){this.logger("(addToNormalStore)",r+" can add to "+e+" normal store");var o=this.hashFnToKey(t),a=[this.normalStore,e,o,t,n,r],i=Reflect.apply(this.addToStore,this,a),s=i[0],c=i[1];return this.normalStore=s,c}return!1},r.prototype.addToLazyStore=function(e,r,t,n){void 0===r&&(r=[]),void 0===t&&(t=null),void 0===n&&(n=!1);var o=[this.lazyStore,e,this.toArray(r),t];n&&o.push(n);var a=Reflect.apply(this.addToStore,this,o),i=a[0],s=a[1];return this.lazyStore=i,s},r.prototype.toArray=function(e){return Array.isArray(e)?e:[e]},t.normalStore.set=function(e){NB_EVENT_SERVICE_PRIVATE_STORE.set(this,e)},t.normalStore.get=function(){return NB_EVENT_SERVICE_PRIVATE_STORE.get(this)},t.lazyStore.set=function(e){NB_EVENT_SERVICE_PRIVATE_LAZY.set(this,e)},t.lazyStore.get=function(){return NB_EVENT_SERVICE_PRIVATE_LAZY.get(this)},r.prototype.hashFnToKey=function(e){return hashCode2Str(e.toString())},Object.defineProperties(r.prototype,t),r}(SuspendClass),EventService=function(e){function r(r){void 0===r&&(r={}),e.call(this,r)}e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r;var t={$done:{configurable:!0}};return r.prototype.logger=function(){},r.prototype.$on=function(e,r,t){var n=this;void 0===t&&(t=null);this.validate(e,r);var o=this.takeFromStore(e);if(!1===o)return this.logger("($on)",e+" callback is not in lazy store"),this.addToNormalStore(e,"on",r,t);this.logger("($on)",e+" found in lazy store");var a=0;return o.forEach((function(o){var i=o[0],s=o[1],c=o[2];if(c&&"on"!==c)throw new Error("You are trying to register an event already been taken by other type: "+c);n.logger("($on)","call run on "+e),n.run(r,i,t||s),a+=n.addToNormalStore(e,"on",r,t||s)})),a},r.prototype.$once=function(e,r,t){void 0===t&&(t=null),this.validate(e,r);var n=this.takeFromStore(e);this.normalStore;if(!1===n)return this.logger("($once)",e+" not in the lazy store"),this.addToNormalStore(e,"once",r,t);this.logger("($once)",n);var o=Array.from(n)[0],a=o[0],i=o[1],s=o[2];if(s&&"once"!==s)throw new Error("You are trying to register an event already been taken by other type: "+s);this.logger("($once)","call run for "+e),this.run(r,a,t||i),this.$off(e)},r.prototype.$only=function(e,r,t){var n=this;void 0===t&&(t=null),this.validate(e,r);var o=!1,a=this.takeFromStore(e);(this.normalStore.has(e)||(this.logger("($only)",e+" add to store"),o=this.addToNormalStore(e,"only",r,t)),!1!==a)&&(this.logger("($only)",e+" found data in lazy store to execute"),Array.from(a).forEach((function(o){var a=o[0],i=o[1],s=o[2];if(s&&"only"!==s)throw new Error("You are trying to register an event already been taken by other type: "+s);n.logger("($only)","call run for "+e),n.run(r,a,t||i)})));return o},r.prototype.$onlyOnce=function(e,r,t){void 0===t&&(t=null),this.validate(e,r);var n=!1,o=this.takeFromStore(e);if(this.normalStore.has(e)||(this.logger("($onlyOnce)",e+" add to store"),n=this.addToNormalStore(e,"onlyOnce",r,t)),!1!==o){this.logger("($onlyOnce)",o);var a=Array.from(o)[0],i=a[0],s=a[1],c=a[2];if(c&&"onlyOnce"!==c)throw new Error("You are trying to register an event already been taken by other type: "+c);this.logger("($onlyOnce)","call run for "+e),this.run(r,i,t||s),this.$off(e)}return n},r.prototype.$replace=function(e,r,t,n){if(void 0===t&&(t=null),void 0===n&&(n="on"),this.validateType(n)){this.$off(e);var o=this["$"+n];return this.logger("($replace)",e,r),Reflect.apply(o,this,[e,r,t])}throw new Error(n+" is not supported!")},r.prototype.$trigger=function(e,r,t,n){void 0===r&&(r=[]),void 0===t&&(t=null),void 0===n&&(n=!1),this.validateEvt(e);var o=0,a=this.normalStore;if(this.logger("($trigger)","normalStore",a),a.has(e)){var i=this.$queue(e,r,t,n);if(this.logger("($trigger)",e,"found; add to queue: ",i),!0===i)return this.logger("($trigger)",e,"not executed. Exit now."),!1;for(var s=Array.from(a.get(e)),c=s.length,u=!1,l=0;l1&&e[0]};function clientEventHandler(e,r,t,n,o,a){var i=getPrivateNamespace(o),s=!1,c=e.log;o.forEach((function(o){if(s=i===o,a[o]){c("[call bindWsHandler]",s,o);var u=[o,a[o],t,s,e];if(e.serverType===SOCKET_IO){var l=r.nspSet;u.push(l[o])}Reflect.apply(n,null,u)}else notLoginWsHandler(o,t,e)})),t.$on(LOGOUT_EVENT_NAME,(function(){c("LOGOUT_EVENT_NAME"),triggerNamespacesOnError(t,o,LOGOUT_EVENT_NAME),o.forEach((function(r){clearMainEmitEvt(t,r),a[r]=!1,notLoginWsHandler(r,t,e)}))}))}var VERSION="0.3.6",constProps={version:"version: 1.0.4 module: cjs",serverType:JS_WS_NAME},fixWss$1=function(e){var r=e.toLowerCase();return r.indexOf("http")>-1?r.indexOf("https")>-1?r.replace("https","wss"):r.replace("http","ws"):r};function createWsClient(e,r){return void 0===r&&(r=!1),!1===r?function(r){return new e(fixWss$1(r))}:function(r,t){var n=fixWss$1(r),o=t&&"string"==typeof t?n+"?"+TOKEN_PARAM_NAME+"="+t:n;try{return new e(o)}catch(e){return console.error("WebSocket Connection Error",e),!1}}}var keys$1=[WS_REPLY_TYPE,WS_EVT_NAME,WS_DATA_NAME],isWsReply=function(e){var r=e.data;return!!r&&(keys$1.filter((function(e){return isObjectHasKey$1(r,e)})).length===keys$1.length&&r)},extractWsPayload=function(e){var r,t=e.data,n=isString$1(t)?JSON.parse(t):t;if(!1!==(r=isWsReply(n)))return{resolverName:r[WS_EVT_NAME],data:r[WS_DATA_NAME],type:r[WS_REPLY_TYPE]};throw new JsonqlError("payload can not be decoded",e)},errorTypeHandler=function(e,r,t,n,o){var a=[r];t&&a.push(t),a.push(o);var i=Reflect.apply(createEvt,null,a),s=n.data||n;e.$trigger(i,[s])};function wsMainHandler(e,r,t,n,o){var a=o.useCallbackStyle,i=o.log;i("wsMainHandler log test");var s=a?READY_PROP_NAME:ON_READY_PROP_NAME,c=a?LOGIN_PROP_NAME:ON_LOGIN_PROP_NAME,u=a?MESSAGE_PROP_NAME:ON_MESSAGE_PROP_NAME,l=a?RESULT_PROP_NAME:ON_RESULT_PROP_NAME,f=a?ERROR_PROP_NAME:ON_ERROR_PROP_NAME;r.onopen=function(){i("ws.onopen listened"),t.$call(s,e),n&&(i("isPrivate and fire the "+c),t.$call(c,e)),t.$only(createEvt(e,EMIT_REPLY_TYPE),(function(e,t){i("calling server",e,t),r.send(createQueryStr(e,t))}))},r.onmessage=function(r){try{var n=extractWsPayload(r),o=n.resolverName,a=n.type;switch(i("Hear from server",a,n),a){case EMIT_REPLY_TYPE:var s=createEvt(e,o,u),c=t.$trigger(s,[n]);i("EMIT_REPLY_TYPE",s,c);break;case ACKNOWLEDGE_REPLY_TYPE:var p=createEvt(e,o,l);t.$trigger(p,[n]);break;case ERROR_TYPE:i("ERROR_TYPE"),errorTypeHandler(t,e,o,n,f);break;default:i("Unhandled event!",n),errorTypeHandler(t,e,o,n,f)}}catch(r){console.error("ws.onmessage error",r),errorTypeHandler(t,e,!1,r,f)}},r.onclose=function(){i("ws.onclose callback")},t.$on(LOGOUT_EVENT_NAME,(function(){try{i("terminate ws connection"),r.terminate()}catch(e){console.error("ws.terminate error",e)}}))}var createNsps=function(e,r,t){var n=r.nspSet,o=r.publicNamespace,a=!1,i=[],s={};if(e.enableAuth)a=!0,s=(i=getNamespaceInOrder(n,o)).map((function(r,n){var o,a,i;return 0===n?t?(e.token=t,(o={})[r]=createNspAuthClient(r,e),o):((a={})[r]=!1,a):((i={})[r]=createNspClient(r,e),i)})).reduce((function(e,r){return Object.assign(e,r)}),{});else{var c=getNameFromPayload(n);i.push(c),s[c]=createNspClient(!1,e)}return{nsps:s,namespaces:i,login:a}};function createClient(e,r,t){var n=[e,r,t,wsMainHandler],o=e.token,a=e.log,i=createNsps(e,r,o),s=i.nsps,c=i.namespaces,u=i.login;return Reflect.apply(clientEventHandler,null,n.concat([c,s])),u&&t.$only(LOGIN_EVENT_NAME,(function(o){a("createClient LOGIN_EVENT_NAME"),clearMainEmitEvt(t,c);var i=createNsps(e,r,o);Reflect.apply(clientEventHandler,null,n.concat([i.namespaces,i.nsps]))})),{opts:e,nspMap:r,ee:t}}var wsDummyLogger=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];Reflect.apply(console.info,console,["local log"].concat(e))};function createClientResolver(e){var r=createWsClient(e),t=createWsClient(e,!0);return function(e,n,o){return e.nspClient=r,e.nspAuthClient=t,e.log&&"function"==typeof e.log||(console.info("No log provided!"),e.log=wsDummyLogger),e.log("@jsonql/ws ee",o.name),e.log("@jsonql/ws createClientResolver",e),createClient(e,n,o)}}var wsClientResolver=createClientResolver(WebSocket),debugFn=debug("jsonql-ws");debugFn("VERSION",VERSION);var node=wsClientCore(wsClientResolver,constProps);module.exports=node; +"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var WebSocket=_interopDefault(require("ws")),Jsonql406Error=function(e){function t(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];e.apply(this,r),this.message=r[0],this.detail=r[1],this.className=t.name,e.captureStackTrace&&e.captureStackTrace(this,t)}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 406},r.name.get=function(){return"Jsonql406Error"},Object.defineProperties(t,r),t}(Error),Jsonql500Error=function(e){function t(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];e.apply(this,r),this.message=r[0],this.detail=r[1],this.className=t.name,e.captureStackTrace&&e.captureStackTrace(this,t)}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 500},r.name.get=function(){return"Jsonql500Error"},Object.defineProperties(t,r),t}(Error),JsonqlForbiddenError=function(e){function t(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];e.apply(this,r),this.message=r[0],this.detail=r[1],this.className=t.name,e.captureStackTrace&&e.captureStackTrace(this,t)}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 403},r.name.get=function(){return"JsonqlForbiddenError"},Object.defineProperties(t,r),t}(Error),JsonqlAuthorisationError=function(e){function t(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];e.apply(this,r),this.message=r[0],this.detail=r[1],this.className=t.name,e.captureStackTrace&&e.captureStackTrace(this,t)}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 401},r.name.get=function(){return"JsonqlAuthorisationError"},Object.defineProperties(t,r),t}(Error),JsonqlContractAuthError=function(e){function t(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];e.apply(this,r),this.message=r[0],this.detail=r[1],this.className=t.name,e.captureStackTrace&&e.captureStackTrace(this,t)}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 401},r.name.get=function(){return"JsonqlContractAuthError"},Object.defineProperties(t,r),t}(Error),JsonqlResolverAppError=function(e){function t(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];e.apply(this,r),this.message=r[0],this.detail=r[1],this.className=t.name,e.captureStackTrace&&e.captureStackTrace(this,t)}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 500},r.name.get=function(){return"JsonqlResolverAppError"},Object.defineProperties(t,r),t}(Error),JsonqlResolverNotFoundError=function(e){function t(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];e.apply(this,r),this.message=r[0],this.detail=r[1],this.className=t.name,e.captureStackTrace&&e.captureStackTrace(this,t)}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var r={statusCode:{configurable:!0},name:{configurable:!0}};return r.statusCode.get=function(){return 404},r.name.get=function(){return"JsonqlResolverNotFoundError"},Object.defineProperties(t,r),t}(Error),JsonqlEnumError=function(e){function t(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];e.apply(this,r),this.message=r[0],this.detail=r[1],this.className=t.name,e.captureStackTrace&&e.captureStackTrace(this,t)}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlEnumError"},Object.defineProperties(t,r),t}(Error),JsonqlTypeError=function(e){function t(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];e.apply(this,r),this.message=r[0],this.detail=r[1],this.className=t.name,e.captureStackTrace&&e.captureStackTrace(this,t)}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlTypeError"},Object.defineProperties(t,r),t}(Error),JsonqlCheckerError=function(e){function t(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];e.apply(this,r),this.message=r[0],this.detail=r[1],this.className=t.name,e.captureStackTrace&&e.captureStackTrace(this,t)}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(t,r),t}(Error),JsonqlValidationError=function(e){function t(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];e.apply(this,r),this.message=r[0],this.detail=r[1],this.className=t.name,e.captureStackTrace&&e.captureStackTrace(this,t)}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlValidationError"},Object.defineProperties(t,r),t}(Error),DATA_KEY="data",ERROR_KEY="error",JSONQL_PATH="jsonql",DEFAULT_TYPE="any",QUERY_NAME="query",MUTATION_NAME="mutation",SOCKET_NAME="socket",QUERY_ARG_NAME="args",TIMESTAMP_PARAM_NAME="TS",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",CHECKED_KEY="__checked__",LOGIN_NAME="login",ISSUER_NAME=LOGIN_NAME,LOGOUT_NAME="logout",OR_SEPERATOR="|",STRING_TYPE="string",BOOLEAN_TYPE="boolean",ARRAY_TYPE="array",OBJECT_TYPE="object",NUMBER_TYPE="number",ARRAY_TYPE_LFT="array.<",ARRAY_TYPE_RGT=">",NO_ERROR_MSG="No message",NO_STATUS_CODE=-1,LOGIN_EVENT_NAME="__login__",LOGOUT_EVENT_NAME="__logout__",WS_REPLY_TYPE="__reply__",WS_EVT_NAME="__event__",WS_DATA_NAME="__data__",EMIT_REPLY_TYPE="emit",ACKNOWLEDGE_REPLY_TYPE="acknowledge",ERROR_TYPE="error",NSP_SET="nspSet",PUBLIC_NAMESPACE="publicNamespace",JS_WS_SOCKET_IO_NAME="socket.io",JS_WS_NAME="ws",ON_MESSAGE_PROP_NAME="onMessage",ON_RESULT_PROP_NAME="onResult",ON_ERROR_PROP_NAME="onError",ON_READY_PROP_NAME="onReady",ON_LOGIN_PROP_NAME="onLogin",SEND_MSG_PROP_NAME="send",MESSAGE_PROP_NAME="message",RESULT_PROP_NAME="result",ERROR_PROP_NAME="error",READY_PROP_NAME="ready",LOGIN_PROP_NAME="login",NOT_LOGIN_ERR_MSG="NOT LOGIN",TOKEN_PARAM_NAME="token",IO_ROUNDTRIP_LOGIN="roundtip",IO_HANDSHAKE_LOGIN="handshake",JsonqlError=function(e){function t(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];e.apply(this,r),this.message=r[0],this.detail=r[1],this.className=t.name,e.captureStackTrace&&e.captureStackTrace(this,t)}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var r={name:{configurable:!0},statusCode:{configurable:!0}};return r.name.get=function(){return"JsonqlError"},r.statusCode.get=function(){return NO_STATUS_CODE},Object.defineProperties(t,r),t}(Error),JsonqlServerError=function(e){function t(r,n){e.call(this,n),this.statusCode=r,this.className=t.name}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var r={name:{configurable:!0}};return r.name.get=function(){return"JsonqlServerError"},Object.defineProperties(t,r),t}(Error);function finalCatch(e){if(Array.isArray(e))throw new JsonqlValidationError("",e);var t=e.message||NO_ERROR_MSG,r=e.detail||e;switch(!0){case e instanceof Jsonql406Error:throw new Jsonql406Error(t,r);case e instanceof Jsonql500Error:throw new Jsonql500Error(t,r);case e instanceof JsonqlForbiddenError:throw new JsonqlForbiddenError(t,r);case e instanceof JsonqlAuthorisationError:throw new JsonqlAuthorisationError(t,r);case e instanceof JsonqlContractAuthError:throw new JsonqlContractAuthError(t,r);case e instanceof JsonqlResolverAppError:throw new JsonqlResolverAppError(t,r);case e instanceof JsonqlResolverNotFoundError:throw new JsonqlResolverNotFoundError(t,r);case e instanceof JsonqlEnumError:throw new JsonqlEnumError(t,r);case e instanceof JsonqlTypeError:throw new JsonqlTypeError(t,r);case e instanceof JsonqlCheckerError:throw new JsonqlCheckerError(t,r);case e instanceof JsonqlValidationError:throw new JsonqlValidationError(t,r);case e instanceof JsonqlServerError:throw new JsonqlServerError(t,r);default:throw new JsonqlError(t,r)}}var SOCKET_IO=JS_WS_SOCKET_IO_NAME,MISSING_PROP_ERR="Missing property in contract!",EMIT_EVT=EMIT_REPLY_TYPE,UNKNOWN_RESULT="UKNNOWN RESULT!",MY_NAMESPACE="myNamespace",CB_FN_NAME="on",global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},freeGlobal="object"==typeof global$1&&global$1&&global$1.Object===Object&&global$1,freeSelf="object"==typeof self&&self&&self.Object===Object&&self,root=freeGlobal||freeSelf||Function("return this")(),Symbol=root.Symbol;function arrayMap(e,t){for(var r=-1,n=null==e?0:e.length,o=Array(n);++ro?0:o+t),(r=r>o?o:r)<0&&(r+=o),o=t>r?0:r-t>>>0,t>>>=0;for(var a=Array(o);++n=n?e:baseSlice(e,t,r)}function baseFindIndex(e,t,r,n){for(var o=e.length,a=r+(n?1:-1);n?a--:++a-1;);return r}function charsStartIndex(e,t){for(var r=-1,n=e.length;++r-1;);return r}function asciiToArray(e){return e.split("")}var rsAstralRange="\\ud800-\\udfff",rsComboMarksRange="\\u0300-\\u036f",reComboHalfMarksRange="\\ufe20-\\ufe2f",rsComboSymbolsRange="\\u20d0-\\u20ff",rsComboRange=rsComboMarksRange+reComboHalfMarksRange+rsComboSymbolsRange,rsVarRange="\\ufe0e\\ufe0f",rsZWJ="\\u200d",reHasUnicode=RegExp("["+rsZWJ+rsAstralRange+rsComboRange+rsVarRange+"]");function hasUnicode(e){return reHasUnicode.test(e)}var rsAstralRange$1="\\ud800-\\udfff",rsComboMarksRange$1="\\u0300-\\u036f",reComboHalfMarksRange$1="\\ufe20-\\ufe2f",rsComboSymbolsRange$1="\\u20d0-\\u20ff",rsComboRange$1=rsComboMarksRange$1+reComboHalfMarksRange$1+rsComboSymbolsRange$1,rsVarRange$1="\\ufe0e\\ufe0f",rsAstral="["+rsAstralRange$1+"]",rsCombo="["+rsComboRange$1+"]",rsFitz="\\ud83c[\\udffb-\\udfff]",rsModifier="(?:"+rsCombo+"|"+rsFitz+")",rsNonAstral="[^"+rsAstralRange$1+"]",rsRegional="(?:\\ud83c[\\udde6-\\uddff]){2}",rsSurrPair="[\\ud800-\\udbff][\\udc00-\\udfff]",rsZWJ$1="\\u200d",reOptMod=rsModifier+"?",rsOptVar="["+rsVarRange$1+"]?",rsOptJoin="(?:"+rsZWJ$1+"(?:"+[rsNonAstral,rsRegional,rsSurrPair].join("|")+")"+rsOptVar+reOptMod+")*",rsSeq=rsOptVar+reOptMod+rsOptJoin,rsSymbol="(?:"+[rsNonAstral+rsCombo+"?",rsCombo,rsRegional,rsSurrPair,rsAstral].join("|")+")",reUnicode=RegExp(rsFitz+"(?="+rsFitz+")|"+rsSymbol+rsSeq,"g");function unicodeToArray(e){return e.match(reUnicode)||[]}function stringToArray(e){return hasUnicode(e)?unicodeToArray(e):asciiToArray(e)}function toString(e){return null==e?"":baseToString(e)}var reTrim=/^\s+|\s+$/g;function trim(e,t,r){if((e=toString(e))&&(r||void 0===t))return e.replace(reTrim,"");if(!e||!(t=baseToString(t)))return e;var n=stringToArray(e),o=stringToArray(t);return castSlice(n,charsStartIndex(n,o),charsEndIndex(n,o)+1).join("")}var isNotEmpty=function(e){return!!isArray(e)||null!=e&&""!==trim(e)},numberTag="[object Number]";function isNumber(e){return"number"==typeof e||isObjectLike(e)&&baseGetTag(e)==numberTag}function isNaN(e){return isNumber(e)&&e!=+e}var stringTag="[object String]";function isString(e){return"string"==typeof e||!isArray(e)&&isObjectLike(e)&&baseGetTag(e)==stringTag}var checkIsNumber=function(e){return!isString(e)&&!isNaN(parseFloat(e))},checkIsString=function(e){return""!==trim(e)&&isString(e)},checkIsBoolean=function(e){return null!=e&&"boolean"==typeof e},checkIsAny=function(e,t){return void 0===t&&(t=!0),void 0!==e&&""!==e&&""!==trim(e)&&(!1===t||!0===t&&null!==e)},ARGS_NOT_ARRAY_ERR="args is not an array! You might want to do: ES6 Array.from(arguments) or ES5 Array.prototype.slice.call(arguments)",PARAMS_NOT_ARRAY_ERR="params is not an array! Did something gone wrong when you generate the contract.json?",EXCEPTION_CASE_ERR="Could not understand your arguments and parameter structure!",DEFAULT_TYPE$1=DEFAULT_TYPE,ARRAY_TYPE_LFT$1=ARRAY_TYPE_LFT,ARRAY_TYPE_RGT$1=ARRAY_TYPE_RGT,TYPE_KEY$1=TYPE_KEY,OPTIONAL_KEY$1=OPTIONAL_KEY,ENUM_KEY$1=ENUM_KEY,ARGS_KEY$1=ARGS_KEY,CHECKER_KEY$1=CHECKER_KEY,ALIAS_KEY$1=ALIAS_KEY,ARRAY_TYPE$1=ARRAY_TYPE,OBJECT_TYPE$1=OBJECT_TYPE,STRING_TYPE$1=STRING_TYPE,BOOLEAN_TYPE$1=BOOLEAN_TYPE,NUMBER_TYPE$1=NUMBER_TYPE,KEY_WORD$1=KEY_WORD,OR_SEPERATOR$1=OR_SEPERATOR,combineFn=function(e){switch(e){case NUMBER_TYPE$1:return checkIsNumber;case STRING_TYPE$1:return checkIsString;case BOOLEAN_TYPE$1:return checkIsBoolean;default:return checkIsAny}},checkIsArray=function(e,t){return void 0===t&&(t=""),!!isArray(e)&&(""===t||""===trim(t)||!(e.filter((function(e){return!combineFn(t)(e)})).length>0))},isArrayLike=function(e){if(e.indexOf(ARRAY_TYPE_LFT$1)>-1&&e.indexOf(ARRAY_TYPE_RGT$1)>-1){var t=e.replace(ARRAY_TYPE_LFT$1,"").replace(ARRAY_TYPE_RGT$1,"");return t.indexOf(OR_SEPERATOR$1)?t.split(OR_SEPERATOR$1):[t]}return!1},arrayTypeHandler=function(e,t){var r=e.arg;return t.length>1?!r.filter((function(e){return!(t.length>t.filter((function(t){return!combineFn(t)(e)})).length)})).length:t.length>t.filter((function(e){return!checkIsArray(r,e)})).length};function overArg(e,t){return function(r){return e(t(r))}}var getPrototype=overArg(Object.getPrototypeOf,Object),objectTag="[object Object]",funcProto=Function.prototype,objectProto$2=Object.prototype,funcToString=funcProto.toString,hasOwnProperty$1=objectProto$2.hasOwnProperty,objectCtorString=funcToString.call(Object);function isPlainObject(e){if(!isObjectLike(e)||baseGetTag(e)!=objectTag)return!1;var t=getPrototype(e);if(null===t)return!0;var r=hasOwnProperty$1.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&funcToString.call(r)==objectCtorString}function arrayFilter(e,t){for(var r=-1,n=null==e?0:e.length,o=0,a=[];++r-1&&e%1==0&&e-1&&e%1==0&&e<=MAX_SAFE_INTEGER$1}var argsTag$1="[object Arguments]",arrayTag="[object Array]",boolTag="[object Boolean]",dateTag="[object Date]",errorTag="[object Error]",funcTag="[object Function]",mapTag="[object Map]",numberTag$1="[object Number]",objectTag$1="[object Object]",regexpTag="[object RegExp]",setTag="[object Set]",stringTag$1="[object String]",weakMapTag="[object WeakMap]",arrayBufferTag="[object ArrayBuffer]",dataViewTag="[object DataView]",float32Tag="[object Float32Array]",float64Tag="[object Float64Array]",int8Tag="[object Int8Array]",int16Tag="[object Int16Array]",int32Tag="[object Int32Array]",uint8Tag="[object Uint8Array]",uint8ClampedTag="[object Uint8ClampedArray]",uint16Tag="[object Uint16Array]",uint32Tag="[object Uint32Array]",typedArrayTags={};function baseIsTypedArray(e){return isObjectLike(e)&&isLength(e.length)&&!!typedArrayTags[baseGetTag(e)]}function baseUnary(e){return function(t){return e(t)}}typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=!0,typedArrayTags[argsTag$1]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dataViewTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag]=typedArrayTags[mapTag]=typedArrayTags[numberTag$1]=typedArrayTags[objectTag$1]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag$1]=typedArrayTags[weakMapTag]=!1;var freeExports$1="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule$1=freeExports$1&&"object"==typeof module&&module&&!module.nodeType&&module,moduleExports$1=freeModule$1&&freeModule$1.exports===freeExports$1,freeProcess=moduleExports$1&&freeGlobal.process,nodeUtil=function(){try{var e=freeModule$1&&freeModule$1.require&&freeModule$1.require("util").types;return e||freeProcess&&freeProcess.binding&&freeProcess.binding("util")}catch(e){}}(),nodeIsTypedArray=nodeUtil&&nodeUtil.isTypedArray,isTypedArray=nodeIsTypedArray?baseUnary(nodeIsTypedArray):baseIsTypedArray,objectProto$4=Object.prototype,hasOwnProperty$3=objectProto$4.hasOwnProperty;function arrayLikeKeys(e,t){var r=isArray(e),n=!r&&isArguments(e),o=!r&&!n&&isBuffer(e),a=!r&&!n&&!o&&isTypedArray(e),i=r||n||o||a,s=i?baseTimes(e.length,String):[],c=s.length;for(var u in e)!t&&!hasOwnProperty$3.call(e,u)||i&&("length"==u||o&&("offset"==u||"parent"==u)||a&&("buffer"==u||"byteLength"==u||"byteOffset"==u)||isIndex(u,c))||s.push(u);return s}var objectProto$5=Object.prototype;function isPrototype(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||objectProto$5)}var nativeKeys=overArg(Object.keys,Object),objectProto$6=Object.prototype,hasOwnProperty$4=objectProto$6.hasOwnProperty;function baseKeys(e){if(!isPrototype(e))return nativeKeys(e);var t=[];for(var r in Object(e))hasOwnProperty$4.call(e,r)&&"constructor"!=r&&t.push(r);return t}function isObject(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}var asyncTag="[object AsyncFunction]",funcTag$1="[object Function]",genTag="[object GeneratorFunction]",proxyTag="[object Proxy]";function isFunction(e){if(!isObject(e))return!1;var t=baseGetTag(e);return t==funcTag$1||t==genTag||t==asyncTag||t==proxyTag}function isArrayLike$1(e){return null!=e&&isLength(e.length)&&!isFunction(e)}function keys(e){return isArrayLike$1(e)?arrayLikeKeys(e):baseKeys(e)}function baseForOwn(e,t){return e&&baseFor(e,t,keys)}function listCacheClear(){this.__data__=[],this.size=0}function eq(e,t){return e===t||e!=e&&t!=t}function assocIndexOf(e,t){for(var r=e.length;r--;)if(eq(e[r][0],t))return r;return-1}var arrayProto=Array.prototype,splice=arrayProto.splice;function listCacheDelete(e){var t=this.__data__,r=assocIndexOf(t,e);return!(r<0)&&(r==t.length-1?t.pop():splice.call(t,r,1),--this.size,!0)}function listCacheGet(e){var t=this.__data__,r=assocIndexOf(t,e);return r<0?void 0:t[r][1]}function listCacheHas(e){return assocIndexOf(this.__data__,e)>-1}function listCacheSet(e,t){var r=this.__data__,n=assocIndexOf(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}function ListCache(e){var t=-1,r=null==e?0:e.length;for(this.clear();++ts))return!1;var u=a.get(e);if(u&&a.get(t))return u==t;var l=-1,f=!0,p=r&COMPARE_UNORDERED_FLAG?new SetCache:void 0;for(a.set(e,t),a.set(t,e);++lt.type.filter((function(e){var t;return void 0===r||(!1!==(t=isArrayLike(e))?!arrayTypeHandler({arg:r},t):!combineFn(e)(r))})).length)})).length}return!1},objectTypeHandler=function(e){var t=e.arg,r=e.param,n=[t];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Reflect.apply(checkIsObject,null,n)},optionalHandler=function(e){var t=e.arg,r=e.param;return!!isNotEmpty(t)&&!(r.type.length>r.type.filter((function(t){return validateHandler(t,e)})).length)},validateHandler=function(e,t){var r;switch(!0){case e===OBJECT_TYPE$1:return!objectTypeHandler(t);case e===ARRAY_TYPE$1:return!checkIsArray(t.arg);case!1!==(r=isArrayLike(e)):return!arrayTypeHandler(t,r);default:return!combineFn(e)(t.arg)}},getOptionalValue=function(e,t){return void 0!==e?e:!0===t.optional&&void 0!==t.defaultvalue?t.defaultvalue:null},normalizeArgs=function(e,t){if(!checkIsArray(t))throw new JsonqlError(PARAMS_NOT_ARRAY_ERR);if(0===t.length)return[];if(!checkIsArray(e))throw new JsonqlError(ARGS_NOT_ARRAY_ERR);switch(!0){case e.length==t.length:return e.map((function(e,r){return{arg:e,index:r,param:t[r]}}));case!0===t[0].variable:var r=t[0].type;return e.map((function(e,n){return{arg:e,index:n,param:t[n]||{type:r,name:"_"}}}));case e.lengtht.length:var n=t.length,o=[DEFAULT_TYPE$1];return e.map((function(e,r){var a=r>=n||!!t[r].optional,i=t[r]||{type:o,name:"_"+r};return{arg:a?getOptionalValue(e,i):e,index:r,param:i,optional:a}}));default:throw new JsonqlError(EXCEPTION_CASE_ERR,{args:e,params:t})}},processReturn=function(e){return e.map((function(e){return e.arg}))},validateSync=function(e,t,r){var n;void 0===r&&(r=!1);var o=normalizeArgs(e,t),a=o.filter((function(e){return!0===e.optional||!0===e.param.optional?optionalHandler(e):!(e.param.type.length>e.param.type.filter((function(t){return validateHandler(t,e)})).length)}));return r?((n={})[ERROR_KEY]=a,n[DATA_KEY]=processReturn(o),n):a},validateAsync=function(e,t,r){return void 0===r&&(r=!1),new Promise((function(n,o){var a=validateSync(e,t,r);return r?a[ERROR_KEY].length?o(a[ERROR_KEY]):n(a[DATA_KEY]):a.length?o(a):n([])}))},defineProperty=function(){try{var e=getNative(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();function baseAssignValue(e,t,r){"__proto__"==t&&defineProperty?defineProperty(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}function assignMergeValue(e,t,r){(void 0===r||eq(e[t],r))&&(void 0!==r||t in e)||baseAssignValue(e,t,r)}var freeExports$2="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule$2=freeExports$2&&"object"==typeof module&&module&&!module.nodeType&&module,moduleExports$2=freeModule$2&&freeModule$2.exports===freeExports$2,Buffer$1=moduleExports$2?root.Buffer:void 0,allocUnsafe=Buffer$1?Buffer$1.allocUnsafe:void 0;function cloneBuffer(e,t){if(t)return e.slice();var r=e.length,n=allocUnsafe?allocUnsafe(r):new e.constructor(r);return e.copy(n),n}function cloneArrayBuffer(e){var t=new e.constructor(e.byteLength);return new Uint8Array(t).set(new Uint8Array(e)),t}function cloneTypedArray(e,t){var r=t?cloneArrayBuffer(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}function copyArray(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r0){if(++t>=HOT_COUNT)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var setToString=shortOut(baseSetToString);function baseRest(e,t){return setToString(overRest(e,t,identity),e+"")}function isIterateeCall(e,t,r){if(!isObject(r))return!1;var n=typeof t;return!!("number"==n?isArrayLike$1(r)&&isIndex(t,r.length):"string"==n&&t in r)&&eq(r[t],e)}function createAssigner(e){return baseRest((function(t,r){var n=-1,o=r.length,a=o>1?r[o-1]:void 0,i=o>2?r[2]:void 0;for(a=e.length>3&&"function"==typeof a?(o--,a):void 0,i&&isIterateeCall(r[0],r[1],i)&&(a=o<3?void 0:a,o=1),t=Object(t);++n0;)t[r]=arguments[r+1];return function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];return t.reduce((function(e,t){return Reflect.apply(t,null,toArray$1(e))}),Reflect.apply(e,null,r))}};function chainProcessPromises(e){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];return function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];return t.reduce((function(e,t){return e.then((function(e){return t(e)}))}),Reflect.apply(e,null,r))}}function objDefineProps(e,t,r,n){return void 0===n&&(n=null),void 0===Object.getOwnPropertyDescriptor(e,t)&&Object.defineProperty(e,t,{set:r,get:null===n?function(){return null}:n}),e}function objHasProp(e,t){var r=Object.getOwnPropertyDescriptor(e,t);return void 0!==r&&r.value?r.value:r}function injectToFn(e,t,r,n){void 0===n&&(n=!1);var o=objHasProp(e,t);return!1===n&&void 0!==o?e:(Object.defineProperty(e,t,{value:r,writable:n}),e)}function checkIsContract(e){return isPlainObject(e)&&(isObjectHasKey$1(e,QUERY_NAME)||isObjectHasKey$1(e,MUTATION_NAME)||isObjectHasKey$1(e,SOCKET_NAME))}function isContract(e){return!!checkIsContract(e)&&e}function extractSocketPart(e){return!!isObjectHasKey$1(e,"socket")&&e.socket}function groupByNamespace(e,t){void 0===t&&(t=!1);var r=extractSocketPart(e);if(!1===r){if(t)return e;throw new JsonqlError("socket not found in contract!")}var n,o={},a=0;for(var i in r){var s=r[i],c=s.namespace;c&&(o[c]||(++a,o[c]={}),o[c][i]=s,n||s.public&&(n=c))}return{size:a,nspSet:o,publicNamespace:n}}function getNamespaceInOrder(e,t){var r=[];for(var n in e)n===t?r[1]=n:r[0]=n;return r}var timestamp=function(e){void 0===e&&(e=!1);var t=Date.now();return e?Math.floor(t/1e3):t},formatPayload=function(e){var t;return(t={})[QUERY_ARG_NAME]=e,t};function getNameFromPayload(e){return Object.keys(e)[0]}function createDeliverable(e,t){var r;return(r={})[e]=t,r[TIMESTAMP_PARAM_NAME]=[timestamp()],r}function createQuery(e,t,r){if(void 0===t&&(t=[]),void 0===r&&(r=!1),isString(e)&&isArray(t)){var n=formatPayload(t);return!0===r?n:createDeliverable(e,n)}throw new JsonqlValidationError("[createQuery] expect resolverName to be string and args to be array!",{resolverName:e,args:t})}function createQueryStr(e,t,r){return void 0===t&&(t=[]),void 0===r&&(r=!1),JSON.stringify(createQuery(e,t,r))}function preConfigCheck(e,t){for(var r=[],n=arguments.length-2;n-- >0;)r[n]=arguments[n+2];var o=Reflect.apply(chainFns,null,r.concat([function(e){return injectToFn(e,CHECKED_KEY,timestamp())}]));return function(r){return void 0===r&&(r={}),o(r,e,t)}}function postConfigCheck(e,t){for(var r=[],n=arguments.length-2;n-- >0;)r[n]=arguments[n+2];return function(n){if(void 0===n&&(n={}),objHasProp(n,CHECKED_KEY))return Promise.resolve(merge({},n,t));var o=Reflect.apply(preConfigCheck,null,[e,t].concat(r));return Promise.resolve(o(n))}}var NB_EVENT_SERVICE_PRIVATE_STORE=new WeakMap,NB_EVENT_SERVICE_PRIVATE_LAZY=new WeakMap;function hashCode(e){return e.split("").reduce((function(e,t){return(e=(e<<5)-e+t.charCodeAt(0))&e}),0)}function hashCode2Str(e){return hashCode(e)+""}var SuspendClass=function(){this.__suspend__=null,this.queueStore=new Set},prototypeAccessors={$suspend:{configurable:!0},$queues:{configurable:!0}};prototypeAccessors.$suspend.set=function(e){var t=this;if("boolean"!=typeof e)throw new Error("$suspend only accept Boolean value!");var r=this.__suspend__;this.__suspend__=e,this.logger("($suspend)","Change from "+r+" --\x3e "+e),!0===r&&!1===e&&setTimeout((function(){t.release()}),1)},SuspendClass.prototype.$queue=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return!0===this.__suspend__&&(this.logger("($queue)","added to $queue",e),this.queueStore.add(e)),this.__suspend__},prototypeAccessors.$queues.get=function(){var e=this.queueStore.size;return this.logger("($queues)","size: "+e),e>0?Array.from(this.queueStore):[]},SuspendClass.prototype.release=function(){var e=this,t=this.queueStore.size;if(this.logger("(release)","Release was called "+t),t>0){var r=Array.from(this.queueStore);this.queueStore.clear(),this.logger("queue",r),r.forEach((function(t){e.logger(t),Reflect.apply(e.$trigger,e,t)})),this.logger("Release size "+this.queueStore.size)}},Object.defineProperties(SuspendClass.prototype,prototypeAccessors);var NbEventServiceBase=function(e){function t(t){void 0===t&&(t={}),e.call(this),t.logger&&"function"==typeof t.logger&&(this.logger=t.logger),this.keep=t.keep,this.result=t.keep?[]:null,this.normalStore=new Map,this.lazyStore=new Map}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var r={is:{configurable:!0},normalStore:{configurable:!0},lazyStore:{configurable:!0}};return r.is.get=function(){return"nb-event-service"},t.prototype.validateEvt=function(){for(var e=this,t=[],r=arguments.length;r--;)t[r]=arguments[r];return t.forEach((function(t){if("string"!=typeof t)throw e.logger("(validateEvt)",t),new Error("event name must be string type!")})),!0},t.prototype.validate=function(e,t){if(this.validateEvt(e)&&"function"==typeof t)return!0;throw new Error("callback required to be function type!")},t.prototype.validateType=function(e){return!!["on","only","once","onlyOnce"].filter((function(t){return e===t})).length},t.prototype.run=function(e,t,r){this.logger("(run)",e,t,r),this.$done=Reflect.apply(e,r,this.toArray(t))},t.prototype.takeFromStore=function(e,t){void 0===t&&(t="lazyStore");var r=this[t];if(r){if(this.logger("(takeFromStore)",t,r),r.has(e)){var n=r.get(e);return this.logger("(takeFromStore)","has "+e,n),r.delete(e),n}return!1}throw new Error(t+" is not supported!")},t.prototype.addToStore=function(e,t){for(var r,n=[],o=arguments.length-2;o-- >0;)n[o]=arguments[o+2];if(e.has(t)?(this.logger("(addToStore)",t+" existed"),r=e.get(t)):(this.logger("(addToStore)","create new Set for "+t),r=new Set),n.length>2)if(Array.isArray(n[0])){var a=n[2];this.checkTypeInLazyStore(t,a)||r.add(n)}else this.checkContentExist(n,r)||(this.logger("(addToStore)","insert new",n),r.add(n));else r.add(n);return e.set(t,r),[e,r.size]},t.prototype.checkContentExist=function(e,t){return!!Array.from(t).filter((function(t){return t[0]===e[0]})).length},t.prototype.checkTypeInStore=function(e,t){this.validateEvt(e,t);var r=this.$get(e,!0);return!1===r||!r.filter((function(e){var r=e[3];return t!==r})).length},t.prototype.checkTypeInLazyStore=function(e,t){this.validateEvt(e,t);var r=this.lazyStore.get(e);return this.logger("(checkTypeInLazyStore)",r),!!r&&!!Array.from(r).filter((function(e){return e[2]!==t})).length},t.prototype.addToNormalStore=function(e,t,r,n){if(void 0===n&&(n=null),this.logger("(addToNormalStore)",e,t,"try to add to normal store"),this.checkTypeInStore(e,t)){this.logger("(addToNormalStore)",t+" can add to "+e+" normal store");var o=this.hashFnToKey(r),a=[this.normalStore,e,o,r,n,t],i=Reflect.apply(this.addToStore,this,a),s=i[0],c=i[1];return this.normalStore=s,c}return!1},t.prototype.addToLazyStore=function(e,t,r,n){void 0===t&&(t=[]),void 0===r&&(r=null),void 0===n&&(n=!1);var o=[this.lazyStore,e,this.toArray(t),r];n&&o.push(n);var a=Reflect.apply(this.addToStore,this,o),i=a[0],s=a[1];return this.lazyStore=i,s},t.prototype.toArray=function(e){return Array.isArray(e)?e:[e]},r.normalStore.set=function(e){NB_EVENT_SERVICE_PRIVATE_STORE.set(this,e)},r.normalStore.get=function(){return NB_EVENT_SERVICE_PRIVATE_STORE.get(this)},r.lazyStore.set=function(e){NB_EVENT_SERVICE_PRIVATE_LAZY.set(this,e)},r.lazyStore.get=function(){return NB_EVENT_SERVICE_PRIVATE_LAZY.get(this)},t.prototype.hashFnToKey=function(e){return hashCode2Str(e.toString())},Object.defineProperties(t.prototype,r),t}(SuspendClass),EventService=function(e){function t(t){void 0===t&&(t={}),e.call(this,t)}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var r={$done:{configurable:!0}};return t.prototype.logger=function(){},t.prototype.$on=function(e,t,r){var n=this;void 0===r&&(r=null);this.validate(e,t);var o=this.takeFromStore(e);if(!1===o)return this.logger("($on)",e+" callback is not in lazy store"),this.addToNormalStore(e,"on",t,r);this.logger("($on)",e+" found in lazy store");var a=0;return o.forEach((function(o){var i=o[0],s=o[1],c=o[2];if(c&&"on"!==c)throw new Error("You are trying to register an event already been taken by other type: "+c);n.logger("($on)","call run on "+e),n.run(t,i,r||s),a+=n.addToNormalStore(e,"on",t,r||s)})),a},t.prototype.$once=function(e,t,r){void 0===r&&(r=null),this.validate(e,t);var n=this.takeFromStore(e);this.normalStore;if(!1===n)return this.logger("($once)",e+" not in the lazy store"),this.addToNormalStore(e,"once",t,r);this.logger("($once)",n);var o=Array.from(n)[0],a=o[0],i=o[1],s=o[2];if(s&&"once"!==s)throw new Error("You are trying to register an event already been taken by other type: "+s);this.logger("($once)","call run for "+e),this.run(t,a,r||i),this.$off(e)},t.prototype.$only=function(e,t,r){var n=this;void 0===r&&(r=null),this.validate(e,t);var o=!1,a=this.takeFromStore(e);(this.normalStore.has(e)||(this.logger("($only)",e+" add to store"),o=this.addToNormalStore(e,"only",t,r)),!1!==a)&&(this.logger("($only)",e+" found data in lazy store to execute"),Array.from(a).forEach((function(o){var a=o[0],i=o[1],s=o[2];if(s&&"only"!==s)throw new Error("You are trying to register an event already been taken by other type: "+s);n.logger("($only)","call run for "+e),n.run(t,a,r||i)})));return o},t.prototype.$onlyOnce=function(e,t,r){void 0===r&&(r=null),this.validate(e,t);var n=!1,o=this.takeFromStore(e);if(this.normalStore.has(e)||(this.logger("($onlyOnce)",e+" add to store"),n=this.addToNormalStore(e,"onlyOnce",t,r)),!1!==o){this.logger("($onlyOnce)",o);var a=Array.from(o)[0],i=a[0],s=a[1],c=a[2];if(c&&"onlyOnce"!==c)throw new Error("You are trying to register an event already been taken by other type: "+c);this.logger("($onlyOnce)","call run for "+e),this.run(t,i,r||s),this.$off(e)}return n},t.prototype.$replace=function(e,t,r,n){if(void 0===r&&(r=null),void 0===n&&(n="on"),this.validateType(n)){this.$off(e);var o=this["$"+n];return this.logger("($replace)",e,t),Reflect.apply(o,this,[e,t,r])}throw new Error(n+" is not supported!")},t.prototype.$trigger=function(e,t,r,n){void 0===t&&(t=[]),void 0===r&&(r=null),void 0===n&&(n=!1),this.validateEvt(e);var o=0,a=this.normalStore;if(this.logger("($trigger)","normalStore",a),a.has(e)){var i=this.$queue(e,t,r,n);if(this.logger("($trigger)",e,"found; add to queue: ",i),!0===i)return this.logger("($trigger)",e,"not executed. Exit now."),!1;for(var s=Array.from(a.get(e)),c=s.length,u=!1,l=0;l-1?t.indexOf("https")>-1?t.replace("https","wss"):t.replace("http","ws"):t};function createWsClient(e,t){return void 0===t&&(t=!1),!1===t?function(t){return new e(fixWss$1(t))}:function(t,r){var n=fixWss$1(t),o=r&&"string"==typeof r?n+"?"+TOKEN_PARAM_NAME+"="+r:n;try{return new e(o)}catch(e){return console.error("WebSocket Connection Error",e),!1}}}function createNspClient(e,t){var r=t.hostname,n=t.wssPath,o=t.wsOptions;return(0,t.nspClient)(e?[r,e].join("/"):n,o)}function createNspAuthClient(e,t){var r=t.hostname,n=t.wssPath,o=t.token,a=t.wsOptions,i=t.nspAuthClient,s=e?[r,e].join("/"):n;if(o&&"string"!=typeof o)throw new Error("Expect token to be string, but got "+o);return i(s,o,a)}function triggerNamespacesOnError(e,t,r,n){void 0===n&&(n={});var o=n.useCallbackStyle?ERROR_PROP_NAME:ON_ERROR_PROP_NAME;t.forEach((function(t){e.$call(createEvt(t,o),[{message:r,namespace:t}])}))}var notLoginWsHandler=function(e,t,r){var n=r.useCallbackStyle,o=r.log,a=n?ERROR_PROP_NAME:ON_ERROR_PROP_NAME,i=n?RESULT_PROP_NAME:ON_RESULT_PROP_NAME;t.$only(createEvt(e,EMIT_EVT),(function(r,n){o("[notLoginHandler] hijack the ws call",e,r,n);var s={message:NOT_LOGIN_ERR_MSG};t.$call(createEvt(e,r,a),[s]),t.$call(createEvt(e,r,i),[{error:s}])}))},getPrivateNamespace=function(e){return e.length>1&&e[0]};function clientEventHandler(e,t,r,n,o,a){var i=getPrivateNamespace(o),s=!1,c=e.log;o.forEach((function(o){if(s=i===o,a[o]){c("[call bindWsHandler]",s,o);var u=[o,a[o],r,s,e];if(e.serverType===SOCKET_IO){var l=t.nspSet;u.push(l[o])}Reflect.apply(n,null,u)}else notLoginWsHandler(o,r,e)})),r.$on(LOGOUT_EVENT_NAME,(function(){c("LOGOUT_EVENT_NAME"),triggerNamespacesOnError(r,o,LOGOUT_EVENT_NAME),o.forEach((function(t){clearMainEmitEvt(r,t),a[t]=!1,notLoginWsHandler(t,r,e)}))}))}var keys$1=[WS_REPLY_TYPE,WS_EVT_NAME,WS_DATA_NAME],isWsReply=function(e){var t=e.data;return!!t&&(keys$1.filter((function(e){return isObjectHasKey$1(t,e)})).length===keys$1.length&&t)},extractWsPayload=function(e){var t,r=e.data,n=isString$1(r)?JSON.parse(r):r;if(!1!==(t=isWsReply(n)))return{resolverName:t[WS_EVT_NAME],data:t[WS_DATA_NAME],type:t[WS_REPLY_TYPE]};throw new JsonqlError("payload can not be decoded",e)},errorTypeHandler=function(e,t,r,n,o){var a=[t];r&&a.push(r),a.push(o);var i=Reflect.apply(createEvt,null,a),s=n.data||n;e.$trigger(i,[s])};function wsMainHandler(e,t,r,n,o){var a=o.useCallbackStyle,i=o.log;i("wsMainHandler log test");var s=a?READY_PROP_NAME:ON_READY_PROP_NAME,c=a?LOGIN_PROP_NAME:ON_LOGIN_PROP_NAME,u=a?MESSAGE_PROP_NAME:ON_MESSAGE_PROP_NAME,l=a?RESULT_PROP_NAME:ON_RESULT_PROP_NAME,f=a?ERROR_PROP_NAME:ON_ERROR_PROP_NAME;t.onopen=function(){i("ws.onopen listened"),r.$call(s,e),n&&(i("isPrivate and fire the "+c),r.$call(c,e)),r.$only(createEvt(e,EMIT_REPLY_TYPE),(function(e,r){i("calling server",e,r),t.send(createQueryStr(e,r))}))},t.onmessage=function(t){try{var n=extractWsPayload(t),o=n.resolverName,a=n.type;switch(i("Hear from server",a,n),a){case EMIT_REPLY_TYPE:var s=createEvt(e,o,u),c=r.$trigger(s,[n]);i("EMIT_REPLY_TYPE",s,c);break;case ACKNOWLEDGE_REPLY_TYPE:var p=createEvt(e,o,l);r.$trigger(p,[n]);break;case ERROR_TYPE:i("ERROR_TYPE"),errorTypeHandler(r,e,o,n,f);break;default:i("Unhandled event!",n),errorTypeHandler(r,e,o,n,f)}}catch(t){console.error("ws.onmessage error",t),errorTypeHandler(r,e,!1,t,f)}},t.onclose=function(){i("ws.onclose callback")},r.$on(LOGOUT_EVENT_NAME,(function(){try{i("terminate ws connection"),t.terminate()}catch(e){console.error("ws.terminate error",e)}}))}var createNsps=function(e,t,r){var n=t.nspSet,o=t.publicNamespace,a=!1,i=[],s={};if(e.enableAuth)a=!0,s=(i=getNamespaceInOrder(n,o)).map((function(t,n){var o,a,i;return 0===n?r?(e.token=r,(o={})[t]=createNspAuthClient(t,e),o):((a={})[t]=!1,a):((i={})[t]=createNspClient(t,e),i)})).reduce((function(e,t){return Object.assign(e,t)}),{});else{var c=getNameFromPayload(n);i.push(c),s[c]=createNspClient(!1,e)}return{nsps:s,namespaces:i,login:a}};function createClient(e,t,r){var n=[e,t,r,wsMainHandler],o=e.token,a=e.log,i=createNsps(e,t,o),s=i.nsps,c=i.namespaces,u=i.login;return Reflect.apply(clientEventHandler,null,n.concat([c,s])),u&&r.$only(LOGIN_EVENT_NAME,(function(o){a("createClient LOGIN_EVENT_NAME"),clearMainEmitEvt(r,c);var i=createNsps(e,t,o);Reflect.apply(clientEventHandler,null,n.concat([i.namespaces,i.nsps]))})),{opts:e,nspMap:t,ee:r}}var wsDummyLogger=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];Reflect.apply(console.info,console,["local log"].concat(e))};function createClientResolver(e){var t=createWsClient(e),r=createWsClient(e,!0);return function(e,n,o){return e.nspClient=t,e.nspAuthClient=r,e.log&&"function"==typeof e.log||(console.info("No log provided!"),e.log=wsDummyLogger),e.log("@jsonql/ws ee",o.name),e.log("@jsonql/ws createClientResolver",e),createClient(e,n,o)}}var wsClientResolver=createClientResolver(WebSocket);function wsClient(e,t){return void 0===e&&(e={}),void 0===t&&(t={}),checkWsClientOptions(e,t).then(wsClientCore(wsClientResolver))}module.exports=wsClient; //# sourceMappingURL=node.js.map diff --git a/packages/@jsonql/ws/opt.js b/packages/@jsonql/ws/opt.js deleted file mode 100644 index a3fe11a02b5c5f694ab4615ef67decde3a4a7855..0000000000000000000000000000000000000000 --- a/packages/@jsonql/ws/opt.js +++ /dev/null @@ -1,11 +0,0 @@ -// export the required options here to merge with the http client to do a combine check -import { jsonqlWsDefaultConstProps, jsonqlWsDefaultOptions } from 'jsonql-ws-client' -import { constProps as localConstProps } from './src/options' - -const defaultOptions = jsonqlWsDefaultOptions -const constProps = Object.assign(jsonqlWsDefaultConstProps, localConstProps) - -export { - defaultOptions, - constProps -} diff --git a/packages/@jsonql/ws/package.json b/packages/@jsonql/ws/package.json index 9180d14ec3a6039eddc0f9572dfd77e75fe58a19..4d1a4254da86f83b424c17869556f7c1a234b6a7 100644 --- a/packages/@jsonql/ws/package.json +++ b/packages/@jsonql/ws/package.json @@ -1,6 +1,6 @@ { "name": "@jsonql/ws", - "version": "1.0.4", + "version": "1.0.6", "description": "jsonql WS (WebSocket) client module for browser / node", "main": "node.js", "browser": "dist/jsonql-ws.umd.js", @@ -10,8 +10,7 @@ "src", "index.js", "node.js", - "node.js.map", - "opt.js" + "node.js.map" ], "scripts": { "test": "ava --verbose", @@ -45,8 +44,8 @@ "jsonql-errors": "^1.1.10", "jsonql-jwt": "^1.3.8", "jsonql-params-validator": "^1.5.2", - "jsonql-utils": "^0.9.3", - "jsonql-ws-client-core": "^0.3.6", + "jsonql-utils": "^0.9.4", + "jsonql-ws-client-core": "^0.3.7", "ws": "^7.2.0" }, "devDependencies": { @@ -55,12 +54,12 @@ "fs-extra": "^8.1.0", "glob": "^7.1.6", "jsonql-contract": "^1.8.5", - "jsonql-koa": "^1.5.3", - "jsonql-ws-server": "^1.5.1", + "jsonql-koa": "^1.5.4", + "jsonql-ws-server": "^1.5.2", "kefir": "^3.8.6", "koa": "^2.11.0", "koa-bodyparser": "^4.2.1", - "rollup": "^1.27.10", + "rollup": "^1.27.11", "rollup-plugin-alias": "^2.2.0", "rollup-plugin-async": "^1.2.0", "rollup-plugin-buble": "^0.19.8", diff --git a/packages/@jsonql/ws/src/core/extract-ws-payload.js b/packages/@jsonql/ws/src/core/extract-ws-payload.js index d93aa55a7dba876e39904da25de79f46e77e7a52..b345bb9fe89f9357e3943662ecfbe061a0f8137a 100644 --- a/packages/@jsonql/ws/src/core/extract-ws-payload.js +++ b/packages/@jsonql/ws/src/core/extract-ws-payload.js @@ -26,7 +26,6 @@ const isWsReply = payload => { const extractWsPayload = payload => { const { data } = payload; let json = isString(data) ? JSON.parse(data) : data - // debugFn('extractWsPayload', json) let fdata; if ((fdata = isWsReply(json)) !== false) { return { diff --git a/packages/@jsonql/ws/src/node.js b/packages/@jsonql/ws/src/node.js index 1272d84cffa8a0aab933d797a1d67535e13e71e0..072c1114ac55b1315f44646a9b1493a395fa7f77 100644 --- a/packages/@jsonql/ws/src/node.js +++ b/packages/@jsonql/ws/src/node.js @@ -1,16 +1,11 @@ -// this is the module entry point for ES6 for client -// Node.js version -// import debug from 'debug' -// global.debug = debug - +// this is the module entry point for node import { jsonqlWsClientCore } from 'jsonql-ws-client-core' -import { VERSION } from 'jsonql-ws-client-core/share' -import { constProps } from './options' +import { checkWsClientOptions } from './options' import wsClientResolver from './node-ws-client-resolver' -import debug from 'debug' - -const debugFn = debug('jsonql-ws') -debugFn('VERSION', VERSION) // export back the function and that's it -export default jsonqlWsClientCore(wsClientResolver, constProps) +export default function wsClient(config = {}, constProps = {}) { + // debugFn('inited config', config, constProps) + return checkWsClientOptions(config, constProps) + .then(jsonqlWsClientCore(wsClientResolver)) +} diff --git a/packages/@jsonql/ws/src/options/index.js b/packages/@jsonql/ws/src/options/index.js index 7df13abc8eccac8eb153cad29ca0f4895d7c2c1a..90e3613b9adc5e4ae97c304fc1c62a17e610418e 100644 --- a/packages/@jsonql/ws/src/options/index.js +++ b/packages/@jsonql/ws/src/options/index.js @@ -2,9 +2,31 @@ // create options import { JS_WS_NAME } from 'jsonql-constants' // constant props -const constProps = { +const wsClientConstProps = { version: '__PLACEHOLDER__', // will get replace serverType: JS_WS_NAME } +import { + jsonqlWsDefaultConstProps, + jsonqlWsDefaultOptions +} from 'jsonql-ws-client-core' +import { checkConfig } from 'jsonql-params-validator' +import { postConfigCheck } from 'jsonql-utils/src/pre-config-check' -export { constProps } +/** + * The bug is the interface because + * jsonqlWsClientCore takes the constProps at init + * then only accept the config, therefore if we pass + * the constProps as second param then it got ignore + * what we need to do here is to preCheckConfig first + * @param {object} config supply by dev + * @param {object} [constProps={}] prop don't want to get check + * @return {promise} resolve to the final config + */ +function checkWsClientOptions(config, constProps = {}) { + const localConstProps = Object.assign(jsonqlWsDefaultConstProps, wsClientConstProps, constProps) + const checkFn = postConfigCheck(jsonqlWsDefaultOptions, localConstProps, checkConfig) + return checkFn(config) +} + +export { checkWsClientOptions } diff --git a/packages/@jsonql/ws/tests/opt.test.js b/packages/@jsonql/ws/tests/opt.test.js deleted file mode 100644 index 65421cdfef651db606902f09da664c03b01b464d..0000000000000000000000000000000000000000 --- a/packages/@jsonql/ws/tests/opt.test.js +++ /dev/null @@ -1,13 +0,0 @@ -// just testing to see the new opt works or not -const test = require('ava') -const { defaultOptions, constProps } = require('../opt') -const { isObjectHasKey } = require('jsonql-utils') - -test(`The opt should export two properties`, t => { - - t.truthy(isObjectHasKey(defaultOptions, 'useCallbackStyle')) - - t.truthy(isObjectHasKey(constProps, 'serverType')) - - t.truthy(isObjectHasKey(constProps, 'wssPath')) -}) diff --git a/packages/@jsonql/ws/tests/ws-client-auth-login.test.js b/packages/@jsonql/ws/tests/ws-client-auth-login.test.js index 5ffeb99eabd96871bea895b61cf8f0081ccbb389..d92ec4cca1f094fdfea98c9e3e6f56870ef0b75c 100644 --- a/packages/@jsonql/ws/tests/ws-client-auth-login.test.js +++ b/packages/@jsonql/ws/tests/ws-client-auth-login.test.js @@ -34,7 +34,7 @@ test.before(async t => { hostname: `ws://localhost:${port}`, contract: publicContract, enableAuth: true - }) + }, { log: debug }) }) test.after(t => { diff --git a/packages/@jsonql/ws/tests/ws-client-auth.test.js b/packages/@jsonql/ws/tests/ws-client-auth.test.js index ae3ef3ce541de00417bbb244390528199aaf5c0b..51d7231e688ecb79da57e85a037b8ada4fd48933 100644 --- a/packages/@jsonql/ws/tests/ws-client-auth.test.js +++ b/packages/@jsonql/ws/tests/ws-client-auth.test.js @@ -36,7 +36,7 @@ test.before(async t => { hostname: `ws://localhost:${port}`, contract: publicContract, enableAuth: true - }) + }, { log: debug }) }) test.after(t => { diff --git a/packages/@jsonql/ws/tests/ws-client-basic.test.js b/packages/@jsonql/ws/tests/ws-client-basic.test.js index da8be05b091ccd06ea5b6f91d863f1e44f92651b..1b46f5f84966119bbf635b04578412ef57349fbf 100644 --- a/packages/@jsonql/ws/tests/ws-client-basic.test.js +++ b/packages/@jsonql/ws/tests/ws-client-basic.test.js @@ -10,9 +10,19 @@ const serverSetup = require('./fixtures/server-setup') const contractDir = join(__dirname, 'fixtures', 'contract') const publicContract = fsx.readJsonSync(join(contractDir, 'public-contract.json')) const contract = fsx.readJsonSync(join(contractDir, 'contract.json')) - +const NBEventService = require('nb-event-service') const debug = require('debug')('jsonql-ws-client:test:basic') +class LocalEventService extends NBEventService { + constructor() { + super({logger: debug}) + } + + get name() { + return 'test-local-event-service' + } +} + const port = 8001; // prepare test.before(async t => { @@ -24,7 +34,7 @@ test.before(async t => { t.context.client = await wsClient({ hostname: `ws://localhost:${port}`, contract: publicContract - }) + }, {log: debug, eventEmitter: new LocalEventService()}) }) // finish test.after(t => { @@ -35,8 +45,6 @@ test.cb('It should able to connect to the ws server', t => { t.plan(2) let client = t.context.client - // debug(client) - let ver = client.devHelpers.getVer() t.truthy(ver) diff --git a/packages/node-client/index.js b/packages/node-client/index.js index b40f2c5b0c1fe80352b3787a9e200525d8e678a5..5bea56133a1b67e375f5d1f2cb7a8f5035aaf852 100755 --- a/packages/node-client/index.js +++ b/packages/node-client/index.js @@ -4,9 +4,10 @@ const { getContract, generator, checkOptions, - createSocketClient + createSocketClient, + getDebug } = require('./src') -const debug = require('debug')('jsonql-node-client:main') +const debug = getDebug('main') // finally /** @@ -49,7 +50,6 @@ module.exports = function jsonqlNodeClient(config) { ) // create the node client if any .then(({opts, contract, client}) => { - opts.log = debug; // pass the debug the socket client return createSocketClient(client, opts, contract, rawConfig) }) } diff --git a/packages/node-client/package.json b/packages/node-client/package.json index 17219c4704e32d92779f50e5732ea1689bd48e3c..4672b59a5802d47c1f0d7fdb82bf0502ca3de4b9 100755 --- a/packages/node-client/package.json +++ b/packages/node-client/package.json @@ -1,7 +1,7 @@ { "name": "jsonql-node-client", - "version": "1.2.6", - "description": "jsonql node.js client", + "version": "1.2.7", + "description": "jsonql node.js client with ws clients", "main": "index.js", "scripts": { "prepare": "npm run test", @@ -13,7 +13,7 @@ "test:valid": "DEBUG=jsonql-node-client* ava tests/validation.test.js", "test:config": "DEBUG=jsonql-node-client* ava tests/config.test.js", "test:jwt": "DEBUG=jsonql-node-client*,jsonql-contract* ava tests/jwt.test.js", - "test:socket": "DEBUG=jsonql-node-client* ava tests/socket.test.js", + "test:socket": "DEBUG=jsonql-* ava --verbose tests/socket.test.js", "test:contract": "DEBUG=jsonql-node-client:main,jsonql-koa:process-contract ava --verbose tests/contract.test.js" }, "homepage": "jsonql.org", @@ -37,29 +37,29 @@ ], "author": "to1source ", "contributors": [ - "NEWBRAN LTD " + "Joel Chu " ], "license": "MIT", "dependencies": { "debug": "^4.1.1", "fs-extra": "^8.1.0", - "jsonql-constants": "^1.8.13", + "jsonql-constants": "^1.8.14", "jsonql-errors": "^1.1.10", - "jsonql-jwt": "^1.3.7", - "jsonql-params-validator": "^1.5.1", - "jsonql-utils": "^0.9.2", + "jsonql-jwt": "^1.3.8", + "jsonql-params-validator": "^1.5.2", + "jsonql-utils": "^0.9.4", "lodash.merge": "^4.6.2", "node-cache": "^5.1.0", "request": "^2.88.0" }, "optionalDependencies": { - "@jsonql/ws": "^0.9.0" + "@jsonql/ws": "^1.0.6" }, "devDependencies": { "ava": "^2.4.0", - "jsonql-contract": "^1.8.4", - "jsonql-koa": "^1.5.0", - "jsonql-ws-server": "^1.4.11", + "jsonql-contract": "^1.8.5", + "jsonql-koa": "^1.5.4", + "jsonql-ws-server": "^1.5.2", "nyc": "^14.1.1", "server-io-core": "^1.2.0", "superkoa": "^1.0.3" diff --git a/packages/node-client/src/base/event-service.js b/packages/node-client/src/base/event-service.js new file mode 100644 index 0000000000000000000000000000000000000000..0fabe025cbba3b9d55b74752882280cc3747ea07 --- /dev/null +++ b/packages/node-client/src/base/event-service.js @@ -0,0 +1,17 @@ +// we extend the nbEventService before we pass it over +const NBEventService = require('nb-event-service') +const { getDebug } = require('../utils') +const debug = getDebug('jsonql-evt-srv') + +class JsonqlNodeClientEventService extends NBEventService { + + constructor() { + super({ logger: debug }) + } + // overwrite + get name() { + return 'jsonql-node-client-event-service' + } +} + +module.exports = { JsonqlNodeClientEventService } diff --git a/packages/node-client/src/base/jsonql-auth-cls.js b/packages/node-client/src/base/jsonql-auth-cls.js index d6b7e76a292dab3ef9ec3c0440f7c2d29fb9a135..ed8f0c4423d6bcde53bb42a424f3642eb2950e47 100644 --- a/packages/node-client/src/base/jsonql-auth-cls.js +++ b/packages/node-client/src/base/jsonql-auth-cls.js @@ -2,17 +2,17 @@ const nbEventService = require('nb-event-service') const { LOGIN_EVENT_NAME, LOGOUT_EVENT_NAME, AUTH_HEADER , BEARER } = require('jsonql-constants') const { isFunc } = require('jsonql-utils') +const { JsonqlNodeClientEventService } = require('./event-service') const JsonqlRequestClient = require('./request-client') const { display, getDebug, resultHandler } = require('../utils') const debug = getDebug('jsonql-auth-cls') -// just a placeholder for overwrite -let jsonqlClassLogger = () => {} + class JsonqlAuthClient extends JsonqlRequestClient { constructor(config) { super(config) - this.eventEmitter = new nbEventService({logger: this.logger}) + this.eventEmitter = new JsonqlNodeClientEventService() } /** @@ -24,25 +24,6 @@ class JsonqlAuthClient extends JsonqlRequestClient { return this.__storeAuthToken(token) } - /** - * setter to pass a logger for the event emitter - * @param {function} fn mostly just the debug - * @return {void} - */ - set logger(fn) { - if (isFunc(fn)) { - jsonqlClassLogger = fn; - } - } - - /** - * getter to get the logger for event emitter - * @return {function} logger or just the placeholder - */ - get logger() { - return jsonqlClassLogger; - } - /** * We first call the user / built in method then use this * callback method to trigger the success login (token) diff --git a/packages/node-client/src/create-socket-client.js b/packages/node-client/src/create-socket-client.js index 70aa7e142b558b4539799bef4f7767d7c5274170..f2412a1326c65b3cd900b1bdaff80313d7656dff 100644 --- a/packages/node-client/src/create-socket-client.js +++ b/packages/node-client/src/create-socket-client.js @@ -1,7 +1,8 @@ // new method to include the socket client when pass the serverType config const { JS_WS_NAME, JS_WS_SOCKET_IO_NAME, JS_PRIMUS_NAME, SOCKET_NAME } = require('jsonql-constants') const { JsonqlError } = require('jsonql-errors') -const debug = require('debug')('jsonql-node-client:create-socket-client') +const { getDebug } = require('./utils') +const debug = getDebug('create-socket-client') /** * get the socket client node version using serverType @@ -39,22 +40,25 @@ function createSocketClient(client, config, contract, rawConfig) { const { serverType } = config; debug('serverType', serverType) if (serverType) { + let constProp = {} // need to pass the eventEmitter here to the config - rawConfig.eventEmitter = client.eventEmitter() + constProp.eventEmitter = client.eventEmitter() // also need to pass the contract - rawConfig.contract = contract; + constProp.contract = contract; + constProp.log = debug; + const socketClient = getSocketClient(serverType) // do our thing here // @TODO need to check when we call the login method from // the http client, is it triggering the same login event to the // socket client - return socketClient(rawConfig) - .then(socketCalls => { - client[SOCKET_NAME] = socketCalls - return client; + return socketClient(rawConfig, constProp) + .then(socketMethods => { + client[SOCKET_NAME] = socketMethods + return client }) } - return client; + return client } catch(e) { debug('createSocketClient', client) throw new JsonqlError('createSocketClient', e) diff --git a/packages/node-client/src/generator.js b/packages/node-client/src/generator.js index c19ab6d2065187e26a497b4873274185cde89e28..8e1f0c40a0d6cf94471f93e1f9be1392f13673c5 100755 --- a/packages/node-client/src/generator.js +++ b/packages/node-client/src/generator.js @@ -1,7 +1,7 @@ // the main interface generator const { validateAsync } = require('jsonql-params-validator') const { JsonqlValidationError, finalCatch } = require('jsonql-errors') -const { getDebug, display, injectToFn, chainFns } = require('./utils') +const { getDebug, display, injectToFn, chainFns, isContract } = require('./utils') const debug = getDebug('generator') /** @@ -10,7 +10,7 @@ const debug = getDebug('generator') * @return {object} contract may be from server */ function getContract(jsonqlInstance, contract = {}) { - if (contract && (contract.query || contract.mutation)) { + if (isContract(contract)) { return Promise.resolve(contract) } return jsonqlInstance.getContract() diff --git a/packages/node-client/src/index.js b/packages/node-client/src/index.js index edd88eec71b5389d8c3ce4e0faa2e480a7f5d615..14b1aee421ab795152c21dc1e21d1c2bbffa4263 100644 --- a/packages/node-client/src/index.js +++ b/packages/node-client/src/index.js @@ -1,10 +1,9 @@ // main export interface const JsonqlRequestClient = require('./base') const { getContract, generator } = require('./generator') -const checkOptions = require('./options') const { getDebug } = require('./utils') const { createSocketClient} = require('./create-socket-client') - +const checkOptions = require('./options') // export module.exports = { JsonqlRequestClient, diff --git a/packages/node-client/src/options/index.js b/packages/node-client/src/options/index.js index b0e250fd33d45e81994fc0b5cdbfc46f31987467..71889f1fdc781526d6177a9f46115e1fe7c0bb5f 100755 --- a/packages/node-client/src/options/index.js +++ b/packages/node-client/src/options/index.js @@ -77,7 +77,6 @@ const appProps = { [ENUM_KEY]: [JS_WS_NAME, JS_WS_SOCKET_IO_NAME, JS_PRIMUS_NAME], [ALIAS_KEY]: 'socketClientType' }) - } // debug('appProps', appProps); // export just one method diff --git a/packages/node-client/src/utils.js b/packages/node-client/src/utils.js index 197a5415057581e59f518536e1b8b2befdb76b72..b7e28b883ea59339cd40b46c275f4ea816d54a40 100755 --- a/packages/node-client/src/utils.js +++ b/packages/node-client/src/utils.js @@ -5,7 +5,8 @@ const { isObjectHasKey, resultHandler, injectToFn, - chainFns + chainFns, + isContract } = require('jsonql-utils') const MODULE_NAME = 'jsonql-node-client' @@ -20,6 +21,12 @@ const display = (data, full = false) => ( full ? inspect(data, false, null, true) : (data ? data.toString() : false) ) +/** + * @param {string} name of this debug instance + * @return {function} debug handler + */ +const getDebug = name => debug(MODULE_NAME).extend(name) + // export module.exports = { display, @@ -27,7 +34,6 @@ module.exports = { resultHandler, injectToFn, chainFns, - getDebug: function(name) { - return debug(MODULE_NAME).extend(name) - } + isContract, + getDebug } diff --git a/packages/node-client/tests/socket.test.js b/packages/node-client/tests/socket.test.js index ead7e67702865e79f67674c0182c465db7aadeb6..4411d0521d087d334a3088bb8d131453295bcf59 100644 --- a/packages/node-client/tests/socket.test.js +++ b/packages/node-client/tests/socket.test.js @@ -36,12 +36,11 @@ test.cb(`It should able to connect to the public socket interface`, t => { t.truthy(result) t.end() } - }) test.cb.only(`It should able to connect to the private interface after login`, t => { t.plan(4) - const client = t.context.client; + const client = t.context.client const socket = client.socket // first try to connect to the private interface and should not be able to connect socket.secretChat('calling') diff --git a/packages/utils/browser.js b/packages/utils/browser.js index 777e63a2eca6c77204746cf224c2963eb501484e..5a93429122efed01ffd609cb5d78246ae3b0f3f1 100644 --- a/packages/utils/browser.js +++ b/packages/utils/browser.js @@ -1,2 +1,2 @@ -!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((t=t||self).jsonqlUtils={})}(this,(function(t){"use strict";var r=Array.isArray,e="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},n="object"==typeof e&&e&&e.Object===Object&&e,o="object"==typeof self&&self&&self.Object===Object&&self,u=n||o||Function("return this")(),i=u.Symbol,a=Object.prototype,c=a.hasOwnProperty,f=a.toString,s=i?i.toStringTag:void 0;var l=Object.prototype.toString;var p="[object Null]",v="[object Undefined]",d=i?i.toStringTag:void 0;function y(t){return null==t?void 0===t?v:p:d&&d in Object(t)?function(t){var r=c.call(t,s),e=t[s];try{t[s]=void 0;var n=!0}catch(t){}var o=f.call(t);return n&&(r?t[s]=e:delete t[s]),o}(t):function(t){return l.call(t)}(t)}var h,g,b=(h=Object.getPrototypeOf,g=Object,function(t){return h(g(t))});function _(t){return null!=t&&"object"==typeof t}var j="[object Object]",m=Function.prototype,O=Object.prototype,w=m.toString,P=O.hasOwnProperty,S=w.call(Object);function A(t){if(!_(t)||y(t)!=j)return!1;var r=b(t);if(null===r)return!0;var e=P.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&w.call(e)==S}var N="[object Symbol]";var k=1/0,z=i?i.prototype:void 0,F=z?z.toString:void 0;function E(t){if("string"==typeof t)return t;if(r(t))return function(t,r){for(var e=-1,n=null==t?0:t.length,o=Array(n);++e=n?t:function(t,r,e){var n=-1,o=t.length;r<0&&(r=-r>o?0:o+r),(e=e>o?o:e)<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var u=Array(o);++n-1;);return e}(o,u),function(t,r){for(var e=t.length;e--&&C(r,t[e],0)>-1;);return e}(o,u)+1).join("")}var K=function(t,r){return!!t.filter((function(t){return t===r})).length},W=function(t){return r(t)?t:[t]},Z=function(t,r){try{var e=Object.keys(t);return K(e,r)}catch(t){return!1}},X=function(t){for(var r=[],e=arguments.length-1;e-- >0;)r[e]=arguments[e+1];return function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return r.reduce((function(t,r){return Reflect.apply(r,null,W(t))}),Reflect.apply(t,null,e))}};function Y(t,r){return t===r||t!=t&&r!=r}function tt(t,r){for(var e=t.length;e--;)if(Y(t[e][0],r))return e;return-1}var rt=Array.prototype.splice;function et(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1},et.prototype.set=function(t,r){var e=this.__data__,n=tt(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this};var ot="[object AsyncFunction]",ut="[object Function]",it="[object GeneratorFunction]",at="[object Proxy]";function ct(t){if(!nt(t))return!1;var r=y(t);return r==ut||r==it||r==ot||r==at}var ft,st=u["__core-js_shared__"],lt=(ft=/[^.]+$/.exec(st&&st.keys&&st.keys.IE_PROTO||""))?"Symbol(src)_1."+ft:"";var pt=Function.prototype.toString;var vt=/^\[object .+?Constructor\]$/,dt=Function.prototype,yt=Object.prototype,ht=dt.toString,gt=yt.hasOwnProperty,bt=RegExp("^"+ht.call(gt).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function _t(t){return!(!nt(t)||function(t){return!!lt&< in t}(t))&&(ct(t)?bt:vt).test(function(t){if(null!=t){try{return pt.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t))}function jt(t,r){var e=function(t,r){return null==t?void 0:t[r]}(t,r);return _t(e)?e:void 0}var mt=jt(u,"Map"),Ot=jt(Object,"create");var wt="__lodash_hash_undefined__",Pt=Object.prototype.hasOwnProperty;var St=Object.prototype.hasOwnProperty;var At="__lodash_hash_undefined__";function Nt(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1&&t%1==0&&t<=Yt}function rr(t){return null!=t&&tr(t.length)&&!ct(t)}var er="object"==typeof t&&t&&!t.nodeType&&t,nr=er&&"object"==typeof module&&module&&!module.nodeType&&module,or=nr&&nr.exports===er?u.Buffer:void 0,ur=(or?or.isBuffer:void 0)||function(){return!1},ir={};ir["[object Float32Array]"]=ir["[object Float64Array]"]=ir["[object Int8Array]"]=ir["[object Int16Array]"]=ir["[object Int32Array]"]=ir["[object Uint8Array]"]=ir["[object Uint8ClampedArray]"]=ir["[object Uint16Array]"]=ir["[object Uint32Array]"]=!0,ir["[object Arguments]"]=ir["[object Array]"]=ir["[object ArrayBuffer]"]=ir["[object Boolean]"]=ir["[object DataView]"]=ir["[object Date]"]=ir["[object Error]"]=ir["[object Function]"]=ir["[object Map]"]=ir["[object Number]"]=ir["[object Object]"]=ir["[object RegExp]"]=ir["[object Set]"]=ir["[object String]"]=ir["[object WeakMap]"]=!1;var ar="object"==typeof t&&t&&!t.nodeType&&t,cr=ar&&"object"==typeof module&&module&&!module.nodeType&&module,fr=cr&&cr.exports===ar&&n.process,sr=function(){try{var t=cr&&cr.require&&cr.require("util").types;return t||fr&&fr.binding&&fr.binding("util")}catch(t){}}(),lr=sr&&sr.isTypedArray,pr=lr?function(t){return function(r){return t(r)}}(lr):function(t){return _(t)&&tr(t.length)&&!!ir[y(t)]};function vr(t,r){if(("constructor"!==r||"function"!=typeof t[r])&&"__proto__"!=r)return t[r]}var dr=Object.prototype.hasOwnProperty;function yr(t,r,e){var n=t[r];dr.call(t,r)&&Y(n,e)&&(void 0!==e||r in t)||Tt(t,r,e)}var hr=9007199254740991,gr=/^(?:0|[1-9]\d*)$/;function br(t,r){var e=typeof t;return!!(r=null==r?hr:r)&&("number"==e||"symbol"!=e&&gr.test(t))&&t>-1&&t%1==0&&t0){if(++r>=Er)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(Fr);function Jr(t,r){return Cr(function(t,r,e){return r=zr(void 0===r?t.length-1:r,0),function(){for(var n=arguments,o=-1,u=zr(n.length-r,0),i=Array(u);++o1?r[n-1]:void 0,u=n>2?r[2]:void 0;for(o=Rr.length>3&&"function"==typeof o?(n--,o):void 0,u&&function(t,r,e){if(!nt(e))return!1;var n=typeof r;return!!("number"==n?rr(e)&&br(r,e.length):"string"==n&&r in e)&&Y(e[r],t)}(r[0],r[1],u)&&(o=n<3?void 0:o,n=1),t=Object(t);++e0;)r[e]=arguments[e+1];return function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return r.reduce((function(t,r){return t.then((function(t){return r(t)}))}),Reflect.apply(t,null,e))}},t.chainPromises=function(t,r){return void 0===r&&(r=!1),t.reduce((function(t,e){return t.then((function(t){return e.then((function(e){return!1===r?t.concat([e]):Mr(t,e)}))}))}),Promise.resolve(!1===r?[]:A(r)?r:{}))},t.createEvt=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return t.join("_")},t.createMutation=se,t.createMutationStr=function(t,r,e,n){return void 0===e&&(e={}),void 0===n&&(n=!1),JSON.stringify(se(t,r,e,n))},t.createQuery=fe,t.createQueryStr=function(t,r,e){return void 0===r&&(r=[]),void 0===e&&(e=!1),JSON.stringify(fe(t,r,e))},t.dasherize=function(t){return L(t).replace(/([A-Z])/g,"-$1").replace(/[-_\s]+/g,"-").toLowerCase()},t.extractArgsFromPayload=function(t,r){switch(r){case Br:return t[Gr];case $r:return[t[Ir],t[Qr]];default:throw new Xr("Unknown "+r+" to extract argument from!")}},t.extractParamsFromContract=function(t,r,e){try{var n=t[r][e];if(!n)throw new Wr(e,r);return n}catch(t){throw new Wr(e,t)}},t.extractSocketPart=Yr,t.formatPayload=ie,t.getCallMethod=function(t){switch(!0){case t===Lr[0]:return Br;case t===Lr[1]:return $r;default:return!1}},t.getConfigValue=function(t,r){return r&&A(r)&&t in r?r[t]:void 0},t.getMutationFromArgs=ve,t.getMutationFromPayload=function(t){var r=pe(t,ve);if(!1!==r)return r;throw new Zr("[getMutationArgs] Payload is malformed!",t)},t.getNameFromPayload=ae,t.getNamespaceInOrder=function(t,r){var e=[];for(var n in t)n===r?e[1]=n:e[0]=n;return e},t.getQueryFromArgs=le,t.getQueryFromPayload=function(t){var r=pe(t,le);if(!1!==r)return r;throw new Zr("[getQueryArgs] Payload is malformed!",t)},t.groupByNamespace=function(t,r){void 0===r&&(r=!1);var e=Yr(t);if(!1===e){if(r)return t;throw new Xr("socket not found in contract!")}var n,o={},u=0;for(var i in e){var a=e[i],c=a.namespace;c&&(o[c]||(++u,o[c]={}),o[c][i]=a,n||a.public&&(n=c))}return{size:u,nspSet:o,publicNamespace:n}},t.inArray=K,t.injectToFn=qr,t.isContract=function(t){return!!function(t){return A(t)&&(Z(t,Br)||Z(t,$r)||Z(t,Dr))}(t)&&t},t.isFunc=function(t){if("function"==typeof t)return!0;console.error("Expect to be Function type! Got "+typeof t)},t.isJsonqlErrorObj=de,t.isNotEmpty=function(t){return void 0!==t&&!1!==t&&null!==t&&""!==L(t)},t.isObjectHasKey=Z,t.logger=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];try{window&&window.DEBUG&&Reflect.apply(console.log,console,t)}catch(t){}},t.objDefineProps=function(t,r,e,n){return void 0===n&&(n=null),void 0===Object.getOwnPropertyDescriptor(t,r)&&Object.defineProperty(t,r,{set:e,get:null===n?function(){return null}:n}),t},t.objHasProp=Ur,t.packError=function(t,r,e,n){var o;void 0===r&&(r="JsonqlError"),void 0===e&&(e=0),void 0===n&&(n="");var u={detail:t,className:r,statusCode:e,message:n};return JSON.stringify(((o={}).error=de(t)||u,o[Hr]=te(),o))},t.packResult=function(t,e){void 0===e&&(e=!1);var n={};return n.data=t,e&&r(e)&&(e.push(te()),n[Hr]=e),JSON.stringify(n)},t.preConfigCheck=function(t,r){for(var e=[],n=arguments.length-2;n-- >0;)e[n]=arguments[n+2];var o=Reflect.apply(X,null,e.concat((function(t){return qr(t,Kr,te())})));return function(e){return void 0===e&&(e={}),o(e,t,r)}},t.resultHandler=function(t){return Z(t,"data")&&!Z(t,"error")?t.data:t},t.timestamp=te,t.toArray=W,t.toJson=function(t){return"string"==typeof t?function(t){try{return JSON.parse(t)}catch(r){return t}}(t):JSON.parse(JSON.stringify(t))},t.toPayload=ue,t.urlParams=re,Object.defineProperty(t,"__esModule",{value:!0})})); +!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((t=t||self).jsonqlUtils={})}(this,(function(t){"use strict";var r=Array.isArray,e="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},n="object"==typeof e&&e&&e.Object===Object&&e,o="object"==typeof self&&self&&self.Object===Object&&self,u=n||o||Function("return this")(),i=u.Symbol,a=Object.prototype,c=a.hasOwnProperty,f=a.toString,s=i?i.toStringTag:void 0;var l=Object.prototype.toString;var p="[object Null]",v="[object Undefined]",d=i?i.toStringTag:void 0;function y(t){return null==t?void 0===t?v:p:d&&d in Object(t)?function(t){var r=c.call(t,s),e=t[s];try{t[s]=void 0;var n=!0}catch(t){}var o=f.call(t);return n&&(r?t[s]=e:delete t[s]),o}(t):function(t){return l.call(t)}(t)}var h,g,b=(h=Object.getPrototypeOf,g=Object,function(t){return h(g(t))});function _(t){return null!=t&&"object"==typeof t}var j="[object Object]",m=Function.prototype,O=Object.prototype,w=m.toString,P=O.hasOwnProperty,S=w.call(Object);function A(t){if(!_(t)||y(t)!=j)return!1;var r=b(t);if(null===r)return!0;var e=P.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&w.call(e)==S}var N="[object Symbol]";var k=1/0,z=i?i.prototype:void 0,F=z?z.toString:void 0;function E(t){if("string"==typeof t)return t;if(r(t))return function(t,r){for(var e=-1,n=null==t?0:t.length,o=Array(n);++e=n?t:function(t,r,e){var n=-1,o=t.length;r<0&&(r=-r>o?0:o+r),(e=e>o?o:e)<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var u=Array(o);++n-1;);return e}(o,u),function(t,r){for(var e=t.length;e--&&C(r,t[e],0)>-1;);return e}(o,u)+1).join("")}var K=function(t,r){return!!t.filter((function(t){return t===r})).length},W=function(t){return r(t)?t:[t]},Z=function(t,r){try{var e=Object.keys(t);return K(e,r)}catch(t){return!1}},X=function(t){for(var r=[],e=arguments.length-1;e-- >0;)r[e]=arguments[e+1];return function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return r.reduce((function(t,r){return Reflect.apply(r,null,W(t))}),Reflect.apply(t,null,e))}};function Y(t,r){return t===r||t!=t&&r!=r}function tt(t,r){for(var e=t.length;e--;)if(Y(t[e][0],r))return e;return-1}var rt=Array.prototype.splice;function et(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1},et.prototype.set=function(t,r){var e=this.__data__,n=tt(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this};var ot="[object AsyncFunction]",ut="[object Function]",it="[object GeneratorFunction]",at="[object Proxy]";function ct(t){if(!nt(t))return!1;var r=y(t);return r==ut||r==it||r==ot||r==at}var ft,st=u["__core-js_shared__"],lt=(ft=/[^.]+$/.exec(st&&st.keys&&st.keys.IE_PROTO||""))?"Symbol(src)_1."+ft:"";var pt=Function.prototype.toString;var vt=/^\[object .+?Constructor\]$/,dt=Function.prototype,yt=Object.prototype,ht=dt.toString,gt=yt.hasOwnProperty,bt=RegExp("^"+ht.call(gt).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function _t(t){return!(!nt(t)||function(t){return!!lt&< in t}(t))&&(ct(t)?bt:vt).test(function(t){if(null!=t){try{return pt.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t))}function jt(t,r){var e=function(t,r){return null==t?void 0:t[r]}(t,r);return _t(e)?e:void 0}var mt=jt(u,"Map"),Ot=jt(Object,"create");var wt="__lodash_hash_undefined__",Pt=Object.prototype.hasOwnProperty;var St=Object.prototype.hasOwnProperty;var At="__lodash_hash_undefined__";function Nt(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1&&t%1==0&&t<=Yt}function rr(t){return null!=t&&tr(t.length)&&!ct(t)}var er="object"==typeof t&&t&&!t.nodeType&&t,nr=er&&"object"==typeof module&&module&&!module.nodeType&&module,or=nr&&nr.exports===er?u.Buffer:void 0,ur=(or?or.isBuffer:void 0)||function(){return!1},ir={};ir["[object Float32Array]"]=ir["[object Float64Array]"]=ir["[object Int8Array]"]=ir["[object Int16Array]"]=ir["[object Int32Array]"]=ir["[object Uint8Array]"]=ir["[object Uint8ClampedArray]"]=ir["[object Uint16Array]"]=ir["[object Uint32Array]"]=!0,ir["[object Arguments]"]=ir["[object Array]"]=ir["[object ArrayBuffer]"]=ir["[object Boolean]"]=ir["[object DataView]"]=ir["[object Date]"]=ir["[object Error]"]=ir["[object Function]"]=ir["[object Map]"]=ir["[object Number]"]=ir["[object Object]"]=ir["[object RegExp]"]=ir["[object Set]"]=ir["[object String]"]=ir["[object WeakMap]"]=!1;var ar="object"==typeof t&&t&&!t.nodeType&&t,cr=ar&&"object"==typeof module&&module&&!module.nodeType&&module,fr=cr&&cr.exports===ar&&n.process,sr=function(){try{var t=cr&&cr.require&&cr.require("util").types;return t||fr&&fr.binding&&fr.binding("util")}catch(t){}}(),lr=sr&&sr.isTypedArray,pr=lr?function(t){return function(r){return t(r)}}(lr):function(t){return _(t)&&tr(t.length)&&!!ir[y(t)]};function vr(t,r){if(("constructor"!==r||"function"!=typeof t[r])&&"__proto__"!=r)return t[r]}var dr=Object.prototype.hasOwnProperty;function yr(t,r,e){var n=t[r];dr.call(t,r)&&Y(n,e)&&(void 0!==e||r in t)||Tt(t,r,e)}var hr=9007199254740991,gr=/^(?:0|[1-9]\d*)$/;function br(t,r){var e=typeof t;return!!(r=null==r?hr:r)&&("number"==e||"symbol"!=e&&gr.test(t))&&t>-1&&t%1==0&&t0){if(++r>=Er)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(Fr);function Rr(t,r){return Cr(function(t,r,e){return r=zr(void 0===r?t.length-1:r,0),function(){for(var n=arguments,o=-1,u=zr(n.length-r,0),i=Array(u);++o1?r[n-1]:void 0,u=n>2?r[2]:void 0;for(o=Jr.length>3&&"function"==typeof o?(n--,o):void 0,u&&function(t,r,e){if(!nt(e))return!1;var n=typeof r;return!!("number"==n?rr(e)&&br(r,e.length):"string"==n&&r in e)&&Y(e[r],t)}(r[0],r[1],u)&&(o=n<3?void 0:o,n=1),t=Object(t);++e0;)e[n]=arguments[n+2];var o=Reflect.apply(X,null,e.concat([function(t){return qr(t,Kr,te())}]));return function(e){return void 0===e&&(e={}),o(e,t,r)}}t.VERSION="0.9.4",t.cacheBurst=ee,t.cacheBurstUrl=function(t){return re(t,ee())},t.chainFns=X,t.chainProcessPromises=function(t){for(var r=[],e=arguments.length-1;e-- >0;)r[e]=arguments[e+1];return function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return r.reduce((function(t,r){return t.then((function(t){return r(t)}))}),Reflect.apply(t,null,e))}},t.chainPromises=function(t,r){return void 0===r&&(r=!1),t.reduce((function(t,e){return t.then((function(t){return e.then((function(e){return!1===r?t.concat([e]):Mr(t,e)}))}))}),Promise.resolve(!1===r?[]:A(r)?r:{}))},t.createEvt=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return t.join("_")},t.createMutation=se,t.createMutationStr=function(t,r,e,n){return void 0===e&&(e={}),void 0===n&&(n=!1),JSON.stringify(se(t,r,e,n))},t.createQuery=fe,t.createQueryStr=function(t,r,e){return void 0===r&&(r=[]),void 0===e&&(e=!1),JSON.stringify(fe(t,r,e))},t.dasherize=function(t){return L(t).replace(/([A-Z])/g,"-$1").replace(/[-_\s]+/g,"-").toLowerCase()},t.extractArgsFromPayload=function(t,r){switch(r){case Br:return t[Gr];case $r:return[t[Ir],t[Qr]];default:throw new Xr("Unknown "+r+" to extract argument from!")}},t.extractParamsFromContract=function(t,r,e){try{var n=t[r][e];if(!n)throw new Wr(e,r);return n}catch(t){throw new Wr(e,t)}},t.extractSocketPart=Yr,t.formatPayload=ie,t.getCallMethod=function(t){switch(!0){case t===Lr[0]:return Br;case t===Lr[1]:return $r;default:return!1}},t.getConfigValue=function(t,r){return r&&A(r)&&t in r?r[t]:void 0},t.getMutationFromArgs=ve,t.getMutationFromPayload=function(t){var r=pe(t,ve);if(!1!==r)return r;throw new Zr("[getMutationArgs] Payload is malformed!",t)},t.getNameFromPayload=ae,t.getNamespaceInOrder=function(t,r){var e=[];for(var n in t)n===r?e[1]=n:e[0]=n;return e},t.getQueryFromArgs=le,t.getQueryFromPayload=function(t){var r=pe(t,le);if(!1!==r)return r;throw new Zr("[getQueryArgs] Payload is malformed!",t)},t.groupByNamespace=function(t,r){void 0===r&&(r=!1);var e=Yr(t);if(!1===e){if(r)return t;throw new Xr("socket not found in contract!")}var n,o={},u=0;for(var i in e){var a=e[i],c=a.namespace;c&&(o[c]||(++u,o[c]={}),o[c][i]=a,n||a.public&&(n=c))}return{size:u,nspSet:o,publicNamespace:n}},t.inArray=K,t.injectToFn=qr,t.isContract=function(t){return!!function(t){return A(t)&&(Z(t,Br)||Z(t,$r)||Z(t,Dr))}(t)&&t},t.isFunc=function(t){if("function"==typeof t)return!0;console.error("Expect to be Function type! Got "+typeof t)},t.isJsonqlErrorObj=de,t.isNotEmpty=function(t){return void 0!==t&&!1!==t&&null!==t&&""!==L(t)},t.isObjectHasKey=Z,t.logger=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];try{window&&window.DEBUG&&Reflect.apply(console.log,console,t)}catch(t){}},t.objDefineProps=function(t,r,e,n){return void 0===n&&(n=null),void 0===Object.getOwnPropertyDescriptor(t,r)&&Object.defineProperty(t,r,{set:e,get:null===n?function(){return null}:n}),t},t.objHasProp=Ur,t.packError=function(t,r,e,n){var o;void 0===r&&(r="JsonqlError"),void 0===e&&(e=0),void 0===n&&(n="");var u={detail:t,className:r,statusCode:e,message:n};return JSON.stringify(((o={}).error=de(t)||u,o[Hr]=te(),o))},t.packResult=function(t,e){void 0===e&&(e=!1);var n={};return n.data=t,e&&r(e)&&(e.push(te()),n[Hr]=e),JSON.stringify(n)},t.postConfigCheck=function(t,r){for(var e=[],n=arguments.length-2;n-- >0;)e[n]=arguments[n+2];return function(n){if(void 0===n&&(n={}),Ur(n,Kr))return Promise.resolve(Mr({},n,r));var o=Reflect.apply(ye,null,[t,r].concat(e));return Promise.resolve(o(n))}},t.preConfigCheck=ye,t.resultHandler=function(t){return Z(t,"data")&&!Z(t,"error")?t.data:t},t.timestamp=te,t.toArray=W,t.toJson=function(t){return"string"==typeof t?function(t){try{return JSON.parse(t)}catch(r){return t}}(t):JSON.parse(JSON.stringify(t))},t.toPayload=ue,t.urlParams=re,Object.defineProperty(t,"__esModule",{value:!0})})); //# sourceMappingURL=browser.js.map diff --git a/packages/utils/index.js b/packages/utils/index.js index 03e177d8fe1337e0267e41fa790174038482afa2..2395826e6beaedab694603abd749fe014eefe5f4 100644 --- a/packages/utils/index.js +++ b/packages/utils/index.js @@ -50,6 +50,7 @@ import { isJsonqlErrorObj, preConfigCheck, + postConfigCheck, VERSION } from './module' @@ -140,6 +141,7 @@ export { objHasProp, preConfigCheck, - + postConfigCheck, + VERSION } diff --git a/packages/utils/main.js b/packages/utils/main.js index 626d7b27a68af8ba911b3de1866ca3dd5f5e407c..52427b4ca4457f7be9a0e9d52f5edfb763e1df84 100644 --- a/packages/utils/main.js +++ b/packages/utils/main.js @@ -1,2 +1,2 @@ -"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var fs=_interopDefault(require("fs")),path=require("path"),isArray=Array.isArray,global$1="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},freeGlobal="object"==typeof global$1&&global$1&&global$1.Object===Object&&global$1,freeSelf="object"==typeof self&&self&&self.Object===Object&&self,root=freeGlobal||freeSelf||Function("return this")(),Symbol=root.Symbol,objectProto=Object.prototype,hasOwnProperty=objectProto.hasOwnProperty,nativeObjectToString=objectProto.toString,symToStringTag=Symbol?Symbol.toStringTag:void 0;function getRawTag(e){var t=hasOwnProperty.call(e,symToStringTag),r=e[symToStringTag];try{e[symToStringTag]=void 0;var n=!0}catch(e){}var o=nativeObjectToString.call(e);return n&&(t?e[symToStringTag]=r:delete e[symToStringTag]),o}var objectProto$1=Object.prototype,nativeObjectToString$1=objectProto$1.toString;function objectToString(e){return nativeObjectToString$1.call(e)}var nullTag="[object Null]",undefinedTag="[object Undefined]",symToStringTag$1=Symbol?Symbol.toStringTag:void 0;function baseGetTag(e){return null==e?void 0===e?undefinedTag:nullTag:symToStringTag$1&&symToStringTag$1 in Object(e)?getRawTag(e):objectToString(e)}function overArg(e,t){return function(r){return e(t(r))}}var getPrototype=overArg(Object.getPrototypeOf,Object);function isObjectLike(e){return null!=e&&"object"==typeof e}var objectTag="[object Object]",funcProto=Function.prototype,objectProto$2=Object.prototype,funcToString=funcProto.toString,hasOwnProperty$1=objectProto$2.hasOwnProperty,objectCtorString=funcToString.call(Object);function isPlainObject(e){if(!isObjectLike(e)||baseGetTag(e)!=objectTag)return!1;var t=getPrototype(e);if(null===t)return!0;var r=hasOwnProperty$1.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&funcToString.call(r)==objectCtorString}function arrayMap(e,t){for(var r=-1,n=null==e?0:e.length,o=Array(n);++ro?0:o+t),(r=r>o?o:r)<0&&(r+=o),o=t>r?0:r-t>>>0,t>>>=0;for(var a=Array(o);++n=n?e:baseSlice(e,t,r)}function baseFindIndex(e,t,r,n){for(var o=e.length,a=r+(n?1:-1);n?a--:++a-1;);return r}function charsStartIndex(e,t){for(var r=-1,n=e.length;++r-1;);return r}function asciiToArray(e){return e.split("")}var rsAstralRange="\\ud800-\\udfff",rsComboMarksRange="\\u0300-\\u036f",reComboHalfMarksRange="\\ufe20-\\ufe2f",rsComboSymbolsRange="\\u20d0-\\u20ff",rsComboRange=rsComboMarksRange+reComboHalfMarksRange+rsComboSymbolsRange,rsVarRange="\\ufe0e\\ufe0f",rsZWJ="\\u200d",reHasUnicode=RegExp("["+rsZWJ+rsAstralRange+rsComboRange+rsVarRange+"]");function hasUnicode(e){return reHasUnicode.test(e)}var rsAstralRange$1="\\ud800-\\udfff",rsComboMarksRange$1="\\u0300-\\u036f",reComboHalfMarksRange$1="\\ufe20-\\ufe2f",rsComboSymbolsRange$1="\\u20d0-\\u20ff",rsComboRange$1=rsComboMarksRange$1+reComboHalfMarksRange$1+rsComboSymbolsRange$1,rsVarRange$1="\\ufe0e\\ufe0f",rsAstral="["+rsAstralRange$1+"]",rsCombo="["+rsComboRange$1+"]",rsFitz="\\ud83c[\\udffb-\\udfff]",rsModifier="(?:"+rsCombo+"|"+rsFitz+")",rsNonAstral="[^"+rsAstralRange$1+"]",rsRegional="(?:\\ud83c[\\udde6-\\uddff]){2}",rsSurrPair="[\\ud800-\\udbff][\\udc00-\\udfff]",rsZWJ$1="\\u200d",reOptMod=rsModifier+"?",rsOptVar="["+rsVarRange$1+"]?",rsOptJoin="(?:"+rsZWJ$1+"(?:"+[rsNonAstral,rsRegional,rsSurrPair].join("|")+")"+rsOptVar+reOptMod+")*",rsSeq=rsOptVar+reOptMod+rsOptJoin,rsSymbol="(?:"+[rsNonAstral+rsCombo+"?",rsCombo,rsRegional,rsSurrPair,rsAstral].join("|")+")",reUnicode=RegExp(rsFitz+"(?="+rsFitz+")|"+rsSymbol+rsSeq,"g");function unicodeToArray(e){return e.match(reUnicode)||[]}function stringToArray(e){return hasUnicode(e)?unicodeToArray(e):asciiToArray(e)}function toString(e){return null==e?"":baseToString(e)}var reTrim=/^\s+|\s+$/g;function trim(e,t,r){if((e=toString(e))&&(r||void 0===t))return e.replace(reTrim,"");if(!e||!(t=baseToString(t)))return e;var n=stringToArray(e),o=stringToArray(t);return castSlice(n,charsStartIndex(n,o),charsEndIndex(n,o)+1).join("")}var inArray=function(e,t){return!!e.filter((function(e){return e===t})).length},toArray=function(e){return isArray(e)?e:[e]},parse=function(e){try{return JSON.parse(e)}catch(t){return e}},isObjectHasKey=function(e,t){try{var r=Object.keys(e);return inArray(r,t)}catch(e){return!1}},createEvt=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return e.join("_")},getConfigValue=function(e,t){return t&&isPlainObject(t)&&e in t?t[e]:void 0},toJson=function(e){return"string"==typeof e?parse(e):JSON.parse(JSON.stringify(e))},isNotEmpty=function(e){return void 0!==e&&!1!==e&&null!==e&&""!==trim(e)},chainFns=function(e){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];return function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];return t.reduce((function(e,t){return Reflect.apply(t,null,toArray(e))}),Reflect.apply(e,null,r))}};function listCacheClear(){this.__data__=[],this.size=0}function eq(e,t){return e===t||e!=e&&t!=t}function assocIndexOf(e,t){for(var r=e.length;r--;)if(eq(e[r][0],t))return r;return-1}var arrayProto=Array.prototype,splice=arrayProto.splice;function listCacheDelete(e){var t=this.__data__,r=assocIndexOf(t,e);return!(r<0)&&(r==t.length-1?t.pop():splice.call(t,r,1),--this.size,!0)}function listCacheGet(e){var t=this.__data__,r=assocIndexOf(t,e);return r<0?void 0:t[r][1]}function listCacheHas(e){return assocIndexOf(this.__data__,e)>-1}function listCacheSet(e,t){var r=this.__data__,n=assocIndexOf(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}function ListCache(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t-1&&e%1==0&&e<=MAX_SAFE_INTEGER}function isArrayLike(e){return null!=e&&isLength(e.length)&&!isFunction(e)}function isArrayLikeObject(e){return isObjectLike(e)&&isArrayLike(e)}function stubFalse(){return!1}var freeExports$1="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule$1=freeExports$1&&"object"==typeof module&&module&&!module.nodeType&&module,moduleExports$1=freeModule$1&&freeModule$1.exports===freeExports$1,Buffer$1=moduleExports$1?root.Buffer:void 0,nativeIsBuffer=Buffer$1?Buffer$1.isBuffer:void 0,isBuffer=nativeIsBuffer||stubFalse,argsTag$1="[object Arguments]",arrayTag="[object Array]",boolTag="[object Boolean]",dateTag="[object Date]",errorTag="[object Error]",funcTag$1="[object Function]",mapTag="[object Map]",numberTag="[object Number]",objectTag$1="[object Object]",regexpTag="[object RegExp]",setTag="[object Set]",stringTag="[object String]",weakMapTag="[object WeakMap]",arrayBufferTag="[object ArrayBuffer]",dataViewTag="[object DataView]",float32Tag="[object Float32Array]",float64Tag="[object Float64Array]",int8Tag="[object Int8Array]",int16Tag="[object Int16Array]",int32Tag="[object Int32Array]",uint8Tag="[object Uint8Array]",uint8ClampedTag="[object Uint8ClampedArray]",uint16Tag="[object Uint16Array]",uint32Tag="[object Uint32Array]",typedArrayTags={};function baseIsTypedArray(e){return isObjectLike(e)&&isLength(e.length)&&!!typedArrayTags[baseGetTag(e)]}function baseUnary(e){return function(t){return e(t)}}typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=!0,typedArrayTags[argsTag$1]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dataViewTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag$1]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag$1]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=!1;var freeExports$2="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule$2=freeExports$2&&"object"==typeof module&&module&&!module.nodeType&&module,moduleExports$2=freeModule$2&&freeModule$2.exports===freeExports$2,freeProcess=moduleExports$2&&freeGlobal.process,nodeUtil=function(){try{var e=freeModule$2&&freeModule$2.require&&freeModule$2.require("util").types;return e||freeProcess&&freeProcess.binding&&freeProcess.binding("util")}catch(e){}}(),nodeIsTypedArray=nodeUtil&&nodeUtil.isTypedArray,isTypedArray=nodeIsTypedArray?baseUnary(nodeIsTypedArray):baseIsTypedArray;function safeGet(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}var objectProto$8=Object.prototype,hasOwnProperty$6=objectProto$8.hasOwnProperty;function assignValue(e,t,r){var n=e[t];hasOwnProperty$6.call(e,t)&&eq(n,r)&&(void 0!==r||t in e)||baseAssignValue(e,t,r)}function copyObject(e,t,r,n){var o=!r;r||(r={});for(var a=-1,i=t.length;++a-1&&e%1==0&&e0){if(++t>=HOT_COUNT)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var setToString=shortOut(baseSetToString);function baseRest(e,t){return setToString(overRest(e,t,identity),e+"")}function isIterateeCall(e,t,r){if(!isObject(r))return!1;var n=typeof t;return!!("number"==n?isArrayLike(r)&&isIndex(t,r.length):"string"==n&&t in r)&&eq(r[t],e)}function createAssigner(e){return baseRest((function(t,r){var n=-1,o=r.length,a=o>1?r[o-1]:void 0,i=o>2?r[2]:void 0;for(a=e.length>3&&"function"==typeof a?(o--,a):void 0,i&&isIterateeCall(r[0],r[1],i)&&(a=o<3?void 0:a,o=1),t=Object(t);++n0;)r[n]=arguments[n+2];var o=Reflect.apply(chainFns,null,r.concat((function(e){return injectToFn(e,CHECKED_KEY,timestamp())})));return function(r){return void 0===r&&(r={}),o(r,e,t)}}var VERSION="0.9.3",lookup=[],revLookup=[],Arr="undefined"!=typeof Uint8Array?Uint8Array:Array,inited=!1;function init(){inited=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,r=e.length;t0)throw new Error("Invalid string. Length must be a multiple of 4");a="="===e[s-2]?2:"="===e[s-1]?1:0,i=new Arr(3*s/4-a),n=a>0?s-4:s;var u=0;for(t=0,r=0;t>16&255,i[u++]=o>>8&255,i[u++]=255&o;return 2===a?(o=revLookup[e.charCodeAt(t)]<<2|revLookup[e.charCodeAt(t+1)]>>4,i[u++]=255&o):1===a&&(o=revLookup[e.charCodeAt(t)]<<10|revLookup[e.charCodeAt(t+1)]<<4|revLookup[e.charCodeAt(t+2)]>>2,i[u++]=o>>8&255,i[u++]=255&o),i}function tripletToBase64(e){return lookup[e>>18&63]+lookup[e>>12&63]+lookup[e>>6&63]+lookup[63&e]}function encodeChunk(e,t,r){for(var n,o=[],a=t;as?s:i+16383));return 1===n?(t=e[r-1],o+=lookup[t>>2],o+=lookup[t<<4&63],o+="=="):2===n&&(t=(e[r-2]<<8)+e[r-1],o+=lookup[t>>10],o+=lookup[t>>4&63],o+=lookup[t<<2&63],o+="="),a.push(o),a.join("")}function read(e,t,r,n,o){var a,i,s=8*o-n-1,u=(1<>1,c=-7,l=r?o-1:0,h=r?-1:1,p=e[t+l];for(l+=h,a=p&(1<<-c)-1,p>>=-c,c+=s;c>0;a=256*a+e[t+l],l+=h,c-=8);for(i=a&(1<<-c)-1,a>>=-c,c+=n;c>0;i=256*i+e[t+l],l+=h,c-=8);if(0===a)a=1-f;else{if(a===u)return i?NaN:1/0*(p?-1:1);i+=Math.pow(2,n),a-=f}return(p?-1:1)*i*Math.pow(2,a-n)}function write(e,t,r,n,o,a){var i,s,u,f=8*a-o-1,c=(1<>1,h=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,g=n?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,i=c):(i=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-i))<1&&(i--,u*=2),(t+=i+l>=1?h/u:h*Math.pow(2,1-l))*u>=2&&(i++,u/=2),i+l>=c?(s=0,i=c):i+l>=1?(s=(t*u-1)*Math.pow(2,o),i+=l):(s=t*Math.pow(2,l-1)*Math.pow(2,o),i=0));o>=8;e[r+p]=255&s,p+=g,s/=256,o-=8);for(i=i<0;e[r+p]=255&i,p+=g,i/=256,f-=8);e[r+p-g]|=128*y}var toString$1={}.toString,isArray$1=Array.isArray||function(e){return"[object Array]"==toString$1.call(e)},INSPECT_MAX_BYTES=50;function kMaxLength(){return Buffer$2.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function createBuffer(e,t){if(kMaxLength()=kMaxLength())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+kMaxLength().toString(16)+" bytes");return 0|e}function internalIsBuffer(e){return!(null==e||!e._isBuffer)}function byteLength(e,t){if(internalIsBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return utf8ToBytes(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return base64ToBytes(e).length;default:if(n)return utf8ToBytes(e).length;t=(""+t).toLowerCase(),n=!0}}function slowToString(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return hexSlice(this,t,r);case"utf8":case"utf-8":return utf8Slice(this,t,r);case"ascii":return asciiSlice(this,t,r);case"latin1":case"binary":return latin1Slice(this,t,r);case"base64":return base64Slice(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function swap(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function bidirectionalIndexOf(e,t,r,n,o){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=o?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(o)return-1;r=e.length-1}else if(r<0){if(!o)return-1;r=0}if("string"==typeof t&&(t=Buffer$2.from(t,n)),internalIsBuffer(t))return 0===t.length?-1:arrayIndexOf(e,t,r,n,o);if("number"==typeof t)return t&=255,Buffer$2.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):arrayIndexOf(e,[t],r,n,o);throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(e,t,r,n,o){var a,i=1,s=e.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;i=2,s/=2,u/=2,r/=2}function f(e,t){return 1===i?e[t]:e.readUInt16BE(t*i)}if(o){var c=-1;for(a=r;as&&(r=s-u),a=r;a>=0;a--){for(var l=!0,h=0;ho&&(n=o):n=o;var a=t.length;if(a%2!=0)throw new TypeError("Invalid hex string");n>a/2&&(n=a/2);for(var i=0;i239?4:f>223?3:f>191?2:1;if(o+l<=r)switch(l){case 1:f<128&&(c=f);break;case 2:128==(192&(a=e[o+1]))&&(u=(31&f)<<6|63&a)>127&&(c=u);break;case 3:a=e[o+1],i=e[o+2],128==(192&a)&&128==(192&i)&&(u=(15&f)<<12|(63&a)<<6|63&i)>2047&&(u<55296||u>57343)&&(c=u);break;case 4:a=e[o+1],i=e[o+2],s=e[o+3],128==(192&a)&&128==(192&i)&&128==(192&s)&&(u=(15&f)<<18|(63&a)<<12|(63&i)<<6|63&s)>65535&&u<1114112&&(c=u)}null===c?(c=65533,l=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),o+=l}return decodeCodePointsArray(n)}Buffer$2.TYPED_ARRAY_SUPPORT=void 0===global$1.TYPED_ARRAY_SUPPORT||global$1.TYPED_ARRAY_SUPPORT,Buffer$2.poolSize=8192,Buffer$2._augment=function(e){return e.__proto__=Buffer$2.prototype,e},Buffer$2.from=function(e,t,r){return from(null,e,t,r)},Buffer$2.TYPED_ARRAY_SUPPORT&&(Buffer$2.prototype.__proto__=Uint8Array.prototype,Buffer$2.__proto__=Uint8Array),Buffer$2.alloc=function(e,t,r){return alloc(null,e,t,r)},Buffer$2.allocUnsafe=function(e){return allocUnsafe$1(null,e)},Buffer$2.allocUnsafeSlow=function(e){return allocUnsafe$1(null,e)},Buffer$2.isBuffer=isBuffer$1,Buffer$2.compare=function(e,t){if(!internalIsBuffer(e)||!internalIsBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var r=e.length,n=t.length,o=0,a=Math.min(r,n);o0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),""},Buffer$2.prototype.compare=function(e,t,r,n,o){if(!internalIsBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===o&&(o=this.length),t<0||r>e.length||n<0||o>this.length)throw new RangeError("out of range index");if(n>=o&&t>=r)return 0;if(n>=o)return-1;if(t>=r)return 1;if(this===e)return 0;for(var a=(o>>>=0)-(n>>>=0),i=(r>>>=0)-(t>>>=0),s=Math.min(a,i),u=this.slice(n,o),f=e.slice(t,r),c=0;co)&&(r=o),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var a=!1;;)switch(n){case"hex":return hexWrite(this,e,t,r);case"utf8":case"utf-8":return utf8Write(this,e,t,r);case"ascii":return asciiWrite(this,e,t,r);case"latin1":case"binary":return latin1Write(this,e,t,r);case"base64":return base64Write(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,e,t,r);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}},Buffer$2.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var MAX_ARGUMENTS_LENGTH=4096;function decodeCodePointsArray(e){var t=e.length;if(t<=MAX_ARGUMENTS_LENGTH)return String.fromCharCode.apply(String,e);for(var r="",n=0;nn)&&(r=n);for(var o="",a=t;ar)throw new RangeError("Trying to access beyond buffer length")}function checkInt(e,t,r,n,o,a){if(!internalIsBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function objectWriteUInt16(e,t,r,n){t<0&&(t=65535+t+1);for(var o=0,a=Math.min(e.length-r,2);o>>8*(n?o:1-o)}function objectWriteUInt32(e,t,r,n){t<0&&(t=4294967295+t+1);for(var o=0,a=Math.min(e.length-r,4);o>>8*(n?o:3-o)&255}function checkIEEE754(e,t,r,n,o,a){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function writeFloat(e,t,r,n,o){return o||checkIEEE754(e,t,r,4),write(e,t,r,n,23,4),r+4}function writeDouble(e,t,r,n,o){return o||checkIEEE754(e,t,r,8),write(e,t,r,n,52,8),r+8}Buffer$2.prototype.slice=function(e,t){var r,n=this.length;if((e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(o*=256);)n+=this[e+--t]*o;return n},Buffer$2.prototype.readUInt8=function(e,t){return t||checkOffset(e,1,this.length),this[e]},Buffer$2.prototype.readUInt16LE=function(e,t){return t||checkOffset(e,2,this.length),this[e]|this[e+1]<<8},Buffer$2.prototype.readUInt16BE=function(e,t){return t||checkOffset(e,2,this.length),this[e]<<8|this[e+1]},Buffer$2.prototype.readUInt32LE=function(e,t){return t||checkOffset(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},Buffer$2.prototype.readUInt32BE=function(e,t){return t||checkOffset(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},Buffer$2.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||checkOffset(e,t,this.length);for(var n=this[e],o=1,a=0;++a=(o*=128)&&(n-=Math.pow(2,8*t)),n},Buffer$2.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||checkOffset(e,t,this.length);for(var n=t,o=1,a=this[e+--n];n>0&&(o*=256);)a+=this[e+--n]*o;return a>=(o*=128)&&(a-=Math.pow(2,8*t)),a},Buffer$2.prototype.readInt8=function(e,t){return t||checkOffset(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},Buffer$2.prototype.readInt16LE=function(e,t){t||checkOffset(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},Buffer$2.prototype.readInt16BE=function(e,t){t||checkOffset(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},Buffer$2.prototype.readInt32LE=function(e,t){return t||checkOffset(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},Buffer$2.prototype.readInt32BE=function(e,t){return t||checkOffset(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},Buffer$2.prototype.readFloatLE=function(e,t){return t||checkOffset(e,4,this.length),read(this,e,!0,23,4)},Buffer$2.prototype.readFloatBE=function(e,t){return t||checkOffset(e,4,this.length),read(this,e,!1,23,4)},Buffer$2.prototype.readDoubleLE=function(e,t){return t||checkOffset(e,8,this.length),read(this,e,!0,52,8)},Buffer$2.prototype.readDoubleBE=function(e,t){return t||checkOffset(e,8,this.length),read(this,e,!1,52,8)},Buffer$2.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t|=0,r|=0,n)||checkInt(this,e,t,r,Math.pow(2,8*r)-1,0);var o=1,a=0;for(this[t]=255&e;++a=0&&(a*=256);)this[t+o]=e/a&255;return t+r},Buffer$2.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,1,255,0),Buffer$2.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},Buffer$2.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,2,65535,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):objectWriteUInt16(this,e,t,!0),t+2},Buffer$2.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,2,65535,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):objectWriteUInt16(this,e,t,!1),t+2},Buffer$2.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,4,4294967295,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):objectWriteUInt32(this,e,t,!0),t+4},Buffer$2.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,4,4294967295,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):objectWriteUInt32(this,e,t,!1),t+4},Buffer$2.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var o=Math.pow(2,8*r-1);checkInt(this,e,t,r,o-1,-o)}var a=0,i=1,s=0;for(this[t]=255&e;++a>0)-s&255;return t+r},Buffer$2.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var o=Math.pow(2,8*r-1);checkInt(this,e,t,r,o-1,-o)}var a=r-1,i=1,s=0;for(this[t+a]=255&e;--a>=0&&(i*=256);)e<0&&0===s&&0!==this[t+a+1]&&(s=1),this[t+a]=(e/i>>0)-s&255;return t+r},Buffer$2.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,1,127,-128),Buffer$2.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},Buffer$2.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,2,32767,-32768),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):objectWriteUInt16(this,e,t,!0),t+2},Buffer$2.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,2,32767,-32768),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):objectWriteUInt16(this,e,t,!1),t+2},Buffer$2.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,4,2147483647,-2147483648),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):objectWriteUInt32(this,e,t,!0),t+4},Buffer$2.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):objectWriteUInt32(this,e,t,!1),t+4},Buffer$2.prototype.writeFloatLE=function(e,t,r){return writeFloat(this,e,t,!0,r)},Buffer$2.prototype.writeFloatBE=function(e,t,r){return writeFloat(this,e,t,!1,r)},Buffer$2.prototype.writeDoubleLE=function(e,t,r){return writeDouble(this,e,t,!0,r)},Buffer$2.prototype.writeDoubleBE=function(e,t,r){return writeDouble(this,e,t,!1,r)},Buffer$2.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t=0;--o)e[o+t]=this[o+r];else if(a<1e3||!Buffer$2.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(a=t;a55295&&r<57344){if(!o){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(i+1===n){(t-=3)>-1&&a.push(239,191,189);continue}o=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),o=r;continue}r=65536+(o-55296<<10|r-56320)}else o&&(t-=3)>-1&&a.push(239,191,189);if(o=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function asciiToBytes(e){for(var t=[],r=0;r>8,o=r%256,a.push(o),a.push(n);return a}function base64ToBytes(e){return toByteArray(base64clean(e))}function blitBuffer(e,t,r,n){for(var o=0;o=t.length||o>=e.length);++o)t[o+r]=e[o];return o}function isnan(e){return e!=e}function isBuffer$1(e){return null!=e&&(!!e._isBuffer||isFastBuffer(e)||isSlowBuffer(e))}function isFastBuffer(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function isSlowBuffer(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&isFastBuffer(e.slice(0,0))}function buff(e,t){return void 0===t&&(t=BASE64_FORMAT),isBuffer$1(e)?e:new Buffer$2.from(e,t)}var replaceErrors=function(e,t){if(t instanceof Error){var r={};return Object.getOwnPropertyNames(t).forEach((function(e){r[e]=t[e]})),r}return t},printError=function(e){return JSON.stringify(e,replaceErrors)};function findFromContract(e,t,r){return!!(r[e]&&r[e][t]&&r[e][t].file&&fs.existsSync(r[e][t].file))&&r[e][t].file}var DOT=".",getDocLen=function(e){return Buffer$2.byteLength(e,"utf8")},headerParser=function(e,t){try{var r=e.headers.accept.split(",");return t?r.filter((function(e){return e===t})):r}catch(e){return[]}},isHeaderPresent=function(e,t){return!!headerParser(e,t).length},getPathToFn=function(e,t,r){var n=r.resolverDir,o=dasherize(e),a=[];r.contract&&r.contract[t]&&r.contract[t].path&&a.push(r.contract[t].path),a.push(path.join(n,t,o,[INDEX_KEY,EXT].join(DOT))),a.push(path.join(n,t,[o,EXT].join(DOT)));for(var i=a.length,s=0;so?0:o+t),(r=r>o?o:r)<0&&(r+=o),o=t>r?0:r-t>>>0,t>>>=0;for(var a=Array(o);++n=n?e:baseSlice(e,t,r)}function baseFindIndex(e,t,r,n){for(var o=e.length,a=r+(n?1:-1);n?a--:++a-1;);return r}function charsStartIndex(e,t){for(var r=-1,n=e.length;++r-1;);return r}function asciiToArray(e){return e.split("")}var rsAstralRange="\\ud800-\\udfff",rsComboMarksRange="\\u0300-\\u036f",reComboHalfMarksRange="\\ufe20-\\ufe2f",rsComboSymbolsRange="\\u20d0-\\u20ff",rsComboRange=rsComboMarksRange+reComboHalfMarksRange+rsComboSymbolsRange,rsVarRange="\\ufe0e\\ufe0f",rsZWJ="\\u200d",reHasUnicode=RegExp("["+rsZWJ+rsAstralRange+rsComboRange+rsVarRange+"]");function hasUnicode(e){return reHasUnicode.test(e)}var rsAstralRange$1="\\ud800-\\udfff",rsComboMarksRange$1="\\u0300-\\u036f",reComboHalfMarksRange$1="\\ufe20-\\ufe2f",rsComboSymbolsRange$1="\\u20d0-\\u20ff",rsComboRange$1=rsComboMarksRange$1+reComboHalfMarksRange$1+rsComboSymbolsRange$1,rsVarRange$1="\\ufe0e\\ufe0f",rsAstral="["+rsAstralRange$1+"]",rsCombo="["+rsComboRange$1+"]",rsFitz="\\ud83c[\\udffb-\\udfff]",rsModifier="(?:"+rsCombo+"|"+rsFitz+")",rsNonAstral="[^"+rsAstralRange$1+"]",rsRegional="(?:\\ud83c[\\udde6-\\uddff]){2}",rsSurrPair="[\\ud800-\\udbff][\\udc00-\\udfff]",rsZWJ$1="\\u200d",reOptMod=rsModifier+"?",rsOptVar="["+rsVarRange$1+"]?",rsOptJoin="(?:"+rsZWJ$1+"(?:"+[rsNonAstral,rsRegional,rsSurrPair].join("|")+")"+rsOptVar+reOptMod+")*",rsSeq=rsOptVar+reOptMod+rsOptJoin,rsSymbol="(?:"+[rsNonAstral+rsCombo+"?",rsCombo,rsRegional,rsSurrPair,rsAstral].join("|")+")",reUnicode=RegExp(rsFitz+"(?="+rsFitz+")|"+rsSymbol+rsSeq,"g");function unicodeToArray(e){return e.match(reUnicode)||[]}function stringToArray(e){return hasUnicode(e)?unicodeToArray(e):asciiToArray(e)}function toString(e){return null==e?"":baseToString(e)}var reTrim=/^\s+|\s+$/g;function trim(e,t,r){if((e=toString(e))&&(r||void 0===t))return e.replace(reTrim,"");if(!e||!(t=baseToString(t)))return e;var n=stringToArray(e),o=stringToArray(t);return castSlice(n,charsStartIndex(n,o),charsEndIndex(n,o)+1).join("")}var inArray=function(e,t){return!!e.filter((function(e){return e===t})).length},toArray=function(e){return isArray(e)?e:[e]},parse=function(e){try{return JSON.parse(e)}catch(t){return e}},isObjectHasKey=function(e,t){try{var r=Object.keys(e);return inArray(r,t)}catch(e){return!1}},createEvt=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return e.join("_")},getConfigValue=function(e,t){return t&&isPlainObject(t)&&e in t?t[e]:void 0},toJson=function(e){return"string"==typeof e?parse(e):JSON.parse(JSON.stringify(e))},isNotEmpty=function(e){return void 0!==e&&!1!==e&&null!==e&&""!==trim(e)},chainFns=function(e){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];return function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];return t.reduce((function(e,t){return Reflect.apply(t,null,toArray(e))}),Reflect.apply(e,null,r))}};function listCacheClear(){this.__data__=[],this.size=0}function eq(e,t){return e===t||e!=e&&t!=t}function assocIndexOf(e,t){for(var r=e.length;r--;)if(eq(e[r][0],t))return r;return-1}var arrayProto=Array.prototype,splice=arrayProto.splice;function listCacheDelete(e){var t=this.__data__,r=assocIndexOf(t,e);return!(r<0)&&(r==t.length-1?t.pop():splice.call(t,r,1),--this.size,!0)}function listCacheGet(e){var t=this.__data__,r=assocIndexOf(t,e);return r<0?void 0:t[r][1]}function listCacheHas(e){return assocIndexOf(this.__data__,e)>-1}function listCacheSet(e,t){var r=this.__data__,n=assocIndexOf(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}function ListCache(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t-1&&e%1==0&&e<=MAX_SAFE_INTEGER}function isArrayLike(e){return null!=e&&isLength(e.length)&&!isFunction(e)}function isArrayLikeObject(e){return isObjectLike(e)&&isArrayLike(e)}function stubFalse(){return!1}var freeExports$1="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule$1=freeExports$1&&"object"==typeof module&&module&&!module.nodeType&&module,moduleExports$1=freeModule$1&&freeModule$1.exports===freeExports$1,Buffer$1=moduleExports$1?root.Buffer:void 0,nativeIsBuffer=Buffer$1?Buffer$1.isBuffer:void 0,isBuffer=nativeIsBuffer||stubFalse,argsTag$1="[object Arguments]",arrayTag="[object Array]",boolTag="[object Boolean]",dateTag="[object Date]",errorTag="[object Error]",funcTag$1="[object Function]",mapTag="[object Map]",numberTag="[object Number]",objectTag$1="[object Object]",regexpTag="[object RegExp]",setTag="[object Set]",stringTag="[object String]",weakMapTag="[object WeakMap]",arrayBufferTag="[object ArrayBuffer]",dataViewTag="[object DataView]",float32Tag="[object Float32Array]",float64Tag="[object Float64Array]",int8Tag="[object Int8Array]",int16Tag="[object Int16Array]",int32Tag="[object Int32Array]",uint8Tag="[object Uint8Array]",uint8ClampedTag="[object Uint8ClampedArray]",uint16Tag="[object Uint16Array]",uint32Tag="[object Uint32Array]",typedArrayTags={};function baseIsTypedArray(e){return isObjectLike(e)&&isLength(e.length)&&!!typedArrayTags[baseGetTag(e)]}function baseUnary(e){return function(t){return e(t)}}typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=!0,typedArrayTags[argsTag$1]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dataViewTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag$1]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag$1]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=!1;var freeExports$2="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule$2=freeExports$2&&"object"==typeof module&&module&&!module.nodeType&&module,moduleExports$2=freeModule$2&&freeModule$2.exports===freeExports$2,freeProcess=moduleExports$2&&freeGlobal.process,nodeUtil=function(){try{var e=freeModule$2&&freeModule$2.require&&freeModule$2.require("util").types;return e||freeProcess&&freeProcess.binding&&freeProcess.binding("util")}catch(e){}}(),nodeIsTypedArray=nodeUtil&&nodeUtil.isTypedArray,isTypedArray=nodeIsTypedArray?baseUnary(nodeIsTypedArray):baseIsTypedArray;function safeGet(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}var objectProto$8=Object.prototype,hasOwnProperty$6=objectProto$8.hasOwnProperty;function assignValue(e,t,r){var n=e[t];hasOwnProperty$6.call(e,t)&&eq(n,r)&&(void 0!==r||t in e)||baseAssignValue(e,t,r)}function copyObject(e,t,r,n){var o=!r;r||(r={});for(var a=-1,i=t.length;++a-1&&e%1==0&&e0){if(++t>=HOT_COUNT)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var setToString=shortOut(baseSetToString);function baseRest(e,t){return setToString(overRest(e,t,identity),e+"")}function isIterateeCall(e,t,r){if(!isObject(r))return!1;var n=typeof t;return!!("number"==n?isArrayLike(r)&&isIndex(t,r.length):"string"==n&&t in r)&&eq(r[t],e)}function createAssigner(e){return baseRest((function(t,r){var n=-1,o=r.length,a=o>1?r[o-1]:void 0,i=o>2?r[2]:void 0;for(a=e.length>3&&"function"==typeof a?(o--,a):void 0,i&&isIterateeCall(r[0],r[1],i)&&(a=o<3?void 0:a,o=1),t=Object(t);++n0;)r[n]=arguments[n+2];var o=Reflect.apply(chainFns,null,r.concat([function(e){return injectToFn(e,CHECKED_KEY,timestamp())}]));return function(r){return void 0===r&&(r={}),o(r,e,t)}}function postConfigCheck(e,t){for(var r=[],n=arguments.length-2;n-- >0;)r[n]=arguments[n+2];return function(n){if(void 0===n&&(n={}),objHasProp(n,CHECKED_KEY))return Promise.resolve(merge({},n,t));var o=Reflect.apply(preConfigCheck,null,[e,t].concat(r));return Promise.resolve(o(n))}}var VERSION="0.9.4",lookup=[],revLookup=[],Arr="undefined"!=typeof Uint8Array?Uint8Array:Array,inited=!1;function init(){inited=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,r=e.length;t0)throw new Error("Invalid string. Length must be a multiple of 4");a="="===e[s-2]?2:"="===e[s-1]?1:0,i=new Arr(3*s/4-a),n=a>0?s-4:s;var u=0;for(t=0,r=0;t>16&255,i[u++]=o>>8&255,i[u++]=255&o;return 2===a?(o=revLookup[e.charCodeAt(t)]<<2|revLookup[e.charCodeAt(t+1)]>>4,i[u++]=255&o):1===a&&(o=revLookup[e.charCodeAt(t)]<<10|revLookup[e.charCodeAt(t+1)]<<4|revLookup[e.charCodeAt(t+2)]>>2,i[u++]=o>>8&255,i[u++]=255&o),i}function tripletToBase64(e){return lookup[e>>18&63]+lookup[e>>12&63]+lookup[e>>6&63]+lookup[63&e]}function encodeChunk(e,t,r){for(var n,o=[],a=t;as?s:i+16383));return 1===n?(t=e[r-1],o+=lookup[t>>2],o+=lookup[t<<4&63],o+="=="):2===n&&(t=(e[r-2]<<8)+e[r-1],o+=lookup[t>>10],o+=lookup[t>>4&63],o+=lookup[t<<2&63],o+="="),a.push(o),a.join("")}function read(e,t,r,n,o){var a,i,s=8*o-n-1,u=(1<>1,c=-7,l=r?o-1:0,h=r?-1:1,p=e[t+l];for(l+=h,a=p&(1<<-c)-1,p>>=-c,c+=s;c>0;a=256*a+e[t+l],l+=h,c-=8);for(i=a&(1<<-c)-1,a>>=-c,c+=n;c>0;i=256*i+e[t+l],l+=h,c-=8);if(0===a)a=1-f;else{if(a===u)return i?NaN:1/0*(p?-1:1);i+=Math.pow(2,n),a-=f}return(p?-1:1)*i*Math.pow(2,a-n)}function write(e,t,r,n,o,a){var i,s,u,f=8*a-o-1,c=(1<>1,h=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,g=n?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,i=c):(i=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-i))<1&&(i--,u*=2),(t+=i+l>=1?h/u:h*Math.pow(2,1-l))*u>=2&&(i++,u/=2),i+l>=c?(s=0,i=c):i+l>=1?(s=(t*u-1)*Math.pow(2,o),i+=l):(s=t*Math.pow(2,l-1)*Math.pow(2,o),i=0));o>=8;e[r+p]=255&s,p+=g,s/=256,o-=8);for(i=i<0;e[r+p]=255&i,p+=g,i/=256,f-=8);e[r+p-g]|=128*y}var toString$1={}.toString,isArray$1=Array.isArray||function(e){return"[object Array]"==toString$1.call(e)},INSPECT_MAX_BYTES=50;function kMaxLength(){return Buffer$2.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function createBuffer(e,t){if(kMaxLength()=kMaxLength())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+kMaxLength().toString(16)+" bytes");return 0|e}function internalIsBuffer(e){return!(null==e||!e._isBuffer)}function byteLength(e,t){if(internalIsBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return utf8ToBytes(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return base64ToBytes(e).length;default:if(n)return utf8ToBytes(e).length;t=(""+t).toLowerCase(),n=!0}}function slowToString(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return hexSlice(this,t,r);case"utf8":case"utf-8":return utf8Slice(this,t,r);case"ascii":return asciiSlice(this,t,r);case"latin1":case"binary":return latin1Slice(this,t,r);case"base64":return base64Slice(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function swap(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function bidirectionalIndexOf(e,t,r,n,o){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=o?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(o)return-1;r=e.length-1}else if(r<0){if(!o)return-1;r=0}if("string"==typeof t&&(t=Buffer$2.from(t,n)),internalIsBuffer(t))return 0===t.length?-1:arrayIndexOf(e,t,r,n,o);if("number"==typeof t)return t&=255,Buffer$2.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):arrayIndexOf(e,[t],r,n,o);throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(e,t,r,n,o){var a,i=1,s=e.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;i=2,s/=2,u/=2,r/=2}function f(e,t){return 1===i?e[t]:e.readUInt16BE(t*i)}if(o){var c=-1;for(a=r;as&&(r=s-u),a=r;a>=0;a--){for(var l=!0,h=0;ho&&(n=o):n=o;var a=t.length;if(a%2!=0)throw new TypeError("Invalid hex string");n>a/2&&(n=a/2);for(var i=0;i239?4:f>223?3:f>191?2:1;if(o+l<=r)switch(l){case 1:f<128&&(c=f);break;case 2:128==(192&(a=e[o+1]))&&(u=(31&f)<<6|63&a)>127&&(c=u);break;case 3:a=e[o+1],i=e[o+2],128==(192&a)&&128==(192&i)&&(u=(15&f)<<12|(63&a)<<6|63&i)>2047&&(u<55296||u>57343)&&(c=u);break;case 4:a=e[o+1],i=e[o+2],s=e[o+3],128==(192&a)&&128==(192&i)&&128==(192&s)&&(u=(15&f)<<18|(63&a)<<12|(63&i)<<6|63&s)>65535&&u<1114112&&(c=u)}null===c?(c=65533,l=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),o+=l}return decodeCodePointsArray(n)}Buffer$2.TYPED_ARRAY_SUPPORT=void 0===global$1.TYPED_ARRAY_SUPPORT||global$1.TYPED_ARRAY_SUPPORT,Buffer$2.poolSize=8192,Buffer$2._augment=function(e){return e.__proto__=Buffer$2.prototype,e},Buffer$2.from=function(e,t,r){return from(null,e,t,r)},Buffer$2.TYPED_ARRAY_SUPPORT&&(Buffer$2.prototype.__proto__=Uint8Array.prototype,Buffer$2.__proto__=Uint8Array),Buffer$2.alloc=function(e,t,r){return alloc(null,e,t,r)},Buffer$2.allocUnsafe=function(e){return allocUnsafe$1(null,e)},Buffer$2.allocUnsafeSlow=function(e){return allocUnsafe$1(null,e)},Buffer$2.isBuffer=isBuffer$1,Buffer$2.compare=function(e,t){if(!internalIsBuffer(e)||!internalIsBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var r=e.length,n=t.length,o=0,a=Math.min(r,n);o0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),""},Buffer$2.prototype.compare=function(e,t,r,n,o){if(!internalIsBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===o&&(o=this.length),t<0||r>e.length||n<0||o>this.length)throw new RangeError("out of range index");if(n>=o&&t>=r)return 0;if(n>=o)return-1;if(t>=r)return 1;if(this===e)return 0;for(var a=(o>>>=0)-(n>>>=0),i=(r>>>=0)-(t>>>=0),s=Math.min(a,i),u=this.slice(n,o),f=e.slice(t,r),c=0;co)&&(r=o),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var a=!1;;)switch(n){case"hex":return hexWrite(this,e,t,r);case"utf8":case"utf-8":return utf8Write(this,e,t,r);case"ascii":return asciiWrite(this,e,t,r);case"latin1":case"binary":return latin1Write(this,e,t,r);case"base64":return base64Write(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,e,t,r);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}},Buffer$2.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var MAX_ARGUMENTS_LENGTH=4096;function decodeCodePointsArray(e){var t=e.length;if(t<=MAX_ARGUMENTS_LENGTH)return String.fromCharCode.apply(String,e);for(var r="",n=0;nn)&&(r=n);for(var o="",a=t;ar)throw new RangeError("Trying to access beyond buffer length")}function checkInt(e,t,r,n,o,a){if(!internalIsBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function objectWriteUInt16(e,t,r,n){t<0&&(t=65535+t+1);for(var o=0,a=Math.min(e.length-r,2);o>>8*(n?o:1-o)}function objectWriteUInt32(e,t,r,n){t<0&&(t=4294967295+t+1);for(var o=0,a=Math.min(e.length-r,4);o>>8*(n?o:3-o)&255}function checkIEEE754(e,t,r,n,o,a){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function writeFloat(e,t,r,n,o){return o||checkIEEE754(e,t,r,4),write(e,t,r,n,23,4),r+4}function writeDouble(e,t,r,n,o){return o||checkIEEE754(e,t,r,8),write(e,t,r,n,52,8),r+8}Buffer$2.prototype.slice=function(e,t){var r,n=this.length;if((e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(o*=256);)n+=this[e+--t]*o;return n},Buffer$2.prototype.readUInt8=function(e,t){return t||checkOffset(e,1,this.length),this[e]},Buffer$2.prototype.readUInt16LE=function(e,t){return t||checkOffset(e,2,this.length),this[e]|this[e+1]<<8},Buffer$2.prototype.readUInt16BE=function(e,t){return t||checkOffset(e,2,this.length),this[e]<<8|this[e+1]},Buffer$2.prototype.readUInt32LE=function(e,t){return t||checkOffset(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},Buffer$2.prototype.readUInt32BE=function(e,t){return t||checkOffset(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},Buffer$2.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||checkOffset(e,t,this.length);for(var n=this[e],o=1,a=0;++a=(o*=128)&&(n-=Math.pow(2,8*t)),n},Buffer$2.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||checkOffset(e,t,this.length);for(var n=t,o=1,a=this[e+--n];n>0&&(o*=256);)a+=this[e+--n]*o;return a>=(o*=128)&&(a-=Math.pow(2,8*t)),a},Buffer$2.prototype.readInt8=function(e,t){return t||checkOffset(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},Buffer$2.prototype.readInt16LE=function(e,t){t||checkOffset(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},Buffer$2.prototype.readInt16BE=function(e,t){t||checkOffset(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},Buffer$2.prototype.readInt32LE=function(e,t){return t||checkOffset(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},Buffer$2.prototype.readInt32BE=function(e,t){return t||checkOffset(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},Buffer$2.prototype.readFloatLE=function(e,t){return t||checkOffset(e,4,this.length),read(this,e,!0,23,4)},Buffer$2.prototype.readFloatBE=function(e,t){return t||checkOffset(e,4,this.length),read(this,e,!1,23,4)},Buffer$2.prototype.readDoubleLE=function(e,t){return t||checkOffset(e,8,this.length),read(this,e,!0,52,8)},Buffer$2.prototype.readDoubleBE=function(e,t){return t||checkOffset(e,8,this.length),read(this,e,!1,52,8)},Buffer$2.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t|=0,r|=0,n)||checkInt(this,e,t,r,Math.pow(2,8*r)-1,0);var o=1,a=0;for(this[t]=255&e;++a=0&&(a*=256);)this[t+o]=e/a&255;return t+r},Buffer$2.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,1,255,0),Buffer$2.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},Buffer$2.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,2,65535,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):objectWriteUInt16(this,e,t,!0),t+2},Buffer$2.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,2,65535,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):objectWriteUInt16(this,e,t,!1),t+2},Buffer$2.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,4,4294967295,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):objectWriteUInt32(this,e,t,!0),t+4},Buffer$2.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,4,4294967295,0),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):objectWriteUInt32(this,e,t,!1),t+4},Buffer$2.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var o=Math.pow(2,8*r-1);checkInt(this,e,t,r,o-1,-o)}var a=0,i=1,s=0;for(this[t]=255&e;++a>0)-s&255;return t+r},Buffer$2.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var o=Math.pow(2,8*r-1);checkInt(this,e,t,r,o-1,-o)}var a=r-1,i=1,s=0;for(this[t+a]=255&e;--a>=0&&(i*=256);)e<0&&0===s&&0!==this[t+a+1]&&(s=1),this[t+a]=(e/i>>0)-s&255;return t+r},Buffer$2.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,1,127,-128),Buffer$2.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},Buffer$2.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,2,32767,-32768),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):objectWriteUInt16(this,e,t,!0),t+2},Buffer$2.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,2,32767,-32768),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):objectWriteUInt16(this,e,t,!1),t+2},Buffer$2.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,4,2147483647,-2147483648),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):objectWriteUInt32(this,e,t,!0),t+4},Buffer$2.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),Buffer$2.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):objectWriteUInt32(this,e,t,!1),t+4},Buffer$2.prototype.writeFloatLE=function(e,t,r){return writeFloat(this,e,t,!0,r)},Buffer$2.prototype.writeFloatBE=function(e,t,r){return writeFloat(this,e,t,!1,r)},Buffer$2.prototype.writeDoubleLE=function(e,t,r){return writeDouble(this,e,t,!0,r)},Buffer$2.prototype.writeDoubleBE=function(e,t,r){return writeDouble(this,e,t,!1,r)},Buffer$2.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t=0;--o)e[o+t]=this[o+r];else if(a<1e3||!Buffer$2.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(a=t;a55295&&r<57344){if(!o){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(i+1===n){(t-=3)>-1&&a.push(239,191,189);continue}o=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),o=r;continue}r=65536+(o-55296<<10|r-56320)}else o&&(t-=3)>-1&&a.push(239,191,189);if(o=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function asciiToBytes(e){for(var t=[],r=0;r>8,o=r%256,a.push(o),a.push(n);return a}function base64ToBytes(e){return toByteArray(base64clean(e))}function blitBuffer(e,t,r,n){for(var o=0;o=t.length||o>=e.length);++o)t[o+r]=e[o];return o}function isnan(e){return e!=e}function isBuffer$1(e){return null!=e&&(!!e._isBuffer||isFastBuffer(e)||isSlowBuffer(e))}function isFastBuffer(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function isSlowBuffer(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&isFastBuffer(e.slice(0,0))}function buff(e,t){return void 0===t&&(t=BASE64_FORMAT),isBuffer$1(e)?e:new Buffer$2.from(e,t)}var replaceErrors=function(e,t){if(t instanceof Error){var r={};return Object.getOwnPropertyNames(t).forEach((function(e){r[e]=t[e]})),r}return t},printError=function(e){return JSON.stringify(e,replaceErrors)};function findFromContract(e,t,r){return!!(r[e]&&r[e][t]&&r[e][t].file&&fs.existsSync(r[e][t].file))&&r[e][t].file}var DOT=".",getDocLen=function(e){return Buffer$2.byteLength(e,"utf8")},headerParser=function(e,t){try{var r=e.headers.accept.split(",");return t?r.filter((function(e){return e===t})):r}catch(e){return[]}},isHeaderPresent=function(e,t){return!!headerParser(e,t).length},getPathToFn=function(e,t,r){var n=r.resolverDir,o=dasherize(e),a=[];r.contract&&r.contract[t]&&r.contract[t].path&&a.push(r.contract[t].path),a.push(path.join(n,t,o,[INDEX_KEY,EXT].join(DOT))),a.push(path.join(n,t,[o,EXT].join(DOT)));for(var i=a.length,s=0;s injectToFn(opt, CHECKED_KEY, timestamp()) // if there is more than one then chain it otherwise just return the zero idx one - const fn = Reflect.apply(chainFns, null, fns.concat(finalFn)) + const fn = Reflect.apply(chainFns, null, fns.concat([finalFn])) // 0.8.8 add a default property empty object - return (config = {}) => fn(config, defaultOptions, constProps) + return function preConfigCheckAction(config = {}) { + return fn(config, defaultOptions1, constProps1) + } +} + +/** + * Make sure everything is in the same page + * @param {object} defaultOptions configuration option + * @param {object} constProps add later + * @param {array} next a list of functions to call if it's not + * @return {function} resolve the configuration combined + */ +function postConfigCheck(defaultOptions2, constProps2, ...next) { + return function postConfigCheckAction(config = {}) { + if (objHasProp(config, CHECKED_KEY)) { + return Promise.resolve(merge({}, config, constProps)) + } + const fn = Reflect.apply(preConfigCheck, null, [defaultOptions2, constProps2, ...next]) + return Promise.resolve(fn(config)) + } } + +// export +export { preConfigCheck, postConfigCheck } diff --git a/packages/utils/tests/fn.test.js b/packages/utils/tests/fn.test.js index 1fefe8a107f5a4e0c8acb9516b82da8288f24d53..e6ae3719c3bd6cd046009a57112a4f5f55d00e08 100644 --- a/packages/utils/tests/fn.test.js +++ b/packages/utils/tests/fn.test.js @@ -1,12 +1,48 @@ // just general test to make sure all the functions are presented before publish const test = require('ava') const utilFns = require('../main') +const { merge } = require('lodash-es') +const { preConfigCheck, postConfigCheck } = require('../src/pre-config-check') +const { CHECKED_KEY } = require('jsonql-constants') +const debug = require('debug')('jsonql-utils:test:fn') -test(`It should have certain functions in the export`, t => { +test.before(t => { + + t.context.opts = {name: 'some name'} + t.context.constProps = {contract: {query: {}, mutation: {}}} + t.context.checkOptionsFn = (a, b, c) => merge({}, a, b, c) +}) - t.truthy(utilFns.groupByNamespace) - t.truthy(utilFns.toArray) +test(`It should have certain functions in the export`, t => { + t.truthy(utilFns.groupByNamespace) + t.truthy(utilFns.toArray) t.false(utilFns.isNotEmpty(' ')) }) + +test(`It should able to see if the opts has been or not`, t => { + const fn = preConfigCheck(t.context.opts, t.context.constProps, t.context.checkOptionsFn) + const checkedOptions = fn({}) + t.truthy(utilFns.objHasProp(checkedOptions, CHECKED_KEY)) +}) + +test(`Should able to call the next method when the CHECKED_KEY is not presented`, async t => { + + const next = (a, b, c) => merge({me: 'yes'}, a, b, c) + + const fn1 = postConfigCheck(t.context.opts, t.context.constProps, next) + const result1 = await fn1({y: 1}) + + t.truthy(result1.me) + t.truthy(utilFns.objHasProp(result1, CHECKED_KEY)) + + delete result1.name + + const result2 = await fn1(result1) + + debug(result2) + + t.falsy(result2.name) + +}) diff --git a/packages/ws-client-core/package.json b/packages/ws-client-core/package.json index 05f64f8eba9a4e256baa207c0c8b2ba82450dc49..9301512b99c7f59ece410590926b1eb113886267 100644 --- a/packages/ws-client-core/package.json +++ b/packages/ws-client-core/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-ws-client-core", - "version": "0.3.6", + "version": "0.3.7", "description": "This is the jsonql Web Socket client core library for Node and Browser. Not for direct use.", "main": "main.js", "module": "index.js", @@ -53,7 +53,7 @@ "jsonql-constants": "^1.8.14", "jsonql-errors": "^1.1.10", "jsonql-params-validator": "^1.5.2", - "jsonql-utils": "^0.9.3", + "jsonql-utils": "^0.9.4", "nb-event-service": "^1.9.0" }, "devDependencies": { @@ -61,7 +61,7 @@ "esm": "^3.2.25", "fs-extra": "^8.1.0", "jsonql-contract": "^1.8.5", - "jsonql-ws-server": "^1.5.1", + "jsonql-ws-server": "^1.5.2", "kefir": "^3.8.6", "ws": "^7.2.0" }, diff --git a/packages/ws-client-core/share.js b/packages/ws-client-core/share.js index 0b9b33621084594284b1566c82d1c50cb30d7eba..eb09ab0539566eabda8cc4c96a9f32293b96148d 100644 --- a/packages/ws-client-core/share.js +++ b/packages/ws-client-core/share.js @@ -8,7 +8,7 @@ import { triggerNamespacesOnError } from './src/share/trigger-namespaces-on-erro import { clientEventHandler } from './src/share/client-event-handler' // also export some of the util methods import { clearMainEmitEvt, disconnect, ee } from './src/utils' -const VERSION = '0.3.6' // @TODO make this dynamic +const VERSION = '0.3.7' // @TODO make this dynamic // export it export { VERSION, diff --git a/packages/ws-client-core/src/api.js b/packages/ws-client-core/src/api.js index 0bcacdcb32a3ba55b2169931ce3ea23f626b8c61..a0b300590a5a529a62457053961547123d0b5c4e 100644 --- a/packages/ws-client-core/src/api.js +++ b/packages/ws-client-core/src/api.js @@ -14,7 +14,7 @@ const dummyLogger = (...args) => { const getEventEmitter = opts => { const { log } = opts; if (opts.eventEmitter) { - log(`eventEmitter is:`, eventEmitter.name) + log(`eventEmitter is:`, opts.eventEmitter.name) return opts.eventEmitter } log(`Create a new Event Emitter`) diff --git a/packages/ws-client-core/src/options/defaults.js b/packages/ws-client-core/src/options/defaults.js index cc306efb658707dd59d90991bd90a278a0d61f7d..0f9ba6bfca4d0cd5ae9c6021616e87efbf50e0a5 100644 --- a/packages/ws-client-core/src/options/defaults.js +++ b/packages/ws-client-core/src/options/defaults.js @@ -23,7 +23,7 @@ const defaultOptions = { logoutHandlerName: createConfig(LOGOUT_NAME, [STRING_TYPE]), // this is for socket.io loginMethod: createConfig(IO_HANDSHAKE_LOGIN, [STRING_TYPE], {[ENUM_KEY]: AVAILABLE_METHODS}), - // we will use this for determine the socket.io client type as well + // we will use this for determine the socket.io client type as well - @TODO remove or rename useJwt: createConfig(true, [BOOLEAN_TYPE, STRING_TYPE]), hostname: createConfig(false, [STRING_TYPE]), namespace: createConfig(JSONQL_PATH, [STRING_TYPE]), diff --git a/packages/ws-client-core/src/options/index.js b/packages/ws-client-core/src/options/index.js index c0f035600bd5d81a565dbecf4feaa0d641aade40..816877ef92fdb34af1f12eafc07b49bf54e21eae 100644 --- a/packages/ws-client-core/src/options/index.js +++ b/packages/ws-client-core/src/options/index.js @@ -1,10 +1,15 @@ // create options -import { checkConfigAsync, isNotEmpty } from 'jsonql-params-validator' +import { checkConfig, isNotEmpty } from 'jsonql-params-validator' import { CHECKED_KEY } from 'jsonql-constants' // import { JsonqlValidationError, JsonqlCheckerError } from 'jsonql-errors' // this should be remove - we have to make it generic import { defaultOptions } from './defaults' -import { fixWss, getHostName, objHasProp } from '../utils' +import { + fixWss, + getHostName, + objHasProp, + postConfigCheck +} from '../utils' // constant props const defaultConstProps = { @@ -16,24 +21,17 @@ const defaultConstProps = { // contructed path wssPath: '' } -// for export -const jsonqlWsDefaultOptions = defaultOptions -const jsonqlWsDefaultConstProps = defaultConstProps /** * wrapper method to check this already did the pre check - * @param {object} config - * @param {object} dOpt - * @param {object} cProps + * @param {object} config user supply config + * @param {object} cProps user supply const props * @return {promise} resolve to the checked opitons */ -function checkOptionsWrapper(config, dOpt, cProps) { - if (objHasProp(config, CHECKED_KEY)) { - console.info(`[jsonql-ws-client-core] found CHECKED_KEY passed`) - // do we need to apply the constProps here? - return Promise.resolve(Object.assign(config, cProps)) - } - return checkConfigAsync(config, dOpt, cProps) +function checkOptionsWrapper(config, cProps) { + const constProps = Object.assign(defaultConstProps, cProps) + const fn = postConfigCheck(defaultOptions, constProps, checkConfig) + return fn(config) } /** @@ -43,7 +41,7 @@ function checkOptionsWrapper(config, dOpt, cProps) { * @return {object} after checked */ function checkOptions(config, constProps) { - return checkOptionsWrapper(config, defaultOptions, Object.assign(defaultConstProps, constProps)) + return checkOptionsWrapper(config, constProps) .then(opts => { if (!opts.hostname) { opts.hostname = getHostName() @@ -56,6 +54,10 @@ function checkOptions(config, constProps) { }) } +// for export +const jsonqlWsDefaultOptions = defaultOptions +const jsonqlWsDefaultConstProps = defaultConstProps + export { jsonqlWsDefaultConstProps, jsonqlWsDefaultOptions, diff --git a/packages/ws-client-core/src/utils/helpers.js b/packages/ws-client-core/src/utils/helpers.js index 9cefb21dd4397fdecb9271d686be908707257060..36654004698026d768a320f73914298085a4a240 100644 --- a/packages/ws-client-core/src/utils/helpers.js +++ b/packages/ws-client-core/src/utils/helpers.js @@ -1,7 +1,7 @@ // group all the small functions here import { JS_WS_SOCKET_IO_NAME, JS_WS_NAME, EMIT_REPLY_TYPE } from 'jsonql-constants' import { toArray, createEvt } from 'jsonql-utils/src/generic' - +import JsonqlValidationError from 'jsonql-errors/src/validation-error' // we shouldn't do this anymore export const fixWss = (url, serverType) => { // ws only allow ws:// path diff --git a/packages/ws-client-core/src/utils/index.js b/packages/ws-client-core/src/utils/index.js index c63248580b0f87b15400abf5056bd09a56fefb6d..29058a1aa4fc9a9f1c33be1f8ad91aa60f1dff01 100644 --- a/packages/ws-client-core/src/utils/index.js +++ b/packages/ws-client-core/src/utils/index.js @@ -12,7 +12,8 @@ import { chainFns, chainPromises, chainProcessPromises, - objHasProp + objHasProp, + postConfigCheck } from 'jsonql-utils/module' import ee from './ee' @@ -41,6 +42,8 @@ export { chainPromises, chainProcessPromises, objHasProp, + + postConfigCheck, ee, processContract, diff --git a/packages/ws-client-core/tests/on.test.js b/packages/ws-client-core/tests/on.test.js index 7ded4482989245895ae900c417d00f90f21fafa4..46ec72a4c68be4ce15c64d1f7c5fd2b964fa0acc 100644 --- a/packages/ws-client-core/tests/on.test.js +++ b/packages/ws-client-core/tests/on.test.js @@ -9,7 +9,7 @@ const fsx = require('fs-extra') const serverSetup = require('./fixtures/server-setup') const genToken = require('./fixtures/token') - +const { checkOptions } = require('../src/options') const jsonqlWsClient = require('./fixtures/beta/jsonql-ws-client') const wsClient = jsonqlWsClient.default || jsonqlWsClient @@ -58,12 +58,14 @@ test.before(async t => { t.context.server = app.listen(port) - t.context.client = await wsClient({ + const config = await checkOptions({ contract, hostname: url, enableAuth: true, useCallbackStyle: true - }) + }, {log: debug}) + + t.context.client = await wsClient(config) }) test.after( t => { @@ -88,7 +90,7 @@ test.serial('It should able to create the WebSocket client object', t => { t.falsy( Object.getOwnPropertyDescriptor(client, ON_LOGIN_PROP_NAME), `the client object should have ${ON_LOGIN_PROP_NAME} prop`) }) -// @TODO Fix the coding error but this is still not working +// @TODO Fix the coding error but this is still not working test.serial.cb.skip('The ws client can connect to the WebSocket server public interface', t => { t.plan(3) let ctn = 0; diff --git a/packages/ws-client-core/tests/options.test.js b/packages/ws-client-core/tests/options.test.js index 84c4380165eeb966396a9503b43ed7a044fcca65..7945b6cba64195640c3a75cbf56bab560c634ff6 100644 --- a/packages/ws-client-core/tests/options.test.js +++ b/packages/ws-client-core/tests/options.test.js @@ -4,6 +4,15 @@ const debug = require('debug')('jsonql-ws-client:test:options') const { objDefineProps, injectToFn, chainFns } = require('jsonql-utils') const constants = require('../src/options/constants') const { triggerNamespacesOnError } = require('../src/share/trigger-namespaces-on-error') +const { checkOptions } = require('../src/options') + +test(`Should have a debug logger pass from here`, async t => { + const opts = { hostname:'http://localhost:3456' } + const result = await checkOptions(opts, { eventEmitter: {name: 'test'}, log: debug }) + result.log(`you should see me here`) + t.truthy(typeof result.log === 'function') + t.truthy(result.eventEmitter) +}) test(`Should have the constants in options`, t => { t.truthy(constants.MY_NAMESPACE) @@ -33,9 +42,3 @@ test(`test the objDefineProps if it return a new prop`, t => { t.is(obj.prop1, prop1) }) - -/* -test(`Test the chainPromises for the new way to handle the final output of the client`, t => { - -}) -*/ diff --git a/packages/ws-client-core/tests/test-node.test.js b/packages/ws-client-core/tests/test-node.test.js index a889350c69775a56092188aa683f98244b9b306d..2bb2da259b2c4d67215b59d97ef09527de57e515 100644 --- a/packages/ws-client-core/tests/test-node.test.js +++ b/packages/ws-client-core/tests/test-node.test.js @@ -7,7 +7,7 @@ const fsx = require('fs-extra') const serverSetup = require('./fixtures/server-setup') const genToken = require('./fixtures/token') - +const { checkOptions } = require('../src/options') const jsonqlWsClient = require('./fixtures/beta/jsonql-ws-client') const wsClient = jsonqlWsClient.default || jsonqlWsClient @@ -15,7 +15,6 @@ const contractDir = join(__dirname, 'fixtures', 'contract', 'auth') const contract = fsx.readJsonSync(join(contractDir, 'contract.json')) const publicContract = fsx.readJsonSync(join(contractDir, 'public-contract.json')) - import { NOT_LOGIN_ERR_MSG, JS_WS_NAME, @@ -33,7 +32,6 @@ import { LOGOUT_EVENT_NAME } from 'jsonql-constants' - const payload = {name: 'Joel'}; const token = genToken(payload) const port = 8010; @@ -52,11 +50,13 @@ test.before(async t => { t.context.server = app.listen(port) - t.context.client = await wsClient({ + const config = await checkOptions({ contract, hostname: url, enableAuth: true - }) + }, {log: debug}) + + t.context.client = await wsClient(config) }) test.after( t => {