diff --git a/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js b/packages/@jsonql/ws/dist/jsonql-ws-client.umd.js index 47518da6ac6047a96cc2257ee055190fd4369e4d..a900ff0128d4c5cf8efbf22c943980b16b6bdb9f 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(require("fs"),require("path")):"function"==typeof define&&define.amd?define(["fs","path"],e):(t=t||self).jsonqlWsClient=e(t.fs,t.path)}(this,(function(t,e){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var 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 406},r.name.get=function(){return"Jsonql406Error"},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 500},r.name.get=function(){return"Jsonql500Error"},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"JsonqlAuthorisationError"},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 401},r.name.get=function(){return"JsonqlContractAuthError"},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 500},r.name.get=function(){return"JsonqlResolverAppError"},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={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),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"JsonqlEnumError"},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"JsonqlTypeError"},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"JsonqlCheckerError"},Object.defineProperties(e,r),e}(Error),l=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),p="data",h="error",v="jsonql",d="query",g="mutation",y="socket",b="TS",_="type",m="optional",w="enumv",j="args",O="checker",S="alias",k="__checked__",E="No message",$="__login__",A="__logout__",T="emit",P="acknowledge",N="error",R="nspSet",z="publicNamespace",x="onMessage",C="onResult",q="onError",M="onReady",F="onLogin",L="message",W="result",U="error",I="ready",D="login",J="token",V=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),B=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 Y(t){if(Array.isArray(t))throw new l("",t);var e=t.message||E,p=t.detail||t;switch(!0){case t instanceof r:throw new r(e,p);case t instanceof n:throw new n(e,p);case t instanceof o:throw new o(e,p);case t instanceof a:throw new a(e,p);case t instanceof i:throw new i(e,p);case t instanceof u:throw new u(e,p);case t instanceof c:throw new c(e,p);case t instanceof f:throw new f(e,p);case t instanceof s:throw new s(e,p);case t instanceof l:throw new l(e,p);case t instanceof B:throw new B(e,p);default:throw new V(e,p)}}var H="socket.io",G=T,K="UKNNOWN RESULT!",Q="on",X=Array.isArray,Z="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},tt="object"==typeof Z&&Z&&Z.Object===Object&&Z,et="object"==typeof self&&self&&self.Object===Object&&self,rt=tt||et||Function("return this")(),nt=rt.Symbol,ot=Object.prototype,at=ot.hasOwnProperty,it=ot.toString,ut=nt?nt.toStringTag:void 0;var ct=Object.prototype.toString;var ft="[object Null]",st="[object Undefined]",lt=nt?nt.toStringTag:void 0;function pt(t){return null==t?void 0===t?st:ft:lt&< in Object(t)?function(t){var e=at.call(t,ut),r=t[ut];try{t[ut]=void 0;var n=!0}catch(t){}var o=it.call(t);return n&&(e?t[ut]=r:delete t[ut]),o}(t):function(t){return ct.call(t)}(t)}function ht(t,e){return function(r){return t(e(r))}}var vt=ht(Object.getPrototypeOf,Object);function dt(t){return null!=t&&"object"==typeof t}var gt="[object Object]",yt=Function.prototype,bt=Object.prototype,_t=yt.toString,mt=bt.hasOwnProperty,wt=_t.call(Object);function jt(t){if(!dt(t)||pt(t)!=gt)return!1;var e=vt(t);if(null===e)return!0;var r=mt.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&_t.call(r)==wt}function Ot(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--&&Rt(e,t[r],0)>-1;);return r}(n,o)+1).join("")}var Ht=function(t){return X(t)?t:[t]},Gt=function(t,e){try{var r=Object.keys(t);return n=e,!!r.filter((function(t){return t===n})).length}catch(t){return!1}var n},Kt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return t.join("_")},Qt=function(t){void 0===t&&(t=!1);var e=Date.now();return t?Math.floor(e/1e3):e},Xt=function(t){if("function"==typeof t)return!0;console.error("Expect to be Function type!")},Zt=function(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 Reflect.apply(e,null,Ht(t))}),Reflect.apply(t,null,r))}};function te(t,e){return t===e||t!=t&&e!=e}function ee(t,e){for(var r=t.length;r--;)if(te(t[r][0],e))return r;return-1}var re=Array.prototype.splice;function ne(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1},ne.prototype.set=function(t,e){var r=this.__data__,n=ee(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this};var ae="[object AsyncFunction]",ie="[object Function]",ue="[object GeneratorFunction]",ce="[object Proxy]";function fe(t){if(!oe(t))return!1;var e=pt(t);return e==ie||e==ue||e==ae||e==ce}var se,le=rt["__core-js_shared__"],pe=(se=/[^.]+$/.exec(le&&le.keys&&le.keys.IE_PROTO||""))?"Symbol(src)_1."+se:"";var he=Function.prototype.toString;function ve(t){if(null!=t){try{return he.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var de=/^\[object .+?Constructor\]$/,ge=Function.prototype,ye=Object.prototype,be=ge.toString,_e=ye.hasOwnProperty,me=RegExp("^"+be.call(_e).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function we(t){return!(!oe(t)||(e=t,pe&&pe in e))&&(fe(t)?me:de).test(ve(t));var e}function je(t,e){var r=function(t,e){return null==t?void 0:t[e]}(t,e);return we(r)?r:void 0}var Oe=je(rt,"Map"),Se=je(Object,"create");var ke="__lodash_hash_undefined__",Ee=Object.prototype.hasOwnProperty;var $e=Object.prototype.hasOwnProperty;var Ae="__lodash_hash_undefined__";function Te(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=er}function nr(t){return null!=t&&rr(t.length)&&!fe(t)}var or="object"==typeof exports&&exports&&!exports.nodeType&&exports,ar=or&&"object"==typeof module&&module&&!module.nodeType&&module,ir=ar&&ar.exports===or?rt.Buffer:void 0,ur=(ir?ir.isBuffer:void 0)||function(){return!1},cr={};cr["[object Float32Array]"]=cr["[object Float64Array]"]=cr["[object Int8Array]"]=cr["[object Int16Array]"]=cr["[object Int32Array]"]=cr["[object Uint8Array]"]=cr["[object Uint8ClampedArray]"]=cr["[object Uint16Array]"]=cr["[object Uint32Array]"]=!0,cr["[object Arguments]"]=cr["[object Array]"]=cr["[object ArrayBuffer]"]=cr["[object Boolean]"]=cr["[object DataView]"]=cr["[object Date]"]=cr["[object Error]"]=cr["[object Function]"]=cr["[object Map]"]=cr["[object Number]"]=cr["[object Object]"]=cr["[object RegExp]"]=cr["[object Set]"]=cr["[object String]"]=cr["[object WeakMap]"]=!1;var fr,sr="object"==typeof exports&&exports&&!exports.nodeType&&exports,lr=sr&&"object"==typeof module&&module&&!module.nodeType&&module,pr=lr&&lr.exports===sr&&tt.process,hr=function(){try{var t=lr&&lr.require&&lr.require("util").types;return t||pr&&pr.binding&&pr.binding("util")}catch(t){}}(),vr=hr&&hr.isTypedArray,dr=vr?(fr=vr,function(t){return fr(t)}):function(t){return dt(t)&&rr(t.length)&&!!cr[pt(t)]};function gr(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var yr=Object.prototype.hasOwnProperty;function br(t,e,r){var n=t[e];yr.call(t,e)&&te(n,r)&&(void 0!==r||e in t)||Ce(t,e,r)}var _r=9007199254740991,mr=/^(?:0|[1-9]\d*)$/;function wr(t,e){var r=typeof t;return!!(e=null==e?_r:e)&&("number"==r||"symbol"!=r&&mr.test(t))&&t>-1&&t%1==0&&t0){if(++e>=xr)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(zr);function Fr(t,e){return Mr(function(t,e,r){return e=Rr(void 0===e?t.length-1:e,0),function(){for(var n=arguments,o=-1,a=Rr(n.length-e,0),i=Array(a);++o1?e[n-1]:void 0,a=n>2?e[2]:void 0;for(o=Lr.length>3&&"function"==typeof o?(n--,o):void 0,a&&function(t,e,r){if(!oe(r))return!1;var n=typeof e;return!!("number"==n?nr(r)&&wr(e,r.length):"string"==n&&e in r)&&te(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 t.then((function(t){return e(t)}))}),Reflect.apply(t,null,r))}}function Ir(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 Dr(t,e){var r=Object.getOwnPropertyDescriptor(t,e);return void 0!==r&&r.value?r.value:r}function Jr(t,e,r,n){void 0===n&&(n=!1);var o=Dr(t,e);return!1===n&&void 0!==o?t:(Object.defineProperty(t,e,{value:r,writable:n}),t)}function Vr(t){return!!Gt(t,"socket")&&t.socket}var Br="[object String]";function Yr(t){return"string"==typeof t||!X(t)&&dt(t)&&pt(t)==Br}var Hr=function(t){var e;return(e={}).args=t,e};function Gr(t,e,r){if(void 0===e&&(e=[]),void 0===r&&(r=!1),Yr(t)&&X(e)){var n=Hr(e);return!0===r?n:function(t,e){var r;return(r={})[t]=e,r[b]=[Qt()],r}(t,n)}throw new l("[createQuery] expect resolverName to be string and args to be array!",{resolverName:t,args:e})}function Kr(t){return void 0===t}var Qr="[object Boolean]";var Xr="[object Number]";function Zr(t){return function(t){return"number"==typeof t||dt(t)&&pt(t)==Xr}(t)&&t!=+t}var tn=ht(Object.keys,Object),en=Object.prototype.hasOwnProperty;function rn(t){return nr(t)?Or(t):function(t){if(!He(t))return tn(t);var e=[];for(var r in Object(t))en.call(t,r)&&"constructor"!=r&&e.push(r);return e}(t)}function nn(t,e){return t&&Fe(t,e,rn)}var on="__lodash_hash_undefined__";function an(t){var e=-1,r=null==t?0:t.length;for(this.__data__=new Ne;++eu))return!1;var f=a.get(t);if(f&&a.get(e))return f==e;var s=-1,l=!0,p=r&fn?new an:void 0;for(a.set(t,e),a.set(e,t);++s0))},Yo=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var e=t.replace("array.<","").replace(">","");return e.indexOf("|")?e.split("|"):[e]}return!1},Ho=function(t,e){var r=t.arg;return e.length>1?!r.filter((function(t){return!(e.length>e.filter((function(e){return!Vo(e)(t)})).length)})).length:e.length>e.filter((function(t){return!Bo(r,t)})).length},Go=function(t,e){if(void 0===e&&(e=null),jt(t)){if(!e)return!0;if(Bo(e))return!e.filter((function(e){var r=t[e.name];return!(e.type.length>e.type.filter((function(t){var e;return!!Kr(r)||(!1!==(e=Yo(t))?!Ho({arg:r},e):!Vo(t)(r))})).length)})).length}return!1},Ko=function(t){var e=t.arg,r=t.param,n=[e];return Array.isArray(r.keys)&&r.keys.length&&n.push(r.keys),Go.apply(null,n)};function Qo(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{window&&window.console&&Reflect.apply(console.log,console,t)}catch(t){}}var Xo=function(t,e){var r;switch(!0){case"object"===t:return!Ko(e);case"array"===t:return!Bo(e.arg);case!1!==(r=Yo(t)):return!Ho(e,r);default:return!Vo(t)(e.arg)}},Zo=function(t,e){return Kr(t)?!0!==e.optional||Kr(e.defaultvalue)?null:e.defaultvalue:t},ta=function(t,e,r){var n;void 0===r&&(r=!1);var o=function(t,e){if(!Bo(e))throw new V("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===e.length)return[];if(!Bo(t))throw new V("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 Qo(1),t.map((function(t,r){return{arg:t,index:r,param:e[r]}}));case!0===e[0].variable:Qo(2);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:Qo(4);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?Zo(t,i):t,index:r,param:i,optional:a}}));default:throw Qo(5),new V("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!!zo(e)&&!(r.type.length>r.type.filter((function(e){return Xo(e,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(e){return Xo(e,t)})).length)}));return r?((n={})[h]=a,n[p]=o.map((function(t){return t.arg})),n):a},ea=function(t,e){var r,n=Object.keys(t);return r=e,!!n.filter((function(t){return t===r})).length},ra=function(t){return!zo(t)};function na(t,e){var r=Ro(e,(function(t,e){return!t[Do]}));return to(r,{})?t:function(t,e){var r={};return e=Eo(e),nn(t,(function(t,n,o){Ce(r,e(t,n,o),t)})),r}(t,(function(t,e){return function(t,e,r){var n;return r(t,(function(t,r,o){if(e(t,r,o))return n=r,!1})),n}(r,Eo((function(t){return t.alias===e})),nn)||e}))}function oa(t,e){return $o(e,(function(e,r){var n,o;return Kr(t[r])||!0===e[Lo]&&ra(t[r])?Wr({},e,((n={})[Jo]=!0,n)):((o={})[Uo]=t[r],o[Fo]=e[Fo],o[Lo]=e[Lo]||!1,o[Wo]=e[Wo]||!1,o[Io]=e[Io]||!1,o)}))}function aa(t,e){var r=function(t,e){var r=na(t,e);return{pristineValues:$o(Ro(e,(function(t,e){return ea(r,e)})),(function(t){return t.args})),checkAgainstAppProps:Ro(e,(function(t,e){return!ea(r,e)})),config:r}}(t,e),n=r.config,o=r.pristineValues;return[oa(n,r.checkAgainstAppProps),o]}var ia=function(t){return Bo(t)?t:[t]};var ua=function(t,e){return!Bo(e)||function(t,e){return!!t.filter((function(t){return t===e})).length}(e,t)},ca=function(t,e){try{return!!fe(e)&&e.apply(null,[t])}catch(t){return!1}};function fa(t){return function(e,r){if(e[Jo])return e[Uo];var n=function(t,e){var r,n=[[t[Uo]],[(r={},r[Fo]=ia(t[Fo]),r[Lo]=t[Lo],r)]];return Reflect.apply(e,null,n)}(e,t);if(n.length)throw Qo("runValidationAction",r,e),new f(r,n);if(!1!==e[Wo]&&!ua(e[Uo],e[Wo]))throw Qo(Wo,e[Wo]),new c(r);if(!1!==e[Io]&&!ca(e[Uo],e[Io]))throw Qo(Io,e[Io]),new s(r);return e[Uo]}}var sa=function(t,e){return Promise.resolve(aa(t,e))};function la(t,e,r,n){return void 0===t&&(t={}),sa(t,e).then((function(t){return function(t,e){var r=t[0],n=t[1],o=$o(r,fa(e));return Wr(o,n)}(t,n)})).then((function(t){return Wr({},t,r)}))}function pa(t,e,r,n,o,a){void 0===r&&(r=!1),void 0===n&&(n=!1),void 0===o&&(o=!1),void 0===a&&(a=!1);var i={};return i[j]=t,i[_]=e,!0===r&&(i[m]=!0),Bo(n)&&(i[w]=n),fe(o)&&(i[O]=o),Yr(a)&&(i[S]=a),i}var ha=Co,va=function(t,e,r){return void 0===r&&(r=!1),new Promise((function(n,o){var a=ta(t,e,r);return r?a[h].length?o(a[h]):n(a[p]):a.length?o(a):n([])}))},da=function(t,e,r){void 0===r&&(r={});var n=r[m],o=r[w],a=r[O],i=r[S];return pa.apply(null,[t,e,n,o,a,i])},ga=function(t){return function(e,r,n){return void 0===n&&(n={}),la(e,r,n,t)}}(ta),ya="jsonql-ws-client",ba=function(t){try{if(window.debug)return window.debug(ya).extend(t)}catch(t){}try{if(Z.debug)return Z.debug(ya).extend(t)}catch(t){}return function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];console.info.apply(null,[ya,t].concat(e))}};try{window&&window.localStorage&&window.DEBUG&&localStorage.setItem("DEBUG",ya+"*")}catch(t){}var _a=new WeakMap,ma=new WeakMap;var wa=function(){this.__suspend__=null,this.queueStore=new Set},ja={$suspend:{configurable:!0},$queues:{configurable:!0}};ja.$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)},wa.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__},ja.$queues.get=function(){var t=this.queueStore.size;return this.logger("($queues)","size: "+t),t>0?Array.from(this.queueStore):[]},wa.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(wa.prototype,ja);var Oa=function(t){function e(){t.call(this,{logger:ba("nb-event-service")})}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"},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){_a.set(this,t)},r.normalStore.get=function(){return _a.get(this)},r.lazyStore.set=function(t){ma.set(this,t)},r.lazyStore.get=function(){return ma.get(this)},e.prototype.hashFnToKey=function(t){return t.toString().split("").reduce((function(t,e){return(t=(t<<5)-t+e.charCodeAt(0))&t}),0)+""},Object.defineProperties(e.prototype,r),e}(wa))),Sa=(ba("process-contract"),function(t){var e=Vr(t);if(!1!==e)return e;throw new u("Missing property in contract!")});function ka(t){var e,r,n=t.contract;return t.enableAuth?function(t,e){void 0===e&&(e=!1);var r=Vr(t);if(!1===r){if(e)return t;throw new V("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={})[R]=((e={})[v]=Sa(n),e),r[z]=v,r)}var Ea=function(t,e){return"ws"===e?t.replace("http://","ws://"):t},$a=function(){try{return[window.location.protocol,window.location.host].join("//")}catch(t){throw new JsonqlValidationError(t)}},Aa=function(t,e){Ht(e).forEach((function(e){t.$off(Kt(e,T))}))},Ta=ba("respondHandler");function Pa(t,e,r){Gt(t,h)?(Ta("-- rejecter called --",t[h]),r(t[h])):Gt(t,p)?(Ta("-- resolver called --",t[p]),e(t[p])):(Ta("-- UNKNOWN_RESULT --",t),r({message:K,error:t}))}var Na=ba("action-call");function Ra(t,e,r,n,o){void 0===o&&(o=[]);var a=Kt(e,T),i=n?W:C;return Na("actionCall: "+a+" --\x3e "+r,o),t.$trigger(a,[r,Ht(o)]),new Promise((function(n,o){t.$on(Kt(e,r,i),(function(t){Na("got the first result",t),Pa(t,n,o)}))}))}var za=ba("setup-send"),xa=function(t,e,r,n,o,a){return Ir(t,"send",(function(t){var i=a?U:q;za("got payload for",t),va(Ht(t),o.params,!0).then((function(o){if(!o[h]||!o[h].length)return Ra(e,r,n,a,t);za("got ERROR_KEY",o[h]),e.$call(Kt(r,n,i),[new l(n,o[h])])})).catch((function(t){za("error after validateAsync",t),e.$call(Kt(r,n,i),[new l(n,t)])}))}),(function(){return function(){for(var t=[],i=arguments.length;i--;)t[i]=arguments[i];return va(t,o.params,!0).then((function(t){return Ra(e,r,n,a,t)})).catch(Y)}}))};ba("setup-resolver");function Ca(t,e,r,n,o){return[Jr(t,Q,(function(t,o){if(ha(t)&&Xt(o))switch(t){case W:e.$on(Kt(r,n,ON_RESULT_PROP_NAME),(function(t){Pa(t,o,(function(t){e.$trigger(Kt(r,n,ON_ERROR_PROP_NAME),t)}))}));break;case L:e.$only(Kt(r,n,ON_MESSAGE_PROP_NAME),(function(t){Pa(t,o,(function(t){e.$trigger(Kt(r,n,ON_ERROR_PROP_NAME),t)}))}));break;case READY_PROP_NAME:e.$only(Kt(r,n,ON_ERROR_PROP_NAME),o);break;default:e.$trigger(Kt(r,n,ON_ERROR_PROP_NAME),new V(n,"Unknown event name "+t+"!"))}})),e,r,n,o]}ba("setup-resolver");var qa=function(t,e,r,n,o,a){return[Jr(t,"myNamespace",r),e,r,n,o,a]},Ma=function(t,e,r,n,o,a){return[Ir(t,C,(function(t){Xt(t)&&e.$on(Kt(r,n,C),(function(o){Pa(o,t,(function(t){e.$trigger(Kt(r,n,q),t)}))}))})),e,r,n,o,a]},Fa=function(t,e,r,n,o,a){return[Ir(t,x,(function(t){if(Xt(t)){e.$only(Kt(r,n,x),(function(o){Pa(o,t,(function(t){e.$trigger(Kt(r,n,q),t)}))}))}})),e,r,n,o,a]},La=function(t,e,r,n,o,a){return[Ir(t,q,(function(t){Xt(t)&&e.$only(Kt(r,n,q),t)})),e,r,n,o,a]};function Wa(t,e,r,n,o,a){var i=[qa];a?i.push(Ca):i.push(Ma,Fa,La),i.push(xa);var u=Reflect.apply(Zt,null,i);return Reflect.apply(u,null,[n,o,t,e,r,a])}ba("resolver-methods");function Ua(t,e,r,n,o){return function(){for(var a=[],i=arguments.length;i--;)a[i]=arguments[i];return va(a,n.params,!0).then((function(n){return Ra(t,e,r,o,n)})).catch(Y)}}var Ia=function(t,e,r){return[Jr(t,r.loginHandlerName,(function(t){if(t&&ha(t))return e.$trigger($,[t]);throw new l(r.loginHandlerName,"Unexpected token "+t)})),e,r]},Da=function(t,e,r){return Jr(t,r.logoutHandlerName,(function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];e.$trigger(A,t)}))};var Ja,Va;ba("generator");function Ba(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=Jr(n,c,Wa(i,c,f,Ua(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 Ya(t,e,r){var n=e.nspSet,o=[Ba];return t.useCallbackStyle?o.push((function(t){return function(t,e,r,n){return Jr(t,Q,(function(t,n){if(ha(t)&&Xt(n))switch(t){case U:for(var o in r)e.$on(Kt(o,U),n);break;case D:e.$only(D,n);break;case I:e.$on(I,n);break;default:e.$trigger(U,new V(Q,"Unknown event name "+t+"!"))}}))}(t,r,n)})):o.push((function(t){return function(t,e,r){return Ir(t,q,(function(t){if(Xt(t))for(var n in r)e.$on(Kt(n,q),t)}))}(t,r,n)}),(function(t){return function(t,e,r){return Ir(t,M,(function(t){Xt(t)&&e.$on(M,t)}))}(t,r)}),(function(e){return function(t,e,r){return r.enableAuth?Ir(t,F,(function(t){Xt(t)&&e.$only(F,t)})):t}(e,r,t)})),o.push((function(e){return function(t,e,r){return r.enableAuth?Zt(Ia,Da)(t,e,r):t}(e,r,t)})),Reflect.apply(Ur,null,o)(t,e,r)}var Ha=["roundtip","handshake"],Ga={useCallbackStyle:da(!1,["boolean"]),loginHandlerName:da("login",["string"]),logoutHandlerName:da("logout",["string"]),loginMethod:da("handshake",["string"],(Ja={},Ja[w]=Ha,Ja)),useJwt:da(!0,["boolean","string"]),hostname:da(!1,["string"]),namespace:da(v,["string"]),wsOptions:da({},["object"]),contract:da({},["object"],(Va={},Va[O]=function(t){return!!function(t){return jt(t)&&(Gt(t,d)||Gt(t,g)||Gt(t,y))}(t)&&t},Va)),enableAuth:da(!1,["boolean"]),token:da(!1,["string"])},Ka=ba("check-options"),Qa={eventEmitter:null,nspClient:null,nspAuthClient:null,wssPath:""};function Xa(t,e){return function(t,e,r){return Dr(t,k)?Promise.resolve(t):ga(t,e,r)}(t,Ga,Object.assign(Qa,e)).then((function(t){return t.hostname||(t.hostname=$a()),t.wssPath=Ea([t.hostname,t.namespace].join("/"),t.serverType),Ka("CONFIGURATION OPTIONS",t),t}))}var Za={version:"version: 0.8.5 module: umd",serverType:"ws"},ti=null;"undefined"!=typeof WebSocket?ti=WebSocket:"undefined"!=typeof MozWebSocket?ti=MozWebSocket:void 0!==Z?ti=Z.WebSocket||Z.MozWebSocket:"undefined"!=typeof window?ti=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(ti=self.WebSocket||self.MozWebSocket);var ei=ti,ri=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 ni(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(ri(e))}:function(e,r){var n=ri(e),o=r&&"string"==typeof r?n+"?"+J+"="+r:n;try{return new t(o)}catch(t){return console.error("WebSocket Connection Error",t),!1}}}function oi(t,e){var r=e.hostname,n=e.wssPath,o=e.wsOptions;return(0,e.nspClient)(t?[r,t].join("/"):n,o)}var ai=ba("client-event-handler"),ii=function(t,e,r){var n=r.useCallbackStyle,o=n?U:q,a=n?W:C;e.$only(Kt(t,G),(function(r,n){ai("noLoginHandler hijack the ws call",t,r,n);var i={message:"NOT LOGIN"};e.$call(Kt(t,r,o),[i]),e.$call(Kt(t,r,a),[{error:i}])}))},ui=function(t){return t.length>1&&t[0]};function ci(t,e,r,n,o,a){var i=ui(o),u=!1;o.forEach((function(o){if(u=i===o,a[o]){ai("call bindWsHandler",u,o);var c=[o,a[o],r,u,t];if(t.serverType===H){var f=e.nspSet;c.push(f[o])}Reflect.apply(n,null,c)}else ii(o,r,t)})),r.$on(A,(function(){ai("LOGOUT_EVENT_NAME"),function(t,e,r,n){void 0===n&&(n={});var o=n.useCallbackStyle?U:q;e.forEach((function(e){t.$call(Kt(e,o),[{message:r,namespace:e}])}))}(r,o,A),o.forEach((function(e){Aa(r,e),a[e]=!1,ii(e,r,t)}))}))}var fi=["__reply__","__event__","__data__"],si=function(t){var e,r=t.data;if(!1!==(e=function(t){var e=t.data;return!!e&&(fi.filter((function(t){return Gt(e,t)})).length===fi.length&&e)}(ha(r)?JSON.parse(r):r)))return{resolverName:e.__event__,data:e.__data__,type:e.__reply__};throw new V("payload can not be decoded",t)},li=ba("ws-main-handler"),pi=function(t,e,r,n,o){var a=[e];r&&(li("a global error on "+e),a.push(r)),a.push(o);var i=Reflect.apply(Kt,null,a),u=n.data||n;t.$trigger(i,[u])};function hi(t,e,r,n,o){var a=o.useCallbackStyle,i=a?I:M,u=a?D:F,c=a?L:x,f=a?W:C,s=a?U:q;e.onopen=function(){li("ws.onopen listened"),r.$call(i,t),n&&(console.log("isPrivate and fire the "+u),r.$call(u,t)),r.$only(Kt(t,T),(function(t,r){li("calling server",t,r),e.send(function(t,e,r){return void 0===e&&(e=[]),void 0===r&&(r=!1),JSON.stringify(Gr(t,e,r))}(t,r))}))},e.onmessage=function(e){try{var n=si(e),o=n.resolverName,a=n.type;switch(li("Hear from server",a,n),a){case T:var i=Kt(t,o,c),u=r.$trigger(i,[n]);li("EMIT_REPLY_TYPE",i,u);break;case P:var l=Kt(t,o,f);r.$trigger(l,[n]);li("ACKNOWLEDGE_REPLY_TYPE",l,n);break;case N:li("ERROR_TYPE"),pi(r,t,o,n,s);break;default:li("Unhandled event!",n),pi(r,t,o,n,s)}}catch(e){console.error("ws.onmessage error",e),pi(r,t,!1,e,s)}},e.onclose=function(){li("ws.onclose callback")},r.$on(A,(function(){try{li("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}var vi=ba("ws-create-client"),di=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]=oi(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]=oi(!1,t)}return{nsps:c,namespaces:u,login:i}};return function(t,e){return void 0===e&&(e={}),function(r){var n=r.eventEmitter;return Xa(r,e).then((function(t){return{opts:t,nspMap:ka(t),ee:n||new Oa}})).then((function(e){var r=e.opts,n=e.nspMap,o=e.ee;return t(r,n,o)})).then((function(t){return Ya(t.opts,t.nspMap,t.ee)})).catch((function(t){console.error("jsonql-ws-client init error",t)}))}}(function(t){var e=ni(t),r=ni(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,function(t,e,r){var n=[t,e,r,hi],o=t.token,a=di(t,e,o),i=a.nsps,u=a.namespaces,c=a.login;return Reflect.apply(ci,null,n.concat([u,i])),c&&r.$only($,(function(o){vi("LOGIN_EVENT_NAME called with token:",o),Aa(r,u);var a=di(t,e,o);Reflect.apply(ci,null,n.concat([a.namespaces,a.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(ei),Za)})); +!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",O="alias",S="__checked__",k="No message",E="__login__",$="__logout__",A="emit",T="acknowledge",P="error",N="nspSet",R="publicNamespace",z="onMessage",x="onResult",C="onError",q="onReady",M="onLogin",F="message",W="result",L="error",J="ready",U="login",D="token",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={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 B(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 I(p,h)}}var H="socket.io",Y=A,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 Ut(t){return"string"==typeof t||!nt(t)&&ht(t)&&pt(t)==Jt}var Dt=function(t){return!Ut(t)&&!Lt(parseFloat(t))},It=function(t){return""!==Mt(t)&&Ut(t)},Vt=function(t){return null!=t&&"boolean"==typeof t},Bt=function(t,e){return void 0===e&&(e=!0),void 0!==t&&""!==t&&""!==Mt(t)&&(!1===e||!0===e&&null!==t)},Ht=b,Yt=_,Gt=m,Kt=w,Qt=j,Xt=O,Zt="continue",te=function(t){switch(t){case"number":return Dt;case"string":return It;case"boolean":return Vt;default:return Bt}},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,Oe=je&&je.exports===we?tt.Buffer:void 0,Se=(Oe?Oe.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<=Ae}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 Ne,Re="object"==typeof exports&&exports&&!exports.nodeType&&exports,ze=Re&&"object"==typeof module&&module&&!module.nodeType&&module,xe=ze&&ze.exports===Re&&X.process,Ce=function(){try{var t=ze&&ze.require&&ze.require("util").types;return t||xe&&xe.binding&&xe.binding("util")}catch(t){}}(),qe=Ce&&Ce.isTypedArray,Me=qe?(Ne=qe,function(t){return Ne(t)}):function(t){return ht(t)&&Te(t.length)&&!!Pe[pt(t)]},Fe=Object.prototype.hasOwnProperty;function We(t,e){var r=nt(t),n=!r&&me(t),o=!r&&!n&&Se(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!(!Ie(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&Nr?new Ar: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 I("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 I("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 I("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 zr(n).set(new zr(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(!Ie(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(!Ie(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>=So)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Oo);function Ao(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=To.length>3&&"function"==typeof o?(n--,o):void 0,a&&function(t,e,r){if(!Ie(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),Ut(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){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"},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 t.toString().split("").reduce((function(t,e){return(t=(t<<5)-t+e.charCodeAt(0))&t}),0)+""},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 I("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={})[N]=((e={})[h]=ya(n),e),r[R]=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,A))}))};function ja(t,e,r){ta(t,p)?r(t[p]):ta(t,l)?e(t[l]):r({message:G,error:t})}function Oa(t,e,r,n,o){void 0===o&&(o=[]);var a=ea(e,A),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 Sa=function(t,e,r,n,o,a){return aa(t,"send",(function(t){var i=a?L:C;Ko(Zo(t),o.params,!0).then((function(o){if(!o[p]||!o[p].length)return Oa(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 Oa(e,r,n,a,t)})).catch(B)}}))};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,ON_RESULT_PROP_NAME),(function(t){ja(t,o,(function(t){e.$trigger(ea(r,n,ON_ERROR_PROP_NAME),t)}))}));break;case F:e.$only(ea(r,n,ON_MESSAGE_PROP_NAME),(function(t){ja(t,o,(function(t){e.$trigger(ea(r,n,ON_ERROR_PROP_NAME),t)}))}));break;case READY_PROP_NAME:e.$only(ea(r,n,ON_ERROR_PROP_NAME),o);break;default:e.$trigger(ea(r,n,ON_ERROR_PROP_NAME),new I(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,C),t)}))}))})),e,r,n,o,a]},Aa=function(t,e,r,n,o,a){return[aa(t,z,(function(t){if(ra(t)){e.$only(ea(r,n,z),(function(o){ja(o,t,(function(t){e.$trigger(ea(r,n,C),t)}))}))}})),e,r,n,o,a]},Ta=function(t,e,r,n,o,a){return[aa(t,C,(function(t){ra(t)&&e.$only(ea(r,n,C),t)})),e,r,n,o,a]};function Pa(t,e,r,n,o,a){var i=[Ea];a?i.push(ka):i.push($a,Aa,Ta),i.push(Sa);var u=Reflect.apply(na,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 Ko(a,n.params,!0).then((function(n){return Oa(t,e,r,o,n)})).catch(B)}}var Ra,za,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]},Ca=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 qa(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,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 Ma(t,e,r){var n=e.nspSet,o=[qa];return t.useCallbackStyle?o.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 U:e.$only(U,n);break;case J:e.$on(J,n);break;default:e.$trigger(L,new I(K,"Unknown event name "+t+"!"))}}))}(t,r,n)})):o.push((function(t){return function(t,e,r){return aa(t,C,(function(t){if(ra(t))for(var n in r)e.$on(ea(n,C),t)}))}(t,r,n)}),(function(t){return function(t,e,r){return aa(t,q,(function(t){ra(t)&&e.$on(q,t)}))}(t,r)}),(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)})),o.push((function(e){return function(t,e,r){return r.enableAuth?na(xa,Ca)(t,e,r):t}(e,r,t)})),Reflect.apply(oa,null,o)(t,e,r)}var Fa=["roundtip","handshake"],Wa={useCallbackStyle:Qo(!1,["boolean"]),loginHandlerName:Qo("login",["string"]),logoutHandlerName:Qo("logout",["string"]),loginMethod:Qo("handshake",["string"],(Ra={},Ra[m]=Fa,Ra)),useJwt:Qo(!0,["boolean","string"]),hostname:Qo(!1,["string"]),namespace:Qo(h,["string"]),wsOptions:Qo({},["object"]),contract:Qo({},["object"],(za={},za[j]=function(t){return!!function(t){return pe(t)&&(ta(t,v)||ta(t,g)||ta(t,d))}(t)&&t},za)),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,S)?Promise.resolve(t):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 Ua={version:"version: 0.9.0 module: umd",serverType:"ws"},Da=null;"undefined"!=typeof WebSocket?Da=WebSocket:"undefined"!=typeof MozWebSocket?Da=MozWebSocket:void 0!==Q?Da=Q.WebSocket||Q.MozWebSocket:"undefined"!=typeof window?Da=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(Da=self.WebSocket||self.MozWebSocket);var Ia=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 Va(t,e){return void 0===e&&(e=!1),!1===e?function(e){return new t(Ia(e))}:function(e,r){var n=Ia(e),o=r&&"string"==typeof r?n+"?"+D+"="+r:n;try{return new t(o)}catch(t){return console.error("WebSocket Connection Error",t),!1}}}function Ba(t,e){var r=e.hostname,n=e.wssPath,o=e.wsOptions;return(0,e.nspClient)(t?[r,t].join("/"):n,o)}var Ha=function(t,e,r){var n=r.useCallbackStyle,o=n?L:C,a=n?W:x;e.$only(ea(t,Y),(function(n,i){r.logger("noLoginHandler hijack the ws call",t,n,i);var u={message:"NOT LOGIN"};e.$call(ea(t,n,o),[u]),e.$call(ea(t,n,a),[{error:u}])}))},Ya=function(t){return t.length>1&&t[0]};function Ga(t,e,r,n,o,a){var i=Ya(o),u=!1;o.forEach((function(o){if(u=i===o,a[o]){t.logger("call bindWsHandler",u,o);var c=[o,a[o],r,u,t];if(t.serverType===H){var f=e.nspSet;c.push(f[o])}Reflect.apply(n,null,c)}else Ha(o,r,t)})),r.$on($,(function(){t.logger("LOGOUT_EVENT_NAME"),function(t,e,r,n){void 0===n&&(n={});var o=n.useCallbackStyle?L:C;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,Ha(e,r,t)}))}))}var Ka=["__reply__","__event__","__data__"],Qa=function(t){var e,r=t.data;if(!1!==(e=function(t){var e=t.data;return!!e&&(Ka.filter((function(t){return ta(e,t)})).length===Ka.length&&e)}(Go(r)?JSON.parse(r):r)))return{resolverName:e.__event__,data:e.__data__,type:e.__reply__};throw new I("payload can not be decoded",t)},Xa=function(){},Za=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 ti(t,e,r,n,o){var a=o.log||Xa,i=o.useCallbackStyle,u=i?J:q,c=i?U:M,f=i?F:z,s=i?W:x,l=i?L:C;e.onopen=function(){a("ws.onopen listened"),r.$call(u,t),n&&(console.log("isPrivate and fire the "+c),r.$call(c,t)),r.$only(ea(t,A),(function(t,r){a("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=Qa(e),o=n.resolverName,i=n.type;switch(a("Hear from server",i,n),i){case A:var u=ea(t,o,f),c=r.$trigger(u,[n]);a("EMIT_REPLY_TYPE",u,c);break;case T:var p=ea(t,o,s);r.$trigger(p,[n]);break;case P:a("ERROR_TYPE"),Za(r,t,o,n,l);break;default:a("Unhandled event!",n),Za(r,t,o,n,l)}}catch(e){console.error("ws.onmessage error",e),Za(r,t,!1,e,l)}},e.onclose=function(){a("ws.onclose callback")},r.$on($,(function(){try{a("terminate ws connection"),e.terminate()}catch(t){console.error("ws.terminate error",t)}}))}var ei=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]=Ba(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]=Ba(!1,t)}return{nsps:c,namespaces:u,login:i}};return function(t,e){void 0===e&&(e={});var r=e.log,n=r&&"function"==typeof r?r:function(){};return function(r){var o=r.eventEmitter;return Ja(r,e).then((function(t){return t.logger=n,t})).then((function(t){return{opts:t,nspMap:ba(t),ee:o||new da(n)}})).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=Va(t),r=Va(t,!0);return function(t,n,o){return t.nspClient=e,t.nspAuthClient=r,function(t,e,r){var n=[t,e,r,ti],o=t.token,a=ei(t,e,o),i=a.nsps,u=a.namespaces,c=a.login;return Reflect.apply(Ga,null,n.concat([u,i])),c&&r.$only(E,(function(o){wa(r,u);var a=ei(t,e,o);Reflect.apply(Ga,null,n.concat([a.namespaces,a.nsps]))})),{opts:t,nspMap:e,ee:r}}(t,n,o)}}(Da),Ua)})); //# sourceMappingURL=jsonql-ws-client.umd.js.map diff --git a/packages/@jsonql/ws/node.js b/packages/@jsonql/ws/node.js index d3a325e21042c865164aeaf8f03f15776a5beeb1..b8a8517cd08a2d976b4b613a503e2584cdbd0ceb 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}require("fs"),require("path");var WebSocket=_interopDefault(require("ws")),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),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$1="onMessage",ON_RESULT_PROP_NAME$1="onResult",ON_ERROR_PROP_NAME$1="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$1="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 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",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 r=hasOwnProperty.call(e,symToStringTag),t=e[symToStringTag];try{e[symToStringTag]=void 0;var n=!0}catch(e){}var o=nativeObjectToString.call(e);return n&&(r?e[symToStringTag]=t: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,r){return function(t){return e(r(t))}}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 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 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 inArray=function(e,r){return!!e.filter((function(e){return e===r})).length},toArray=function(e){return isArray(e)?e:[e]},isObjectHasKey=function(e,r){try{var t=Object.keys(e);return inArray(t,r)}catch(e){return!1}},createEvt=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return e.join("_")},timestamp=function(e){void 0===e&&(e=!1);var r=Date.now();return e?Math.floor(r/1e3):r},isFunc=function(e){if("function"==typeof e)return!0;console.error("Expect to be Function type!")},chainFns=function(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 Reflect.apply(r,null,toArray(e))}),Reflect.apply(e,null,t))}};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();++r-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(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$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,r){if(("constructor"!==r||"function"!=typeof e[r])&&"__proto__"!=r)return e[r]}var objectProto$8=Object.prototype,hasOwnProperty$6=objectProto$8.hasOwnProperty;function assignValue(e,r,t){var n=e[r];hasOwnProperty$6.call(e,r)&&eq(n,t)&&(void 0!==t||r in e)||baseAssignValue(e,r,t)}function copyObject(e,r,t,n){var o=!t;t||(t={});for(var a=-1,i=r.length;++a-1&&e%1==0&&e0){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(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 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(e,QUERY_NAME)||isObjectHasKey(e,MUTATION_NAME)||isObjectHasKey(e,SOCKET_NAME))}function isContract(e){return!!checkIsContract(e)&&e}function extractSocketPart(e){return!!isObjectHasKey(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 stringTag$1="[object String]";function isString(e){return"string"==typeof e||!isArray(e)&&isObjectLike(e)&&baseGetTag(e)==stringTag$1}var 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))}function isNull(e){return null===e}function isUndefined(e){return void 0===e}var boolTag$1="[object Boolean]";function isBoolean(e){return!0===e||!1===e||isObjectLike(e)&&baseGetTag(e)==boolTag$1}var numberTag$1="[object Number]";function isNumber(e){return"number"==typeof e||isObjectLike(e)&&baseGetTag(e)==numberTag$1}function isNaN(e){return isNumber(e)&&e!=+e}function arrayFilter(e,r){for(var t=-1,n=null==e?0:e.length,o=0,a=[];++ts))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);++l0))},isArrayLike$1=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},checkIsObject=function(e,r){if(void 0===r&&(r=null),isPlainObject(e)){if(!r)return!0;if(checkIsArray(r))return!r.filter((function(r){var t=e[r.name];return!(r.type.length>r.type.filter((function(e){var r;return!!isUndefined(t)||(!1!==(r=isArrayLike$1(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),checkIsObject.apply(null,n)};function log(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];try{window&&window.console&&Reflect.apply(console.log,console,e)}catch(e){}}var optionalHandler=function(e){var r=e.arg,t=e.param;return!!notEmpty(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$1(e)):return!arrayTypeHandler(r,t);default:return!combineFn(e)(r.arg)}},getOptionalValue=function(e,r){return isUndefined(e)?!0!==r.optional||isUndefined(r.defaultvalue)?null:r.defaultvalue:e},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 log(1),e.map((function(e,t){return{arg:e,index:t,param:r[t]}}));case!0===r[0].variable:log(2);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:log(4);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 log(5),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([])}))},isInArray=function(e,r){return!!e.filter((function(e){return e===r})).length},isObjectHasKey$1=function(e,r){var t=Object.keys(e);return isInArray(t,r)},isEmpty=function(e){return!notEmpty(e)};function mapAliasConfigKeys(e,r){var t=omitBy(r,(function(e,r){return!e[ALIAS_KEY$1]}));return isEqual(t,{})?e:mapKeys(e,(function(e,r){return findKey(t,(function(e){return e.alias===r}))||r}))}function preservePristineValues(e,r){var t=mapAliasConfigKeys(e,r);return{pristineValues:mapValues(omitBy(r,(function(e,r){return isObjectHasKey$1(t,r)})),(function(e){return e.args})),checkAgainstAppProps:omitBy(r,(function(e,r){return!isObjectHasKey$1(t,r)})),config:t}}function processConfigAction(e,r){return mapValues(r,(function(r,t){var n,o;return isUndefined(e[t])||!0===r[OPTIONAL_KEY$1]&&isEmpty(e[t])?merge({},r,((n={})[KEY_WORD$1]=!0,n)):((o={})[ARGS_KEY$1]=e[t],o[TYPE_KEY$1]=r[TYPE_KEY$1],o[OPTIONAL_KEY$1]=r[OPTIONAL_KEY$1]||!1,o[ENUM_KEY$1]=r[ENUM_KEY$1]||!1,o[CHECKER_KEY$1]=r[CHECKER_KEY$1]||!1,o)}))}function prepareArgsForValidation(e,r){var t=preservePristineValues(e,r),n=t.config,o=t.pristineValues;return[processConfigAction(n,t.checkAgainstAppProps),o]}var toArray$1=function(e){return checkIsArray(e)?e:[e]},inArray$1=function(e,r){return!!e.filter((function(e){return e===r})).length};function validateHandler$1(e,r){var t,n=[[e[ARGS_KEY$1]],[(t={},t[TYPE_KEY$1]=toArray$1(e[TYPE_KEY$1]),t[OPTIONAL_KEY$1]=e[OPTIONAL_KEY$1],t)]];return Reflect.apply(r,null,n)}var enumHandler=function(e,r){return!checkIsArray(r)||inArray$1(r,e)},checkerHandler=function(e,r){try{return!!isFunction(r)&&r.apply(null,[e])}catch(e){return!1}};function runValidationAction(e){return function(r,t){if(r[KEY_WORD$1])return r[ARGS_KEY$1];var n=validateHandler$1(r,e);if(n.length)throw log("runValidationAction",t,r),new JsonqlTypeError(t,n);if(!1!==r[ENUM_KEY$1]&&!enumHandler(r[ARGS_KEY$1],r[ENUM_KEY$1]))throw log(ENUM_KEY$1,r[ENUM_KEY$1]),new JsonqlEnumError(t);if(!1!==r[CHECKER_KEY$1]&&!checkerHandler(r[ARGS_KEY$1],r[CHECKER_KEY$1]))throw log(CHECKER_KEY$1,r[CHECKER_KEY$1]),new JsonqlCheckerError(t);return r[ARGS_KEY$1]}}function runValidation(e,r){var t=e[0],n=e[1],o=mapValues(t,runValidationAction(r));return merge(o,n)}var configToArgs=function(e,r){return Promise.resolve(prepareArgsForValidation(e,r))};function checkOptionsAsync(e,r,t,n){return void 0===e&&(e={}),configToArgs(e,r).then((function(e){return runValidation(e,n)})).then((function(e){return merge({},e,t)}))}function constructConfig(e,r,t,n,o,a){void 0===t&&(t=!1),void 0===n&&(n=!1),void 0===o&&(o=!1),void 0===a&&(a=!1);var i={};return i[ARGS_KEY]=e,i[TYPE_KEY]=r,!0===t&&(i[OPTIONAL_KEY]=!0),checkIsArray(n)&&(i[ENUM_KEY]=n),isFunction(o)&&(i[CHECKER_KEY]=o),isString(a)&&(i[ALIAS_KEY]=a),i}var createConfig=function(e,r,t){void 0===t&&(t={});var n=t[OPTIONAL_KEY],o=t[ENUM_KEY],a=t[CHECKER_KEY],i=t[ALIAS_KEY];return constructConfig.apply(null,[e,r,n,o,a,i])},checkConfigAsync=function(e){return function(r,t,n){return void 0===n&&(n={}),checkOptionsAsync(r,t,n,e)}},isString$1=checkIsString,validateAsync$1=validateAsync,createConfig$1=createConfig,checkConfigAsync$1=checkConfigAsync(validateSync),BASE_NAME="jsonql-ws-client",getDebug=function(e){try{if(window.debug)return window.debug(BASE_NAME).extend(e)}catch(e){}try{if(global$1.debug)return global$1.debug(BASE_NAME).extend(e)}catch(e){}return function(){for(var r=[],t=arguments.length;t--;)r[t]=arguments[t];console.info.apply(null,[BASE_NAME,e].concat(r))}};try{window&&window.localStorage&&window.DEBUG&&localStorage.setItem("DEBUG",BASE_NAME+"*")}catch(e){}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)}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={normalStore:{configurable:!0},lazyStore:{configurable:!0}};return 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 hashCode(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;l-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}}}function createNspClient(e,r){var t=r.hostname,n=r.wssPath,o=r.wsOptions;return(0,r.nspClient)(e?[t,e].join("/"):n,o)}function createNspAuthClient(e,r){var t=r.hostname,n=r.wssPath,o=r.token,a=r.wsOptions,i=r.nspAuthClient,s=e?[t,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,r,t,n){void 0===n&&(n={});var o=n.useCallbackStyle?ERROR_PROP_NAME:ON_ERROR_PROP_NAME$1;r.forEach((function(r){e.$call(createEvt(r,o),[{message:t,namespace:r}])}))}var debugFn$7=getDebug("client-event-handler"),notLoginWsHandler=function(e,r,t){var n=t.useCallbackStyle,o=n?ERROR_PROP_NAME:ON_ERROR_PROP_NAME$1,a=n?RESULT_PROP_NAME:ON_RESULT_PROP_NAME$1;r.$only(createEvt(e,EMIT_EVT),(function(t,n){debugFn$7("noLoginHandler hijack the ws call",e,t,n);var i={message:NOT_LOGIN_ERR_MSG};r.$call(createEvt(e,t,o),[i]),r.$call(createEvt(e,t,a),[{error:i}])}))},getPrivateNamespace=function(e){return e.length>1&&e[0]};function clientEventHandler(e,r,t,n,o,a){var i=getPrivateNamespace(o),s=!1;o.forEach((function(o){if(s=i===o,a[o]){debugFn$7("call bindWsHandler",s,o);var c=[o,a[o],t,s,e];if(e.serverType===SOCKET_IO){var u=r.nspSet;c.push(u[o])}Reflect.apply(n,null,c)}else notLoginWsHandler(o,t,e)})),t.$on(LOGOUT_EVENT_NAME,(function(){debugFn$7("LOGOUT_EVENT_NAME"),triggerNamespacesOnError(t,o,LOGOUT_EVENT_NAME),o.forEach((function(r){clearMainEmitEvt(t,r),a[r]=!1,notLoginWsHandler(r,t,e)}))}))}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(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)},debugFn$8=getDebug("ws-main-handler"),errorTypeHandler=function(e,r,t,n,o){var a=[r];t&&(debugFn$8("a global error on "+r),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=a?READY_PROP_NAME$1:ON_READY_PROP_NAME,s=a?LOGIN_PROP_NAME:ON_LOGIN_PROP_NAME,c=a?MESSAGE_PROP_NAME:ON_MESSAGE_PROP_NAME$1,u=a?RESULT_PROP_NAME:ON_RESULT_PROP_NAME$1,l=a?ERROR_PROP_NAME:ON_ERROR_PROP_NAME$1;r.onopen=function(){debugFn$8("ws.onopen listened"),t.$call(i,e),n&&(console.log("isPrivate and fire the "+s),t.$call(s,e)),t.$only(createEvt(e,EMIT_REPLY_TYPE),(function(e,t){debugFn$8("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(debugFn$8("Hear from server",a,n),a){case EMIT_REPLY_TYPE:var i=createEvt(e,o,c),s=t.$trigger(i,[n]);debugFn$8("EMIT_REPLY_TYPE",i,s);break;case ACKNOWLEDGE_REPLY_TYPE:var f=createEvt(e,o,u);t.$trigger(f,[n]);debugFn$8("ACKNOWLEDGE_REPLY_TYPE",f,n);break;case ERROR_TYPE:debugFn$8("ERROR_TYPE"),errorTypeHandler(t,e,o,n,l);break;default:debugFn$8("Unhandled event!",n),errorTypeHandler(t,e,o,n,l)}}catch(r){console.error("ws.onmessage error",r),errorTypeHandler(t,e,!1,r,l)}},r.onclose=function(){debugFn$8("ws.onclose callback")},t.$on(LOGOUT_EVENT_NAME,(function(){try{debugFn$8("terminate ws connection"),r.terminate()}catch(e){console.error("ws.terminate error",e)}}))}var debugFn$9=getDebug("ws-create-client"),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=createNsps(e,r,o),i=a.nsps,s=a.namespaces,c=a.login;return Reflect.apply(clientEventHandler,null,n.concat([s,i])),c&&t.$only(LOGIN_EVENT_NAME,(function(o){debugFn$9("LOGIN_EVENT_NAME called with token:",o),clearMainEmitEvt(t,s);var a=createNsps(e,r,o);Reflect.apply(clientEventHandler,null,n.concat([a.namespaces,a.nsps]))})),{opts:e,nspMap:r,ee:t}}function createClientResolver(e){var r=createWsClient(e),t=createWsClient(e,!0);return function(e,n,o){return e.nspClient=r,e.nspAuthClient=t,createClient(e,n,o)}}var wsClientResolver=createClientResolver(WebSocket),node=wsClient(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 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$1="onMessage",ON_RESULT_PROP_NAME$1="onResult",ON_ERROR_PROP_NAME$1="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$1="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)}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={normalStore:{configurable:!0},lazyStore:{configurable:!0}};return 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 hashCode(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;l-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}}}function createNspClient(e,r){var t=r.hostname,n=r.wssPath,o=r.wsOptions;return(0,r.nspClient)(e?[t,e].join("/"):n,o)}function createNspAuthClient(e,r){var t=r.hostname,n=r.wssPath,o=r.token,a=r.wsOptions,i=r.nspAuthClient,s=e?[t,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,r,t,n){void 0===n&&(n={});var o=n.useCallbackStyle?ERROR_PROP_NAME:ON_ERROR_PROP_NAME$1;r.forEach((function(r){e.$call(createEvt(r,o),[{message:t,namespace:r}])}))}var notLoginWsHandler=function(e,r,t){var n=t.useCallbackStyle,o=n?ERROR_PROP_NAME:ON_ERROR_PROP_NAME$1,a=n?RESULT_PROP_NAME:ON_RESULT_PROP_NAME$1;r.$only(createEvt(e,EMIT_EVT),(function(n,i){t.logger("noLoginHandler hijack the ws call",e,n,i);var s={message:NOT_LOGIN_ERR_MSG};r.$call(createEvt(e,n,o),[s]),r.$call(createEvt(e,n,a),[{error:s}])}))},getPrivateNamespace=function(e){return e.length>1&&e[0]};function clientEventHandler(e,r,t,n,o,a){var i=getPrivateNamespace(o),s=!1;o.forEach((function(o){if(s=i===o,a[o]){e.logger("call bindWsHandler",s,o);var c=[o,a[o],t,s,e];if(e.serverType===SOCKET_IO){var u=r.nspSet;c.push(u[o])}Reflect.apply(n,null,c)}else notLoginWsHandler(o,t,e)})),t.$on(LOGOUT_EVENT_NAME,(function(){e.logger("LOGOUT_EVENT_NAME"),triggerNamespacesOnError(t,o,LOGOUT_EVENT_NAME),o.forEach((function(r){clearMainEmitEvt(t,r),a[r]=!1,notLoginWsHandler(r,t,e)}))}))}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)},dummyLogger=function(){},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.log||dummyLogger,i=o.useCallbackStyle,s=i?READY_PROP_NAME$1:ON_READY_PROP_NAME,c=i?LOGIN_PROP_NAME:ON_LOGIN_PROP_NAME,u=i?MESSAGE_PROP_NAME:ON_MESSAGE_PROP_NAME$1,l=i?RESULT_PROP_NAME:ON_RESULT_PROP_NAME$1,f=i?ERROR_PROP_NAME:ON_ERROR_PROP_NAME$1;r.onopen=function(){a("ws.onopen listened"),t.$call(s,e),n&&(console.log("isPrivate and fire the "+c),t.$call(c,e)),t.$only(createEvt(e,EMIT_REPLY_TYPE),(function(e,t){a("calling server",e,t),r.send(createQueryStr(e,t))}))},r.onmessage=function(r){try{var n=extractWsPayload(r),o=n.resolverName,i=n.type;switch(a("Hear from server",i,n),i){case EMIT_REPLY_TYPE:var s=createEvt(e,o,u),c=t.$trigger(s,[n]);a("EMIT_REPLY_TYPE",s,c);break;case ACKNOWLEDGE_REPLY_TYPE:var p=createEvt(e,o,l);t.$trigger(p,[n]);break;case ERROR_TYPE:a("ERROR_TYPE"),errorTypeHandler(t,e,o,n,f);break;default:a("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(){a("ws.onclose callback")},t.$on(LOGOUT_EVENT_NAME,(function(){try{a("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=createNsps(e,r,o),i=a.nsps,s=a.namespaces,c=a.login;return Reflect.apply(clientEventHandler,null,n.concat([s,i])),c&&t.$only(LOGIN_EVENT_NAME,(function(o){clearMainEmitEvt(t,s);var a=createNsps(e,r,o);Reflect.apply(clientEventHandler,null,n.concat([a.namespaces,a.nsps]))})),{opts:e,nspMap:r,ee:t}}function createClientResolver(e){var r=createWsClient(e),t=createWsClient(e,!0);return function(e,n,o){return e.nspClient=r,e.nspAuthClient=t,createClient(e,n,o)}}var wsClientResolver=createClientResolver(WebSocket),node=wsClient(wsClientResolver,constProps);module.exports=node; //# sourceMappingURL=node.js.map diff --git a/packages/@jsonql/ws/package.json b/packages/@jsonql/ws/package.json index 1693581dc986cda1ee46dee5580c8c6ec4187616..01cf6d21c9e2dff3bcf6871ce063414076953256 100644 --- a/packages/@jsonql/ws/package.json +++ b/packages/@jsonql/ws/package.json @@ -1,6 +1,6 @@ { "name": "@jsonql/ws", - "version": "0.8.5", + "version": "0.9.0", "description": "WS (WebSocket) jsonql client module for browser / node", "main": "node.js", "browser": "dist/jsonql-ws.umd.js", @@ -40,12 +40,12 @@ "license": "ISC", "homepage": "jsonql.org", "dependencies": { - "jsonql-constants": "^1.8.12", - "jsonql-errors": "^1.1.7", - "jsonql-jwt": "^1.3.5", - "jsonql-params-validator": "^1.4.13", - "jsonql-utils": "^0.8.11", - "jsonql-ws-client": "^1.3.7", + "jsonql-constants": "^1.8.13", + "jsonql-errors": "^1.1.10", + "jsonql-jwt": "^1.3.7", + "jsonql-params-validator": "^1.5.1", + "jsonql-utils": "^0.9.2", + "jsonql-ws-client": "^1.3.10", "ws": "^7.2.0" }, "devDependencies": { @@ -54,12 +54,12 @@ "fs-extra": "^8.1.0", "glob": "^7.1.6", "jsonql-contract": "^1.8.4", - "jsonql-koa": "^1.4.21", - "jsonql-ws-server": "^1.4.9", + "jsonql-koa": "^1.5.0", + "jsonql-ws-server": "^1.4.11", "kefir": "^3.8.6", "koa": "^2.11.0", "koa-bodyparser": "^4.2.1", - "rollup": "^1.27.7", + "rollup": "^1.27.9", "rollup-plugin-alias": "^2.2.0", "rollup-plugin-async": "^1.2.0", "rollup-plugin-buble": "^0.19.8", diff --git a/packages/@jsonql/ws/server.js b/packages/@jsonql/ws/server.js deleted file mode 100644 index 431563448ef14a2700b978f361b225cc17fe5a8e..0000000000000000000000000000000000000000 --- a/packages/@jsonql/ws/server.js +++ /dev/null @@ -1 +0,0 @@ -// this is the server side setup diff --git a/packages/@jsonql/ws/src/core/create-client.js b/packages/@jsonql/ws/src/core/create-client.js index 465f3fe4342ff2f3dfcf7aab2ce30b04104fedf6..50f0aafe4f67899007228393e7491d38648ba5c1 100644 --- a/packages/@jsonql/ws/src/core/create-client.js +++ b/packages/@jsonql/ws/src/core/create-client.js @@ -7,13 +7,10 @@ import { clientEventHandler, triggerNamespacesOnError, clearMainEmitEvt, - disconnect, - getDebug + disconnect } from 'jsonql-ws-client/share' import { wsMainHandler } from './ws-main-handler' -const debugFn = getDebug('ws-create-client') - /** * Because the nsps can be throw away so it doesn't matter the scope * this will get reuse again @@ -72,7 +69,7 @@ export function createClient(opts, nspMap, ee) { // setup listener if (login) { ee.$only(LOGIN_EVENT_NAME, function loginEventHandler(tokenLater) { - debugFn(`LOGIN_EVENT_NAME called with token:`, tokenLater) + // debugFn(`LOGIN_EVENT_NAME called with token:`, tokenLater) // @BUG this keep causing an "Disconnect call failed TypeError: Cannot read property 'readyState' of null" // I think that is because it's not login then it can not be disconnect // how do we track this state globally diff --git a/packages/@jsonql/ws/src/core/ws-main-handler.js b/packages/@jsonql/ws/src/core/ws-main-handler.js index 0f8b5d4b8ac08b5a8e622e58ddbf9370417e823b..dd9caac0e7703423c9c9786538a36af396063885 100644 --- a/packages/@jsonql/ws/src/core/ws-main-handler.js +++ b/packages/@jsonql/ws/src/core/ws-main-handler.js @@ -1,5 +1,4 @@ // the WebSocket main handler -import { getDebug } from 'jsonql-ws-client/share' import { LOGIN_EVENT_NAME, LOGOUT_EVENT_NAME, @@ -21,9 +20,7 @@ import { } from 'jsonql-constants' import { createQueryStr, createEvt } from 'jsonql-utils/module' import extractWsPayload from './extract-ws-payload' -const debugFn = getDebug('ws-main-handler') - - +const dummyLogger = () => {} /** * under extremely circumstances we might not even have a resolverName, then * we issue a global error for the developer to catch it @@ -37,7 +34,6 @@ const debugFn = getDebug('ws-main-handler') const errorTypeHandler = (ee, namespace, resolverName, json, ERROR_EVT_NAME) => { let evt = [namespace] if (resolverName) { - debugFn(`a global error on ${namespace}`) evt.push(resolverName) } evt.push(ERROR_EVT_NAME) @@ -57,6 +53,9 @@ const errorTypeHandler = (ee, namespace, resolverName, json, ERROR_EVT_NAME) => * @return {object} promise resolve after the onopen event */ export function wsMainHandler(namespace, ws, ee, isPrivate, opts) { + + const debugFn = opts.log || dummyLogger + const { useCallbackStyle } = opts; const READY_EVT_NAME = useCallbackStyle ? READY_PROP_NAME : ON_READY_PROP_NAME; const LOGIN_EVT_NAME = useCallbackStyle ? LOGIN_PROP_NAME : ON_LOGIN_PROP_NAME; @@ -103,7 +102,7 @@ export function wsMainHandler(namespace, ws, ee, isPrivate, opts) { case ACKNOWLEDGE_REPLY_TYPE: let e2 = createEvt(namespace, resolverName, RESULT_EVT_NAME) let x = ee.$trigger(e2, [json]) - debugFn(`ACKNOWLEDGE_REPLY_TYPE`, e2, json) + // debugFn(`ACKNOWLEDGE_REPLY_TYPE`, e2, json) break; case ERROR_TYPE: // this is handled error and we won't throw it diff --git a/packages/@jsonql/ws/tests/browser/run-qunit.js b/packages/@jsonql/ws/tests/browser/run-qunit.js index ebdf925e17efd6988ad58c94b1279035063b430f..5736c56d38d42b073ab773e5f39a094e965b73c0 100644 --- a/packages/@jsonql/ws/tests/browser/run-qunit.js +++ b/packages/@jsonql/ws/tests/browser/run-qunit.js @@ -2,7 +2,7 @@ // inject into the html and run the server const glob = require('glob') const { join, resolve } = require('path') -const wsServer = require('jsonql-ws-server') +const { jsonqlWsServer } = require('jsonql-ws-server') const serverIoCore = require('server-io-core') const debug = require('debug')('jsonql-ws-client:test:browser') const baseDir = join(__dirname, 'files') @@ -54,7 +54,7 @@ const getConfig = (env) => { } const wsServerSetup = (server) => { - const wss = wsServer(getConfig(nodeEnv), server) + const wss = jsonqlWsServer(getConfig(nodeEnv), server) return wss; // not in use } diff --git a/packages/jwt/index.js b/packages/jwt/index.js index a26151c2da348aba9e1f6bd6e18690eb3ab69170..338f4f2516b184583971b467d49d7744300d9bd1 100644 --- a/packages/jwt/index.js +++ b/packages/jwt/index.js @@ -2,7 +2,7 @@ import { decodeToken, tokenValidator -} from './src/client' +} from './module' export { decodeToken, diff --git a/packages/jwt/module.js b/packages/jwt/module.js new file mode 100644 index 0000000000000000000000000000000000000000..d9caa27421fd4d6fdf3774ad2486ee94b752c1c4 --- /dev/null +++ b/packages/jwt/module.js @@ -0,0 +1,11 @@ +// main export interface for client side modules +// rename this to module and make sure we import just this +import { + decodeToken, + tokenValidator +} from './src/client' + +export { + decodeToken, + tokenValidator +} diff --git a/packages/jwt/package.json b/packages/jwt/package.json index edd6af3287ccadd34b970aed48856b02befce906..45afdc57d7bfaa39ca1cb039583b2e05a88897bc 100644 --- a/packages/jwt/package.json +++ b/packages/jwt/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-jwt", - "version": "1.3.6", + "version": "1.3.7", "description": "jwt authentication helpers library for jsonql browser / node", "main": "main.js", "module": "index.js", @@ -22,6 +22,7 @@ "cmd.js", "index.js", "main.js", + "module.js", "src", "dist" ], @@ -38,10 +39,10 @@ "dependencies": { "colors": "^1.4.0", "fs-extra": "^8.1.0", - "jsonql-constants": "^1.8.12", - "jsonql-errors": "^1.1.8", + "jsonql-constants": "^1.8.13", + "jsonql-errors": "^1.1.10", "jsonql-params-validator": "^1.5.0", - "jsonql-utils": "^0.9.0", + "jsonql-utils": "^0.9.2", "jsonwebtoken": "^8.5.1", "jwt-decode": "^2.2.0", "socketio-jwt": "^4.5.0", @@ -57,7 +58,7 @@ "debug": "^4.1.1", "esm": "^3.2.25", "koa": "^2.11.0", - "rollup": "^1.27.8", + "rollup": "^1.27.9", "rollup-plugin-alias": "^2.2.0", "rollup-plugin-async": "^1.2.0", "rollup-plugin-buble": "^0.19.8", diff --git a/packages/node-client/index.js b/packages/node-client/index.js index a182d7c60806a1861d2021ac8dbca022ffef3074..b40f2c5b0c1fe80352b3787a9e200525d8e678a5 100755 --- a/packages/node-client/index.js +++ b/packages/node-client/index.js @@ -48,5 +48,8 @@ module.exports = function jsonqlNodeClient(config) { ) ) // create the node client if any - .then(({opts, contract, client}) => createSocketClient(client, opts, contract, rawConfig)) + .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 a54fe0a7f6691ec6cea01ae67fdcbe6cef6d3a6c..17219c4704e32d92779f50e5732ea1689bd48e3c 100755 --- a/packages/node-client/package.json +++ b/packages/node-client/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-node-client", - "version": "1.2.5", + "version": "1.2.6", "description": "jsonql node.js client", "main": "index.js", "scripts": { @@ -43,23 +43,23 @@ "dependencies": { "debug": "^4.1.1", "fs-extra": "^8.1.0", - "jsonql-constants": "^1.8.12", - "jsonql-errors": "^1.1.7", - "jsonql-jwt": "^1.3.5", - "jsonql-params-validator": "^1.4.13", - "jsonql-utils": "^0.8.11", + "jsonql-constants": "^1.8.13", + "jsonql-errors": "^1.1.10", + "jsonql-jwt": "^1.3.7", + "jsonql-params-validator": "^1.5.1", + "jsonql-utils": "^0.9.2", "lodash.merge": "^4.6.2", - "node-cache": "^5.0.2", + "node-cache": "^5.1.0", "request": "^2.88.0" }, "optionalDependencies": { - "@jsonql/ws": "^0.8.4" + "@jsonql/ws": "^0.9.0" }, "devDependencies": { "ava": "^2.4.0", "jsonql-contract": "^1.8.4", - "jsonql-koa": "^1.4.20", - "jsonql-ws-server": "^1.4.9", + "jsonql-koa": "^1.5.0", + "jsonql-ws-server": "^1.4.11", "nyc": "^14.1.1", "server-io-core": "^1.2.0", "superkoa": "^1.0.3" diff --git a/packages/node-client/tests/validation.test.js b/packages/node-client/tests/validation.test.js index 9afa7b004fb69212fe08b35d29fa0ce31772e6d1..f6bb3a347e908d4c2feece489d8fc923a27bccca 100644 --- a/packages/node-client/tests/validation.test.js +++ b/packages/node-client/tests/validation.test.js @@ -46,7 +46,7 @@ test('Should failed and throw JsonqlValidationError', async t => { // @TODO the problem is inside the resolver as well as the koa middleware // we need to investigate more where it happens -test.skip("Pass an index larger than the database size to cause it throw application error", async t => { +test("Pass an index larger than the database size to cause it throw application error", async t => { const c = t.context.client; const e = await t.throwsAsync( async () => { return await c.query.getUser(100) diff --git a/packages/resolver/package.json b/packages/resolver/package.json index 7a5d0e740c7a7673b3e5db2bf157d4166146d29f..f1a3ceb18ed9bea6d49873b35fc06abfb09d1af3 100644 --- a/packages/resolver/package.json +++ b/packages/resolver/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-resolver", - "version": "0.9.11", + "version": "0.9.12", "description": "This is NOT for general use, please do not install it directly. This module is part of the jsonql tools supporting modules.", "main": "index.js", "files": [ @@ -27,18 +27,18 @@ }, "dependencies": { "debug": "^4.1.1", - "jsonql-constants": "^1.8.12", - "jsonql-errors": "^1.1.7", - "jsonql-jwt": "^1.3.5", - "jsonql-node-client": "^1.2.4", - "jsonql-params-validator": "^1.4.13", - "jsonql-utils": "^0.8.11", + "jsonql-constants": "^1.8.13", + "jsonql-errors": "^1.1.10", + "jsonql-jwt": "^1.3.7", + "jsonql-node-client": "^1.2.5", + "jsonql-params-validator": "^1.5.1", + "jsonql-utils": "^0.9.2", "lodash.merge": "^4.6.2" }, "devDependencies": { "ava": "^2.4.0", "jsonql-contract": "^1.8.4", - "jsonql-koa": "^1.4.20", + "jsonql-koa": "^1.5.0", "server-io-core": "^1.2.0" }, "ava": { diff --git a/packages/resolver/tests/fixtures/contract/es/contract.json b/packages/resolver/tests/fixtures/contract/es/contract.json index e06306851cf5c2b3b036021a67ec6501a4fc174a..1fca3048b662fe8a1ced13ba815eac178759afa7 100644 --- a/packages/resolver/tests/fixtures/contract/es/contract.json +++ b/packages/resolver/tests/fixtures/contract/es/contract.json @@ -43,6 +43,6 @@ } }, "auth": {}, - "timestamp": 1575259293, + "timestamp": 1575864328, "sourceType": "module" } diff --git a/packages/validator/dist/jsonql-params-validator.cjs.js b/packages/validator/dist/jsonql-params-validator.cjs.js index 0e4f79c60ac8739abdf6423ed4180853ed349e6a..e2e3377e5b6847a1fba1db1ef50708c05f6ce8e5 100644 --- a/packages/validator/dist/jsonql-params-validator.cjs.js +++ b/packages/validator/dist/jsonql-params-validator.cjs.js @@ -1,2 +1,2 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var 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,a=null==e?0:e.length,n=Array(a);++tn?0:n+r),(t=t>n?n:t)<0&&(t+=n),n=r>t?0:t-r>>>0,r>>>=0;for(var o=Array(n);++a=a?e:baseSlice(e,r,t)}function baseFindIndex(e,r,t,a){for(var n=e.length,o=t+(a?1:-1);a?o--:++o-1;);return t}function charsStartIndex(e,r){for(var t=-1,a=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 a=stringToArray(e),n=stringToArray(r);return castSlice(a,charsStartIndex(a,n),charsEndIndex(a,n)+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)},DATA_KEY="data",ERROR_KEY="error",DEFAULT_TYPE="any",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",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_STATUS_CODE=-1,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,a=null==e?0:e.length,n=0,o=[];++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),a=!t&&isArguments(e),n=!t&&!a&&isBuffer(e),o=!t&&!a&&!n&&isTypedArray(e),i=t||a||n||o,s=i?baseTimes(e.length,String):[],c=s.length;for(var u in e)!r&&!hasOwnProperty$3.call(e,u)||i&&("length"==u||n&&("offset"==u||"parent"==u)||o&&("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__,a=assocIndexOf(t,e);return a<0?(++this.size,t.push([e,r])):t[a][1]=r,this}function ListCache(e){var r=-1,t=null==e?0:e.length;for(this.clear();++rs))return!1;var u=o.get(e);if(u&&o.get(r))return u==r;var l=-1,f=!0,y=t&COMPARE_UNORDERED_FLAG?new SetCache:void 0;for(o.set(e,r),o.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,a=[r];return Array.isArray(t.keys)&&t.keys.length&&a.push(t.keys),Reflect.apply(checkIsObject,null,a)},JsonqlEnumError=function(e){function r(){for(var t=[],a=arguments.length;a--;)t[a]=arguments[a];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=[],a=arguments.length;a--;)t[a]=arguments[a];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=[],a=arguments.length;a--;)t[a]=arguments[a];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),JsonqlError=function(e){function r(){for(var t=[],a=arguments.length;a--;)t[a]=arguments[a];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),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,a){return{arg:e,index:a,param:r[a]||{type:t,name:"_"}}}));case e.lengthr.length:var a=r.length,n=[DEFAULT_TYPE$1];return e.map((function(e,t){var o=t>=a||!!r[t].optional,i=r[t]||{type:n,name:"_"+t};return{arg:o?getOptionalValue(e,i):e,index:t,param:i,optional:o}}));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 a;void 0===t&&(t=!1);var n=normalizeArgs(e,r),o=n.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?((a={})[ERROR_KEY]=o,a[DATA_KEY]=processReturn(n),a):o},validateAsync=function(e,r,t){return void 0===t&&(t=!1),new Promise((function(a,n){var o=validateSync(e,r,t);return t?o[ERROR_KEY].length?n(o[ERROR_KEY]):a(o[DATA_KEY]):o.length?n(o):a([])}))},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,a=allocUnsafe?allocUnsafe(t):new e.constructor(t);return e.copy(a),a}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,a=e.length;for(r||(r=Array(a));++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 a=typeof r;return!!("number"==a?isArrayLike$1(t)&&isIndex(r,t.length):"string"==a&&r in t)&&eq(t[r],e)}function createAssigner(e){return baseRest((function(r,t){var a=-1,n=t.length,o=n>1?t[n-1]:void 0,i=n>2?t[2]:void 0;for(o=e.length>3&&"function"==typeof o?(n--,o):void 0,i&&isIterateeCall(t[0],t[1],i)&&(o=n<3?void 0:o,n=1),r=Object(r);++an?0:n+r),(t=t>n?n:t)<0&&(t+=n),n=r>t?0:t-r>>>0,r>>>=0;for(var o=Array(n);++a=a?e:baseSlice(e,r,t)}function baseFindIndex(e,r,t,a){for(var n=e.length,o=t+(a?1:-1);a?o--:++o-1;);return t}function charsStartIndex(e,r){for(var t=-1,a=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 a=stringToArray(e),n=stringToArray(r);return castSlice(a,charsStartIndex(a,n),charsEndIndex(a,n)+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)},DATA_KEY="data",ERROR_KEY="error",DEFAULT_TYPE="any",KEY_WORD="continue",TYPE_KEY="type",OPTIONAL_KEY="optional",ENUM_KEY="enumv",ARGS_KEY="args",CHECKER_KEY="checker",ALIAS_KEY="alias",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_STATUS_CODE=-1,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,a=null==e?0:e.length,n=0,o=[];++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),a=!t&&isArguments(e),n=!t&&!a&&isBuffer(e),o=!t&&!a&&!n&&isTypedArray(e),i=t||a||n||o,s=i?baseTimes(e.length,String):[],c=s.length;for(var u in e)!r&&!hasOwnProperty$3.call(e,u)||i&&("length"==u||n&&("offset"==u||"parent"==u)||o&&("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__,a=assocIndexOf(t,e);return a<0?(++this.size,t.push([e,r])):t[a][1]=r,this}function ListCache(e){var r=-1,t=null==e?0:e.length;for(this.clear();++rs))return!1;var u=o.get(e);if(u&&o.get(r))return u==r;var l=-1,f=!0,y=t&COMPARE_UNORDERED_FLAG?new SetCache:void 0;for(o.set(e,r),o.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,a=[r];return Array.isArray(t.keys)&&t.keys.length&&a.push(t.keys),Reflect.apply(checkIsObject,null,a)},JsonqlEnumError=function(e){function r(){for(var t=[],a=arguments.length;a--;)t[a]=arguments[a];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=[],a=arguments.length;a--;)t[a]=arguments[a];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=[],a=arguments.length;a--;)t[a]=arguments[a];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),JsonqlError=function(e){function r(){for(var t=[],a=arguments.length;a--;)t[a]=arguments[a];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),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,a){return{arg:e,index:a,param:r[a]||{type:t,name:"_"}}}));case e.lengthr.length:var a=r.length,n=[DEFAULT_TYPE$1];return e.map((function(e,t){var o=t>=a||!!r[t].optional,i=r[t]||{type:n,name:"_"+t};return{arg:o?getOptionalValue(e,i):e,index:t,param:i,optional:o}}));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 a;void 0===t&&(t=!1);var n=normalizeArgs(e,r),o=n.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?((a={})[ERROR_KEY]=o,a[DATA_KEY]=processReturn(n),a):o},validateAsync=function(e,r,t){return void 0===t&&(t=!1),new Promise((function(a,n){var o=validateSync(e,r,t);return t?o[ERROR_KEY].length?n(o[ERROR_KEY]):a(o[DATA_KEY]):o.length?n(o):a([])}))},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,a=allocUnsafe?allocUnsafe(t):new e.constructor(t);return e.copy(a),a}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,a=e.length;for(r||(r=Array(a));++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 a=typeof r;return!!("number"==a?isArrayLike$1(t)&&isIndex(r,t.length):"string"==a&&r in t)&&eq(t[r],e)}function createAssigner(e){return baseRest((function(r,t){var a=-1,n=t.length,o=n>1?t[n-1]:void 0,i=n>2?t[2]:void 0;for(o=e.length>3&&"function"==typeof o?(n--,o):void 0,i&&isIterateeCall(t[0],t[1],i)&&(o=n<3?void 0:o,n=1),r=Object(r);++a=e?t:function(t,r,n){var e=-1,o=t.length;r<0&&(r=-r>o?0:o+r),(n=n>o?o:n)<0&&(n+=o),o=r>n?0:n-r>>>0,r>>>=0;for(var u=Array(o);++e-1;);return n}(e,o),function(t,r){for(var n=t.length;n--&&P(r,t[n],0)>-1;);return n}(e,o)+1).join("")}var L=function(t){return!!a(t)||null!=t&&""!==I(t)},q="[object Number]";function U(t){return function(t){return"number"==typeof t||b(t)&&d(t)==q}(t)&&t!=+t}var J="[object String]";function W(t){return"string"==typeof t||!a(t)&&b(t)&&d(t)==J}var G=function(t){return!W(t)&&!U(parseFloat(t))},H=function(t){return""!==I(t)&&W(t)},K=function(t){return null!=t&&"boolean"==typeof t},Q=function(t,r){return void 0===r&&(r=!0),void 0!==t&&""!==t&&""!==I(t)&&(!1===r||!0===r&&null!==t)},Y="type",X="optional",Z="enumv",tt="args",rt="checker",nt="alias",et=Y,ot=X,ut=Z,it=tt,at=rt,ct=nt,ft="continue",lt=function(t){switch(t){case"number":return G;case"string":return H;case"boolean":return K;default:return Q}},st=function(t,r){return void 0===r&&(r=""),!!a(t)&&(""===r||""===I(r)||!(t.filter((function(t){return!lt(r)(t)})).length>0))},pt=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var r=t.replace("array.<","").replace(">","");return r.indexOf("|")?r.split("|"):[r]}return!1},vt=function(t,r){var n=t.arg;return r.length>1?!n.filter((function(t){return!(r.length>r.filter((function(r){return!lt(r)(t)})).length)})).length:r.length>r.filter((function(t){return!st(n,t)})).length};function ht(t,r){return function(n){return t(r(n))}}var yt=ht(Object.getPrototypeOf,Object),dt="[object Object]",bt=Function.prototype,gt=Object.prototype,_t=bt.toString,jt=gt.hasOwnProperty,mt=_t.call(Object);function wt(t){if(!b(t)||d(t)!=dt)return!1;var r=yt(t);if(null===r)return!0;var n=jt.call(r,"constructor")&&r.constructor;return"function"==typeof n&&n instanceof n&&_t.call(n)==mt}var Ot,At=function(t,r,n){for(var e=-1,o=Object(t),u=n(t),i=u.length;i--;){var a=u[Ot?i:++e];if(!1===r(o[a],a,o))break}return t};var St="[object Arguments]";function Pt(t){return b(t)&&d(t)==St}var kt=Object.prototype,Et=kt.hasOwnProperty,zt=kt.propertyIsEnumerable,xt=Pt(function(){return arguments}())?Pt:function(t){return b(t)&&Et.call(t,"callee")&&!zt.call(t,"callee")};var Tt="object"==typeof t&&t&&!t.nodeType&&t,Ct=Tt&&"object"==typeof module&&module&&!module.nodeType&&module,Ft=Ct&&Ct.exports===Tt?o.Buffer:void 0,Mt=(Ft?Ft.isBuffer:void 0)||function(){return!1},Nt=9007199254740991,$t=/^(?:0|[1-9]\d*)$/;function Dt(t,r){var n=typeof t;return!!(r=null==r?Nt:r)&&("number"==n||"symbol"!=n&&$t.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Rt}var Vt={};Vt["[object Float32Array]"]=Vt["[object Float64Array]"]=Vt["[object Int8Array]"]=Vt["[object Int16Array]"]=Vt["[object Int32Array]"]=Vt["[object Uint8Array]"]=Vt["[object Uint8ClampedArray]"]=Vt["[object Uint16Array]"]=Vt["[object Uint32Array]"]=!0,Vt["[object Arguments]"]=Vt["[object Array]"]=Vt["[object ArrayBuffer]"]=Vt["[object Boolean]"]=Vt["[object DataView]"]=Vt["[object Date]"]=Vt["[object Error]"]=Vt["[object Function]"]=Vt["[object Map]"]=Vt["[object Number]"]=Vt["[object Object]"]=Vt["[object RegExp]"]=Vt["[object Set]"]=Vt["[object String]"]=Vt["[object WeakMap]"]=!1;var It,Lt="object"==typeof t&&t&&!t.nodeType&&t,qt=Lt&&"object"==typeof module&&module&&!module.nodeType&&module,Ut=qt&&qt.exports===Lt&&n.process,Jt=function(){try{var t=qt&&qt.require&&qt.require("util").types;return t||Ut&&Ut.binding&&Ut.binding("util")}catch(t){}}(),Wt=Jt&&Jt.isTypedArray,Gt=Wt?(It=Wt,function(t){return It(t)}):function(t){return b(t)&&Bt(t.length)&&!!Vt[d(t)]},Ht=Object.prototype.hasOwnProperty;function Kt(t,r){var n=a(t),e=!n&&xt(t),o=!n&&!e&&Mt(t),u=!n&&!e&&!o&&Gt(t),i=n||e||o||u,c=i?function(t,r){for(var n=-1,e=Array(t);++n-1},pr.prototype.set=function(t,r){var n=this.__data__,e=lr(n,t);return e<0?(++this.size,n.push([t,r])):n[e][1]=r,this};var vr,hr=o["__core-js_shared__"],yr=(vr=/[^.]+$/.exec(hr&&hr.keys&&hr.keys.IE_PROTO||""))?"Symbol(src)_1."+vr:"";var dr=Function.prototype.toString;function br(t){if(null!=t){try{return dr.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var gr=/^\[object .+?Constructor\]$/,_r=Function.prototype,jr=Object.prototype,mr=_r.toString,wr=jr.hasOwnProperty,Or=RegExp("^"+mr.call(wr).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Ar(t){return!(!tr(t)||function(t){return!!yr&&yr in t}(t))&&(ur(t)?Or:gr).test(br(t))}function Sr(t,r){var n=function(t,r){return null==t?void 0:t[r]}(t,r);return Ar(n)?n:void 0}var Pr=Sr(o,"Map"),kr=Sr(Object,"create");var Er="__lodash_hash_undefined__",zr=Object.prototype.hasOwnProperty;var xr=Object.prototype.hasOwnProperty;var Tr="__lodash_hash_undefined__";function Cr(t){var r=-1,n=null==t?0:t.length;for(this.clear();++ra))return!1;var f=u.get(t);if(f&&u.get(r))return f==r;var l=-1,s=!0,p=n&Ir?new Rr:void 0;for(u.set(t,r),u.set(r,t);++lr.type.filter((function(t){var r;return void 0===n||(!1!==(r=pt(t))?!vt({arg:n},r):!lt(t)(n))})).length)})).length}return!1},ce=function(t){function r(){for(var n=[],e=arguments.length;e--;)n[e]=arguments[e];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=r.name,t.captureStackTrace&&t.captureStackTrace(this,r)}t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r;var n={name:{configurable:!0}};return n.name.get=function(){return"JsonqlEnumError"},Object.defineProperties(r,n),r}(Error),fe=function(t){function r(){for(var n=[],e=arguments.length;e--;)n[e]=arguments[e];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=r.name,t.captureStackTrace&&t.captureStackTrace(this,r)}t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r;var n={name:{configurable:!0}};return n.name.get=function(){return"JsonqlTypeError"},Object.defineProperties(r,n),r}(Error),le=function(t){function r(){for(var n=[],e=arguments.length;e--;)n[e]=arguments[e];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=r.name,t.captureStackTrace&&t.captureStackTrace(this,r)}t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r;var n={name:{configurable:!0}};return n.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(r,n),r}(Error),se=function(t){function r(){for(var n=[],e=arguments.length;e--;)n[e]=arguments[e];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=r.name,t.captureStackTrace&&t.captureStackTrace(this,r)}t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r;var n={name:{configurable:!0},statusCode:{configurable:!0}};return n.name.get=function(){return"JsonqlError"},n.statusCode.get=function(){return-1},Object.defineProperties(r,n),r}(Error),pe=function(t,r){var n,e,o,u,i;switch(!0){case"object"===t:return o=(e=r).arg,u=e.param,i=[o],Array.isArray(u.keys)&&u.keys.length&&i.push(u.keys),!Reflect.apply(ae,null,i);case"array"===t:return!st(r.arg);case!1!==(n=pt(t)):return!vt(r,n);default:return!lt(t)(r.arg)}},ve=function(t,r){return void 0!==t?t:!0===r.optional&&void 0!==r.defaultvalue?r.defaultvalue:null},he=function(t,r){if(!st(r))throw new se("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===r.length)return[];if(!st(t))throw new se("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==r.length:return t.map((function(t,n){return{arg:t,index:n,param:r[n]}}));case!0===r[0].variable:var n=r[0].type;return t.map((function(t,e){return{arg:t,index:e,param:r[e]||{type:n,name:"_"}}}));case t.lengthr.length:var e=r.length,o=["any"];return t.map((function(t,n){var u=n>=e||!!r[n].optional,i=r[n]||{type:o,name:"_"+n};return{arg:u?ve(t,i):t,index:n,param:i,optional:u}}));default:throw new se("Could not understand your arguments and parameter structure!",{args:t,params:r})}},ye=function(t,r,n){var e;void 0===n&&(n=!1);var o=he(t,r),u=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var r=t.arg,n=t.param;return!!L(r)&&!(n.type.length>n.type.filter((function(r){return pe(r,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(r){return pe(r,t)})).length)}));return n?((e={}).error=u,e.data=o.map((function(t){return t.arg})),e):u},de=function(){try{var t=Sr(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();function be(t,r,n){"__proto__"==r&&de?de(t,r,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[r]=n}function ge(t,r,n){(void 0===n||fr(t[r],n))&&(void 0!==n||r in t)||be(t,r,n)}var _e="object"==typeof t&&t&&!t.nodeType&&t,je=_e&&"object"==typeof module&&module&&!module.nodeType&&module,me=je&&je.exports===_e?o.Buffer:void 0,we=me?me.allocUnsafe:void 0;function Oe(t,r){var n,e,o=r?(n=t.buffer,e=new n.constructor(n.byteLength),new qr(e).set(new qr(n)),e):t.buffer;return new t.constructor(o,t.byteOffset,t.length)}var Ae=Object.create,Se=function(){function t(){}return function(r){if(!tr(r))return{};if(Ae)return Ae(r);t.prototype=r;var n=new t;return t.prototype=void 0,n}}();function Pe(t,r){if(("constructor"!==r||"function"!=typeof t[r])&&"__proto__"!=r)return t[r]}var ke=Object.prototype.hasOwnProperty;function Ee(t,r,n){var e=t[r];ke.call(t,r)&&fr(e,n)&&(void 0!==n||r in t)||be(t,r,n)}var ze=Object.prototype.hasOwnProperty;function xe(t){if(!tr(t))return function(t){var r=[];if(null!=t)for(var n in Object(t))r.push(n);return r}(t);var r=Yt(t),n=[];for(var e in t)("constructor"!=e||!r&&ze.call(t,e))&&n.push(e);return n}function Te(t){return ir(t)?Kt(t,!0):xe(t)}function Ce(t){return function(t,r,n,e){var o=!n;n||(n={});for(var u=-1,i=r.length;++u0){if(++r>=Re)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(De);function Le(t,r){return Ie(function(t,r,n){return r=$e(void 0===r?t.length-1:r,0),function(){for(var e=arguments,o=-1,u=$e(e.length-r,0),i=Array(u);++o1?r[e-1]:void 0,u=e>2?r[2]:void 0;for(o=qe.length>3&&"function"==typeof o?(e--,o):void 0,u&&function(t,r,n){if(!tr(n))return!1;var e=typeof r;return!!("number"==e?ir(n)&&Dt(r,n.length):"string"==e&&r in n)&&fr(n[r],t)}(r[0],r[1],u)&&(o=e<3?void 0:o,e=1),t=Object(t);++n=e?t:function(t,r,n){var e=-1,o=t.length;r<0&&(r=-r>o?0:o+r),(n=n>o?o:n)<0&&(n+=o),o=r>n?0:n-r>>>0,r>>>=0;for(var u=Array(o);++e-1;);return n}(e,o),function(t,r){for(var n=t.length;n--&&P(r,t[n],0)>-1;);return n}(e,o)+1).join("")}var L=function(t){return!!a(t)||null!=t&&""!==I(t)},q="[object Number]";function U(t){return function(t){return"number"==typeof t||b(t)&&d(t)==q}(t)&&t!=+t}var J="[object String]";function W(t){return"string"==typeof t||!a(t)&&b(t)&&d(t)==J}var G=function(t){return!W(t)&&!U(parseFloat(t))},H=function(t){return""!==I(t)&&W(t)},K=function(t){return null!=t&&"boolean"==typeof t},Q=function(t,r){return void 0===r&&(r=!0),void 0!==t&&""!==t&&""!==I(t)&&(!1===r||!0===r&&null!==t)},Y="type",X="optional",Z="enumv",tt="args",rt="checker",nt="alias",et=Y,ot=X,ut=Z,it=tt,at=rt,ct=nt,ft="continue",lt=function(t){switch(t){case"number":return G;case"string":return H;case"boolean":return K;default:return Q}},st=function(t,r){return void 0===r&&(r=""),!!a(t)&&(""===r||""===I(r)||!(t.filter((function(t){return!lt(r)(t)})).length>0))},pt=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var r=t.replace("array.<","").replace(">","");return r.indexOf("|")?r.split("|"):[r]}return!1},vt=function(t,r){var n=t.arg;return r.length>1?!n.filter((function(t){return!(r.length>r.filter((function(r){return!lt(r)(t)})).length)})).length:r.length>r.filter((function(t){return!st(n,t)})).length};function ht(t,r){return function(n){return t(r(n))}}var yt=ht(Object.getPrototypeOf,Object),dt="[object Object]",bt=Function.prototype,gt=Object.prototype,_t=bt.toString,jt=gt.hasOwnProperty,mt=_t.call(Object);function wt(t){if(!b(t)||d(t)!=dt)return!1;var r=yt(t);if(null===r)return!0;var n=jt.call(r,"constructor")&&r.constructor;return"function"==typeof n&&n instanceof n&&_t.call(n)==mt}var Ot,At=function(t,r,n){for(var e=-1,o=Object(t),u=n(t),i=u.length;i--;){var a=u[Ot?i:++e];if(!1===r(o[a],a,o))break}return t};var St="[object Arguments]";function Pt(t){return b(t)&&d(t)==St}var kt=Object.prototype,Et=kt.hasOwnProperty,zt=kt.propertyIsEnumerable,xt=Pt(function(){return arguments}())?Pt:function(t){return b(t)&&Et.call(t,"callee")&&!zt.call(t,"callee")};var Tt="object"==typeof t&&t&&!t.nodeType&&t,Ct=Tt&&"object"==typeof module&&module&&!module.nodeType&&module,Ft=Ct&&Ct.exports===Tt?o.Buffer:void 0,Mt=(Ft?Ft.isBuffer:void 0)||function(){return!1},Nt=9007199254740991,$t=/^(?:0|[1-9]\d*)$/;function Dt(t,r){var n=typeof t;return!!(r=null==r?Nt:r)&&("number"==n||"symbol"!=n&&$t.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Rt}var Vt={};Vt["[object Float32Array]"]=Vt["[object Float64Array]"]=Vt["[object Int8Array]"]=Vt["[object Int16Array]"]=Vt["[object Int32Array]"]=Vt["[object Uint8Array]"]=Vt["[object Uint8ClampedArray]"]=Vt["[object Uint16Array]"]=Vt["[object Uint32Array]"]=!0,Vt["[object Arguments]"]=Vt["[object Array]"]=Vt["[object ArrayBuffer]"]=Vt["[object Boolean]"]=Vt["[object DataView]"]=Vt["[object Date]"]=Vt["[object Error]"]=Vt["[object Function]"]=Vt["[object Map]"]=Vt["[object Number]"]=Vt["[object Object]"]=Vt["[object RegExp]"]=Vt["[object Set]"]=Vt["[object String]"]=Vt["[object WeakMap]"]=!1;var It,Lt="object"==typeof t&&t&&!t.nodeType&&t,qt=Lt&&"object"==typeof module&&module&&!module.nodeType&&module,Ut=qt&&qt.exports===Lt&&n.process,Jt=function(){try{var t=qt&&qt.require&&qt.require("util").types;return t||Ut&&Ut.binding&&Ut.binding("util")}catch(t){}}(),Wt=Jt&&Jt.isTypedArray,Gt=Wt?(It=Wt,function(t){return It(t)}):function(t){return b(t)&&Bt(t.length)&&!!Vt[d(t)]},Ht=Object.prototype.hasOwnProperty;function Kt(t,r){var n=a(t),e=!n&&xt(t),o=!n&&!e&&Mt(t),u=!n&&!e&&!o&&Gt(t),i=n||e||o||u,c=i?function(t,r){for(var n=-1,e=Array(t);++n-1},pr.prototype.set=function(t,r){var n=this.__data__,e=lr(n,t);return e<0?(++this.size,n.push([t,r])):n[e][1]=r,this};var vr,hr=o["__core-js_shared__"],yr=(vr=/[^.]+$/.exec(hr&&hr.keys&&hr.keys.IE_PROTO||""))?"Symbol(src)_1."+vr:"";var dr=Function.prototype.toString;function br(t){if(null!=t){try{return dr.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var gr=/^\[object .+?Constructor\]$/,_r=Function.prototype,jr=Object.prototype,mr=_r.toString,wr=jr.hasOwnProperty,Or=RegExp("^"+mr.call(wr).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Ar(t){return!(!tr(t)||function(t){return!!yr&&yr in t}(t))&&(ur(t)?Or:gr).test(br(t))}function Sr(t,r){var n=function(t,r){return null==t?void 0:t[r]}(t,r);return Ar(n)?n:void 0}var Pr=Sr(o,"Map"),kr=Sr(Object,"create");var Er="__lodash_hash_undefined__",zr=Object.prototype.hasOwnProperty;var xr=Object.prototype.hasOwnProperty;var Tr="__lodash_hash_undefined__";function Cr(t){var r=-1,n=null==t?0:t.length;for(this.clear();++ra))return!1;var f=u.get(t);if(f&&u.get(r))return f==r;var l=-1,s=!0,p=n&Ir?new Rr:void 0;for(u.set(t,r),u.set(r,t);++lr.type.filter((function(t){var r;return void 0===n||(!1!==(r=pt(t))?!vt({arg:n},r):!lt(t)(n))})).length)})).length}return!1},ce=function(t){function r(){for(var n=[],e=arguments.length;e--;)n[e]=arguments[e];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=r.name,t.captureStackTrace&&t.captureStackTrace(this,r)}t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r;var n={name:{configurable:!0}};return n.name.get=function(){return"JsonqlEnumError"},Object.defineProperties(r,n),r}(Error),fe=function(t){function r(){for(var n=[],e=arguments.length;e--;)n[e]=arguments[e];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=r.name,t.captureStackTrace&&t.captureStackTrace(this,r)}t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r;var n={name:{configurable:!0}};return n.name.get=function(){return"JsonqlTypeError"},Object.defineProperties(r,n),r}(Error),le=function(t){function r(){for(var n=[],e=arguments.length;e--;)n[e]=arguments[e];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=r.name,t.captureStackTrace&&t.captureStackTrace(this,r)}t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r;var n={name:{configurable:!0}};return n.name.get=function(){return"JsonqlCheckerError"},Object.defineProperties(r,n),r}(Error),se=function(t){function r(){for(var n=[],e=arguments.length;e--;)n[e]=arguments[e];t.apply(this,n),this.message=n[0],this.detail=n[1],this.className=r.name,t.captureStackTrace&&t.captureStackTrace(this,r)}t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r;var n={name:{configurable:!0},statusCode:{configurable:!0}};return n.name.get=function(){return"JsonqlError"},n.statusCode.get=function(){return-1},Object.defineProperties(r,n),r}(Error),pe=function(t,r){var n,e,o,u,i;switch(!0){case"object"===t:return o=(e=r).arg,u=e.param,i=[o],Array.isArray(u.keys)&&u.keys.length&&i.push(u.keys),!Reflect.apply(ae,null,i);case"array"===t:return!st(r.arg);case!1!==(n=pt(t)):return!vt(r,n);default:return!lt(t)(r.arg)}},ve=function(t,r){return void 0!==t?t:!0===r.optional&&void 0!==r.defaultvalue?r.defaultvalue:null},he=function(t,r){if(!st(r))throw new se("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===r.length)return[];if(!st(t))throw new se("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==r.length:return t.map((function(t,n){return{arg:t,index:n,param:r[n]}}));case!0===r[0].variable:var n=r[0].type;return t.map((function(t,e){return{arg:t,index:e,param:r[e]||{type:n,name:"_"}}}));case t.lengthr.length:var e=r.length,o=["any"];return t.map((function(t,n){var u=n>=e||!!r[n].optional,i=r[n]||{type:o,name:"_"+n};return{arg:u?ve(t,i):t,index:n,param:i,optional:u}}));default:throw new se("Could not understand your arguments and parameter structure!",{args:t,params:r})}},ye=function(t,r,n){var e;void 0===n&&(n=!1);var o=he(t,r),u=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var r=t.arg,n=t.param;return!!L(r)&&!(n.type.length>n.type.filter((function(r){return pe(r,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(r){return pe(r,t)})).length)}));return n?((e={}).error=u,e.data=o.map((function(t){return t.arg})),e):u},de=function(){try{var t=Sr(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();function be(t,r,n){"__proto__"==r&&de?de(t,r,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[r]=n}function ge(t,r,n){(void 0===n||fr(t[r],n))&&(void 0!==n||r in t)||be(t,r,n)}var _e="object"==typeof t&&t&&!t.nodeType&&t,je=_e&&"object"==typeof module&&module&&!module.nodeType&&module,me=je&&je.exports===_e?o.Buffer:void 0,we=me?me.allocUnsafe:void 0;function Oe(t,r){var n,e,o=r?(n=t.buffer,e=new n.constructor(n.byteLength),new qr(e).set(new qr(n)),e):t.buffer;return new t.constructor(o,t.byteOffset,t.length)}var Ae=Object.create,Se=function(){function t(){}return function(r){if(!tr(r))return{};if(Ae)return Ae(r);t.prototype=r;var n=new t;return t.prototype=void 0,n}}();function Pe(t,r){if(("constructor"!==r||"function"!=typeof t[r])&&"__proto__"!=r)return t[r]}var ke=Object.prototype.hasOwnProperty;function Ee(t,r,n){var e=t[r];ke.call(t,r)&&fr(e,n)&&(void 0!==n||r in t)||be(t,r,n)}var ze=Object.prototype.hasOwnProperty;function xe(t){if(!tr(t))return function(t){var r=[];if(null!=t)for(var n in Object(t))r.push(n);return r}(t);var r=Yt(t),n=[];for(var e in t)("constructor"!=e||!r&&ze.call(t,e))&&n.push(e);return n}function Te(t){return ir(t)?Kt(t,!0):xe(t)}function Ce(t){return function(t,r,n,e){var o=!n;n||(n={});for(var u=-1,i=r.length;++u0){if(++r>=Re)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(De);function Le(t,r){return Ie(function(t,r,n){return r=$e(void 0===r?t.length-1:r,0),function(){for(var e=arguments,o=-1,u=$e(e.length-r,0),i=Array(u);++o1?r[e-1]:void 0,u=e>2?r[2]:void 0;for(o=qe.length>3&&"function"==typeof o?(e--,o):void 0,u&&function(t,r,n){if(!tr(n))return!1;var e=typeof r;return!!("number"==e?ir(n)&&Dt(r,n.length):"string"==e&&r in n)&&fr(n[r],t)}(r[0],r[1],u)&&(o=e<3?void 0:o,e=1),t=Object(t);++n !notEmpty(value) diff --git a/packages/ws-client/package.json b/packages/ws-client/package.json index bc0614753c618721998eddd92790fb533b62b78c..3047c6465a86f971df4b7332b31b13ed029316cb 100755 --- a/packages/ws-client/package.json +++ b/packages/ws-client/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-ws-client", - "version": "1.3.8", + "version": "1.3.10", "description": "This is the Web Socket client base library for Node and Browser. Not for direct use.", "main": "main.js", "module": "index.js", @@ -49,11 +49,10 @@ "node": ">=8" }, "dependencies": { - "jsonql-constants": "^1.8.12", - "jsonql-errors": "^1.1.7", - "jsonql-jwt": "^1.3.5", - "jsonql-params-validator": "^1.4.13", - "jsonql-utils": "^0.8.11", + "jsonql-constants": "^1.8.13", + "jsonql-errors": "^1.1.10", + "jsonql-params-validator": "^1.5.0", + "jsonql-utils": "^0.9.2", "nb-event-service": "^1.8.5" }, "devDependencies": { @@ -61,7 +60,7 @@ "esm": "^3.2.25", "fs-extra": "^8.1.0", "jsonql-contract": "^1.8.4", - "jsonql-ws-server": "^1.4.9", + "jsonql-ws-server": "^1.4.11", "kefir": "^3.8.6", "ws": "^7.2.0" }, diff --git a/packages/ws-client/share.js b/packages/ws-client/share.js index d36edaccd5dd6573ad644d290e3cee5102433396..3d07de62bb0c0a14f33a76157232c85c90b1e214 100644 --- a/packages/ws-client/share.js +++ b/packages/ws-client/share.js @@ -7,7 +7,7 @@ import { createNspClient, createNspAuthClient } from './src/share/create-nsp-cli import { triggerNamespacesOnError } from './src/share/trigger-namespaces-on-error' import { clientEventHandler } from './src/share/client-event-handler' // also export some of the util methods -import { clearMainEmitEvt, disconnect, getDebug, ee } from './src/utils' +import { clearMainEmitEvt, disconnect, ee } from './src/utils' // export it export { constants, @@ -17,6 +17,5 @@ export { clientEventHandler, clearMainEmitEvt, disconnect, - getDebug, ee } diff --git a/packages/ws-client/src/api.js b/packages/ws-client/src/api.js index d21e577c4cebec078c3621458418ee3aeba56bf6..a1819347dd130c1a55c2a6eec77a5617a37d0ebf 100644 --- a/packages/ws-client/src/api.js +++ b/packages/ws-client/src/api.js @@ -13,15 +13,21 @@ import { ee, processContract } from './utils' * @return {object} the wsClient instance with all the available API */ export default function wsClient(socketClientResolver, constProps = {}) { + const { log } = constProps // 1.3.9 if we pass a log method here then we use this + const logger = log && typeof log === 'function' ? log : () => {} // we need to inject property to this client later // therefore we need to do it this way return (opts) => { - const { eventEmitter } = opts; + const { eventEmitter } = opts; // pass from the next level up return checkOptions(opts, constProps) + .then(opts => { + opts.logger = logger + return opts; + }) .then(opts => ({ opts, nspMap: processContract(opts), - ee: eventEmitter || new ee() + ee: eventEmitter || new ee(logger) })) .then( ({opts, nspMap, ee}) => socketClientResolver(opts, nspMap, ee) diff --git a/packages/ws-client/src/core/action-call.js b/packages/ws-client/src/core/action-call.js index 8e474e9e2b4e05dbdaaabd9bebd76872302ec51e..bf95aa3654451ffa6fc59ddae434c07135920ee6 100644 --- a/packages/ws-client/src/core/action-call.js +++ b/packages/ws-client/src/core/action-call.js @@ -1,9 +1,7 @@ // the actual trigger call method import { ON_RESULT_PROP_NAME, RESULT_PROP_NAME, EMIT_REPLY_TYPE } from 'jsonql-constants' -import { createEvt, toArray } from 'jsonql-utils/module' +import { createEvt, toArray } from '../utils' import { respondHandler } from './respond-handler' -import { getDebug } from '../utils' -const debugFn = getDebug(`action-call`) /** * just wrapper @@ -17,7 +15,7 @@ const debugFn = getDebug(`action-call`) export function actionCall(ee, namespace, resolverName, useCallbackStyle, args = []) { const eventName = createEvt(namespace, EMIT_REPLY_TYPE) const RESULT_SUBFIX = useCallbackStyle ? RESULT_PROP_NAME : ON_RESULT_PROP_NAME - debugFn(`actionCall: ${eventName} --> ${resolverName}`, args) + // debugFn(`actionCall: ${eventName} --> ${resolverName}`, args) ee.$trigger(eventName, [resolverName, toArray(args)]) // once we trigger there is nothing return from the resolve // @TODO if we need the next then call to have the result back @@ -26,7 +24,7 @@ export function actionCall(ee, namespace, resolverName, useCallbackStyle, args = ee.$on( createEvt(namespace, resolverName, RESULT_SUBFIX), function actionCallResultHandler(result) { - debugFn(`got the first result`, result) + // debugFn(`got the first result`, result) respondHandler(result, resolver, rejecter) } ) diff --git a/packages/ws-client/src/core/generator.js b/packages/ws-client/src/core/generator.js index 4b9479888399797603f6c6ab82e602725d41470b..eb4c60f5694eea2c552460bc4b2ccb9ec514df3a 100644 --- a/packages/ws-client/src/core/generator.js +++ b/packages/ws-client/src/core/generator.js @@ -10,8 +10,7 @@ import { createCallbackHandler } from './resolver-methods' import { createAuthMethods } from './setup-auth-methods' -import { getDebug, injectToFn, chainProcessPromises } from '../utils' -const debugFn = getDebug('generator') +import { injectToFn, chainProcessPromises } from '../utils' /** * step one get the obj map with the namespace diff --git a/packages/ws-client/src/core/resolver-methods.js b/packages/ws-client/src/core/resolver-methods.js index e716479cc4814885a08e67c05a411508240f0966..e86afd151e9fbff3bcb431747ea9a64e32ddebad 100644 --- a/packages/ws-client/src/core/resolver-methods.js +++ b/packages/ws-client/src/core/resolver-methods.js @@ -19,7 +19,6 @@ import { } from 'jsonql-constants' import { actionCall } from './action-call' import { - getDebug, createEvt, toArray, injectToFn, @@ -30,7 +29,6 @@ import { isObjectHasKey } from '../utils' import { CB_FN_NAME } from '../options/constants' -const debugFn = getDebug('resolver-methods') /** * create the actual function to send message to server diff --git a/packages/ws-client/src/core/respond-handler.js b/packages/ws-client/src/core/respond-handler.js index 3996b2e32290eac8db5a025ead7fc032fceb287a..dfd82a98026860c9ecaea1d466549b6c3eea7778 100644 --- a/packages/ws-client/src/core/respond-handler.js +++ b/packages/ws-client/src/core/respond-handler.js @@ -1,8 +1,7 @@ // breaking it up further to share between methods import { DATA_KEY, ERROR_KEY } from 'jsonql-constants' import { UNKNOWN_RESULT } from '../options/constants' -import { getDebug, isObjectHasKey } from '../utils' -const debugFn = getDebug('respondHandler') +import { isObjectHasKey } from '../utils' /** * break out to use in different places to handle the return from server @@ -13,13 +12,13 @@ const debugFn = getDebug('respondHandler') */ export function respondHandler(data, resolver, rejecter) { if (isObjectHasKey(data, ERROR_KEY)) { - debugFn('-- rejecter called --', data[ERROR_KEY]) + // debugFn('-- rejecter called --', data[ERROR_KEY]) rejecter(data[ERROR_KEY]) } else if (isObjectHasKey(data, DATA_KEY)) { - debugFn('-- resolver called --', data[DATA_KEY]) + // debugFn('-- resolver called --', data[DATA_KEY]) resolver(data[DATA_KEY]) } else { - debugFn('-- UNKNOWN_RESULT --', data) + // debugFn('-- UNKNOWN_RESULT --', data) rejecter({message: UNKNOWN_RESULT, error: data}) } } diff --git a/packages/ws-client/src/core/setup-callback-api.js b/packages/ws-client/src/core/setup-callback-api.js index e26c7f7cd1717deb33b1818ec0a6e55789a9580c..84cd5c2e41153162a5c6201e54c21d88e3da408c 100644 --- a/packages/ws-client/src/core/setup-callback-api.js +++ b/packages/ws-client/src/core/setup-callback-api.js @@ -15,8 +15,7 @@ import { import { CB_FN_NAME } from '../options/constants' import { respondHandler } from './respond-handler' -import { getDebug, chainFns, injectToFn, createEvt, toArray, isFunc, isString } from '../utils' -const debugFn = getDebug('setup-resolver') +import { chainFns, injectToFn, createEvt, toArray, isFunc, isString } from '../utils' /** * Add extra property to the resolver via the getter diff --git a/packages/ws-client/src/core/setup-resolver.js b/packages/ws-client/src/core/setup-resolver.js index 6c476dd65c654ef4f84df1bf09c70b60c9d562a2..66152e8625b15deb44f3155149c23fad9e86b013 100644 --- a/packages/ws-client/src/core/setup-resolver.js +++ b/packages/ws-client/src/core/setup-resolver.js @@ -9,12 +9,9 @@ import { ON_RESULT_PROP_NAME } from 'jsonql-constants' import { MY_NAMESPACE } from '../options/constants' -import { chainFns, objDefineProps, injectToFn, createEvt, toArray, isFunc } from 'jsonql-utils/module' +import { chainFns, objDefineProps, injectToFn, createEvt, toArray, isFunc } from '../utils' import { respondHandler } from './respond-handler' -import { getDebug } from '../utils' -const debugFn = getDebug('setup-resolver') - import { setupSend } from './setup-send' import { setupCallbackApi } from './setup-callback-api' @@ -107,6 +104,6 @@ export function setupResolver(namespace, resolverName, params, fn, ee, useCallba args.push(setupSend) // get the executor const executor = Reflect.apply(chainFns, null, args) - // debug(exe) + return Reflect.apply(executor, null, [fn, ee, namespace, resolverName, params, useCallbackStyle]) } diff --git a/packages/ws-client/src/core/setup-send.js b/packages/ws-client/src/core/setup-send.js index ec5f4adff72a451e9a462a14fa7ebb9c3dfb8f6c..28c4cf762b0d80b4b0cddc4815c0d913b521fa37 100644 --- a/packages/ws-client/src/core/setup-send.js +++ b/packages/ws-client/src/core/setup-send.js @@ -8,24 +8,23 @@ import { SEND_MSG_PROP_NAME } from 'jsonql-constants' import { validateAsync } from 'jsonql-params-validator' -import { chainFns, objDefineProps, injectToFn, createEvt, toArray, isFunc } from 'jsonql-utils/module' +import { chainFns, objDefineProps, injectToFn, createEvt, toArray, isFunc } from '../utils' import { actionCall } from './action-call' -import { getDebug } from '../utils' -const debugFn = getDebug('setup-send') + // pairing with the server vesrion SEND_MSG_PROP_NAME // last of the chain so only return the resolver (fn) export const setupSend = (fn, ee, namespace, resolverName, params, useCallbackStyle) => ( objDefineProps(fn, SEND_MSG_PROP_NAME, function sendSetter(messagePayload) { const ERROR_SUBFIX = useCallbackStyle ? ERROR_PROP_NAME : ON_ERROR_PROP_NAME - debugFn('got payload for', messagePayload) + // debugFn('got payload for', messagePayload) // @NOTE change from sync interface to async @ 1.0.0 // this way we will able to catch all the error(s) validateAsync(toArray(messagePayload), params.params, true) .then(result => { // here is the different we don't throw error instead we trigger onError if (result[ERROR_KEY] && result[ERROR_KEY].length) { - debugFn(`got ERROR_KEY`, result[ERROR_KEY]) + // debugFn(`got ERROR_KEY`, result[ERROR_KEY]) ee.$call( createEvt(namespace, resolverName, ERROR_SUBFIX), [new JsonqlValidationError(resolverName, result[ERROR_KEY])] @@ -36,7 +35,7 @@ export const setupSend = (fn, ee, namespace, resolverName, params, useCallbackSt } }) .catch(err => { - debugFn(`error after validateAsync`, err) + // debugFn(`error after validateAsync`, err) ee.$call( createEvt(namespace, resolverName, ERROR_SUBFIX), [new JsonqlValidationError(resolverName, err)] diff --git a/packages/ws-client/src/options/defaults.js b/packages/ws-client/src/options/defaults.js index f4a309232af9a70e950d1e1f06a9221739047c6a..cc306efb658707dd59d90991bd90a278a0d61f7d 100644 --- a/packages/ws-client/src/options/defaults.js +++ b/packages/ws-client/src/options/defaults.js @@ -1,7 +1,7 @@ // take the sharable default options out and put here // then we can export it and re-use on the downstream clients import { createConfig } from 'jsonql-params-validator' -import { isContract } from 'jsonql-utils' +import { isContract } from '../utils' import { STRING_TYPE, BOOLEAN_TYPE, diff --git a/packages/ws-client/src/options/index.js b/packages/ws-client/src/options/index.js index 53d68c278f27fb290aa49ca236bf21ed2c2117c8..a7585474dc13fda08e42bd121007e221d059fd14 100644 --- a/packages/ws-client/src/options/index.js +++ b/packages/ws-client/src/options/index.js @@ -4,8 +4,8 @@ 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, getDebug, objHasProp } from '../utils' -const debug = getDebug('check-options') +import { fixWss, getHostName, objHasProp } from '../utils' + // constant props const defaultConstProps = { eventEmitter: null, @@ -49,7 +49,7 @@ function checkOptions(config, constProps) { // @TODO the contract now will supply the namespace information // and we need to use that to group the namespace call opts.wssPath = fixWss([opts.hostname, opts.namespace].join('/'), opts.serverType) - debug('CONFIGURATION OPTIONS', opts) + // debug('CONFIGURATION OPTIONS', opts) return opts; }) } diff --git a/packages/ws-client/src/share/client-event-handler.js b/packages/ws-client/src/share/client-event-handler.js index 4fc1777433172b7327f86b8f93ee36123ac655d2..2eef0cc2139e5d5665a01edd6c3c1bb302e5bb05 100644 --- a/packages/ws-client/src/share/client-event-handler.js +++ b/packages/ws-client/src/share/client-event-handler.js @@ -1,10 +1,7 @@ // This is share between different clients so we export it - - // @TODO port what is in the ws-main-handler // because all the client side call are via the ee // and that makes it re-usable between different client setup -import { EMIT_EVT, SOCKET_IO, WS } from '../options/constants' import { ERROR_PROP_NAME, RESULT_PROP_NAME, @@ -15,10 +12,9 @@ import { ON_RESULT_PROP_NAME, ON_MESSAGE_PROP_NAME, } from 'jsonql-constants' - -import { getDebug, createEvt, clearMainEmitEvt } from '../utils' +import { EMIT_EVT, SOCKET_IO, WS } from '../options/constants' +import { createEvt, clearMainEmitEvt } from '../utils' import { triggerNamespacesOnError } from './trigger-namespaces-on-error' -const debugFn = getDebug('client-event-handler') /** * A fake ee handler @@ -34,7 +30,7 @@ const notLoginWsHandler = (namespace, ee, opts) => { ee.$only( createEvt(namespace, EMIT_EVT), function notLoginHandlerCallback(resolverName, args) { - debugFn('noLoginHandler hijack the ws call', namespace, resolverName, args) + opts.logger('noLoginHandler hijack the ws call', namespace, resolverName, args) let error = { message: NOT_LOGIN_ERR_MSG } @@ -78,7 +74,7 @@ export function clientEventHandler(opts, nspMap, ee, bindWsHandler, namespaces, namespaces.forEach(namespace => { isPrivate = privateNamespace === namespace; if (nsps[namespace]) { - debugFn('call bindWsHandler', isPrivate, namespace) + opts.logger('call bindWsHandler', isPrivate, namespace) let args = [namespace, nsps[namespace], ee, isPrivate, opts] if (opts.serverType === SOCKET_IO) { let { nspSet } = nspMap; @@ -93,7 +89,7 @@ export function clientEventHandler(opts, nspMap, ee, bindWsHandler, namespaces, // this will be available regardless enableAuth // because the server can log the client out ee.$on(LOGOUT_EVENT_NAME, function logoutEvtHandler() { - debugFn('LOGOUT_EVENT_NAME') + opts.logger('LOGOUT_EVENT_NAME') // disconnect(nsps, opts.serverType) // we need to issue error to all the namespace onError handler triggerNamespacesOnError(ee, namespaces, LOGOUT_EVENT_NAME) diff --git a/packages/ws-client/src/share/trigger-namespaces-on-error.js b/packages/ws-client/src/share/trigger-namespaces-on-error.js index 907fb415863dcbc40bc4910b8f3b5178a7a3f566..bdd08d6176c4b3d5a3ee60e5d27dfb7b26843276 100644 --- a/packages/ws-client/src/share/trigger-namespaces-on-error.js +++ b/packages/ws-client/src/share/trigger-namespaces-on-error.js @@ -1,6 +1,6 @@ // this use by client-event-handler import { ON_ERROR_PROP_NAME, ERROR_PROP_NAME } from 'jsonql-constants' -import { createEvt } from 'jsonql-utils' +import { createEvt } from '../utils' /** * trigger errors on all the namespace onError handler diff --git a/packages/ws-client/src/utils/ee.js b/packages/ws-client/src/utils/ee.js index 2cb6caf77d8d05827969cfb4a05ff8f2490b142c..4925410eaf8f964ccfdeabb04ba85b0bd1b35bf8 100644 --- a/packages/ws-client/src/utils/ee.js +++ b/packages/ws-client/src/utils/ee.js @@ -1,15 +1,12 @@ -import getDebug from './get-debug' // this will generate a event emitter and will be use everywhere import NBEventService from 'nb-event-service' // create a clone version so we know which one we actually is using export default class JsonqlWsEvt extends NBEventService { - constructor() { + constructor(logger) { // this ee will always come with the logger // because we should take the ee from the configuration - super({ - logger: getDebug('nb-event-service') - }) + super({ logger }) } get name() { diff --git a/packages/ws-client/src/utils/get-debug.js b/packages/ws-client/src/utils/get-debug.js deleted file mode 100644 index a65bcaf7deb8c3583833f5d381dd41d65393d0e8..0000000000000000000000000000000000000000 --- a/packages/ws-client/src/utils/get-debug.js +++ /dev/null @@ -1,38 +0,0 @@ -const BASE_NAME = 'jsonql-ws-client' -/** - * Try to normalize it to use between browser and node - * @param {string} name for the debug output - * @return {function} debug - */ -const getDebug = (name) => { - try { - if (window.debug) { // the global browser object - return window.debug(BASE_NAME).extend(name) - } - } catch(e) { - // ignore this - } - try { - if (global.debug) { - return global.debug(BASE_NAME).extend(name) - } - } catch(e) { - // ignore this - } - // just a stock one - return (...args) => { - try { - // We keep this here for now, until we finish the socket.io development - if (window && window.DEBUG && window.DEBUG.indexOf(BASE_NAME) > -1) { - console.info.apply(null, [BASE_NAME, name].concat(args)) - } - } catch(e) {} - } -} -try { - if (window && window.localStorage && window.DEBUG) { - localStorage.setItem('DEBUG', `${BASE_NAME}*`) - } -} catch(e) {} -// export it -export default getDebug; diff --git a/packages/ws-client/src/utils/helpers.js b/packages/ws-client/src/utils/helpers.js index 44c7a64fb7dcd3739bad00d3cd176feba062db94..9cefb21dd4397fdecb9271d686be908707257060 100644 --- a/packages/ws-client/src/utils/helpers.js +++ b/packages/ws-client/src/utils/helpers.js @@ -1,8 +1,6 @@ // 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/module' -// import { getDebug } from './get-debug'; -// const debug = getDebug('helpers') +import { toArray, createEvt } from 'jsonql-utils/src/generic' // we shouldn't do this anymore export const fixWss = (url, serverType) => { diff --git a/packages/ws-client/src/utils/index.js b/packages/ws-client/src/utils/index.js index ca5a6732cc9f4d2b2dc7d0403bb8f840f1e205fc..c63248580b0f87b15400abf5056bd09a56fefb6d 100644 --- a/packages/ws-client/src/utils/index.js +++ b/packages/ws-client/src/utils/index.js @@ -2,6 +2,7 @@ import { isArray, isString } from 'jsonql-params-validator' // moved to jsonql-utils import { + isContract, toArray, createEvt, injectToFn, @@ -15,7 +16,7 @@ import { } from 'jsonql-utils/module' import ee from './ee' -import getDebug from './get-debug' + import processContract from './process-contract' import { fixWss, @@ -29,6 +30,7 @@ export { isArray, isString, + isContract, toArray, createEvt, injectToFn, @@ -41,7 +43,6 @@ export { objHasProp, ee, - getDebug, processContract, fixWss, diff --git a/packages/ws-client/src/utils/process-contract.js b/packages/ws-client/src/utils/process-contract.js index 67360d5e8dc960c5003a7ab8158694b538922aca..caa9a56112c2699f1b859911aff24e71f0a92dd4 100644 --- a/packages/ws-client/src/utils/process-contract.js +++ b/packages/ws-client/src/utils/process-contract.js @@ -5,9 +5,6 @@ import { JsonqlResolverNotFoundError } from 'jsonql-errors' import { MISSING_PROP_ERR } from '../options/constants' -import getDebug from './get-debug' -const debug = getDebug('process-contract') - /** * Just make sure the object contain what we are looking for * @param {object} opts configuration from checkOptions diff --git a/packages/ws-client/tests/fixtures/io-setup.js b/packages/ws-client/tests/fixtures/io-setup.js index 65f37ec3a20f81671372c3ef0d88b6abdc857ec0..40d7149ae19a3c8e79a7fd2547a54f9d85df7fc9 100644 --- a/packages/ws-client/tests/fixtures/io-setup.js +++ b/packages/ws-client/tests/fixtures/io-setup.js @@ -9,15 +9,15 @@ const debug = require('debug')('jsonql-ws-client:fixtures:io-setup'); const baseOptions = { serverType: 'socket.io', contract -}; +} module.exports = function(app, _config = {}) { - const opts = Object.assign(baseOptions, config, _config); + const opts = Object.assign(baseOptions, config, _config) return new Promise(resolver => { jsonqlWsServer(opts, app) .then(io => { - debug('setup completed'); - resolver({ app, io }); + debug('setup completed') + resolver({ app, io }) }); }); } diff --git a/packages/ws-client/tests/fixtures/server-setup.js b/packages/ws-client/tests/fixtures/server-setup.js index 14b787d22dfb4ae926ea6e45f0ddc68d33792750..348623043a7edb02e3ed61e8038e577a09249b44 100644 --- a/packages/ws-client/tests/fixtures/server-setup.js +++ b/packages/ws-client/tests/fixtures/server-setup.js @@ -31,7 +31,7 @@ module.exports = function(extra = {}) { resolver({ io, app: server - }); + }) }) - }); + }) } diff --git a/packages/ws-client/tests/on.test.js b/packages/ws-client/tests/on.test.js index 2a5401a8c6b15a98fe07e679e65d641bc8fcfd8b..c877a69212b434b8e14b6f61dc9520a63baa0c8f 100644 --- a/packages/ws-client/tests/on.test.js +++ b/packages/ws-client/tests/on.test.js @@ -3,7 +3,6 @@ /// breaking things apart and try to figure out what went wrong at the last step const test = require('ava') const debug = require('debug')('jsonql-ws-client:test:node') -global.debug = debug; /// SERVER SETUP /// const { join } = require('path') const fsx = require('fs-extra') diff --git a/packages/ws-client/tests/options.test.js b/packages/ws-client/tests/options.test.js index e37b7cf8eb79be679b7bbdad1954e2a20bae2031..84c4380165eeb966396a9503b43ed7a044fcca65 100644 --- a/packages/ws-client/tests/options.test.js +++ b/packages/ws-client/tests/options.test.js @@ -1,9 +1,9 @@ // just testing if the options are export correctly - const test = require('ava') const debug = require('debug')('jsonql-ws-client:test:options') -const { constants, triggerNamespacesOnError } = require('../share') const { objDefineProps, injectToFn, chainFns } = require('jsonql-utils') +const constants = require('../src/options/constants') +const { triggerNamespacesOnError } = require('../src/share/trigger-namespaces-on-error') test(`Should have the constants in options`, t => { t.truthy(constants.MY_NAMESPACE) @@ -34,6 +34,8 @@ test(`test the objDefineProps if it return a new prop`, t => { }) +/* test(`Test the chainPromises for the new way to handle the final output of the client`, t => { - + }) +*/ diff --git a/packages/ws-client/tests/test-node.test.js b/packages/ws-client/tests/test-node.test.js index 68543e0aa9de25f5f1be5b2476638145f7ac5dc4..24a6857f57a5c726562870b0d455318ccfb9d9a3 100644 --- a/packages/ws-client/tests/test-node.test.js +++ b/packages/ws-client/tests/test-node.test.js @@ -1,7 +1,6 @@ /// breaking things apart and try to figure out what went wrong at the last step const test = require('ava') const debug = require('debug')('jsonql-ws-client:test:node') -global.debug = debug; /// SERVER SETUP /// const { join } = require('path') const fsx = require('fs-extra') diff --git a/packages/ws-server/package.json b/packages/ws-server/package.json index 6c26bf5290bcfa90e5744f42b1b51e19701bd8f3..6a12df786bb669d4eda769f756b6674e3f19fc14 100755 --- a/packages/ws-server/package.json +++ b/packages/ws-server/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-ws-server", - "version": "1.4.11", + "version": "1.4.12", "description": "Setup WebSocket server for the jsonql to run on the same host, automatic generate public / private channel using contract", "main": "index.js", "files": [ @@ -32,11 +32,11 @@ "esm": "^3.2.25", "fs-extra": "^8.1.0", "jsonql-constants": "^1.8.13", - "jsonql-errors": "^1.1.8", - "jsonql-jwt": "^1.3.6", + "jsonql-errors": "^1.1.10", + "jsonql-jwt": "^1.3.7", "jsonql-params-validator": "^1.5.0", "jsonql-resolver": "^0.9.11", - "jsonql-utils": "^0.9.0", + "jsonql-utils": "^0.9.2", "lodash": "^4.17.15", "ws": "^7.2.0" },