diff --git a/packages/contract-cli/package.json b/packages/contract-cli/package.json index 6fec3e75da8a4de14f8e9fb0c886d6f6ebf607ec..b73772cab944b01820ad0c909e0f0836f1b2fef0 100755 --- a/packages/contract-cli/package.json +++ b/packages/contract-cli/package.json @@ -53,10 +53,10 @@ "fs-extra": "^8.1.0", "glob": "^7.1.6", "jsdoc-api": "^5.0.4", - "jsonql-constants": "^1.9.8", + "jsonql-constants": "^1.9.10", "jsonql-errors": "^1.1.10", - "jsonql-params-validator": "^1.5.2", - "jsonql-utils": "^1.0.6", + "jsonql-params-validator": "^1.5.3", + "jsonql-utils": "^1.1.3", "kefir": "^3.8.6", "lodash": "^4.17.15", "nb-split-tasks": "^0.6.0", diff --git a/packages/contract-cli/src/public-contract/hello-world.json b/packages/contract-cli/src/public-contract/hello-world.json index 3d8e3b6877fdf35a2f1d17fe270751ba46a72cbb..cebe1fc8ea4108328fdad7598965601723d422e2 100755 --- a/packages/contract-cli/src/public-contract/hello-world.json +++ b/packages/contract-cli/src/public-contract/hello-world.json @@ -5,7 +5,9 @@ "params": [], "returns": [ { - "type": "string", + "type": [ + "string" + ], "description": "stock message" } ] diff --git a/packages/validator/dist/jsonql-params-validator.cjs.js b/packages/validator/dist/jsonql-params-validator.cjs.js index b6300778ce862e38d8ebc77cc2763d1342ee715d..1be39481723acf16c854f142ea45ec9b5abae805 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 t="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},r="object"==typeof t&&t&&t.Object===Object&&t,e="object"==typeof self&&self&&self.Object===Object&&self,n=r||e||Function("return this")(),o=n.Symbol;function u(t,r){for(var e=-1,n=null==t?0:t.length,o=Array(n);++e=n?t:function(t,r,e){var n=-1,o=t.length;r<0&&(r=-r>o?0:o+r),(e=e>o?o:e)<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var u=Array(o);++n-1;);return e}(n,o),function(t,r){for(var e=t.length;e--&&m(r,t[e],0)>-1;);return e}(n,o)+1).join("")}var D=function(t){return!!i(t)||null!=t&&""!==$(t)};function R(t){return function(t){return"number"==typeof t||h(t)&&"[object Number]"==v(t)}(t)&&t!=+t}function B(t){return"string"==typeof t||!i(t)&&h(t)&&"[object String]"==v(t)}var V=function(t){return!B(t)&&!R(parseFloat(t))},I=function(t){return""!==$(t)&&B(t)},L=function(t){return null!=t&&"boolean"==typeof t},q=function(t,r){return void 0===r&&(r=!0),void 0!==t&&""!==t&&""!==$(t)&&(!1===r||!0===r&&null!==t)},U=function(t){switch(t){case"number":return V;case"string":return I;case"boolean":return L;default:return q}},J=function(t,r){return void 0===r&&(r=""),!!i(t)&&(""===r||""===$(r)||!(t.filter((function(t){return!U(r)(t)})).length>0))},W=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var r=t.replace("array.<","").replace(">","");return r.indexOf("|")?r.split("|"):[r]}return!1},G=function(t,r){var e=t.arg;return r.length>1?!e.filter((function(t){return!(r.length>r.filter((function(r){return!U(r)(t)})).length)})).length:r.length>r.filter((function(t){return!J(e,t)})).length};function H(t,r){return function(e){return t(r(e))}}var K=H(Object.getPrototypeOf,Object),Q=Function.prototype,Y=Object.prototype,X=Q.toString,Z=Y.hasOwnProperty,tt=X.call(Object);function rt(t){if(!h(t)||"[object Object]"!=v(t))return!1;var r=K(t);if(null===r)return!0;var e=Z.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&X.call(e)==tt}var et,nt=function(t,r,e){for(var n=-1,o=Object(t),u=e(t),i=u.length;i--;){var a=u[et?i:++n];if(!1===r(o[a],a,o))break}return t};function ot(t){return h(t)&&"[object Arguments]"==v(t)}var ut=Object.prototype,it=ut.hasOwnProperty,at=ut.propertyIsEnumerable,ct=ot(function(){return arguments}())?ot:function(t){return h(t)&&it.call(t,"callee")&&!at.call(t,"callee")};var ft="object"==typeof exports&&exports&&!exports.nodeType&&exports,st=ft&&"object"==typeof module&&module&&!module.nodeType&&module,lt=st&&st.exports===ft?n.Buffer:void 0,pt=(lt?lt.isBuffer:void 0)||function(){return!1},vt=/^(?:0|[1-9]\d*)$/;function ht(t,r){var e=typeof t;return!!(r=null==r?9007199254740991:r)&&("number"==e||"symbol"!=e&&vt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=9007199254740991}var dt={};dt["[object Float32Array]"]=dt["[object Float64Array]"]=dt["[object Int8Array]"]=dt["[object Int16Array]"]=dt["[object Int32Array]"]=dt["[object Uint8Array]"]=dt["[object Uint8ClampedArray]"]=dt["[object Uint16Array]"]=dt["[object Uint32Array]"]=!0,dt["[object Arguments]"]=dt["[object Array]"]=dt["[object ArrayBuffer]"]=dt["[object Boolean]"]=dt["[object DataView]"]=dt["[object Date]"]=dt["[object Error]"]=dt["[object Function]"]=dt["[object Map]"]=dt["[object Number]"]=dt["[object Object]"]=dt["[object RegExp]"]=dt["[object Set]"]=dt["[object String]"]=dt["[object WeakMap]"]=!1;var bt,gt="object"==typeof exports&&exports&&!exports.nodeType&&exports,_t=gt&&"object"==typeof module&&module&&!module.nodeType&&module,jt=_t&&_t.exports===gt&&r.process,mt=function(){try{var t=_t&&_t.require&&_t.require("util").types;return t||jt&&jt.binding&&jt.binding("util")}catch(t){}}(),Ot=mt&&mt.isTypedArray,wt=Ot?(bt=Ot,function(t){return bt(t)}):function(t){return h(t)&&yt(t.length)&&!!dt[v(t)]},At=Object.prototype.hasOwnProperty;function xt(t,r){var e=i(t),n=!e&&ct(t),o=!e&&!n&&pt(t),u=!e&&!n&&!o&&wt(t),a=e||n||o||u,c=a?function(t,r){for(var e=-1,n=Array(t);++e-1},Rt.prototype.set=function(t,r){var e=this.__data__,n=$t(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this};var Bt,Vt=n["__core-js_shared__"],It=(Bt=/[^.]+$/.exec(Vt&&Vt.keys&&Vt.keys.IE_PROTO||""))?"Symbol(src)_1."+Bt:"";var Lt=Function.prototype.toString;function qt(t){if(null!=t){try{return Lt.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var Ut=/^\[object .+?Constructor\]$/,Jt=Function.prototype,Wt=Object.prototype,Gt=Jt.toString,Ht=Wt.hasOwnProperty,Kt=RegExp("^"+Gt.call(Ht).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Qt(t){return!(!zt(t)||function(t){return!!It&&It in t}(t))&&(Tt(t)?Kt:Ut).test(qt(t))}function Yt(t,r){var e=function(t,r){return null==t?void 0:t[r]}(t,r);return Qt(e)?e:void 0}var Xt=Yt(n,"Map"),Zt=Yt(Object,"create");var tr=Object.prototype.hasOwnProperty;var rr=Object.prototype.hasOwnProperty;function er(t){var r=-1,e=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 s=-1,l=!0,p=2&e?new ir:void 0;for(u.set(t,r),u.set(r,t);++sr.type.filter((function(t){var r;return void 0===e||(!1!==(r=W(t))?!G({arg:e},r):!U(t)(e))})).length)})).length}return!1},ee=function(t){function r(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];t.apply(this,e),this.message=e[0],this.detail=e[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 e={name:{configurable:!0}};return e.name.get=function(){return"JsonqlValidationError"},Object.defineProperties(r,e),r}(Error),ne=function(t){function r(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];t.apply(this,e),this.message=e[0],this.detail=e[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 e={name:{configurable:!0},statusCode:{configurable:!0}};return e.name.get=function(){return"JsonqlError"},e.statusCode.get=function(){return-1},Object.defineProperties(r,e),r}(Error),oe=function(t,r){var e,n,o,u,i;switch(!0){case"object"===t:return o=(n=r).arg,u=n.param,i=[o],Array.isArray(u.keys)&&u.keys.length&&i.push(u.keys),!Reflect.apply(re,null,i);case"array"===t:return!J(r.arg);case!1!==(e=W(t)):return!G(r,e);default:return!U(t)(r.arg)}},ue=function(t,r){return void 0!==t?t:!0===r.optional&&void 0!==r.defaultvalue?r.defaultvalue:null},ie=function(t,r){if(!J(r))throw new ee("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===r.length)return[];if(!J(t))throw new ee("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,e){return{arg:t,index:e,param:r[e]}}));case!0===r[0].variable:var e=r[0].type;return t.map((function(t,n){return{arg:t,index:n,param:r[n]||{type:e,name:"_"}}}));case t.lengthr.length:var n=r.length,o=["any"];return t.map((function(t,e){var u=e>=n||!!r[e].optional,i=r[e]||{type:o,name:"_"+e};return{arg:u?ue(t,i):t,index:e,param:i,optional:u}}));default:throw new ne("Could not understand your arguments and parameter structure!",{args:t,params:r})}},ae=function(t,r,e){var n;void 0===e&&(e=!1);var o=ie(t,r),u=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var r=t.arg,e=t.param;return!!D(r)&&!(e.type.length>e.type.filter((function(r){return oe(r,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(r){return oe(r,t)})).length)}));return e?((n={}).error=u,n.data=o.map((function(t){return t.arg})),n):u},ce=function(){try{var t=Yt(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();function fe(t,r,e){"__proto__"==r&&ce?ce(t,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):t[r]=e}function se(t,r,e){(void 0===e||Mt(t[r],e))&&(void 0!==e||r in t)||fe(t,r,e)}var le="object"==typeof exports&&exports&&!exports.nodeType&&exports,pe=le&&"object"==typeof module&&module&&!module.nodeType&&module,ve=pe&&pe.exports===le?n.Buffer:void 0,he=ve?ve.allocUnsafe:void 0;function ye(t,r){var e,n,o=r?(e=t.buffer,n=new e.constructor(e.byteLength),new fr(n).set(new fr(e)),n):t.buffer;return new t.constructor(o,t.byteOffset,t.length)}var de=Object.create,be=function(){function t(){}return function(r){if(!zt(r))return{};if(de)return de(r);t.prototype=r;var e=new t;return t.prototype=void 0,e}}();function ge(t,r){if(("constructor"!==r||"function"!=typeof t[r])&&"__proto__"!=r)return t[r]}var _e=Object.prototype.hasOwnProperty;function je(t,r,e){var n=t[r];_e.call(t,r)&&Mt(n,e)&&(void 0!==e||r in t)||fe(t,r,e)}var me=Object.prototype.hasOwnProperty;function Oe(t){if(!zt(t))return function(t){var r=[];if(null!=t)for(var e in Object(t))r.push(e);return r}(t);var r=kt(t),e=[];for(var n in t)("constructor"!=n||!r&&me.call(t,n))&&e.push(n);return e}function we(t){return Ct(t)?xt(t,!0):Oe(t)}function Ae(t){return function(t,r,e,n){var o=!e;e||(e={});for(var u=-1,i=r.length;++u0){if(++r>=800)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(Ee);function Ce(t,r){return Te(function(t,r,e){return r=Pe(void 0===r?t.length-1:r,0),function(){for(var n=arguments,o=-1,u=Pe(n.length-r,0),i=Array(u);++o1?r[n-1]:void 0,u=n>2?r[2]:void 0;for(o=Ne.length>3&&"function"==typeof o?(n--,o):void 0,u&&function(t,r,e){if(!zt(e))return!1;var n=typeof r;return!!("number"==n?Ct(e)&&ht(r,e.length):"string"==n&&r in e)&&Mt(e[r],t)}(r[0],r[1],u)&&(o=n<3?void 0:o,n=1),t=Object(t);++e=n?t:function(t,r,e){var n=-1,o=t.length;r<0&&(r=-r>o?0:o+r),(e=e>o?o:e)<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var u=Array(o);++n-1;);return e}(n,o),function(t,r){for(var e=t.length;e--&&m(r,t[e],0)>-1;);return e}(n,o)+1).join("")}var $=function(t){return!!i(t)||null!=t&&""!==M(t)};function D(t){return function(t){return"number"==typeof t||h(t)&&"[object Number]"==v(t)}(t)&&t!=+t}function B(t){return"string"==typeof t||!i(t)&&h(t)&&"[object String]"==v(t)}var V=function(t){return!B(t)&&!D(parseFloat(t))},I=function(t){return""!==M(t)&&B(t)},L=function(t){return null!=t&&"boolean"==typeof t},q=function(t,r){return void 0===r&&(r=!0),void 0!==t&&""!==t&&""!==M(t)&&(!1===r||!0===r&&null!==t)},U=function(t){switch(t){case"number":return V;case"string":return I;case"boolean":return L;default:return q}},J=function(t,r){return void 0===r&&(r=""),!!i(t)&&(""===r||""===M(r)||!(t.filter((function(t){return!U(r)(t)})).length>0))},W=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var r=t.replace("array.<","").replace(">","");return r.indexOf("|")?r.split("|"):[r]}return!1},G=function(t,r){var e=t.arg;return r.length>1?!e.filter((function(t){return!(r.length>r.filter((function(r){return!U(r)(t)})).length)})).length:r.length>r.filter((function(t){return!J(e,t)})).length};function H(t,r){return function(e){return t(r(e))}}var K=H(Object.getPrototypeOf,Object),Q=Function.prototype,Y=Object.prototype,X=Q.toString,Z=Y.hasOwnProperty,tt=X.call(Object);function rt(t){if(!h(t)||"[object Object]"!=v(t))return!1;var r=K(t);if(null===r)return!0;var e=Z.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&X.call(e)==tt}var et,nt=function(t,r,e){for(var n=-1,o=Object(t),u=e(t),i=u.length;i--;){var a=u[et?i:++n];if(!1===r(o[a],a,o))break}return t};function ot(t){return h(t)&&"[object Arguments]"==v(t)}var ut=Object.prototype,it=ut.hasOwnProperty,at=ut.propertyIsEnumerable,ct=ot(function(){return arguments}())?ot:function(t){return h(t)&&it.call(t,"callee")&&!at.call(t,"callee")};var ft="object"==typeof exports&&exports&&!exports.nodeType&&exports,st=ft&&"object"==typeof module&&module&&!module.nodeType&&module,lt=st&&st.exports===ft?n.Buffer:void 0,pt=(lt?lt.isBuffer:void 0)||function(){return!1},vt=/^(?:0|[1-9]\d*)$/;function ht(t,r){var e=typeof t;return!!(r=null==r?9007199254740991:r)&&("number"==e||"symbol"!=e&&vt.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=9007199254740991}var dt={};dt["[object Float32Array]"]=dt["[object Float64Array]"]=dt["[object Int8Array]"]=dt["[object Int16Array]"]=dt["[object Int32Array]"]=dt["[object Uint8Array]"]=dt["[object Uint8ClampedArray]"]=dt["[object Uint16Array]"]=dt["[object Uint32Array]"]=!0,dt["[object Arguments]"]=dt["[object Array]"]=dt["[object ArrayBuffer]"]=dt["[object Boolean]"]=dt["[object DataView]"]=dt["[object Date]"]=dt["[object Error]"]=dt["[object Function]"]=dt["[object Map]"]=dt["[object Number]"]=dt["[object Object]"]=dt["[object RegExp]"]=dt["[object Set]"]=dt["[object String]"]=dt["[object WeakMap]"]=!1;var bt,gt="object"==typeof exports&&exports&&!exports.nodeType&&exports,_t=gt&&"object"==typeof module&&module&&!module.nodeType&&module,jt=_t&&_t.exports===gt&&r.process,mt=function(){try{var t=_t&&_t.require&&_t.require("util").types;return t||jt&&jt.binding&&jt.binding("util")}catch(t){}}(),Ot=mt&&mt.isTypedArray,wt=Ot?(bt=Ot,function(t){return bt(t)}):function(t){return h(t)&&yt(t.length)&&!!dt[v(t)]},At=Object.prototype.hasOwnProperty;function xt(t,r){var e=i(t),n=!e&&ct(t),o=!e&&!n&&pt(t),u=!e&&!n&&!o&&wt(t),a=e||n||o||u,c=a?function(t,r){for(var e=-1,n=Array(t);++e-1},Dt.prototype.set=function(t,r){var e=this.__data__,n=Mt(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this};var Bt,Vt=n["__core-js_shared__"],It=(Bt=/[^.]+$/.exec(Vt&&Vt.keys&&Vt.keys.IE_PROTO||""))?"Symbol(src)_1."+Bt:"";var Lt=Function.prototype.toString;function qt(t){if(null!=t){try{return Lt.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var Ut=/^\[object .+?Constructor\]$/,Jt=Function.prototype,Wt=Object.prototype,Gt=Jt.toString,Ht=Wt.hasOwnProperty,Kt=RegExp("^"+Gt.call(Ht).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Qt(t){return!(!zt(t)||function(t){return!!It&&It in t}(t))&&(Tt(t)?Kt:Ut).test(qt(t))}function Yt(t,r){var e=function(t,r){return null==t?void 0:t[r]}(t,r);return Qt(e)?e:void 0}var Xt=Yt(n,"Map"),Zt=Yt(Object,"create");var tr=Object.prototype.hasOwnProperty;var rr=Object.prototype.hasOwnProperty;function er(t){var r=-1,e=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 s=-1,l=!0,p=2&e?new ir:void 0;for(u.set(t,r),u.set(r,t);++sr.type.filter((function(t){var r;return void 0===e||(!1!==(r=W(t))?!G({arg:e},r):!U(t)(e))})).length)})).length}return!1},ee=function(t){function r(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];t.apply(this,e),this.message=e[0],this.detail=e[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 e={name:{configurable:!0}};return e.name.get=function(){return"JsonqlValidationError"},Object.defineProperties(r,e),r}(Error),ne=function(t){function r(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];t.apply(this,e),this.message=e[0],this.detail=e[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 e={name:{configurable:!0},statusCode:{configurable:!0}};return e.name.get=function(){return"JsonqlError"},e.statusCode.get=function(){return-1},Object.defineProperties(r,e),r}(Error),oe=function(t,r){var e,n,o,u,i;switch(!0){case"object"===t:return o=(n=r).arg,u=n.param,i=[o],Array.isArray(u.keys)&&u.keys.length&&i.push(u.keys),!Reflect.apply(re,null,i);case"array"===t:return!J(r.arg);case!1!==(e=W(t)):return!G(r,e);default:return!U(t)(r.arg)}},ue=function(t,r){return void 0!==t?t:!0===r.optional&&void 0!==r.defaultvalue?r.defaultvalue:null},ie=function(t,r){if(!J(r))throw new ee("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===r.length)return[];if(!J(t))throw new ee("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,e){return{arg:t,index:e,param:r[e]}}));case!0===r[0].variable:var e=r[0].type;return t.map((function(t,n){return{arg:t,index:n,param:r[n]||{type:e,name:"_"}}}));case t.lengthr.length:var n=r.length,o=["any"];return t.map((function(t,e){var u=e>=n||!!r[e].optional,i=r[e]||{type:o,name:"_"+e};return{arg:u?ue(t,i):t,index:e,param:i,optional:u}}));default:throw new ne("Could not understand your arguments and parameter structure!",{args:t,params:r})}},ae=function(t,r,e){var n;void 0===e&&(e=!1);var o=ie(t,r),u=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var r=t.arg,e=t.param;return!!$(r)&&!(e.type.length>e.type.filter((function(r){return oe(r,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(r){return oe(r,t)})).length)}));return e?((n={}).error=u,n.data=o.map((function(t){return t.arg})),n):u},ce=function(t,r,e){return void 0===e&&(e=!1),new Promise((function(n,o){var u=ae(t,r,e);return e?u.error.length?o(u.error):n(u.data):u.length?o(u):n([])}))},fe=function(){try{var t=Yt(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();function se(t,r,e){"__proto__"==r&&fe?fe(t,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):t[r]=e}function le(t,r,e){(void 0===e||Ft(t[r],e))&&(void 0!==e||r in t)||se(t,r,e)}var pe="object"==typeof exports&&exports&&!exports.nodeType&&exports,ve=pe&&"object"==typeof module&&module&&!module.nodeType&&module,he=ve&&ve.exports===pe?n.Buffer:void 0,ye=he?he.allocUnsafe:void 0;function de(t,r){var e,n,o=r?(e=t.buffer,n=new e.constructor(e.byteLength),new fr(n).set(new fr(e)),n):t.buffer;return new t.constructor(o,t.byteOffset,t.length)}var be=Object.create,ge=function(){function t(){}return function(r){if(!zt(r))return{};if(be)return be(r);t.prototype=r;var e=new t;return t.prototype=void 0,e}}();function _e(t,r){if(("constructor"!==r||"function"!=typeof t[r])&&"__proto__"!=r)return t[r]}var je=Object.prototype.hasOwnProperty;function me(t,r,e){var n=t[r];je.call(t,r)&&Ft(n,e)&&(void 0!==e||r in t)||se(t,r,e)}var Oe=Object.prototype.hasOwnProperty;function we(t){if(!zt(t))return function(t){var r=[];if(null!=t)for(var e in Object(t))r.push(e);return r}(t);var r=St(t),e=[];for(var n in t)("constructor"!=n||!r&&Oe.call(t,n))&&e.push(n);return e}function Ae(t){return Rt(t)?xt(t,!0):we(t)}function xe(t){return function(t,r,e,n){var o=!e;e||(e={});for(var u=-1,i=r.length;++u0){if(++r>=800)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(ze);function Ce(t,r){return Re(function(t,r,e){return r=Ee(void 0===r?t.length-1:r,0),function(){for(var n=arguments,o=-1,u=Ee(n.length-r,0),i=Array(u);++o1?r[n-1]:void 0,u=n>2?r[2]:void 0;for(o=Ne.length>3&&"function"==typeof o?(n--,o):void 0,u&&function(t,r,e){if(!zt(e))return!1;var n=typeof r;return!!("number"==n?Rt(e)&&ht(r,e.length):"string"==n&&r in e)&&Ft(e[r],t)}(r[0],r[1],u)&&(o=n<3?void 0:o,n=1),t=Object(t);++e=n?t:function(t,r,e){var n=-1,o=t.length;r<0&&(r=-r>o?0:o+r),(e=e>o?o:e)<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var u=Array(o);++n-1;);return e}(n,o),function(t,r){for(var e=t.length;e--&&O(r,t[e],0)>-1;);return e}(n,o)+1).join("")}var R=function(t){return!!a(t)||null!=t&&""!==D(t)};function V(t){return function(t){return"number"==typeof t||y(t)&&"[object Number]"==h(t)}(t)&&t!=+t}function B(t){return"string"==typeof t||!a(t)&&y(t)&&"[object String]"==h(t)}var q=function(t){return!B(t)&&!V(parseFloat(t))},I=function(t){return""!==D(t)&&B(t)},L=function(t){return null!=t&&"boolean"==typeof t},U=function(t,r){return void 0===r&&(r=!0),void 0!==t&&""!==t&&""!==D(t)&&(!1===r||!0===r&&null!==t)},J=function(t){switch(t){case"number":return q;case"string":return I;case"boolean":return L;default:return U}},W=function(t,r){return void 0===r&&(r=""),!!a(t)&&(""===r||""===D(r)||!(t.filter((function(t){return!J(r)(t)})).length>0))},G=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var r=t.replace("array.<","").replace(">","");return r.indexOf("|")?r.split("|"):[r]}return!1},H=function(t,r){var e=t.arg;return r.length>1?!e.filter((function(t){return!(r.length>r.filter((function(r){return!J(r)(t)})).length)})).length:r.length>r.filter((function(t){return!W(e,t)})).length};function K(t,r){return function(e){return t(r(e))}}var Q=K(Object.getPrototypeOf,Object),Y=Function.prototype,X=Object.prototype,Z=Y.toString,tt=X.hasOwnProperty,rt=Z.call(Object);function et(t){if(!y(t)||"[object Object]"!=h(t))return!1;var r=Q(t);if(null===r)return!0;var e=tt.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&Z.call(e)==rt}var nt,ot=function(t,r,e){for(var n=-1,o=Object(t),u=e(t),i=u.length;i--;){var a=u[nt?i:++n];if(!1===r(o[a],a,o))break}return t};function ut(t){return y(t)&&"[object Arguments]"==h(t)}var it=Object.prototype,at=it.hasOwnProperty,ct=it.propertyIsEnumerable,ft=ut(function(){return arguments}())?ut:function(t){return y(t)&&at.call(t,"callee")&&!ct.call(t,"callee")};var lt="object"==typeof t&&t&&!t.nodeType&&t,st=lt&&"object"==typeof module&&module&&!module.nodeType&&module,pt=st&&st.exports===lt?o.Buffer:void 0,vt=(pt?pt.isBuffer:void 0)||function(){return!1},ht=/^(?:0|[1-9]\d*)$/;function yt(t,r){var e=typeof t;return!!(r=null==r?9007199254740991:r)&&("number"==e||"symbol"!=e&&ht.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=9007199254740991}var bt={};bt["[object Float32Array]"]=bt["[object Float64Array]"]=bt["[object Int8Array]"]=bt["[object Int16Array]"]=bt["[object Int32Array]"]=bt["[object Uint8Array]"]=bt["[object Uint8ClampedArray]"]=bt["[object Uint16Array]"]=bt["[object Uint32Array]"]=!0,bt["[object Arguments]"]=bt["[object Array]"]=bt["[object ArrayBuffer]"]=bt["[object Boolean]"]=bt["[object DataView]"]=bt["[object Date]"]=bt["[object Error]"]=bt["[object Function]"]=bt["[object Map]"]=bt["[object Number]"]=bt["[object Object]"]=bt["[object RegExp]"]=bt["[object Set]"]=bt["[object String]"]=bt["[object WeakMap]"]=!1;var gt,_t="object"==typeof t&&t&&!t.nodeType&&t,jt=_t&&"object"==typeof module&&module&&!module.nodeType&&module,mt=jt&&jt.exports===_t&&e.process,Ot=function(){try{var t=jt&&jt.require&&jt.require("util").types;return t||mt&&mt.binding&&mt.binding("util")}catch(t){}}(),wt=Ot&&Ot.isTypedArray,At=wt?(gt=wt,function(t){return gt(t)}):function(t){return y(t)&&dt(t.length)&&!!bt[h(t)]},St=Object.prototype.hasOwnProperty;function kt(t,r){var e=a(t),n=!e&&ft(t),o=!e&&!n&&vt(t),u=!e&&!n&&!o&&At(t),i=e||n||o||u,c=i?function(t,r){for(var e=-1,n=Array(t);++e-1},Vt.prototype.set=function(t,r){var e=this.__data__,n=Dt(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this};var Bt,qt=o["__core-js_shared__"],It=(Bt=/[^.]+$/.exec(qt&&qt.keys&&qt.keys.IE_PROTO||""))?"Symbol(src)_1."+Bt:"";var Lt=Function.prototype.toString;function Ut(t){if(null!=t){try{return Lt.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var Jt=/^\[object .+?Constructor\]$/,Wt=Function.prototype,Gt=Object.prototype,Ht=Wt.toString,Kt=Gt.hasOwnProperty,Qt=RegExp("^"+Ht.call(Kt).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Yt(t){return!(!xt(t)||function(t){return!!It&&It in t}(t))&&(Ct(t)?Qt:Jt).test(Ut(t))}function Xt(t,r){var e=function(t,r){return null==t?void 0:t[r]}(t,r);return Yt(e)?e:void 0}var Zt=Xt(o,"Map"),tr=Xt(Object,"create");var rr=Object.prototype.hasOwnProperty;var er=Object.prototype.hasOwnProperty;function nr(t){var r=-1,e=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=2&e?new ar:void 0;for(u.set(t,r),u.set(r,t);++lr.type.filter((function(t){var r;return void 0===e||(!1!==(r=G(t))?!H({arg:e},r):!J(t)(e))})).length)})).length}return!1},ne=function(t){function r(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];t.apply(this,e),this.message=e[0],this.detail=e[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 e={name:{configurable:!0}};return e.name.get=function(){return"JsonqlValidationError"},Object.defineProperties(r,e),r}(Error),oe=function(t){function r(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];t.apply(this,e),this.message=e[0],this.detail=e[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 e={name:{configurable:!0},statusCode:{configurable:!0}};return e.name.get=function(){return"JsonqlError"},e.statusCode.get=function(){return-1},Object.defineProperties(r,e),r}(Error),ue=function(t,r){var e,n,o,u,i;switch(!0){case"object"===t:return o=(n=r).arg,u=n.param,i=[o],Array.isArray(u.keys)&&u.keys.length&&i.push(u.keys),!Reflect.apply(ee,null,i);case"array"===t:return!W(r.arg);case!1!==(e=G(t)):return!H(r,e);default:return!J(t)(r.arg)}},ie=function(t,r){return void 0!==t?t:!0===r.optional&&void 0!==r.defaultvalue?r.defaultvalue:null},ae=function(t,r){if(!W(r))throw new ne("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===r.length)return[];if(!W(t))throw new ne("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,e){return{arg:t,index:e,param:r[e]}}));case!0===r[0].variable:var e=r[0].type;return t.map((function(t,n){return{arg:t,index:n,param:r[n]||{type:e,name:"_"}}}));case t.lengthr.length:var n=r.length,o=["any"];return t.map((function(t,e){var u=e>=n||!!r[e].optional,i=r[e]||{type:o,name:"_"+e};return{arg:u?ie(t,i):t,index:e,param:i,optional:u}}));default:throw new oe("Could not understand your arguments and parameter structure!",{args:t,params:r})}},ce=function(t,r,e){var n;void 0===e&&(e=!1);var o=ae(t,r),u=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var r=t.arg,e=t.param;return!!R(r)&&!(e.type.length>e.type.filter((function(r){return ue(r,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(r){return ue(r,t)})).length)}));return e?((n={}).error=u,n.data=o.map((function(t){return t.arg})),n):u},fe=function(){try{var t=Xt(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();function le(t,r,e){"__proto__"==r&&fe?fe(t,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):t[r]=e}function se(t,r,e){(void 0===e||$t(t[r],e))&&(void 0!==e||r in t)||le(t,r,e)}var pe="object"==typeof t&&t&&!t.nodeType&&t,ve=pe&&"object"==typeof module&&module&&!module.nodeType&&module,he=ve&&ve.exports===pe?o.Buffer:void 0,ye=he?he.allocUnsafe:void 0;function de(t,r){var e,n,o=r?(e=t.buffer,n=new e.constructor(e.byteLength),new lr(n).set(new lr(e)),n):t.buffer;return new t.constructor(o,t.byteOffset,t.length)}var be=Object.create,ge=function(){function t(){}return function(r){if(!xt(r))return{};if(be)return be(r);t.prototype=r;var e=new t;return t.prototype=void 0,e}}();function _e(t,r){if(("constructor"!==r||"function"!=typeof t[r])&&"__proto__"!=r)return t[r]}var je=Object.prototype.hasOwnProperty;function me(t,r,e){var n=t[r];je.call(t,r)&&$t(n,e)&&(void 0!==e||r in t)||le(t,r,e)}var Oe=Object.prototype.hasOwnProperty;function we(t){if(!xt(t))return function(t){var r=[];if(null!=t)for(var e in Object(t))r.push(e);return r}(t);var r=Et(t),e=[];for(var n in t)("constructor"!=n||!r&&Oe.call(t,n))&&e.push(n);return e}function Ae(t){return Nt(t)?kt(t,!0):we(t)}function Se(t){return function(t,r,e,n){var o=!e;e||(e={});for(var u=-1,i=r.length;++u0){if(++r>=800)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(Te);function Ne(t,r){return Ce(function(t,r,e){return r=ze(void 0===r?t.length-1:r,0),function(){for(var n=arguments,o=-1,u=ze(n.length-r,0),i=Array(u);++o1?r[n-1]:void 0,u=n>2?r[2]:void 0;for(o=Fe.length>3&&"function"==typeof o?(n--,o):void 0,u&&function(t,r,e){if(!xt(e))return!1;var n=typeof r;return!!("number"==n?Nt(e)&&yt(r,e.length):"string"==n&&r in e)&&$t(e[r],t)}(r[0],r[1],u)&&(o=n<3?void 0:o,n=1),t=Object(t);++e=n?t:function(t,r,e){var n=-1,o=t.length;r<0&&(r=-r>o?0:o+r),(e=e>o?o:e)<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var u=Array(o);++n-1;);return e}(n,o),function(t,r){for(var e=t.length;e--&&O(r,t[e],0)>-1;);return e}(n,o)+1).join("")}var D=function(t){return!!a(t)||null!=t&&""!==$(t)};function V(t){return function(t){return"number"==typeof t||y(t)&&"[object Number]"==h(t)}(t)&&t!=+t}function B(t){return"string"==typeof t||!a(t)&&y(t)&&"[object String]"==h(t)}var q=function(t){return!B(t)&&!V(parseFloat(t))},I=function(t){return""!==$(t)&&B(t)},L=function(t){return null!=t&&"boolean"==typeof t},U=function(t,r){return void 0===r&&(r=!0),void 0!==t&&""!==t&&""!==$(t)&&(!1===r||!0===r&&null!==t)},J=function(t){switch(t){case"number":return q;case"string":return I;case"boolean":return L;default:return U}},W=function(t,r){return void 0===r&&(r=""),!!a(t)&&(""===r||""===$(r)||!(t.filter((function(t){return!J(r)(t)})).length>0))},G=function(t){if(t.indexOf("array.<")>-1&&t.indexOf(">")>-1){var r=t.replace("array.<","").replace(">","");return r.indexOf("|")?r.split("|"):[r]}return!1},H=function(t,r){var e=t.arg;return r.length>1?!e.filter((function(t){return!(r.length>r.filter((function(r){return!J(r)(t)})).length)})).length:r.length>r.filter((function(t){return!W(e,t)})).length};function K(t,r){return function(e){return t(r(e))}}var Q=K(Object.getPrototypeOf,Object),Y=Function.prototype,X=Object.prototype,Z=Y.toString,tt=X.hasOwnProperty,rt=Z.call(Object);function et(t){if(!y(t)||"[object Object]"!=h(t))return!1;var r=Q(t);if(null===r)return!0;var e=tt.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&Z.call(e)==rt}var nt,ot=function(t,r,e){for(var n=-1,o=Object(t),u=e(t),i=u.length;i--;){var a=u[nt?i:++n];if(!1===r(o[a],a,o))break}return t};function ut(t){return y(t)&&"[object Arguments]"==h(t)}var it=Object.prototype,at=it.hasOwnProperty,ct=it.propertyIsEnumerable,ft=ut(function(){return arguments}())?ut:function(t){return y(t)&&at.call(t,"callee")&&!ct.call(t,"callee")};var lt="object"==typeof t&&t&&!t.nodeType&&t,st=lt&&"object"==typeof module&&module&&!module.nodeType&&module,pt=st&&st.exports===lt?o.Buffer:void 0,vt=(pt?pt.isBuffer:void 0)||function(){return!1},ht=/^(?:0|[1-9]\d*)$/;function yt(t,r){var e=typeof t;return!!(r=null==r?9007199254740991:r)&&("number"==e||"symbol"!=e&&ht.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=9007199254740991}var bt={};bt["[object Float32Array]"]=bt["[object Float64Array]"]=bt["[object Int8Array]"]=bt["[object Int16Array]"]=bt["[object Int32Array]"]=bt["[object Uint8Array]"]=bt["[object Uint8ClampedArray]"]=bt["[object Uint16Array]"]=bt["[object Uint32Array]"]=!0,bt["[object Arguments]"]=bt["[object Array]"]=bt["[object ArrayBuffer]"]=bt["[object Boolean]"]=bt["[object DataView]"]=bt["[object Date]"]=bt["[object Error]"]=bt["[object Function]"]=bt["[object Map]"]=bt["[object Number]"]=bt["[object Object]"]=bt["[object RegExp]"]=bt["[object Set]"]=bt["[object String]"]=bt["[object WeakMap]"]=!1;var gt,_t="object"==typeof t&&t&&!t.nodeType&&t,jt=_t&&"object"==typeof module&&module&&!module.nodeType&&module,mt=jt&&jt.exports===_t&&e.process,Ot=function(){try{var t=jt&&jt.require&&jt.require("util").types;return t||mt&&mt.binding&&mt.binding("util")}catch(t){}}(),wt=Ot&&Ot.isTypedArray,At=wt?(gt=wt,function(t){return gt(t)}):function(t){return y(t)&&dt(t.length)&&!!bt[h(t)]},kt=Object.prototype.hasOwnProperty;function St(t,r){var e=a(t),n=!e&&ft(t),o=!e&&!n&&vt(t),u=!e&&!n&&!o&&At(t),i=e||n||o||u,c=i?function(t,r){for(var e=-1,n=Array(t);++e-1},Vt.prototype.set=function(t,r){var e=this.__data__,n=$t(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this};var Bt,qt=o["__core-js_shared__"],It=(Bt=/[^.]+$/.exec(qt&&qt.keys&&qt.keys.IE_PROTO||""))?"Symbol(src)_1."+Bt:"";var Lt=Function.prototype.toString;function Ut(t){if(null!=t){try{return Lt.call(t)}catch(t){}try{return t+""}catch(t){}}return""}var Jt=/^\[object .+?Constructor\]$/,Wt=Function.prototype,Gt=Object.prototype,Ht=Wt.toString,Kt=Gt.hasOwnProperty,Qt=RegExp("^"+Ht.call(Kt).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Yt(t){return!(!xt(t)||function(t){return!!It&&It in t}(t))&&(Rt(t)?Qt:Jt).test(Ut(t))}function Xt(t,r){var e=function(t,r){return null==t?void 0:t[r]}(t,r);return Yt(e)?e:void 0}var Zt=Xt(o,"Map"),tr=Xt(Object,"create");var rr=Object.prototype.hasOwnProperty;var er=Object.prototype.hasOwnProperty;function nr(t){var r=-1,e=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=2&e?new ar:void 0;for(u.set(t,r),u.set(r,t);++lr.type.filter((function(t){var r;return void 0===e||(!1!==(r=G(t))?!H({arg:e},r):!J(t)(e))})).length)})).length}return!1},ne=function(t){function r(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];t.apply(this,e),this.message=e[0],this.detail=e[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 e={name:{configurable:!0}};return e.name.get=function(){return"JsonqlValidationError"},Object.defineProperties(r,e),r}(Error),oe=function(t){function r(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];t.apply(this,e),this.message=e[0],this.detail=e[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 e={name:{configurable:!0},statusCode:{configurable:!0}};return e.name.get=function(){return"JsonqlError"},e.statusCode.get=function(){return-1},Object.defineProperties(r,e),r}(Error),ue=function(t,r){var e,n,o,u,i;switch(!0){case"object"===t:return o=(n=r).arg,u=n.param,i=[o],Array.isArray(u.keys)&&u.keys.length&&i.push(u.keys),!Reflect.apply(ee,null,i);case"array"===t:return!W(r.arg);case!1!==(e=G(t)):return!H(r,e);default:return!J(t)(r.arg)}},ie=function(t,r){return void 0!==t?t:!0===r.optional&&void 0!==r.defaultvalue?r.defaultvalue:null},ae=function(t,r){if(!W(r))throw new ne("params is not an array! Did something gone wrong when you generate the contract.json?");if(0===r.length)return[];if(!W(t))throw new ne("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,e){return{arg:t,index:e,param:r[e]}}));case!0===r[0].variable:var e=r[0].type;return t.map((function(t,n){return{arg:t,index:n,param:r[n]||{type:e,name:"_"}}}));case t.lengthr.length:var n=r.length,o=["any"];return t.map((function(t,e){var u=e>=n||!!r[e].optional,i=r[e]||{type:o,name:"_"+e};return{arg:u?ie(t,i):t,index:e,param:i,optional:u}}));default:throw new oe("Could not understand your arguments and parameter structure!",{args:t,params:r})}},ce=function(t,r,e){var n;void 0===e&&(e=!1);var o=ae(t,r),u=o.filter((function(t){return!0===t.optional||!0===t.param.optional?function(t){var r=t.arg,e=t.param;return!!D(r)&&!(e.type.length>e.type.filter((function(r){return ue(r,t)})).length)}(t):!(t.param.type.length>t.param.type.filter((function(r){return ue(r,t)})).length)}));return e?((n={}).error=u,n.data=o.map((function(t){return t.arg})),n):u},fe=function(t,r,e){return void 0===e&&(e=!1),new Promise((function(n,o){var u=ce(t,r,e);return e?u.error.length?o(u.error):n(u.data):u.length?o(u):n([])}))},le=function(){try{var t=Xt(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();function se(t,r,e){"__proto__"==r&&le?le(t,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):t[r]=e}function pe(t,r,e){(void 0===e||Mt(t[r],e))&&(void 0!==e||r in t)||se(t,r,e)}var ve="object"==typeof t&&t&&!t.nodeType&&t,he=ve&&"object"==typeof module&&module&&!module.nodeType&&module,ye=he&&he.exports===ve?o.Buffer:void 0,de=ye?ye.allocUnsafe:void 0;function be(t,r){var e,n,o=r?(e=t.buffer,n=new e.constructor(e.byteLength),new lr(n).set(new lr(e)),n):t.buffer;return new t.constructor(o,t.byteOffset,t.length)}var ge=Object.create,_e=function(){function t(){}return function(r){if(!xt(r))return{};if(ge)return ge(r);t.prototype=r;var e=new t;return t.prototype=void 0,e}}();function je(t,r){if(("constructor"!==r||"function"!=typeof t[r])&&"__proto__"!=r)return t[r]}var me=Object.prototype.hasOwnProperty;function Oe(t,r,e){var n=t[r];me.call(t,r)&&Mt(n,e)&&(void 0!==e||r in t)||se(t,r,e)}var we=Object.prototype.hasOwnProperty;function Ae(t){if(!xt(t))return function(t){var r=[];if(null!=t)for(var e in Object(t))r.push(e);return r}(t);var r=Et(t),e=[];for(var n in t)("constructor"!=n||!r&&we.call(t,n))&&e.push(n);return e}function ke(t){return Ct(t)?St(t,!0):Ae(t)}function Se(t){return function(t,r,e,n){var o=!e;e||(e={});for(var u=-1,i=r.length;++u0){if(++r>=800)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(xe);function Ne(t,r){return Ce(function(t,r,e){return r=Te(void 0===r?t.length-1:r,0),function(){for(var n=arguments,o=-1,u=Te(n.length-r,0),i=Array(u);++o1?r[n-1]:void 0,u=n>2?r[2]:void 0;for(o=Fe.length>3&&"function"==typeof o?(n--,o):void 0,u&&function(t,r,e){if(!xt(e))return!1;var n=typeof r;return!!("number"==n?Ct(e)&&yt(r,e.length):"string"==n&&r in e)&&Mt(e[r],t)}(r[0],r[1],u)&&(o=n<3?void 0:o,n=1),t=Object(t);++e resolverName + * @param {string} resolverType type of resolver + * @param {string} resolverName name of resolver + * @param {object} contract json + * @return {object|boolean} or false when not found + */ +function getDefFromContract(resolverType, resolverName, contract) { + if (contract[resolverType] && contract[resolverType][resolverName]) { + return contract[resolverType][resolverName] + } + return false +} + +/** + * Basically it's an alias to the validateSync + * @param {array} args the return result from resolver + * @param {array} params the `returns` part from the resolverName.returns + */ +export function checkReturns(args, params) { + return validateSync(args, params) +} + +/** + * Async version of checkReturns + * @param {array} args + * @param {array} params + */ +export function checkReturnsAsync(args, params) { + return validateAsync(args, params) +} + +/** + * The combine method for use to check the resolver returns with contract + * @param {string} resolverType type of resolver (query, mutation, socket, auth) + * @param {string} resolverName name of the resolver + * @param {object} contract the full contract json + * @param {array} args the return results + * @return {*} + */ +export function checkResolverReturns(resolverType, resolverName, contract, args) { + // console.info('checkResolverReturns -->', resolverType, resolverName, contract, args) + const def = getDefFromContract(resolverType, resolverName, contract) + if (def) { + return checkReturns(args, def[RETURNS_NAME]) + } + throw new JsonqlValidationError('checkResolverReturns', `${resolverType}.${resolverName} ${RETURNS_NAME} not found`) +} + +/** + * The async version of checkResolverReturns + * @param {string} resolverType type of resolver (query, mutation, socket, auth) + * @param {string} resolverName name of the resolver + * @param {object} contract the full contract json + * @param {array} args the return results + * @return {*} + */ +export function checkResolverReturnsAsync(resolverType, resolverName, contract, args) { + const def = getDefFromContract(resolverType, resolverName, contract) + if (def) { + return checkReturnsAsync(args, def[RETURNS_NAME]) + } + return Promise.reject( + new JsonqlValidationError('checkResolverReturnsAsync', `${resolverType}.${resolverName} ${RETURNS_NAME} not found`) + ) +} + diff --git a/packages/validator/src/validator.js b/packages/validator/src/validator.js index f119fcc936cb1f060d978d629585c8d954823f19..2185246cc9a010e2bc7c21d37c72975a7c8b0d7d 100644 --- a/packages/validator/src/validator.js +++ b/packages/validator/src/validator.js @@ -32,7 +32,7 @@ import JsonqlError from 'jsonql-errors/src/error' * @return {boolean} for filter operation false is actually OK */ const optionalHandler = function( params ) { - const { arg, param } = params; + const { arg, param } = params if (notEmpty(arg)) { // debug('call optional handler', arg, params); // loop through the type in param diff --git a/packages/validator/tests/fixtures/contract.json b/packages/validator/tests/fixtures/contract.json index 86f6e6a55d11b5263974d019284b80eadfa01abe..a0c75148c5d58766b3e43a6a3d28ac5ab03ef73b 100644 --- a/packages/validator/tests/fixtures/contract.json +++ b/packages/validator/tests/fixtures/contract.json @@ -5,7 +5,7 @@ "params": [], "returns": [ { - "type": "string", + "type": [ "string" ], "description": "stock message" } ] diff --git a/packages/validator/tests/validate-result.test.js b/packages/validator/tests/validate-result.test.js index 58baca1c16b9ae870fb9915969aaaa9ba2fc1429..ba1d272236e3497fe8be3f77f91c1d53565c480a 100644 --- a/packages/validator/tests/validate-result.test.js +++ b/packages/validator/tests/validate-result.test.js @@ -2,14 +2,20 @@ const test = require('ava') const { join } = require('path') const fsx = require('fs-extra') -const { DATA_KEY, ERROR_KEY } = require('jsonql-constants') +const { DATA_KEY, ERROR_KEY, HELLO } = require('jsonql-constants') const contract = fsx.readJsonSync(join(__dirname, 'fixtures', 'contract.json')) -const { validateSync, validateAsync } = require('../dist/jsonql-params-validator.cjs') +const { + validateSync, + validateAsync, + checkResolverReturns, + checkResolverReturnsAsync +} = require('../dist/jsonql-params-validator.cjs') const debug = require('debug')('jsonql-params-validator:test:validate-result') test.before(t => { - t.context.params = contract.query.getSomethingElse.params; + t.context.contract = contract + t.context.params = contract.query.getSomethingElse.params }) test('It should able to return the full argument even some of them are not pass', t => { @@ -37,3 +43,33 @@ test.cb('It should able to do the same with validate async but just resolve the t.end() }) }) + +// put the new checkReturns method test here @1.6.0 +test(`Should able to check the return result using checkResolverReturns`, t => { + + const result = checkResolverReturns('query', 'helloWorld', t.context.contract, [HELLO]) + // if there the array is empty that means it's pass + t.falsy(result.length) + + const resultFail = checkResolverReturns('query', 'helloWorld', t.context.contract, [1]) + + t.truthy(resultFail.length) + + debug('fail result', resultFail) + +}) + +test.cb(`Should able to check the return result using checkResolverReturnsAsync`, t => { + t.plan(2) + + checkResolverReturnsAsync('query', 'helloWorld', t.context.contract, [HELLO]) + .then(result => { + t.falsy(result.length) + }) + + checkResolverReturnsAsync('query', 'helloWorld', t.context.contract, [123]) + .catch(result => { + t.truthy(result.length) + t.end() + }) +})